Моделирование городов, экономики и общества
PolisEngine — это библиотека с открытым исходным кодом для моделирования городов, экономики и общества. Она позволяет ответить на вопросы типа: «Что произойдет, если государство повысит налоги, национализирует предприятия или прервет поставки товаров?». Она создана как бэкенд для стратегий строительства, но может использоваться везде, где требуется моделировать общество без игрового интерфейса и пользовательского интерфейса.
PolisEngine — это библиотека моделирования, написанная на C# для .NET 10. Она моделирует экономику, население, общество, транспорт и инфраструктуру, причём все эти системы взаимно влияют друг на друга — дефицит товаров снижает уровень удовлетворённости, падение доверия подрывает легитимность правительства, а экономический коллапс вызывает миграцию.
Движок специально разработан как «без интерфейса». Он знает состояние мира и правила симуляции, но не занимается тем, как всё выглядит — вся визуальная часть является задачей фронтенда, который движок подключает в качестве зависимости. Таким образом, одна и та же симуляция может использоваться как в 3D-игре, так и в веб-интерфейсе или консольном приложении.
Отсутствие зависимости от игрового движка или пользовательского интерфейса
Один и тот же вход всегда дает один и тот же результат
Содержимое и поведение можно расширить без изменения кода
Содержимое определено в файлах данных
PolisEngine моделирует несколько взаимосвязанных доменов. Каждый из них функционирует автономно, но настоящая динамика возникает только благодаря их взаимодействию на протяжении всех симуляционных тиков.
Рынки, цены, предприятия, налоги, государственный бюджет и долг, центральный банк, приватизация и национализация, потоки капитала и плановая экономика. Экономические модели взаимозаменяемы — капиталистическую модель можно заменить другой, не затрагивая её суть.
Население в качестве отдельных субъектов или в виде совокупных групп в зависимости от необходимого уровня детализации. Демография, образование, потребности, социальные слои и миграция.
Доверие к правительству, легитимность, социальные показатели и их взаимные связи, культурные ценности и нормы. Показатели рассчитываются с помощью графика взаимосвязей, поэтому их можно произвольно сопоставлять.
Здания, транспортные сети, транспортные средства и расписания движения, цепочки поставок, склады и выявление сбоев в поставках.
Мир, разбитый на сетку, состоит из симуляционных блоков, рельефа, природных ресурсов и зон. Уровень детализации симуляции регулируется для каждого блока, что позволяет рассчитывать большие карты без потери производительности.
API для модификаций позволяет добавлять новые типы зданий, товаров и социальных показателей, регистрировать собственные экономические модели и писать игровую логику на языке Lua. Более опасные права доступа, такие как доступ к сети, должны быть явно разрешены.
Движок создается не только для игр. Поскольку он не связан ни с графикой, ни с пользовательским вводом, его можно запустить везде, где требуется моделировать общество или экономику.
Фронтенд отправляет команды и принимает события, а движок, работающий на фоне, выполняет всю симуляцию.
Сравнение реакции различных экономических систем на один и тот же внешний шок.
Детерминированный цикл без головки, с которым агент может работать на полной скорости аппаратного обеспечения.
Моделирование экономических и социальных преобразований и наблюдение за их результатами.
PolisEngine находится на ранней стадии разработки и пока не готов к использованию. Базовая инфраструктура находится в стадии создания, большинство систем моделирования ещё не разработано. Публичный API не является стабильным и может изменяться без предварительного уведомления. Поэтому на данный момент его нельзя внедрять.
Ранняя стадия развитияPolisEngine разрабатывается в открытом доступе на GitHub. Исходный код, архитектурная документация и план разработки доступны всем — их можно просматривать, использовать и комментировать.
Текущее состояние: ранняя стадия разработки
PolisEngine — это проект с открытым исходным кодом. Условия использования приведены в лицензии, размещённой в репозитории.