Skip to content

Общая информация

Общее описание

Simple Pythonic (but yet) Impressive Combat Engine

Spice - боевая система для текстовых ролевых игр, написанная на Python, созданная для любых приложений, поддерживающих использование REST и парсинг json.

В своей основе Spice создавался, придерживаясь следующих принципов:

  1. Гибкость превыше скорости. Spice не позиционируется, как легкая в запуске и настройке система. Основным критерием реализации той или иной механики была именно ее гибкость. Местами это могло усложнить синтаксис и требования к написанию игровых функций.
  2. Абстрактность. Spice не привязан к конкретному сеттингу или игровой вселенной. Можно устраивать как космические бои грозных флагманских кораблей, так и бои примитивных людей луками и копьями. Исключение из себя представляют различные навыки, атрибуты и прочие "контентные" особенности, сделанные под конкретный проект, однако их достаточно просто заменить, поскольку это просто строки с названиями.
  3. Обработчиками действий являются функции самого python'а, поэтому для настройки системы необходимо базовое знание этого языка программирования. Это было сделано для того, чтобы действия ничем не ограничивались и позволяли делать даже самые сложные комбинации для особо щепетильных гейм-дизайнеров (см. пункт 1).
  4. Чистая backend-система. У Spice есть API, основанный на REST API, но никаких других способов взаимодействия с его “внутренностями” не предусмотрено.

Дисклеймер

Данная документация составляется не с целью описания всех технических особенностей и реализации разных систем, а исключительно с целью упрощения составления собственных компонентов (итемов, абилок, энтитей и так далее). Как следствие, компоненты, предназначенные для "внутреннего" использования, не будут расписаны. Если очень хочется, придется читать исходники.

Использованные библиотеки

  • mongoengine
  • dice
  • toml
  • loguru
  • fastapi
  • PyYAML
  • Shapely

Большое спасибо их авторам! Вы вряд ли знаете русский, но знайте, что без вас я бы потратил на это на пару лет больше!