Разработка, сборка и проверка совместимости
Зафиксированный стек
C7/C7.csproj использует Godot.NET.Sdk 4.4.1, net8.0 и ссылки на движок, импорт и конвертацию. C7Engine/C7Engine.csproj использует обычный .NET SDK, MoonSharp 2.0.0 и System.Text.Json 6.0.11 среди пакетов. Версии относятся к изученному коммиту, не являются рекомендацией обновлять наш проект.
doc/dev_environment.md описывает импорт C7/project.godot, редактор Godot с .NET, Rider либо VS Code. Для полного checkout нужны субмодули Assets и MarkdownLabel; их закреплённые ревизии указаны в метаданных среза.
Команды из документа для отдельной исследовательской копии:
dotnet build C7/C7.sln
dotnet test C7/C7.sln --logger "console;verbosity=detailed"
В этом исследовании команды не выполнялись: задача состояла в анализе и подготовке базы, а не установке desktop-игры на сервере.
Что есть в тестах
Механический подсчёт корпуса обнаружил 186 атрибутов Fact, Theory и SkippableFact в тестовых файлах. Это не число пройденных тестов: Theory может разворачиваться в несколько случаев, некоторые проверки пропускаются.
| Направление | Примеры источников |
|---|---|
| Маршруты | AStarPathFindingTest, колёсные ограничения |
| Поселение | Заблокированная цель поселенца |
| Города и здания | CityTest, зависимости, чудеса, глобальные эффекты |
| Сохранения | SaveTest, преобразование и сценарии |
| Сделки | MultiTurnDealsTest |
| Технологии | FreeTechTest |
| Победы | CheckVictoryTest |
| Генерация | MapGeneratorTest, поймы и карта высот |
Полный реестр атрибутов: test-inventory.json.
Условия выполнения
Часть тестов требует локальную Civ3 и пропускается при её отсутствии. EngineTests/Utils/RemoteSaveLoader.cs скачивает примеры сохранений по сети. Успешный запуск без ресурсов может поэтому покрыть меньше сценариев, чем кажется.
Основной workflow сборки содержит запуск dotnet test для платформенных сборок и получение субмодулей. Файл с названием test-action — демонстрационный workflow, его нельзя ошибочно принять за всю CI-проверку.
План проверки для нас
При реализации выбранной механики взять небольшой независимый пример и ожидаемое правило, затем проверить полный путь «приказ → изменение состояния → подсказка → сохранение → загрузка». Для совместимости Atlants нужны собственные fixtures и отчёт по каждому неподдерживаемому свойству.
Особенно ценны проверки границ: последний житель, полный запас производства, нулевая наука, обрыв дороги, последняя сторона в игре и загрузка посреди хода. Сходство названий тестов двух проектов не заменяет проверку нашей реализации.