Какие инструменты, шаблоны или лучшие практики вы бы порекомендовали для реализации квестовой механики с учетом перечисленных ниже требований?
Я говорю об архитектуре программного обеспечения (насколько вы должны быть универсальны) и выборе для связывания объектов, подписки на события и представления условий. Упоминание инструментов / библиотек, которые вы успешно использовали, приветствуется. Изменить: Если вы используете сценарии, какие настройки вы рекомендуете?
Требования:
- простая 2D MMO (RPG)
- все данные игры, включая квесты, хранятся в реляционной базе данных
- любое событие в игре может вызвать новый квест для игроков или продвижение существующих квестов.
- квест может иметь произвольное количество условий, которые должны быть выполнены, прежде чем квест станет доступен для игроков
- квест может состоять из произвольного количества подквестов / шагов с произвольными условиями
квесты будут варьироваться от простых:
поговорить с A - убить 5 B - поговорить с A - навсегда улучшить здоровье
к весьма вовлеченному:
использовать предмет в области X - перейти в область Y - бот будет порождаться - убивать бота, не получая более 10% урона - бот отбрасывает предмет - поднимать предмет - портал разблокируется - доставить предмет J за порталом - получить золото и опыт - разрешить пройти портал еще раз - заблокировать портал для этого игрока
Возможны инстансы уровней (игроки могут выполнять определенные квесты в командах или в изоляции, которая порождает локацию уровня только для этих участников)
- Желательно, чтобы квестами можно было управлять с помощью редактора мира без написания сценариев или знаний по программированию ( Редактировать: хотя вообще не выступаю против сценариев)
- Я принимаю C ++ в качестве языка реализации
Я думал, что, если бы я мог объединить любую цепочку событий и условий, мы могли бы смоделировать более сложные и, следовательно, возможно, более интересные квесты. Я экспериментировал с вращением моего собственного двигателя ECA (События-Условия-Действия), но это может быть излишним. Было особенно трудно моделировать общие условия без использования каких-либо сценариев.