Hi HN, I've spent the last 6 months writing an isometric action RPG from scratch in Python 3.12 + raylib-py, and I open sourced the entire codebase in October under GPL v3.

It's a dark western "poe-delvelike" ARPG: you descend into an endless dungeon, loot rare gear, and try to leave before the darkness that follows you kills you.

Gear is worn in organ slots (lungs, heart, liver, intestine, kidney) and degrades with "R0t" instead of durability.

Drops are always unidentified, and a deck of playing cards is the crafting currency (identify, upgrade, reroll, force a mythic tier).

A few implementation details:

- The world renders from a single tileset atlas; props are cropped from it at load time, so there is no per-prop image pipeline

- Darkness is a GLSL fragment shader with a software fallback path; the player's light anchor is a dynamic light that tints actors as it moves

- Hit resolution is deterministic ("Entropy" system): accuracy and evasion accumulate per-entity entropy values instead of querying pure RNG, which kills streaky deaths without making combat soft

- Fixed timestep with per-consumer input edges, to avoid click-stealing between the world and UI layers

- Saves go through a versioned schema-migration chain (currently v3) with backup-on-fail, learned after corrupting early saves

- ~180 pytest tests cover progression math, drop tables, combat modifiers and UI guards

Third-party assets (tileset, music, fonts, card art) keep their own licenses, all credited in credits/SOURCES.txt; the code itself is GPL.

I'm happy to go deep on any of the systems: the renderer, the hit-resolution design, the drop-rate tuning, or the overall "how does one person ship an ARPG in Python" question. Feedback welcome, and issues/PRs are open.


Comments URL: https://news.ycombinator.com/item?id=50450891

Points: 1

# Comments: 0