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