TNoodle is a collection of speedcubing-related projects, primarily written in Java. In particular, it contains the official WCA scramble program.
WCA Scramble Program
The official scramble program for the World Cube Association has been part of the TNoodle project since January 1, 2013. It will contain the sole official scramble program for the foreseeable future.
All WCA official competitions must always use the current version of the official scramble program. This is available from https://www.worldcubeassociation.org/regulations/scrambles/
Note that only the scramble program part of TNoodle is "official". Other TNoodle projects may be convenient for certain uses (including at official competitions), but do not have any official status.
"Scramble Program" vs. "Scrambler"
TNoodle-WCA is a scramble program, while a scrambler is a human. It is fine to refer to TNoodle as a "scrambler" colloquially, but please try to use the official convention wherever possible.
tmt (TNoodleMakeTools) is a python script used to develop TNoodle.
Get a high level view of all the projects that comprise tnoodle by running:
./tmt graph --descriptions
WCA Scramble Program
When you're ready to develop, run the following and then visit http://localhost:2014/scramble/
./tmt make run -p wca
To build a distributable/executable
.jar file, run:
./tmt make dist -p wca
You can run the
.jar from the commandline using:
java -jar wca/dist/TNoodle-WCA.jar
Important note: You must never use a custom build for any official competitions. Contact the WCA Board and the WRC if you have any questions about this.
First make sure that
./tmt make works. This will involve installing the
android sdk and setting up an ANDROID_HOME environment variable.
- Bump the version number in
TNoodle Timer (TNT) and Other Projects
TNoodle contains other distributions, like TNoodle Timer (TNT) as
You can build the
timer distribution similarly to
# Build and run directly. ./tmt make run -p timer # Build to .jar file. ./tmt make dist -p timer # Run .jar file from commandline java -jar timer/dist/TNoodle-timer.jar
When TNoodle is running, TNT will be available at http://localhost:2014/tnt.
Other projects can be run similarly, too. Run
./tmt graph --descriptions to see the current list.
- Each project is a full fledged Eclipse project (they each have a
.projectfile). Furthermore, the whole tnoodle directory can be opened as an Eclipse workspace. Simply go to File > Import > Existing Projects into Workspace, and enter your tnoodle directory under "Select root directory". Eclipse should automagically detect all the tnoodle projects.
tmtis designed to be efficient about recompiling subprojects. It relies upon timestamps of files to only recompile something when it's strictly necessary. If you use an editor like Vim that writes to .swp files at potentially anytime alongside your source code, this will trick tmt into thinking something needs to be recompiled when it really doesn't. My recommendation is to configure your editor to store all these files in a unified directory that is not part of your tnoodle source tree.