This is the reference distribution for Cyclobots, a dynamical system desk toy automaton thing put together by Chris Pressey in 1994. It consists of a number of virtual turtle robots called "cyclobots". Each cyclobot moves forward with a constant velocity, but constantly adjusts its trajectory to try to follow exactly one other cyclobot. No cyclobot is followed by more than one cyclobot.
A group of cyclobots tends to fall into one of several semi-stable patterns. The simplest of these is just a rotating circle, but more complex, trefoil-like patterns are common.
You can watch it online here: Cyclobots installation at catseye.tc.
To run it locally, clone this repository and open demo/cyclobots.html in a web browser such as Firefox. (Note that, if opened as a local file, the browser may fall back to canvas rendering; to ensure that WebGL is used, you can start a local server, but to be frank it doesn't seem to make much difference at this stage.)
The core behaviour is implemented in src/cyclobots.js and does not rely on PixiJS or any other display layer.
The PixiJS driver and visuals are defined in demo/cyclobots-pixi-launcher.js.
The first implementation of Cyclobots, now lost, was in Visual Basic 3.0, in 1994. Some things it supported that subsequent implementations haven't yet replicated include:
- the cyclobots would collide with each other; a cyclobot would be unable to pass through another cyclobot.
- the user could click the left (or right) mouse button to attract (or repel) all the cyclobots towards (or away from) that point instead of each other.
git clone https://git.catseye.tc/Cyclobots/
- Convert demo to use DAM to build the UI. Chris Pressey 2 months ago
- Make forceCanvas button actually work. Chris Pressey 5 months ago
- Refactor so that we can force canvas without reloading the page. Chris Pressey 5 months ago
- Use pixi-viewport too, so we can scroll the bots back into view. Chris Pressey 5 months ago
- Select visuals with dropdown. Chris Pressey 5 months ago
- Checkpoint having a selection dropdown for kind of visuals. Chris Pressey 5 months ago
- Remove onInitBot. Add functions to set/remove visuals on bots. Chris Pressey 5 months ago
- Introduce forEachBot(). Chris Pressey 5 months ago
- Allow user to select to fall back to canvas renderer. Chris Pressey 5 months ago
- Small edits to README. Chris Pressey 5 months ago