A modular point-and-click adventure engine written in Python.
Simple Game Engine is built to support surreal, story-rich games inspired by Rusty Lake, A Little to the Left, Frog Detective, Tangle Tower, Outer Wilds and more. It focuses on smooth interactions, seamless modularity and expansive possibilities.
- Scene manager with interactive hotspots
- YAML-based item, character, and puzzle logic
- Inventory and contextual action systems
- Persistent
GameState
for flags and progress - Modular dialogue engine with branching paths
- Timeline system for synced events and time loops
- Support for character traits, interaction effects, and narrative memory
- Total creative freedom
- Extensible for visual scripting or modding
- Engine + toolkit for building games that are weird, personal and beautiful
The full development roadmap lives in ROADMAP.md.
Clone this repo and install dependencies:
git clone https://github.com/your-username/simple-game-engine.git
cd simple-game-engine
pip install -r requirements.txt
python main.py # or your preferred dev command
Scenes can schedule delayed actions:
scene:
id: intro
features:
time_loop: true
events:
- trigger: delay
time: 30 # seconds
action: set_flag
flag: door_closed
Worlds are described in YAML files that list regions and scenes. This new format
includes metadata like title
and start_region
. Load a world with
WorldManager
:
world:
id: montreal
title: "Surreal Montreal"
start_region: mileend
regions:
- id: mileend
scenes: [ruelle_portail]
from engine.world_manager import WorldManager
wm = WorldManager("game/worlds/montreal.yaml")
print(wm.current_scene())
Use AssetManager
to cache images and music referenced by scenes:
from engine.asset_manager import AssetManager
assets = AssetManager()
scene = ... # a Scene object
assets.preload_scene(scene)
background = assets.get_image(scene.background)
We welcome bug reports, feature ideas and pull requests!
See CONTRIBUTING.md for how to get started. Join us in 💬 GitHub Discussions to share ideas.
Distributed under the MIT License.
You are free to fork, remix, and share — just be kind.