Обзор
В 2026 году OGame 0.84 Open Source — возрождённый классический OGame v0.84 с оригинальным дизайном нулевых — прошёл через две интенсивные волны разработки: январь–февраль и август–сентябрь. За это время в ветку master влито 559 коммитов из 82 смерженных pull request’ов (около +434 тыс. / −82 тыс. строк в ~1 448 файлах).
Главные итоги года:
- Настоящая подсистема модов: самодостаточные моды с хуками, админ-панель модов и четыре мода в репозитории — GalaxyTool, «Космический Шторм» (Space Storm), «Чудовища Бездны» (Deep Space Horror) и минимальный пример BogusMod.
- Глубокий рефакторинг архитектуры: модульное ядро, типизация методов, единый роутер страниц и долгая миграция разделения контроллера страницы и представления (MVC).
- Golden-тестирование страниц: полные HTML-снимки всех страниц игры, рендер на in-memory SQLite-движке, семь поддерживаемых языков и сравнение с сохранёнными снимками OldDesign.
- Исправления безопасности и стабильности: XSS в именах альянсов, краши после атак, восстановление оригинального алгоритма ракетной атаки (IPM) и десятки игровых багов.
- Полная документация разработчика: руководство мододела (HTML + wiki), Doxygen-документация игрового ядра, код без ошибок PHPStan и тестовые наборы внутри самих модов.
Все номера issue и pull request’ов ниже ведут на репозиторий GitHub. Дайджест собран по истории ветки master и текущему состоянию кода по состоянию на 3 сентября 2026 года.
Год в цифрах
Ритм активности года (коммиты в master по месяцам):
| Месяц | Коммитов | Что преобладало |
|---|---|---|
| Январь | 292 | Модульность ядра, роутер, Space Storm, «Ресурс как игровой объект», Deep Space Horror, старт MVC-миграции |
| Февраль | 160 | Первая волна Space Storm, GalaxyTool-мод, лимиты, фиксы крашей, MVC-миграция |
| Март | 6 | Конец первой волны (последний MVC-мерж — 6 марта) |
| Июнь | 6 | Страницы fleet_templates и changelog на MVC, написан план миграции |
| Август | 66 | In-memory SQLite-бэкенд, golden-тесты, выравнивание MVC, Doxygen, фиксы XSS, зачистка PHPStan |
| Сентябрь (1–3) | 29 | Golden-тесты на всех языках, алгоритм IPM, завершение Space Storm и Deep Space Horror, руководство мододела |
Первая волна (PR #167–#247) шла с 9 января по 6 марта и перестроила фундамент движка.
Вторая волна (PR #250–#286) — с 18 августа по 3 сентября: тестовый каркас, финальный раунд
исправлений и документация. Репозиторий используется командой как живой полигон: заметная часть кода
2026 года написана и отревьюена с помощью ИИ-агентов (в трейлерах коммитов вида
Co-authored-by: DeepSeek Harness <deepseek-harness@noreply.local>).
Хронология
| Когда | Что произошло (смерженные PR / коммиты в master) |
|---|---|
| 9–11 января | Разделение ядра на модули (#167), полная типизация методов ядра (#169), единый роутер страниц (#171) — фундамент нового ядра заложен за три дня. |
| 12 янв – 15 фев | Серия мода Space Storm (#173 #177–#193 #209–#230): глобальные штормовые события, постройка «Стабилизатор Реальности», боевые и экономические хуки — первая большая проверка системы модов. |
| 18 янв – 1 фев | Ресурс как игровой объект (#181 #186 #194 #206): единая экономика страниц ресурсов и империи, обработка ресурсов флотами, новые хуки производства. |
| 26 янв – 6 мар | Начало разделения контроллера и представления страницы (#195 и далее #208 #234–#247): первой переведена страница ресурсов (26 янв), затем обзор, заметки, админ-страницы, постройки, дерево технологий. |
| 27 янв – 2 фев | Серия мода Deep Space Horror (#196 #199–#207): три блуждающих чудовища, порталы Бездны, ковровые бомбардировки, трофеи и возрождение — второй большой тест системы модов (свои объекты галактики, юниты и миссии). |
| 7–8 февраля | GalaxyTool становится встроенным модом (#214 #216 #217) — мод со своей игровой и админ-страницей на шести языках. |
| 10 февраля | Лимиты и баланс (#221):
настройка battle_max, предел 99-го уровня для построек и исследований; проверка CRON на админ-странице очереди. |
| 14–15 февраля | Исправлены краш после шпионажа (#228), краш после атаки (#231) и локализация имени проекта (#233). |
| 16–24 февраля | Ещё страницы на MVC (разделение альянса на подмодули, techtree), исправлены исследование «Гравитон», уменьшение IPM, бой экспедиций; фикс ракетной атаки. |
| 25 июня | Прямые коммиты в master: страницы fleet_templates и changelog на MVC;
набросан план MVC-миграции и планы разработки (хранились в ветке 191); введены LF-окончания строк
(.gitattributes). |
| 18 августа | Альтернативный in-memory бэкенд БД — SQLite через PDO (#250) и первый golden-набор на нём (#251). |
| 19 августа | Полное golden-покрытие всех страниц игры (#257), golden-тесты POST-страниц (#259); найдены и исправлены регрессии от MVC-рефакторинга. |
| 20 августа | MVC-страницы приведены в соответствие с master (#260),
Doxygen-документация для game/core (#262),
исправление XSS в именах альянсов и заметках (#263
#264),
исправлены все ошибки PHPStan (#266). |
| 1 сентября | Golden-тесты на всех семи языках (#270), сравнение с сохранёнными снимками OldDesign (#271), восстановлен оригинальный алгоритм ракетной атаки OGame (#272). |
| 2 сентября | Завершён Space Storm (#273–#275), исправлены отрицательные ресурсы админа (#276), кнопка «максимум» у торговца (#277), кулдаун экспедиций в Дальний космос (#278), мгновенное обновление статистики после ракетной атаки (#283), аудит Deep Space Horror (#284). |
| 3 сентября | Опубликовано руководство мододела (#286) —
HTML-руководство в стиле Evolution в docs/ и полная wiki-страница о модах. |
Архитектура движка
2026 год начался с интенсивного рефакторинга движка, который шёл с января по март и волнами продолжался до августа. Он сделал старую кодовую базу заметно более поддерживаемой, не меняя игровую механику.
Разделение ядра на модули #167
Начало января: 27 модулей движка переехали из веб-доступного корня game/ в самодостаточный
game/core/ (36 плоских PHP-модулей + .htaccess, запрещающий веб-доступ), загружаемых
в порядке зависимостей бутстрапом core.php. Каждый модуль — сфокусированный файл с ясной зоной
ответственности: база данных (db.php-фасад + db_mysql.php/db_sqlite.php),
пользователь, планета, флот, очередь, производство, бой, сообщения, альянсы, моды, утилиты и другие. Позже
появились единый реестр игровых объектов techs.php (GID, карты, IsBuilding/IsFleet/…)
и файл констант defs.php, движок альянсов разделён на подмодули
ally.php/allyapps.php/allyranks.php/buddy.php,
а слой БД обзавёлся SQLite-бэкендом для тестов.
Полная типизация методов ядра #169
Все методы ядра получили полные PHP-типы (типы параметров и возвращаемых значений). Вместе с PHPStan (см. ниже) это превратило динамически типизированную легаси-базу в код, где большинство ошибок типов ловится на этапе анализа, не доходя до работающей вселенной.
Единый роутер страниц #171
Маршрутизация стала управляться данными через game/router.json: index.php стал
единым фронт-контроллером, который сопоставляет ключи ?page=… обработчикам по декларативной
таблице (путь, лока, флаги и новый маркер "mvc": true), а моды могут добавлять маршруты через хук
route. У админ-панели появился собственный второй роутер —
game/pages_admin/admin_router.json (26 записей ?mode, хук route_admin).
Сегодня маршрутизировано 37 ключей страниц; 31 — MVC-страницы, и лишь 6 остаются в старом стиле —
сама оболочка админки и специальные «голые»/внешние страницы
ainfo, bericht, logout, phalanx, pranger.
Разделение контроллера и представления страницы (MVC) #191
Самый долгий рефакторинг года. Раньше игровые страницы смешивали обработку запроса, бизнес-логику и
HTML-вывод в одном файле. Теперь каждая страница — класс в game/pages/, наследующий абстрактный
Page: controller() обрабатывает GET/POST-логику и возвращает, нужно ли рендерить,
view() рендерит; фронт-контроллер вызывает их внутри общего жизненного цикла страницы. Миграция
в master, подтверждённая флагом "mvc": true в router.json: 0 до 26 января → 1
(26 янв, #195,
ресурсы) → 2 (3 фев, #208)
→ 7 (16 фев, #234:
+обзор, заметки, постройки, techtree) — и оставалось 7 весь март
(#235–#247 были фиксами) — затем скачок до 31 из 37
маршрутизированных страниц 20 августа (#260:
массовый перевод плюс исправление регрессий, чтобы golden-набор проходил). Переведены и все 26 админ-режимов
(классы Admin_*). Последние шесть записей старого стиля — намеренно «голые»/внешние страницы:
оболочка админки и ainfo, bericht, logout, phalanx, pranger.
План миграции был набросан 25 июня (хранился в ветке, в дерево master не попал).
Ресурс как игровой объект #180
Январь: ресурсы перестали быть тремя захардкоженными числами и стали полноценными игровыми объектами,
каждый со своим GID (GID_RC_METAL=700, GID_RC_CRYSTAL=701,
GID_RC_DEUTERIUM=702, GID_RC_ENERGY=703, GID_RC_DM=704).
techs.php получил IsResource() и типизированные карты ресурсов; унифицированные
математика цен/длительности/производства и обработка ресурсов флотами позволяют ресурсам течь через все
объектно-обобщённые механизмы, а новые хуки (add_resources,
page_resources_get_bonus, page_buildings_get_bonus) дают модам и страницам единый
конвейер производства (документировано в wiki/ru/resources.md).
Почему это важно
Эти изменения — предпосылка всего остального в дайджесте: типизированное, модульное ядро с роутером и разделёнными контроллерами делает возможными подсистему модов, golden-тесты и чистое состояние PHPStan — и позволяет вносить правки в одну страницу, не ломая всю игру.
Моды: подсистема и контент
Подсистема модов — главная игровая история 2026 года. Мод — это самодостаточная папка в
game/mods/ с классом, наследующим GameMod (game/core/mods.php):
main.php, manifest.json и опционально свои pages/, pages_admin/,
loca/, img/, testing/. Ядро само находит моды по папкам, загружает их в
порядке активации и вызывает их хуки в фиксированных точках движка — от событий очереди и бонусов
производства до миссий флотов и боевых характеристик. Моды регистрируются по вселенной списком
uni.modlist; администратор устанавливает/удаляет/переставляет их через новый админ-раздел
(pages_admin/admin_mods.php, функции ModsList/ModsInstall/ModsRemove),
после чего вызывается install() (ALTER TABLE, события очереди, loca_add).
Полный справочник — руководство мододела
и wiki/ru/mods.md.
GalaxyTool #214 #216 #217
Февраль: Galaxytool — раньше безусловная функция ядра — стал встроенным, но опциональным модом со
своей игровой страницей (pages/galaxytool.php) и админ-разделом, локализованный на шести языках
(de, en, es, fr, it, ru). Периодическое событие очереди (по умолчанию еженедельно) пишет снимки вселенной
в temp/ (координаты галактики, статистика топ-1000, статистика альянсов), а игровая страница
показывает растущих/падающих/неактивных игроков относительно предыдущего снимка. Администратор настраивает
период обновления (1–30 дней) на новой странице admin_galaxytool.php; мод включается по
вселенной, и кода GalaxyTool вне папки мода не осталось. Ветка заодно перевела всю админ-область на MVC
(#216) и добавила
хук route_admin (#217).
Space Storm #172
Начат в январе и завершён в сентябре: демонстрационный мод, который нагружает глобальные модификаторы
движка (в Readme прямо сказано — это тестовый полигон механик движка, а не сбалансированный контент).
Периодическое глобальное событие — Космический Шторм — тикает каждый час и меняет правила всей
вселенной: один или несколько из десяти эффектов (скорость флотов −30–50%; 5% мгновенного
прибытия / 1% потери на 1–2 часа; броня −20% и щиты +30%; удвоенный расход топлива и +25% добычи
дейтерия; отчёты шпионажа с задержкой 1–5 мин и шпионаж −2; Энергетический Коллапс с −40%
энергии и шансом заморозить случайную постройку/исследование; +10% к щитам обороны; конверсия 20% добычи
в случайный ресурс; отключённый «Транспорт» между своими планетами; потери атакующего 5% флота после победы).
Новое планетарное здание — Стабилизатор Реальности (GID_B_REALITY_STAB) — можно строить
только во время шторма (+0.5% энергии за уровень); каждый завершённый уровень «запечатлевает» активный
тип шторма на планете и открывает поуровневые контр-эффекты для этих эффектов. Всё реализовано чисто
через хуки: боевые эффекты масштабируют статы юнитов по каждому бою на фронтенде боевого движка
(battle_unit_stats), бэкенд движка не тронут. Вехи: январская волна
(#173–#193: скелет, табличные требования, первые
механики, хуки can_build/build_end/page_infos), февральская
(#209–#230: панель бонусов, хуки производства/топлива,
базовая фича заморозки очереди FreezeQueue в #213, флот/шпион-хуки,
защита от производства выше склада) и сентябрьское завершение
(#273–
#275): все десять
эффектов и счётчики стабилизатора доведены до ума, добавлена локализация en/de (языки теперь ru/en/de),
авто-разморозка при энергоколлапсе (замороженные задачи размораживаются при восстановлении энергии)
и шпион-защита стабилизатора через новый хук spy_protection (+1 уровень защиты шпионажа
за каждые 2 уровня), а тесты вынесены внутрь мода как самостоятельный PHPUnit-набор.
Deep Space Horror #189
Три гигантских космических чудовища — Амёба («Планктонный Пожиратель»), Страж («Блуждающий Монолит») и Левиафан («Галактический Исполин») — блуждают по вселенной. Каждое — одновременно объект-«планета» галактики и флот, существует в единственном экземпляре на вселенную и несёт уникальный арт. Флот чудовища летит (миссия «Подготовка к гиперпереходу») к своему Порталу Бездны; по прибытии портал уничтожается, чудовище занимает точку и, если рядом есть обитаемые планеты, начинается автоматический бой — ковровая бомбардировка всех обычных планет в радиусе от портала (P±1 / P±2 / P±3 в зависимости от чудовища), включая оборону и союзные флоты в ожидании (ACS), с бо́льшим числом раундов, чем в обычном бою (+1/+2/+3). Перемещение между порталами подчиняется ИИ каждого чудовища: Амёба дрейфует рядом, Страж идёт по предсказуемой спирали через галактику, Левиафан прыгает в случайные галактики.
Бои идут через фронтенд боевого движка без правок бэкенда — более того, январская волна включала масштабную переработку BattleEngine (#199: переписаны PHP-ядро боя и C++-движок) плюс унификацию боевых отчётов и расчёта обломков, которыми мод затем пользуется. Если защитники уничтожили чудовище, его останки распределяются между участниками пропорционально вкладу (Амёба — 2,5 млн дейтерия, Страж — 10 млн кристалла, Левиафан — 40 млн металла), каждому отправляется личное сообщение «Трофей Бездны», а на всю вселенную уходит броадкаст об уничтожении; убитые чудовища возрождаются в случайной точке через 24–72 реальных часа через одноразовое событие очереди. Языки: ru + en.
В сентябре мод прошёл аудит (#284):
потери защитников теперь списываются сквозным образом, трофей распределяется, возрождение планируется
(хелпер ядра SetPlanetFleetDefense пишет только существующие колонки), внутри мода появился
самостоятельный PHPUnit-набор из 38 тестов (25 логики + 13 на in-memory SQLite), а журнал разработки
на 670 строк переписан в читаемый структурированный Readme с добавлением английской локализации.
BogusMod
Добавлен в начале января как минимальный пример: одна колонка БД, свой ресурс, пункт меню и страница — «hello world» системы модов.
Безопасность и исправления
Безопасность
- XSS в имени альянса и заметках (#165,
мерж #263
#264):
имена/теги альянсов и заметки, имена игроков, имена ACS-союзов и тексты друзей/заметок теперь
HTML-экранируются на выводе примерно на 30 страницах; заметки хранятся как есть и экранируются при
рендере (раньше — двойное кодирование). Пути хранения XSS закрыты; добавлен регрессионный набор
XssTest. - Фикс пустой сессии и
CheckParametersпри установке (сентябрь): пустая строка сессии больше не аутентифицируется как технический «разлогиненный» аккаунт, гости на внутренних страницах редиректятся домой, а установщик проверяет все поля/диапазоны и доступность БД до изменения таблиц. - Утечки учётных данных БД закрыты: back trace использует
DEBUG_BACKTRACE_IGNORE_ARGS(#245),AddDBRowэкранирует строки черезmysqli_real_escape_string, исключения mysqli при подключении не выбрасываются (март).
Бой
- Восстановлен оригинальный алгоритм ракетной атаки OGame (IPM) (#61, мерж #272): ПРО перехватывают МБР 1:1, а остаточный урон после уничтожения обороны разрушает и хранящиеся у защитника ракеты.
- Статистика обновляется сразу после ракетной атаки (#145, мерж #283): очки атакующего (стоимость МБР) и защитника (уничтоженная оборона) корректируются немедленно, а не при следующем полном пересчёте.
- Фиксы ракет (февраль): урон МБР считался по захардкоженному юниту 503 вместо
GID_D_IPM, а список событий обзора читал не ту переменную; запуск МБР теперь действительно уменьшает запас ракет планеты (неверный ключ массива). - Исправлены краш после атаки (#231)
и краш после шпионажа (#228 —
отчёт шпионажа читал несуществующее поле энергии, а
rand()получал дробную границу); бой экспедиций (защита от отсутствующих записей юнитов);AddShipyardи исследование «Гравитон» (устаревшие чтения планеты, списание стоимости с нехранимых ресурсов). - Настройка
battle_maxи жёсткие пределыMAX_BUILDINGS_LEVEL/MAX_RESEARCH_LEVEL = 99, применяемые в очереди и UI (#221); ACS, бои экспедиций и отправка флотов отклоняют флоты вышеbattle_maxс локализованными ошибками.
Экономика и планеты
- Отрицательные ресурсы планеты при игре за админа исправлены
(#117,
мерж #276):
сложение/вычитание ресурсов зажимается на нуле в PHP, грабёж и сбор обломков защищены от отрицательных
входов;
SetPlanetFleetDefenseпишет только те колонки, что есть у планеты. - Кнопка «максимум» у торговца больше не превышает вместимость складов (#82, мерж #277): сделки ограничиваются свободным складом, а проверка сравнивала кристалл с лимитом металла — исправлено.
- Производство выше вместимости склада больше не тикает (февраль);
IsEnoughResourcesпроверяет ресурсы игрока и планеты раздельно (январь); тёмная материя выведена как ресурсGID_RC_DM(февраль); истечение офицеров перенесено с глобальных событий очереди на надёжные таймеры пользователя (январь); очистка обломков использует унифицированные колонки (январь); страница выхода уважает скин игрока (февраль).
Экспедиции
- Счётчик посещений экспедиций с кулдауном в Дальний космос и очистка Дальнего космоса (#174, мерж #278): позицию можно посещать ~3 раза/час без лишнего истощения; неиспользуемые объекты Дальнего космоса убирает отдельная еженедельная задача очереди — обе задачи видны на админ-странице очереди.
Стабильность и админка
- Зачистка предупреждений PHP 8.x шла весь год (устаревшие float→int, неопределённые ключи,
unserialize(), отчёты mysqli). - Админка: кнопка «Check CRON» на странице очереди, устойчивость cron, редактор Botstrat с JSON-импортом/
экспортом, null-безопасные хелперы имён планет (
AdminPlanetName; в списке пользователей у аккаунтов без родной планеты показывается «–»), страница Source-Check с контрольными суммами файлов движка/страниц и режим отпуска через переиспользуемый методEnableVacation.
Тестирование
До августа у проекта были лишь единичные ad-hoc тесты. За две недели команда построила настоящий регрессионный каркас, который сегодня рендерит целые страницы и сравнивает их с эталонными снимками.
- In-memory бэкенд БД для тестов (#250):
db.phpстал фасадом между живым mysqli-бэкендом и новымdb_sqlite.php(PDO SQLite, in-memory), выбираемым черезDB_CONNECTION=sqlite. Он переводит MySQL-идиомы (LOCK TABLES,SET @var:=, AUTO_INCREMENT), так что настоящий игровой код и схема работают в PHPUnit без MySQL-сервера;FixtureBuilderнаполняет полную вселенную-фикстуру на 3 игроков (луны, летящие флоты, очереди, сообщения, альянс, баны, обломки…). - Golden-набор страниц (#251
#257
#259
#270
#271):
GoldenPagesTest(122 тест-метода) загружает страницы ровно какgame/index.php(роутер, аутентификация, моды, лока), нормализует изменчивый вывод (таймстампы, сессии, ID, локализованные длительности) и сравнивает HTML с сохранёнными снимками;UPDATE_GOLDEN=1перегенерирует их. Покрытие: 707 файлов снимков = 101 HTML на язык × 7 языков (de, en, es, fr, it, jp, ru), включая ~25 POST-сценариев для каждой POST-страницы (отзыв флота, постройка на верфи, обмен у торговца, запуск МБР, действия альянса…) и guard-тесты, которые следят, что у каждой маршрутизированной и каждой POST-страницы есть снимок. 1 сентября снимки сравнили с архивом OldDesign (классический дизайн, сохранённый во внешнем репозиторииogamespec/OldDesign), доказав паритет вёрстки, и дозаполнили недостающую локальjp_jp. Набор сразу поймал регрессии, внесённые MVC-рефакторингом, — их затем исправили. - Юнит-тесты под фиксы: RocketAttack, RocketAttackStats, TraderStorage, NegativeResources, Farspace, Xss, Notes, Homepage и DbSqlite (11 классов, 191 тест-метод суммарно) покрывают конкретные баги из предыдущего раздела.
- Самостоятельные PHPUnit-наборы внутри модов: Space Storm (22 тест-метода) и Deep Space Horror
(38 тест-методов) поставляют
testing/со своимphpunit.xml, bootstrap и DB-тестами на in-memory SQLite (#275, #284) — разработка модов не засоряет общий набор проекта. - PHPUnit обновлён до 10.5.62 (#198).
Документация и качество
- Руководство мододела (#286):
mod-manual-ru.html / mod-manual-en.html
в стиле Evolution плюс wiki/ru/mods.md и wiki/en/mods.md —
руководство из 13 разделов: структура папок, API
GameMod, страницы модов и админ-роутинг, локализация, события очереди и полный справочник из 38 хуков с местами вызова, плюс сценарии реальных модов. - Doxygen-документация для
game/core(#262): +4 200 строк API-комментариев в 37 файлах ядра (Doxyfile в корне, вывод в .gitignore). - Зачистка PHPStan (#266):
анализ уровня 8 для
game/иwwwroot/(конфиг с января) в августе доведён до нуля ошибок — версионируемый отчёт сжался с 5 671 строки (январь) до «[OK] No errors». Анализатор вскрыл реальные баги (некавыченный ключ массива, опечаткаfilectime(), удалённыйeach(), потерянный__DIR__) — их исправили, а намеренные конструкции, помеченные как мёртвый код, восстановили с ignore-маркерами. - Wiki: за год добавлены и сильно обновлены страницы — руководство по модам (en+ru), golden-тестирование, установка (включая Docker), feed, очередь, бонусы и другие.
- Переписанные Readme: Deep Space Horror получил полный читаемый документ в сентябре (#284); Readme Space Storm документирует каждый эффект и хук.
Локализация
- Локализация имени проекта (#233):
макросы
OGAME_INT/OGAME_LOCпозволяют локализовать название игры и тексты интерфейса по языкам. - Локализован и стабилизирован процесс регистрации:
REG_NEW,REG_CHANGE,REG_GREET_MAIL,REG_GREET_MSG,REG_FORGOT,EMAIL_BARRIERFREI;isValidEmailперенесён в утилиты; переработаны страницы регистрации и обслуживания. - Локали модов: Space Storm на en/de/ru, Deep Space Horror на en/ru, GalaxyTool на шести языках.
- Golden-снимки на семи языках держат переводы честными — страница за страницей.
Развёртывание и PHP 8.x
- Docker: Dockerfile и история развёртывания переработаны (январь–сентябрь) —
compose.yaml, боевой движок внутри контейнера, проверки при установке; в wiki появилось полное руководство по установке в Docker и ссылки на сообщество. - Совместимость с PHP 8.x: в течение года исправлены все предупреждения 8.x/8.2 (float→int,
unserialize, отчёты mysqli); обновлены рекомендацииphp.ini. - Гигиена git: LF-окончания строк закреплены через
.gitattributes; конфиги и отчёты PHPStan и PHPUnit версионируются вместе с кодом.
Команда и ссылки
Репозиторий: github.com/ogamespec/ogame-opensource.
Основная разработка и ревью кода: ogamespec. Заметная часть работы 2026 года выполнена с помощью
ИИ-агентов, чьи коммиты несут трейлер
Co-authored-by: DeepSeek Harness <deepseek-harness@noreply.local> — этот дайджест также
собран таким агентом в ветке 282-digest-year-2026 (issue
#282).
- Issues и pull request’ы: issues / pulls
- Документация: Руководство мододела (RU) · Руководство мододела (EN) · wiki/en/mods.md
- Этот дайджест: English version