A professional steampunk text adventure RPG built with Python and Tkinter, featuring strategic turn-based combat, comprehensive inventory management, and a complete save/load system.
Chronicles of Aether Gate is a fully-featured RPG adventure game where players explore a mysterious steampunk facility to collect Aether Crystals and unlock a dimensional gateway. The game combines classic text adventure elements with modern GUI design and strategic combat mechanics.
- 5 unique locations with custom artwork and detailed descriptions
- Interconnected room system with logical navigation
- Environmental storytelling through room descriptions and items
- Turn-based combat with speed-based initiative
- Enemy AI with different behavioral patterns (aggressive, defensive, tactical)
- Player abilities with Focus point resource management
- Status effects and temporary buffs/debuffs
- Equipment modifiers affecting combat stats
- Multiple item types: Weapons, Accessories, Consumables, Key Items
- Equipment stats that modify player capabilities
- Professional inventory GUI with tooltips and item details
- Item rarity system with visual indicators
- Multiple save slots with metadata display
- Auto-save functionality after major events
- Save file management with delete and organization features
- JSON-based persistence for reliable data storage
- Multiple victory conditions beyond the main objective
- Achievement tracking for different play styles
- Comprehensive statistics tracking player progress
- Victory variations based on player performance
- Modern GUI design using ttkbootstrap styling
- Intuitive navigation with visual feedback
- Professional main menu with game options
- Comprehensive help system with full game guide
- Python 3.12 - Core programming language
- Tkinter - GUI framework
- ttkbootstrap - Modern UI styling
- Pillow (PIL) - Image processing
- JSON - Data persistence
chronicles_of_aethergate/
โโโ launcher.py # Game launcher and main menu
โโโ main.py # Main game controller
โโโ models/ # Data models
โ โโโ player.py # Player character system
โ โโโ enemy.py # Enemy classes and AI
โ โโโ item.py # Item system
โ โโโ room.py # Room model
โ โโโ __init__.py
โโโ engine/ # Game logic
โ โโโ world_loader.py # Data loading utilities
โ โโโ combat.py # Combat engine
โ โโโ item_manager.py # Item management
โ โโโ save_load.py # Save/load system
โ โโโ victory.py # Victory conditions
โ โโโ sound_manager.py# Audio system
โ โโโ __init__.py
โโโ ui/ # User interface
โ โโโ gui.py # Main game GUI
โ โโโ main_menu.py # Title screen
โ โโโ combat_gui.py # Combat interface
โ โโโ inventory_gui.py# Inventory management
โ โโโ save_load_gui.py# Save/load interface
โ โโโ dialog.py # Dialogs and popups
โ โโโ theme/ # Theming and custom widgets
โ โโโ theme_engine.py
โ โโโ widgets.py
โ โโโ effects.py
โ โโโ additional_widgets.py
โ โโโ __init__.py
โโโ data/ # Game assets
โ โโโ rooms.json # Room definitions
โ โโโ enemies.json # Enemy data
โ โโโ items.json # Item database
โ โโโ images/ # Game artwork
โ โโโ sounds/ # Sound effects and music
โโโ saves/ # Save game files
โโโ tests/ # Test suite
โโโ requirements.txt # Runtime dependencies
โโโ dev-requirements.txt# Development dependencies
โโโ .gitignore # Git ignore rules
โโโ README.md # Project documentation
- Python 3.12 or higher
- Required packages (install via pip):
pip install ttkbootstrap pillow
- Clone or download the game files
- Navigate to the game directory
- Install dependencies:
pip install -r requirements.txt
For development (tests and tools):
pip install -r dev-requirements.txt
python launcher.pyNote: The game opens in maximized window mode for optimal visibility of all UI elements.
- The game can generate simple tones automatically, but you can add richer sounds.
- Place CC0 or licensed sound files into
data/sounds/with these names:menu.(wav|ogg),pickup.(wav|ogg),attack.(wav|ogg),heal.(wav|ogg),victory.(wav|ogg),defeat.(wav|ogg)
- You can also auto-download your sounds using the helper (requires
requests):The game will always prefer files found inpip install requests cp tools/sounds.json.example tools/sounds.json # Edit tools/sounds.json and paste direct file URLs (CC0 or licensed) python tools/fetch_sounds.pydata/sounds/over generated tones.
- You may add a background music track that loops during the launcher and game:
- Place your music file at:
data/sounds/background.mp3 - Volume defaults to 40% and loops continuously
- Requires
pygamefor playback
- Place your music file at:
Recommended track provided by you:
- Incredulity by Scott Buckley | www.scottbuckley.com.au
- Music promoted by https://www.chosic.com/free-music/all/
- Creative Commons CC BY 4.0: https://creativecommons.org/licenses/by/4.0/
- Direct file (example): https://www.chosic.com/wp-content/uploads/2025/05/Incredulity-chosic.com_.mp3
Attribution (example to include in your project): "Incredulity" by Scott Buckley (www.scottbuckley.com.au) is licensed under CC BY 4.0. Music via Chosic (https://www.chosic.com/free-music/all/). License: https://creativecommons.org/licenses/by/4.0/
Run the test suite:
pytest -qManual GUI harness lives under dev_tests/ and is excluded from pytest collection.
- Navigation: Use arrow buttons to move between rooms
- Combat: Click Fight when enemies are present
- Inventory: Manage items, equipment, and consumables
- Save/Load: Preserve progress across sessions
- Keyboard Shortcuts:
Ctrl+I- Open InventoryCtrl+S- Save GameCtrl+L- Load GameCtrl+H- Show HelpF- Fight (when enemies present)T- Take Item (when items available)
Explore the Aether Gate facility and collect 3 Aether Crystals to unlock the dimensional gateway. Fight mechanical guardians, discover powerful equipment, and uncover the mysteries of this ancient technology.
- Equipment matters: Weapons and accessories significantly impact your stats
- Manage resources: Focus points enable powerful abilities
- Enemy patterns: Learn AI behaviors to predict and counter attacks
- Consumables: Use healing items strategically during tough fights
- Crystal Master: Collect all 3 Aether Crystals
- Explorer: Visit every room in the facility
- Warrior: Defeat multiple enemies in combat
- Untouchable: Complete the game without taking damage
- Tactical Genius: Minimize damage taken through smart play
The game tracks comprehensive statistics including:
- Rooms explored
- Enemies defeated
- Damage dealt and received
- Items collected
- Play time and efficiency
This project demonstrates:
- Object-oriented design with clear separation of concerns
- Event-driven GUI programming with proper state management
- Data persistence using JSON serialization
- Game AI implementation with behavioral patterns
- Professional software architecture suitable for larger projects
Development: Complete game design and implementation
Technology Stack: Python, Tkinter, ttkbootstrap, Pillow
Art Assets: AI-generated illustrations and icons
Game Design: Original steampunk RPG concept
- Runtime requirements are minimized in
requirements.txt. - Development-only tooling (pytest, etc.) is in
dev-requirements.txt. - A
.gitignoreprevents committing caches, venvs, and save files (except the example autosave).
This project is created as a portfolio demonstration of Python GUI development and game programming skills.
Chronicles of Aether Gate - Where Steam Meets Magic โ๏ธ๐ฎ
