Maturam is a Python roguelike, built by working through the tcod roguelike tutorial and then extending it beyond the tutorial’s scope. The project started in June 2022 as a straightforward exercise: follow the tutorial, land each part as its own pull request, and see where it goes. Those early PRs tell the story in order — procedural dungeon generation, monster AI and the ability to die, a refactor to make the codebase easier to extend, a title screen with save and load, scrolls and potions, and finally a “final piece” that closed out part 7 of the tutorial. Along the way, colours were pulled out into their own module, a CHEAT key was added to replenish HP during testing, and the code was brought into line with pylint. By August 2022 the game had reached a stable 01.00.00, built on the tutorial’s foundation but already diverging from it in small ways based on what the author judged to be logic and necessity rather than the letter of the tutorial.

The project then sat for a while before returning to active development in September 2026, this time with the aim of turning it into something closer to maintained software rather than a finished tutorial exercise. A pytest suite and a dedicated Tests CI job were added, the pylint/flake8 lint gate — which had quietly stopped actually gating anything — was fixed, a committed virtualenv was removed from source control, and a numpy bug the new tests caught along the way was fixed too. A malformed table in the docs got cleaned up as part of the same pass. On top of that housekeeping, real gameplay systems arrived: a scoring system with a local leaderboard, passive HP regeneration scaled by the player’s constitution stat, and a character-naming prompt shown when the leaderboard is displayed. A follow-up fix corrected the game-over score display, which had been drifting one point above the score actually recorded on the leaderboard for that run — a small but telling bug given the leaderboard is meant to be authoritative.

The most recent, and headline, piece of work is the AWS integration: a global leaderboard sitting alongside the local file-based one, backed by API Gateway, Lambda, and DynamoDB, and deployed with the AWS CDK (Python) from the infra/ directory of the repo — a fairly standard CDK app layout with its own app.py, cdk.json, and stack/lambda code kept separate from the game itself. The design deliberately treats the network as unreliable: if the API is unreachable or errors out, the game falls back silently to the local leaderboard file rather than interrupting play or surfacing an error to the player. A [L] View leaderboard option was added to the main menu right after, specifically so the global leaderboard can be checked without needing to start or load a game first. Once that was in place, the CI workflows were bumped from actions/checkout/actions/setup-python v3 to v7 to clear a Node.js 20 deprecation warning that had started showing up in the Actions logs — a small piece of upkeep, but one that only became necessary once the project had CI worth keeping green.

Taken together, the version history reads as a project that went from a guided tutorial to a small piece of cloud-connected software with its own test suite, linting, and infrastructure-as-code — built incrementally, in public, largely as a way of stretching Python skills rather than shipping a product. You can browse the code at github.com/denisjackman/Maturam or play the latest build at denisjackman.github.io/Maturam.