Источники и метод исследования OpenCiv3
Дата обращения: 26.10.2026. Репозиторий C7-Game/OpenCiv3, ветка Development, коммит c1370e2f63a6042a3c4206f0043543d7da0d5cc5. Дата коммита: 25.10.2026, 19:52:21 UTC.
Охват и способ получения
Через подключённый GitHub получены метаданные репозитория, коммита, полное нетранкированное дерево из 642 записей, список публичных релизов, ответ releases/latest и две страницы открытых issues. API issues включает pull requests; в машинном срезе они отмечены отдельно.
Получены 302 текстовых файла основного репозитория: C7Engine, QueryCiv3, ConvertCiv3Media, EngineTests, doc, Lua и выбранные части UI/рендеринга/сборки. Для каждого файла рассчитаны Git blob SHA и SHA-256. Git blob SHA совпал с закреплённым деревом во всех 302 случаях. Это проверяет происхождение корпуса, но не истинность комментариев и не отсутствие ошибок в программе.
Файлы читались по задачам: небольшие документы целиком, крупные исходники — выборочными участками, именами методов, поиском вызовов и связанного кода. Часть полученного корпуса не использовалась в выводах. Получение файла, чтение дерева и просмотр сигнатур не объявляются полным прочтением исходника. Реестр source-files.json показывает, какие файлы непосредственно процитированы в статьях.
Временная копия исходников находится вне research, в /tmp/openciv3-research/source; исходные изображения, звуки и desktop-сборки не скачивались. В публикуемый раздел входят собственные конспекты и метаданные, а не копия исходного репозитория.
Основные проверки по исходникам
| Направление | Опорные источники | Что проверялось |
|---|---|---|
| Версии и стек | C7.csproj, dev_environment | Godot SDK, target framework, рекомендации сборки |
| Архитектура | EngineStorage, MessageToEngine | Очереди, состояние, уведомления, ожидание анимаций |
| Ход | TurnHandling | Реальная последовательность вызовов |
| Карта | GameMap, MapGenerator | Индексы, чётность, соседи, стадии генерации |
| Состав правил | ruleset.json, standalone | Машинный подсчёт таблиц и фильтра юнитов |
| Города и доходы | City, Tile_Yield | Рост, производство, коммерция, настроение, культура |
| Наука и бюджет | Player, GameData | Прогнозы, стоимость, содержание и дефицит |
| Бой | MapUnit_Actions, MapUnit_Bombard | Раунды, HP, отступление, цели обстрела |
| Маршруты | AlgorithmChooser, TilePath | Нулевые рёбра, стоимость, проверка входа |
| Торговля | TradeOffer, TradeNetwork | Состав обмена и связность дорог |
| AI | PlayerAI, ChooseProducible | Порядок решений, эвристики, ограничения ролей |
| Lua | GameMode, BehaviorEngine | Слои дополнений и вызов правил |
| Импорт | ImportCiv3, Sav | Слои разбора и преобразования, пропуски |
| Сохранения | SaveManager, SaveGame | JSON/ZIP, ссылки, seed, восстановление модели |
| Победы | ScoreVictory и подключение в SaveGame | Реальные обработчики, ограничения |
| Графика | MapView, TextureLoader, ReadPcx | Слои, кэш, форматы, палитра |
| UI и справка | CityScreen, CivilopediaButton, Codex | Наличие логики экрана, отключённая кнопка, парсер |
| Проверки | SaveTest, Civ3TestData, workflow | Атрибуты, пропуски, зависимости от ресурсов |
| Лицензии | LICENSE, NOTICE, gitmodules | Разделение кода, зависимостей и медиа |
Ссылки на остальные использованные файлы расположены непосредственно в тематических статьях. Корпус EngineTests анализировался статически; число 186 — счётчик атрибутов, без заявления об их прохождении.
Wiki и публичные страницы
| Страница | Характер чтения | Роль |
|---|---|---|
| Репозиторий и README | Карточка проекта и описание | Цели, pre-alpha, структура |
| Wiki Home | Введение и навигация | Выбор страниц |
| Contributing | Введение, репозитории, scoping | Приоритет паритета с Civ3 |
| Developer Guide | Разделы среды и сборки | Сверка с csproj и doc |
| Game Assets | Standard/standalone и субмодуль | Назначение заменяющей графики |
| Notes on AI | Обзор и стратегические приоритеты | История замысла; отмечена давность текста |
| Notes on game features | Список feature inspiration | Идеи, не готовые функции |
| Technical notes | Save File Structure | Исторические проблемы сериализации |
| Releases API | Метаданные и описания релизов | Даты, latest, границы старой версии |
| Официальный сайт | Не получен: веб-инструмент вернул ошибку доступа | Не используется как подтверждение |
Wiki прочитана через веб-инструмент и не закреплена отдельной ревизией. Дата страницы не означает актуальности каждого абзаца. Основные технические утверждения привязаны к закреплённым исходникам.
Issues, PR и связанные репозитории
Тела выбранных задач использованы для уточнения ограничений: #1055, #864, #934, #927, #1011, #655, #943. Для #1066 и #1040 проверено наличие открытых PR и их названия; их патчи не объявляются изученными или слитыми. В случае #927 реализация обстрела отдельно найдена в коде: открытая задача не трактуется как отсутствие механики.
В Assets получено только дерево ревизии 9af005c42bd3c0c60e0e10e1a7446015ade81056. Оно содержит 633 записи и отдельные авторские README. Содержимое медиа и полный набор лицензий Assets не анализировались. Pedia упомянута в документации команды, но отдельно не исследовалась. Ссылки из источников не считаются автоматически посещёнными.
Воспроизводимость и пределы
Скрипт scripts/analyze-openciv3.py в корне проекта принимает уже полученный срез и не обращается к сети. Для повторения нужно получить перечисленные в source-files исходники по закреплённым URL и метаданные GitHub, затем выполнить:
python3 scripts/analyze-openciv3.py --snapshot /tmp/openciv3-research
python3 scripts/build-research.py
Скрипт проверяет хеши и формирует собственные JSON-сводки. Временная копия может исчезнуть при очистке /tmp; долговременные URL, SHA и параметры находятся в research.
Наш dist/app.js и существующие исследования оригинальной поставки прочитаны как контекст для плана адаптации. Рекомендации отделены от фактов о внешнем проекте. Исследование не включает запуск OpenCiv3, реальные тесты его совместимости, перенос его кода или оценку производительности.