# Источники и метод исследования OpenCiv3

Дата обращения: **26.10.2026**. Репозиторий [C7-Game/OpenCiv3](https://github.com/C7-Game/OpenCiv3), ветка Development, коммит [`c1370e2f63a6042a3c4206f0043543d7da0d5cc5`](https://github.com/C7-Game/OpenCiv3/commit/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](data/source-files.json) показывает, какие файлы непосредственно процитированы в статьях.

Временная копия исходников находится вне research, в `/tmp/openciv3-research/source`; исходные изображения, звуки и desktop-сборки не скачивались. В публикуемый раздел входят собственные конспекты и метаданные, а не копия исходного репозитория.

## Основные проверки по исходникам

| Направление | Опорные источники | Что проверялось |
| --- | --- | --- |
| Версии и стек | [C7.csproj](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/C7.csproj), [dev_environment](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/doc/dev_environment.md) | Godot SDK, target framework, рекомендации сборки |
| Архитектура | [EngineStorage](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/EngineStorage.cs), [MessageToEngine](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/EntryPoints/MessageToEngine.cs) | Очереди, состояние, уведомления, ожидание анимаций |
| Ход | [TurnHandling](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/EntryPoints/TurnHandling.cs) | Реальная последовательность вызовов |
| Карта | [GameMap](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/GameMap.cs), [MapGenerator](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/MapGenerator.cs) | Индексы, чётность, соседи, стадии генерации |
| Состав правил | [ruleset.json](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/Lua/civ3/ruleset.json), [standalone](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/Lua/standalone/ruleset.lua) | Машинный подсчёт таблиц и фильтра юнитов |
| Города и доходы | [City](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/City.cs), [Tile_Yield](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Tile_Yield.cs) | Рост, производство, коммерция, настроение, культура |
| Наука и бюджет | [Player](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Player.cs), [GameData](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/GameData.cs) | Прогнозы, стоимость, содержание и дефицит |
| Бой | [MapUnit_Actions](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/MapUnit_Actions.cs), [MapUnit_Bombard](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/MapUnit_Bombard.cs) | Раунды, HP, отступление, цели обстрела |
| Маршруты | [AlgorithmChooser](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/AI/Pathing/PathingAlgorithmChooser.cs), [TilePath](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/AIData/TilePath.cs) | Нулевые рёбра, стоимость, проверка входа |
| Торговля | [TradeOffer](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/TradeOffer.cs), [TradeNetwork](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/AI/Pathing/TradeNetwork.cs) | Состав обмена и связность дорог |
| AI | [PlayerAI](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/AI/PlayerAI.cs), [ChooseProducible](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/AI/ChooseProducible.cs) | Порядок решений, эвристики, ограничения ролей |
| Lua | [GameMode](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/Lua/GameMode.cs), [BehaviorEngine](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/Lua/BehaviorEngine.cs) | Слои дополнений и вызов правил |
| Импорт | [ImportCiv3](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/ImportCiv3.cs), [Sav](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/QueryCiv3/Sav.cs) | Слои разбора и преобразования, пропуски |
| Сохранения | [SaveManager](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/SaveManager.cs), [SaveGame](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Save/SaveGame.cs) | JSON/ZIP, ссылки, seed, восстановление модели |
| Победы | [ScoreVictory](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Victory/ScoreVictory.cs) и подключение в SaveGame | Реальные обработчики, ограничения |
| Графика | [MapView](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/MapView.cs), [TextureLoader](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/Textures/TextureLoader.cs), [ReadPcx](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/ConvertCiv3Media/ReadPcx.cs) | Слои, кэш, форматы, палитра |
| UI и справка | [CityScreen](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/UIElements/CityScreen/CityScreen.cs), [CivilopediaButton](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7/UIElements/UpperLeftNav/CivilopediaButton.cs), [Codex](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/C7Engine/C7GameData/Codex.cs) | Наличие логики экрана, отключённая кнопка, парсер |
| Проверки | [SaveTest](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/EngineTests/GameData/SaveTest.cs), [Civ3TestData](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/EngineTests/Utils/Civ3TestData.cs), [workflow](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/.github/workflows/export-c7.yml) | Атрибуты, пропуски, зависимости от ресурсов |
| Лицензии | [LICENSE](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/LICENSE), [NOTICE](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/NOTICE.md), [gitmodules](https://github.com/C7-Game/OpenCiv3/blob/c1370e2f63a6042a3c4206f0043543d7da0d5cc5/.gitmodules) | Разделение кода, зависимостей и медиа |

Ссылки на остальные использованные файлы расположены непосредственно в тематических статьях. Корпус EngineTests анализировался статически; число 186 — счётчик атрибутов, без заявления об их прохождении.

## Wiki и публичные страницы

| Страница | Характер чтения | Роль |
| --- | --- | --- |
| [Репозиторий и README](https://github.com/C7-Game/OpenCiv3) | Карточка проекта и описание | Цели, pre-alpha, структура |
| [Wiki Home](https://github.com/C7-Game/OpenCiv3/wiki) | Введение и навигация | Выбор страниц |
| [Contributing](https://github.com/C7-Game/OpenCiv3/wiki/Contributing) | Введение, репозитории, scoping | Приоритет паритета с Civ3 |
| [Developer Guide](https://github.com/C7-Game/OpenCiv3/wiki/Developer-Guide) | Разделы среды и сборки | Сверка с csproj и doc |
| [Game Assets](https://github.com/C7-Game/OpenCiv3/wiki/Game-Assets) | Standard/standalone и субмодуль | Назначение заменяющей графики |
| [Notes on AI](https://github.com/C7-Game/OpenCiv3/wiki/Notes-on-AI) | Обзор и стратегические приоритеты | История замысла; отмечена давность текста |
| [Notes on game features](https://github.com/C7-Game/OpenCiv3/wiki/Notes-on-game-features) | Список feature inspiration | Идеи, не готовые функции |
| [Technical notes](https://github.com/C7-Game/OpenCiv3/wiki/Technical-notes) | Save File Structure | Исторические проблемы сериализации |
| [Releases API](https://api.github.com/repos/C7-Game/OpenCiv3/releases?per_page=10) | Метаданные и описания релизов | Даты, latest, границы старой версии |
| [Официальный сайт](https://www.openciv3.org/) | Не получен: веб-инструмент вернул ошибку доступа | Не используется как подтверждение |

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, затем выполнить:

```bash
python3 scripts/analyze-openciv3.py --snapshot /tmp/openciv3-research
python3 scripts/build-research.py
```

Скрипт проверяет хеши и формирует собственные JSON-сводки. Временная копия может исчезнуть при очистке /tmp; долговременные URL, SHA и параметры находятся в research.

Наш `dist/app.js` и существующие исследования оригинальной поставки прочитаны как контекст для плана адаптации. Рекомендации отделены от фактов о внешнем проекте. Исследование не включает запуск OpenCiv3, реальные тесты его совместимости, перенос его кода или оценку производительности.

