Карта исходников Political World
✅ Source verified Political World 1.7.0 GitHub snapshot ce0c917
Эта страница описывает реальную структуру репозитория Political World, а не запланированную архитектуру.
Проверенный snapshot ветки main имеет tree SHA:
ce0c91754722dd1e88e8eaf116c4c667ae020204Публичная граница
Заголовок раздела «Публичная граница»Поддерживаемая граница для сторонних аддонов:
Lous12.PoliticalWorld.PoliticalWorldAPIАрхитектура проекта прямо считает Main, ScenarioBridge, приватные методы partial-класса и reflection во внутренние модули деталями реализации, а не поддерживаемым API для аддонов.
Направление зависимостей задумано так:
WorldBox / NeoModLoader ↓Political World runtime modules ↓PoliticalWorldAPI ↓Third-party addonsКарта runtime-модулей
Заголовок раздела «Карта runtime-модулей»| Путь | Ответственность |
|---|---|
API/ |
Публичный facade, Event Bus, diagnostics, government registry, rare political events. |
Core/Configuration/ |
Legacy identifiers, настройки и общее runtime-state. |
Core/Runtime/ |
Bootstrap NeoModLoader и поэтапный simulation pipeline. |
Core/Integration/WorldBox/ |
Особенно чувствительная к версии интеграция WorldBox/Harmony. |
Core/Persistence/ |
Общие helpers для данных государств. |
Core/Events/ |
Мост Political World → WorldLog. |
Politics/ |
Governments, ideologies, parties, elections, leadership, councils, crises и stability. |
International/ |
Блоки, синхронизация с vanilla Alliance и саммиты. |
Warfare/ |
Интеграция войны и дипломатии. |
Map/ |
State, rendering и patches Political Map. |
UI/ |
Kingdom politics UI, окна и sandbox powers. |
Entry-класс намеренно почти пустой
Заголовок раздела «Entry-класс намеренно почти пустой»src/PoliticalWorld/Main.cs содержит только entry partial-класс NeoModLoader:
public partial class Main : BasicMod<Main>{}Настоящая runtime-реализация разнесена по специализированным partial-модулям.
Большой мод не обязан превращать Main.cs в файл на десятки тысяч строк.
Важные области исходника
Заголовок раздела «Важные области исходника»Runtime
Заголовок раздела «Runtime»Core/Runtime/PoliticalWorld.BootstrapAndPipeline.csЗдесь находятся OnModLoad(), проверка совместимости, центральный Update(), таймеры подсистем и поэтапный political simulation pipeline.
Интеграция WorldBox / Harmony
Заголовок раздела «Интеграция WorldBox / Harmony»Core/Integration/WorldBox/PoliticalWorld.HarmonyPatches.csЗдесь находится version-sensitive установка patches, fallback-имена методов, фильтрация overload и диагностика ошибок patching.
Data helpers
Заголовок раздела «Data helpers»Core/Persistence/KingdomData.Helpers.csОборачивает kingdom.data.get(...) и kingdom.data.set(...) в null-safe typed helpers.
API/PoliticalWorldAPI.csAPI/PoliticalWorldAPI.Creator.csAPI/Events/API/Governments/API/Diagnostics/Public API является границей между большой внутренней симуляцией и сторонними аддонами.
Политические системы
Заголовок раздела «Политические системы»Politics/Governments/Politics/Ideologies/Politics/Parties/Politics/Elections/Politics/Leadership/Politics/Councils/Politics/Crises/Politics/Stability/Международная политика и войны
Заголовок раздела «Международная политика и войны»International/Blocs/International/Summits/Warfare/UI и Political Map
Заголовок раздела «UI и Political Map»UI/KingdomPolitics/UI/Windows/UI/Sandbox/Map/PoliticalMap/Производительность видна прямо в архитектуре
Заголовок раздела «Производительность видна прямо в архитектуре»Political World не превращает каждую систему в отдельный постоянный Update().
Архитектура рекомендует aggregate/event-driven state, редкие проверки и staggered work. В текущем исходнике один центральный mod Update() планирует разные задачи с разной частотой.
Тяжёлый политический цикл дополнительно разбит по последовательным rendered frames вместо выполнения всех политических систем за один кадр.
См.: Разносите тяжёлую симуляцию по кадрам.
Legacy IDs, чувствительные к совместимости
Заголовок раздела «Legacy IDs, чувствительные к совместимости»GUID проекта:
Lous12.PoliticalWorldно старые gameplay/save identifiers с префиксом ukiol_* специально сохранены.
Массовое переименование «ради красоты» может внезапно стать проблемой миграции сохранений.
Правило документации, которое мы получили
Заголовок раздела «Правило документации, которое мы получили»При разборе большого мода нельзя сводить весь код к утверждению:
«Political World — один класс, который обновляет политику».
Нужно отдельно описывать:
- entry/bootstrap;
- domain systems;
- WorldBox integration;
- persistence/data;
- public API;
- UI;
- performance/lifecycle;
- compatibility-sensitive identifiers.
Так и человеку, и ИИ намного проще понимать архитектуру без галлюцинаций.