Местность: вычисление индекса по четырём клеткам
Источник: OpenCiv3, TerrainTextureFiles.cs. Прочитан целиком 26.10.2026. Это алгоритм OpenCiv3; совпадение выбора всех декоративных вариантов с Firaxis не доказано.
Набор входов
Алгоритм учитывает собственную клетку и соседей N, NW, NE. Один лист содержит 81 комбинацию трёх типов. Типам сопоставляются троичные значения; для порядка N/NW/NE/центр веса равны 1, 3, 9, 27.
Для xtgc тундра соответствует нулю, луг — единице, берег — двойке. Пример из кода: N=луг, NW=берег, NE=тундра, центр=берег даёт 1 + 6 + 0 + 54 = 61.
Выбор листа отделён от выбора фрагмента. Для однородного моря и океана используется случайный индекс 0–80. Пойма при выборе базовой графики трактуется как пустыня; отсутствующий сосед — как берег. Ограничение соседства тундры принято самим алгоритмом.
Что важно для нашего редактора
Это конкретный пример соседозависимой сборки вместо независимых ромбов. При перекраске одной клетки меняются также фрагменты, в чей набор соседей она входит. Требуется отдельно проверить координатную систему: название направления в коде не гарантирует тот же экранный сдвиг в нашей DOM-карте.
Не следует без эталонов переносить выбор листа для стыка четырёх разных типов или случайные декоративные варианты.