Привет!
Для начала, физический движок в текстовой игре - это совершенно точно не Havok, PhysX или любой другой физический движок из двух- и трехмерных графических игр - слишком большая разница между текстом и графикой. Поэтому встроить готовый движок в наш проект не получится и придется писать свой.
Идея сервисов симуляции заключается в том, что выполняемый в отдельном потоке код будет:
а. каждый тик или раз в N тиков изменять обслуживаемый им домен (домены)
б. отвечать на 'вопросы', связанные с его 'специализацией'. Условно:
- сервис физики можно спросить 'насколько тут влажно/тепло, каков состав атмосферы';
- сервис химии может рассказать о свойствах вещества;
- сервис биологии пояснит, какова будет скорость передвижения коня со сломанной ногой.
То есть, вместо того, чтобы хранить большой объем малоиспользуемых данных (типа температуры или влажности) в домене, сервисы вычисляют эти цифры 'на лету'.
О ИИ. Настоящего искусственного интеллекта точно не будет. Потому что его вроде как сейчас и нету. Машинного обучения и/или нейросетей тоже скорее всего не будет. А будет еще один сервис -
симуляции ИИ: то есть мобы будут
делать вид, что живут и работают. Примерно так же, как это сделано, например, в Скайриме.
По поводу разговоров. Разговоры между несколькими неписями думаю сделать прямой речью на графах + шаблонах. Между игроком и мобом - вопрос игрока непрямой речью, а ответ NPC - прямой.
Сейчас это выглядит так (тестовые вопрос-ответ):
Код:
> спросить существо про задания
Румарука спросил у существо про задания.
- Иди, найди себе занятие, только от меня отстань!