Twisted

A Library for Smart Speedcubing

About

Twisted is a software library or 'crate' for the Rust programming language. Twisted supplies many abstractions over low-level Bluetooth concepts, making it almost trivial to write applications that interface with Bluetooth smartcubes in Rust. Additionally, Twisted can perform solve breakdowns for many speedcubing methods, and even has an optional feature that makes it easy to draw 2D cube nets to sdl2 canvases.

Goals

Currently, the Twisted library has three main goals.

  • Supply connection abstractions for working with smartcubes.
  • Facilitate the development of FOSS speedcubing software such as simulators and training tools.
  • Improve niche speedcubing methods by supplying abstractions for methods and substeps, and by allowing the easy creation and testing of custom methods and substeps.
Eventually, we would also like to support using the IDA-Star heuristic-based search algorithm to find algorithm sets, but this will require lots of optimisation and methods to generate heuristic tables for every subset.

We would also like to support more smartcubes and more of each smartcube's functionality, such as gyroscopes and retrieving things like battery level.

Support

Supported Speedcubes:

  • Moyu Weilong AI
Supported Methods
  • Hollow Stairs and Columns (HSC)
    • Implemented with help from Imam Tanvin Alam, the method's inventor.
    • The method I am currently training with.

If you would like to use Twisted but need support for a different smartcube or would like support for a different method, feel free to contact me at twisted.cubing(at)gmail.com.

License

Twisted is licenced under the full version of the GPL-3.0-only. This is a Copyleft, open source license. The GPL was chosen purposefully to encourage the development of free and open-source software. Version 3 of the GPL can be viewed here, and is included in the project repository. The Twisted library is REUSE 3.0 compliant.