Magic Cube is an application which lets one play with various TwistyObjects. Currently implemented objects are listed below in the 'How to add a new Object' section.
The app contains graphics effects provided by the Distorted library.
Users can submit their best times to a central High Scores list and download results made by others.

Additionally there's a near-perfect, instantenous 3x3x3 Cube Solver (Kociemba) and a about 2000 Pretty Patterns (more in the plans!).

Magic Cube is open source and released under the terms of the GNU General Public License v2 (GPL).


Google play :
Amazon App Store:

Source code

git clone
git clone 



How to add a new Object

  • Write a new class which extends TwistyObject (this one defines the Object itself)
  • Write a new class which extends Movement (this one defines the connection between finger swipes on the screen and Object rotations)
  • add your new classes to the ObjectList enum (here you will also need to provide a small icon to add to the "play" drop-down object list)

and your new Object will automatically become available in the "Play" drop-down list.

Currently implemented Objects: Cube , Pyraminx , JingPyraminx ,6-color Dino , 4-color Dino , Skewb and Master Skewb , Helicopter , Diamond Skewb, Face-Turning Octahedron and Master FTO , Redi Cube , Ivy Cube , Rex Cube , Kilominx and Master Kilominx , Megaminx and Gigaminx , Fused Cube , 2-Bar Cube , Z-Cube type B , Z-Cube type C, Skewb Ultimate, Square-1, Square-2

How to add a new Transition Effect

If you would like to add, say, a new WIN effect (i.e. animation which happens when the Object gets solved) all you need to do is add a new class which extends org.distorted.effect.WinEffect and add the new class to the org.distorted.effect.WinEffect.Type enum.

The new effect will automatically become available in the Effects dialog.

How to add a new Pretty Pattern

If you've got a collection of Pretty Patterns for a given (already implemented!) TwistyObject, say a Pyraminx 3x3x3, all you need to do to connect it to the Magic Cube is to create a table of Strings describing the patterns ( format needs to follow the one already done in Cube Patterns ) and add the new pattern list to the org.distorted.patterns.RubikPatternList enum.

The new list of Patterns will automatically become available in the Patterns dialog.

How to add a new Solver

Work in the org.distorted.solvers package. First create a subdirectory containing the code of your actual solver, then connect it to the rest of the program by modifying the org.distorted.solvers.SolverMain class, and finally add the new solver to the org.distorted.solvers.ImplementedSolversList enum.

Currently implemented solvers: a near-perfect, instantenous Cube3 solver.

Updated by Distorted Admin almost 3 years ago ยท 61 revisions