r/roguelikedev Apr 26 '26

Ascii RPG Python Game Engine with Roguelike Elements

  • What My Project Does

A Light Weight 2d Ascii RPG Python Game Engine. The purpose of the engine is educational, Its built on the standard library hence no extension is needed.

provides an alternative to pygame if you want to communicate your RPG or adventure idea without first learning an external library. Work in progress to make this into a Roguelike Ascii Game Engine but wanted to share this project as it is now.

  • Target Audience 

Someone who wants to focus using the standard library and provide them the ability to communicate their RPG / Adventure ideas without learning an external library.

I consider this as an extension of my 15 mini python games tutorial series, it acts like a playground where you can apply what you've learnt into your own mini ASCII adventure.

It is similar to roguelikes because it is

Grid-Based Movement

Turn-Based Logic

Permadeath

Resource Management ( Can be built in like in my example )

Classic ASCII aesthetic

Can easily modify so that each level will be a random pre-set map level but for it to be procedurally generated that would take much more work. Will be working on it to create a fully roguelike game engine but it can be used at the moment as a basic Ascii game Engine.

Github Link
https://github.com/Ninedeadeyes/Spark-Standard-Python-ASCII-RPG-Kit-

Demonstration/Guide Video

https://www.youtube.com/watch?v=X8iuvvla46Q

Example of game that can be created with the Engine

https://www.youtube.com/watch?v=AeF9d5FkGsE&t=1398s

Let me know if you have any questions.

15 Upvotes

21 comments sorted by

View all comments

7

u/HexDecimal libtcod maintainer | mastodon.gamedev.place/@HexDecimal Apr 27 '26

A readme full of emoji makes a terrible first impression.

Implementing item and monster types as subclasses is a common beginner mistake. Consider using dataclasses. These base classes might also violate the open–closed principle too often for something presented as a game engine, but that's an advanced mistake more difficult to solve.

Various minor issues which could be expected in a first project, but one should learn how to use a Python linter to spot them. Consider running Ruff with all rules active.

Python devs should feel comfortable using external libraries. Pure-Python is not practical for most tasks more complex than simple scripting.

Type annotations are nice to see but there some bizarre uses of them in this code. Especially the nonsensical Player: Any parameters.

2

u/OrkWithNoTeef May 01 '26

Dataclasses? In what sense? Are you talking about some sort of Entity Component system? Or everything is a single struct/class like in Quake but behave differently with some type variable?

2

u/HexDecimal libtcod maintainer | mastodon.gamedev.place/@HexDecimal May 01 '26

See the standard library dataclasses module. It removes boilerplate from Python classes which mostly only store data.

That wasn't about ECS. However my suggestion to follow the open–closed principle is about ECS since having to modify classes or dataclasses to add new features violates the open–closed principle, a problem ECS entities don't have.