jfly / libtnoodle

NOTHING IN HERE IS SANCTIONED BY THE WCA. THIS MUST NOT BE USED FOR OFFICIAL WCA COMPETITIONS.
GNU General Public License v3.0
0 stars 0 forks source link

libtnoodle Build Status

An experimental C/C++ replacement for the scrambling guts of cubing/tnoodle.

NOTHING IN HERE IS SANCTIONED BY THE WCA. THIS MUST NOT BE USED FOR OFFICIAL WCA COMPETITIONS.

How to use

See jtnoodle-demo for an example project that uses jtnoodle.

How to develop

Requirements

A properly configured Linux machine can cross-compile binaries for Windows and OS X as well.

If you have trouble setting up a development environment, it might be worth checking out .travis.yml, which has all the commands to set things up for Travis CI's 64 bit Ubuntu 12.04 environment.

Building

Testing

Releasing

Travis CI is configured to publish to http://oss.jfrog.org/oss-snapshot-local/tk/tnoodle/ on each build.

We could investigate manual deployment to oss-release-local and promoting releases to jcenter.

Components (under src/)

Random musings...

This is an experiment. It remains to be seen how we're going to include a version of libtnoodle for every major operating system + architecture pair in jtnoodle.jar so that it just works (like the current pure Java tnoodle).

If we succeed at producing a Java desktop app that can work everywhere, then we can declare this experiment a success, and start porting the Java scrambling code in tnoodle to libtnoodle. As this port is occurring, we can change tnoodle to depend on jtnoodle. This way we can reuse the existing webserver/pdf/zip/json generation infrastructure that we've already written in Java in tnoodle.

Why?

TNoodle evolved strangly. Generating random turn scrambles for an event like 7x7x7 takes seconds, when it should be instantaneous. This is due to a lot of infrastructure that was added to aid in scramble filtering. Porting the scrambling code to C++ gives us a needed excuse to revisit and rewrite.

In addition to needing a rewrite, C++ code gives us the option to run libtnoodle in as many places as possible.