Sid Meier's Civilization V

Sid Meier's Civilization V

=Tile Conquest=
 This topic has been pinned, so it's probably important
Gaia  [developer] 25 Jun @ 5:07am
Чем это отличается от Hex Conquer and Release
Сравнивая Tile Conquest с Hex Conquer and Release (CivFanatics), можно отметить, что обе системы обрабатывают захват тайлов, взятие городов и перераспределение клеток после войны. Однако их функциональность и реализация существенно различаются.

Особенности
Tile Conquest вводит ряд уточнённых игровых правил:

Тайлы не захватываются, если ближайший город находится в стадии сожжения – сохранение целостности границ при уничтожении города.

Государства-клиенты не захватывают тайлы (опция настраивается вручную).

Водные тайлы могут быть захвачены, но только сухопутными боевыми юнитами без посадки, чтобы сохранить прибрежную логику.

Клетки столицы не перераспределяются – упрощение стратегических последствий.

Поддерживаются пользовательские улучшения, работающие как форты или цитадели – они получают приоритет при захвате.

Окружённые клетки исключаются из захвата, и при сожжении не происходит перераспределения – захват остаётся основанным на соседстве.

Реализация

Захват тайлов
Hex Conquer использует отдельные функции:

PlayerHexConquer – захват по соседству
CitiesReconquerPlots – восстановление клеток городов
Захваченные клетки отслеживаются в newConqueredPlots, а такие параметры, как bConquerAdjacentPlots, обеспечивают гибкость, но увеличивают сложность.

Tile Conquest объединяет всю логику в одну функцию – TileConquest:

Приоритет отдается фортам, цитаделям и уникальным улучшениям
Используется GetAdjacentTiles для модульной оценки
Удалены лишние циклы и массивы для повышения производительности

Основное отличие: Tile Conquest делает упор на модульность и ясность, улучшая отладку с помощью DebugPrint.

Захват города
Hex Conquer использует CityMod для передачи клеток ближайшим городам прежнего владельца. Сожжённые города игнорируются, а неиспользуемые клетки перераспределяются с помощью AquireUnusedPlotsFromFriendlyCities.

Tile Conquest объединяет все эти процессы в HandleCityCapture, упрощая перераспределение и добавляя обработку сожжений, пустых клеток и уникальных улучшений.

Основное отличие: Tile Conquest упрощает логику и повышает надёжность, особенно в сложных ситуациях с сожжением и кастомными тайлами.

Мирные договоры
Hex Conquer использует ReturnPlotsTeamToTeam, чтобы перебрать все клетки карты и перераспределить их по истории и близости.

Tile Conquest использует HandlePeaceTreaty вместе с ForEachTile для модульной и эффективной обработки. Включены проверки на соседство, длительность владения и исключения для цитаделей и фортов.

Основное отличие: Tile Conquest повышает производительность и точность обработки крайних случаев, минимизируя вложенность через вспомогательные функции.
Last edited by Gaia; 25 Jun @ 5:08am