Я разрабатываю простой игровой движок (в C #, если это имеет значение), и я не могу придумать достаточно приличный способ реализации сценариев с точки зрения архитектуры.
Это простая пошаговая стратегия с пользовательскими, независимыми от логики анимациями для сражений. Он имеет глобальный уровень архитектуры для системного / низкоуровневого содержимого и, что наиболее важно, два основных модуля - логика и просмотр игры - которые взаимодействуют с помощью менеджера событий.
И дело в том, что мне бы очень хотелось, чтобы скрипты влияли как на вещи, связанные с игровой логикой (изменение параметров юнитов и т. Д.), Так и на вещи, связанные с видом на игру, такие как специальные анимации / диалоги для сражений, которые могут зависеть от определенный сценарий триггера.
(Честно говоря, в идеале я хочу, чтобы скрипт контролировал ход игры, оставляя только основную механику / графику для логики / представления, но я новичок в этом, поэтому я не уверен, что смогу сделать это прямо сейчас)
Я думал о трех вариантах:
Просто дайте сценариям жить в логике, но дайте знать о графической стороне игры. Но это сделало бы разделение логики / представления очень расплывчатым, не так ли ...
Сделайте сценарий отдельным модулем, который будет обмениваться событиями с другими, используя тот же менеджер событий. Но это потребовало бы быть очень осторожным с синхронизацией событий, я думаю ... и также добавить колоссальное количество типов событий к менеджеру. (Все же личный фаворит)
Прежде всего, сделайте сценарий модулем, чтобы он мог напрямую влиять / вызывать функции логики / представления. Это позволяет существенно расширить функциональные возможности за счет того, что они напортачат на всю схему обмена событиями и боятся, что сценарий может что-то сломать, даже если это действительно не нужно.
Итак, я не могу ни выбрать один из них, ни придумать лучший способ вставить модуль сценариев ... Есть предложения или полезные ссылки?
Спасибо!
Ps спасибо за перенос вопроса, не знал, что есть специальный раздел для gamedev