Warning
prism's API is frozen, but there might be small changes as we finalize a proper release! We're currently evaluating this as a release candidate!
prism is a roguelike game engine written in Lua for use with LÖVE, inspired by Bob Nystrom's talk on roguelike architecture. It utilizes the command pattern and composition to provide a modular, extensible foundation for creating turn-based games.
While its core is opinionated, prism is largely unopinionated in specific game mechanics, allowing for diverse implementations like 4-way or 8-way gridded movement, classic roguelike turns, time-based schedulers, or action points, without dictating elements such as inventories or spells. We provide some common sense implementations of things like message logs and inventories in the prism/extra folder.
Released under the MIT License, prism is free to use for both personal and commercial projects.
- Command Pattern: Encapsulates changes in state as objects, enabling clean and decoupled turn-based mechanics.
- Composition-Based Design: Promotes flexibility and reusability using composition to build entities.
- Event Listener System: React to in-game events dynamically for things like status effects, traps, and environmental interactions.
- Lightweight and Modular: Built in Lua, prism is designed to be lean and easy to use.
- In-Game Editor: Geometer is a powerful in-game editor designed for rapid prototyping and debugging. Inspired by classic roguelike Wizard Modes, it lets you instantly spawn actors, modify terrain, and interact with the level like a paint program—making iteration fast and intuitive.
- Multitile Actors: Prism supports having players and monsters be NxN! No longer does a dragon need to inhabit just one tile!
Find our docs here:
Documentation
Tutorial
Join our community on Discord to discuss, collaborate, and get support:
Discord Server
rage.mp4
- Wanderlust CP437 tileset by Kynsmer
- Also MRMOTEXT!