Когда я только начал создавать игру, мне было интересно понять: получится ли у меня вообще довести эту идею до рабочего результата?
Поэтому первые промты просто добавляли в игру новый функционал. Об архитектуре кода я тогда практически не думал.
В результате игра получилась почти монолитной: большая часть геймплея, интерфейса, терминала и сетевой логики находилась в одном огромном файле
game.js и нескольких тесно связанных модулях.Проект работал, но с появлением новых уровней и механик любое изменение становилось всё сложнее и рискованнее. ⚠️
🛠 Что было сделано
Архитектура проекта прошла две большие миграции.
🌐 Сетевой движок стал единым источником истины
Вся работа сети была централизована в
GNENetworkEngine:🔹 VLAN, OSPF, BGP и статическая маршрутизация
🔹 ping и расчёт связности
🔹 состояние сетевых устройств
🔹 Cisco-подобный CLI
🔹 таблицы маршрутизации и топология
Более того, сетевой движок теперь можно перенести из GNE в другую программу.
Я изначально предполагал, что хороший сетевой симулятор может пригодиться мне и в других проектах. Для его тестирования и развития я даже создал отдельную браузерную программу наподобие Cisco Packet Tracer.
В ней можно создавать сетевые устройства, соединять их между собой, настраивать через CLI и проверять связность.
После того как движок был протестирован и доработан отдельно, я внедрил его обновлённую версию обратно в игру.
Теперь миссии, терминал и интерфейс используют одно и то же состояние сети — без дублирования логики.
🧩 Монолитный
game.js был разделён на подсистемыИз него постепенно вынесли:
🔹 игровые состояния и миссии
🔹 взаимодействие игрока
🔹 терминал и его view-models
🔹 инвентарь, кирку и реактивный ранец
🔹 сохранение и восстановление состояния
🔹 каталоги уровней, предметов, способностей и устройств
Теперь контроллеры принимают решения и формируют планы действий, а
game.js в основном координирует работу подсистем и применяет игровые эффекты: физику, анимации, сообщения и изменения игрового мира.✅ Результат
Архитектура стала модульной и расширяемой:
🧠 правила находятся в контроллерах
📚 контент — в каталогах
🌐 сеть — в отдельном движке
💾 сохранение — в отдельном pipeline
🎮
game.js — orchestration layerТекущий этап архитектурной миграции завершился в версии v581 со статусом:
🟢 MIGRATION_COMPLETE
Теперь новые уровни, предметы, способности и сетевые устройства можно добавлять безопаснее, не превращая основной файл игры в ещё больший монолит. 🌌🔧
Но на этом работа не заканчивается. В планах ещё третий этапа миграции, чтобы продолжить отделять игровые модули от
game.js и сделать архитектуру проекта ещё более независимой и масштабируемой.

