Прежде всего, есть несколько подсказок для создания истории о Dwarf Fortress. Некоторое время назад кто-то спросил на форумах Bay12 , и была сделана расшифровка стенограммы, и вы можете узнать, где начинается обсуждение, выполнив поиск: «наша тема сегодня - поколение в мире и поколение в истории».
Я не знаю точно, как это делает Dwarf Fortress, но я объясню, как я планирую реализовать очень простой первый черновик в моей игре. Я собираюсь использовать простой клеточный автомат . Если вы посмотрите на эти прототипы Spore , такие как клеточная культура и биом.
Это примеры клеточной автоматизации и того, что они могут производить. По сути, я создам правила для разных рас. Вот некоторые примеры правил:
- Их враждебность по отношению к другим расам
- Их климатические предпочтения
- Их потребности в ресурсах
- Их уровень рождаемости и продолжительность жизни
- Их желания (технологические исследования, коммерция, мирное существование, мировое господство)
- Их возможности (построение структуры, сбор ресурсов, ведение войны и т. Д.)
- И так далее...
Таким образом, самый важный вклад для всего этого - это мир, в который эти расы могут попасть. Местность будет определять их предпочтения и расширение. Поэтому, как только вы создадите мир, выберите случайные места в мире, где эти расы будут жить, и дайте им проиграть. Теперь начинается интересное. Теперь, когда у вас есть земля и расы с желаниями и способностями, вы можете начать строить историю. Эти расы собирают ресурсы, затем строятся структуры:
- Города с высоким ресурсом, районы с высокой жилой доступностью.
- Дороги соединяют крупные города.
- Мосты через реки.
- Туннели через горы.
- Крепости возле передовой линии расширения в ответ на сражения.
Любая структура может быть подвергнута набегу / завоеванию другими расами. Чем дольше структура (например, город или крепость) существует в истории, тем она более защищаема, тем труднее ее захватить. И тем более желательным для гонок, которые хотят контроля. Сражения ведутся там, где встречаются расы (по крайней мере, один враждебный). Сражения названы в честь ориентиров или близлежащих сооружений, или если сражение является значительным или ориентиры не названы, ориентиры названы в честь битвы.
Дороги, мосты и туннели расширяются за счет торговли и транспортировки ресурсов. Каждый из них имеет максимальную пропускную способность, которая может увеличиваться с расходом ресурсов. Строить каменную крепость посреди лугов? Эти дороги будут интенсивно использоваться для транспортировки необходимого камня. Они станут больше и получат имя.
Происходят стихийные бедствия, влияющие на население и ход истории. Землетрясения могут превратить город в руины или разрушить туннель. Наводнение может смыть дорогу или мост.
Это не так глубоко, как Крепость Гномов, но это начало. Теперь, как вы можете себе представить (и как упоминал Джонатан Хоббс), чем больше расширяются эти расы, тем больше ячеек моделируется. Мало того, что моделируется больше ячеек, но и моделирование является более сложным, поскольку теперь есть структуры, которые нужно строить / поддерживать, сражения за зарплату, коммерция ... коммерция и так далее. Это становится тяжелым для любого языка. Javascript может замедлиться раньше. Тем не менее, вы всегда можете пожертвовать сложностью для улучшения скорости.
Это все симуляция (хотя и сложная), вы просто записываете важные события и называете это историей.
Я также только что нашел сообщение на форуме Bay12 для людей, которые проводят мозговой штурм о том, как сделать мир поколения Dwarf Fortress быстрее. Я не читал его, но он может дать некоторые подсказки, если у вас возникнут проблемы с слишком медленной реализацией.