A lightweight and extensible console-based engine for building text adventure games (RPGs) in Java. This project was developed as a deep dive into software architecture, design patterns, data-driven game development, and just for fun)))
- 🗄️ Data-Driven Design: The entire game world—including locations, transitions, items, and enemies—is defined in an external
JSONfile. This allows you to modify the plot and game balance without changing the source code. - 🧩 Reflection-based Event System: Features dynamic loading of game scripts. You can implement new gameplay events (traps, quest triggers, etc.) by simply adding new classes to the
eventspackage. The engine automatically detects and instantiates them by name from the JSON config. - ⚙️ Behavioral State Machine: The game loop is managed via distinct states (
EXPLORING,IN_COMBAT,IN_INVENTORY), ensuring clean transition logic and a stable gameplay flow. - ⚔️ Combat & Inventory Systems: Includes turn-based combat mechanics, weapon equipment support, and consumable items with polymorphic behavior.
- Language: Java 21+
- Data Format: JSON (Google Gson library)
- Principles: OOP, SOLID, Command Pattern, Strategy Pattern, Reflection API.
core/— Core engine logic: game loop, system managers, and world loading.events/— Package for custom game scripts and event logic.resources/— Configuration files (e.g.,world.json).
This project was created for educational purposes. I am actively exploring game architecture and welcome any constructive criticism, refactoring tips, or Pull Requests.
Feel free to suggest improvements or contribute to the code!
Кроссплатформенный консольный движок для создания текстовых приключенческих игр (RPG) на Java. Проект разработан в процессе изучения архитектуры ПО и паттернов проектирования и по приколу)))
- 🗄️ Data-Driven дизайн: Весь игровой мир (локации, переходы, предметы, монстры) описывается в внешнем
JSONфайле. Это позволяет менять сюжет и баланс игры, не трогая исходный код. - 🧩 Система событий на Reflection: Реализована динамическая загрузка игровых скриптов. Можно создавать новые события (ловушки, сюжетные триггеры), просто добавляя классы в пакет
events. Движок подхватит их автоматически по имени из JSON. - ⚙️ Поведенческая стейт-машина: Управление игровым циклом через состояния (
EXPLORING,IN_COMBAT,IN_INVENTORY), что обеспечивает четкую логику переходов и стабильность игрового процесса. - ⚔️ Боевая система и Инвентарь: Реализована механика пошагового боя, поддержка экипировки оружия и использования расходных предметов с полиморфным поведением.
- Язык: Java 21+
- Формат данных: JSON (библиотека Google Gson)
- Принципы: OOP, SOLID, Command Pattern, Strategy Pattern.
core/— Ядро движка: игровой цикл, менеджеры систем, загрузка мира.events/— Пакет для игровых скриптов и ивентов.resources/— Конфигурационные файлы мира (world.json).
Проект создан в учебных целях. Я активно изучаю архитектуру и буду рад любой конструктивной критике, советам по рефакторингу или Pull Request-ам.
Not affiliated with Epic Games