CALDERA (terminal)
Climb the vent. Outrun the magma. The second version of the game, beside
web/, on the magmacrunch
engine's terminal backend. It is a cabinet in the magmacrunch arcade and its
own command, and plays the same either way.
pipx install magmacrunch-caldera
caldera
For working on it:
pip install -e ".[dev]"
python -m caldera
It is the browser's game, not a remake of it
The rules are a line-for-line port of web/js/tower.js, player.js,
score.js and game.js, in world units at 60 Hz, with the same seeded
generator. tests/test_oracle.py runs the real JS through
tools/js_oracle.mjs, replays every input it fed into caldera/sim.py, and
requires the same state back after every frame. Exactly the same, not close:
both sides are IEEE doubles doing the same operations in the same order, so any
difference is a transcription error. A tower is a seed on both sides, and a
score means the same thing on both boards. Scores are filed under caldera,
with the browser's floor, crunch and character fields beside them.
The terminal draws at 30 fps and steps the rules twice a frame. Stepping once would play the browser's game at half speed without anything looking wrong.
Running, in a terminal
A terminal reports that a key went down and never that it came up, and a held key goes quiet for about half a second before it repeats. Read as held state, that is a run that will not start and a climber that will not stop on a ledge. So running latches:
| key | |
|---|---|
← → (or A/D) |
run that way, and keep running |
↓ (or S) |
stop running; the rock's friction does the rest |
SPACE ↑ W |
jump |
P |
pause |
R |
restart |
Esc |
back to the title (from the title, back to the arcade) |
Q |
quit |
Tap the other arrow to turn round mid-run, and the browser's skid does what it does for a player who swaps keys. Hit a wall in the air and your heading turns with the bounce, which is what a good browser player does with their fingers at every wall. Walking into a wall on the ground just stands you there.
tests/test_sim.py checks that this can play the game: a bot only allowed
to press keys climbs exactly as far through the latch as the same bot holding
keys directly.
The rest
caldera --list-climbers the cast
caldera --climber king climb as somebody in particular
caldera --seed 42 the same towers every time
caldera --play skip the title
caldera --ascii no block or arrow glyphs
Every glyph it draws is in the engine's degradation table, so a cp1252 or cp437
terminal gets the same layout in plain characters. tests/test_app.py sweeps
every screen for anything that is not. Under NO_COLOR the climber and the
magma are drawn in glyphs rather than background colour, so they do not vanish
when colour does.
Needs a 40x20 terminal; 80x24 is comfortable and anything wider adds side panels for the run's numbers rather than a wider vent.
Licence
PolyForm Noncommercial 1.0.0, as the rest of this repository. See NOTICE.
Metadata
Release files for magmacrunch-caldera 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| magmacrunch_caldera-0.1.0.tar.gz | 38.5 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| magmacrunch_caldera-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.1 kB
Release files / magmacrunch_caldera-0.1.0.tar.gz
| Download URL | magmacrunch_caldera-0.1.0.tar.gz |
|---|---|
| Size | 38.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
084f6b60a53d2fa210f7851efd7023379ad3b653aa8687fa188916305f365b4d
|
|
BLAKE2b-256 checksum How to use checksums |
0d51b259f72ae87cc43d85153e9b53b5f2c67bd678f1abb7f60b80557ade899b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / magmacrunch_caldera-0.1.0-py3-none-any.whl
| Download URL | magmacrunch_caldera-0.1.0-py3-none-any.whl |
|---|---|
| Size | 33.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97e0fa5fb1bb0cc3f62e9aa2d35336b356124380147177c8d03fd7d9ff52ec4a
|
|
BLAKE2b-256 checksum How to use checksums |
9b2a20df36eb476f92962d14c453f934df867a5403f8283b4ca3c43adc8e47ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logSecurity for magmacrunch-caldera 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for magmacrunch_caldera-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.