nanomyth
Very minimal engine for very simple RPGs.
Building and installing
To build package, run:
$ make build
# OR directly:
$ python setup.py build
$ python -m pip wheel --disable-pip-version-check . --no-deps --wheel-dir=dist
Install created package directly via pip
:
$ pip install -U dist/nanomyth-*.whl
Demo app
There is a demo app that presents in form of a simple and small game. It's source demonstrates usage of engine API and various patterns.
Demo app uses free graphics from OpenGameArt:
- Tile set: https://opengameart.org/content/dawnlike-16x16-universal-rogue-like-tileset-v181
- Font: https://opengameart.org/content/8x8-font
- Set of backgrounds: https://opengameart.org/content/6-adventure-game-backgrounds
Just run python demo/demo.py
.
TODO
- Simple static map on single screen.
- Loading tilesets from file.
- Loading map layout from file.
- Main menu.
- MVC for all objects.
- Screens (contexts), stackable event loops: update()+draw().
- Simple menu with keyboard controls.
- Play/Continue/Exit.
- Player character.
- Movement on map.
- Facing directions.
- Obstacles.
- World of maps.
- Separate set of adjoined maps.
- Movement between maps (exits, entrances, portals; entering/starting points).
- Saving/loading.
- Pickle, jsonpickle, custom serializers via
__getstate__
/__setstate__
- Save/load in menu.
- Different slots for saving, separate dialog screen for choosing slot.
- Dialog for overwriting save files [Yes/No].
- Pickle, jsonpickle, custom serializers via
- Autosave.
- Terrain with trigger event.
- Autosaving on checkpoint tiles.
- Displaying message box [OK] on autosaving.
- NPC.
- Standalone objects like characters, info posts etc.
- Interactions with NPC.
- Separate screen dialog for large scrollable texts.
- Quests.
- Triggers to start/stop quests (checkpoint tiles, talking with NPCs).
- Quest steps, conditions on moving to the next step.
- Displaying current quest state on HUD.
- List of quests, quest book dialog.
- Items.
- Items laying on terrain.
- Slot for item, picking/dropping items.
- Character's inventory, inventory screen dialog.
- Displaying inventory status on HUD.
- Stackable items, non-stackable unique items.
- Usable items, using items on target (NPC, object).
- Triggers for items (for NPC/quests, opening terrain etc).
- One-time pickable item stashes (like piles, loot-drops or chests).
- External stashes (shelves). Exchanging items with stash.
- MOBs.
- Standing still, random shuffling, sentinel waypoints.
- Interaction with mobs: using items, talking.
- Hitting mobs, HP, damage.
- Displaying battle log, info about battle state, hp, hits etc.
- Battle.
- Player's HP. Mobs hitting back.
- Displaying player's stats on HUD.
- Items for battle: weapon/shield, armor/clothing.
- Mobs can have and use items too.
- Mobs can have inventory and drop loot.
- Trigger for quests on monster death.
- Projectiles, throwing.
- Animation based on sprite sheets.
- Animated static objects.
- Animated movements, hits, projectiles, particle events.
- Transition effects for screens/movements between maps.
- Extra.
- Doors (open/closed/locked/unlocked).
- Destructible terrain.
- Moveable/pullable objects (sokoban crates).
- Switches/levers with triggers.
- Press-plates (moving objects on them, dropping items) with triggers (doors, quests etc).
- Damaging terrain (beartraps, spikes etc).
- Explosions with damage range (bombs, DOOM barrels, throwable grenades etc).