Содержание
KsirK позволяет добавлять собственные игровые поля. Для тех, кто может работать с графикой, создание новых игровых полей — это так же просто, как копирование существующего игрового поля и изменение его данных в конфигурационном файле .desktop через KsirK Skin Editor. Последний шаг — это редактирование файла, описывающего, что требуется установить.
Все примеры (текст и изображения) взяты из стандартного игрового поля KsirK.
Data/: данные, используемые программой для обработки изображений игрового поля.CMakeLists.txt: описывает, что нужно установить.onu.desktop: основной файл для описания игрового поля. Ознакомьтесь с его описанием ниже.
Images/: изображения для игрового поля (карта, спрайты и так далее).CMakeLists.txt: описывает, что нужно установить.pool.svg: карта и все спрайты, используемые в этом игровом поле.map-mask.png: изображение, позволяющее программе определять, на какой стране находится курсор мыши во время игры.*.png: остальные изображения — это изображения кнопок.
CMakeLists.txt: описывает, что нужно установить.Sounds/: звуковые файлы для игрового поля.
Эта папка содержит только один файл, world.desktop. Этот файл — это описание содержимого игрового поля. Он используется для описания организации мира и объяснения, как его отображать. Его не нужно заполнять вручную, это автоматически сделает KsirK Skin Editor. Но в справочных целях ниже будет рассмотрена его структура.
Группа onu содержит количество стран, количество наций и количество континентов. Различные группы содержат описание различных спрайтов, описание разных стран, континентов, наций и целей.
Следующие разделы описывают содержимое каждой группы.
Таблица 2.1. Записи группы onu
| Имя записи | Значение |
|---|---|
width | Ширина карты игрового поля. |
height | Высота карты игрового поля. |
skinpath | Путь игрового поля относительно пути к данным приложения (например, skins/default). |
nb-countries | Количество стран (42 в стандартном игровом поле). Ниже должно быть указано такое же количество групп стран. |
nb-nationalities | Количество наций (6 в стандартном игровом поле). Ниже должно быть указано такое же количество групп наций. |
nb-continents | Количество континентов (6 в стандартном игровом поле). Ниже должно быть указано такое же количество групп континентов. |
pool | Путь и имя пула файлов относительно пути к игровому полю (например Images/pool.svg). |
map-mask | Путь и имя файла маски карты относительно пути игрового поля (например, Images/map-mask.png). |
format-version | Версия формата файла игрового поля (2.0). |
name | Отображаемое имя игрового поля. |
desc | Длинное описание игрового поля. |
fighters-flag-y-diff | Разница высоты между спрайтами флагов и пушек. |
width-between-flag-and-fighter | Количество пикселов между самым левым пикселом флага и самым правым пикселом простой пушки (когда она не стреляет и не взрывается). |
Каждый тип спрайта (флаг, пехота, кавалерия, пушка, стреляющая пушка и взрывающаяся пушка) определён группой. Запись ширины имеют только некоторые спрайты. Эта запись используется для относительного позиционирования во время анимации: стреляющие или взрывающиеся пушки не должны «двигаться» вокруг флага страны во время боя.
Таблица 2.2. Записи группы описания спрайтов
| Имя записи | Значение |
|---|---|
width | Эталонная ширина фреймов спрайта флага. |
height | Эталонная высота фреймов спрайта флага. |
frames | Количество фреймов в спрайте. |
versions | Количество версий спрайтов флагов. |
Каждая страна, указанная в группе onu, имеет свою собственную группу, ярлыком которой является название страны. В таблице ниже перечислены записи этих групп.
Таблица 2.3. Записи стран
| Имя записи | Значение |
|---|---|
id | Целочисленный уникальный идентификатор, должен начинаться с нуля (0). |
name | Отображаемое название страны. |
<sprite>-point | Каждый тип спрайта (флаг, пехота и им подобные) отображается на определённой позиции, указанной в этой записи с помощью двух целых чисел, разделённых запятой. |
neighbours | Список идентификаторов соседних стран. |
Каждая нация, указанная в группе onu, имеет свою собственную группу, ярлыком которой является название нации. В таблице ниже перечислены записи этих групп.
Таблица 2.4. Записи наций
| Имя записи | Значение |
|---|---|
name | Название нации (например, Япония). |
leader | Имя, которое будет предложено игроку при выборе нации. |
flag | Название элемента спрайта флага страны в SVG-файле onu. |
Каждый континент, указанный в группе onu, имеет свою собственную группу, ярлыком которой является название континента. В таблице ниже перечислены записи этих групп.
Таблица 2.5. Записи континентов
| Имя записи | Значение |
|---|---|
name | Название континентов (например, Африка). |
id | Целочисленный уникальный идентификационный номер континента. |
bonus | Количество армий, полученных в конце хода игроком, владеющим всеми странами континента. |
continent-countries | Список идентификаторов стран внутри текущего континента. |
Каждая цель, указанная в группе onu, имеет свою собственную группу, ярлыком которой является название цели. В таблице ниже перечислены записи этих групп.
Таблица 2.6. Записи целей
| Имя записи | Значение |
|---|---|
type | Тип цели. Целью могут быть быть континенты, страны или игрок. |
nbArmiesByCountry | Установка минимального количества армий, которые необходимо разместить в каждой стране. |
nbCountries | Установка количества стран, которыми игрок должен владеть. |
nbCountriesFallback | Если при типе цели «игрок» целевой игрок убит другим пользователем, этот параметр устанавливает количество стран, которые игрок должен будет завоевать вместо этого. |
desc | Полное текстовое описание цели с соответствующими заменителями (здесь необходимо больше документации). |
continents | Список идентификаторов континентов, которые нужно будет захватить. |
Эта папка содержит кнопки, относящиеся к KsirK, и пул SVG-файлов, содержащий карту и все спрайты.
Этот SVG-файл содержит карту и все спрайты игры. Каждый элемент назван так, что игра может выделять определённый элемент и обрабатывать их отдельно друг от друга.
В стандартном игровом поле спрайтами являются флаги, пехота, кавалерия и пушки. Пехота представляет одну армию, кавалерия — пять, а пушки — десять. Пушки также используются для отображения сражающихся армий. Именно поэтому есть три типа спрайтов пушек: обычные статичные или движущиеся пушки, стреляющие и взрывающиеся.
Каждое изображение спрайта представляет собой взаимосвязь различных видов объектов, а для каждого вида — его фреймы. Режимы просмотра организованы вертикально, а фреймы — горизонтально. Чтобы понять, где следует обрезать изображение, необходимо разделить высоту изображения на количество режимов просмотра и ширину на количество фреймов. Эти данные находятся в файле onu.desktop.

Пример изображения спрайта: cannon.png
Для спрайтов армии предусмотрено три режима просмотра, сверху вниз:
направленная вправо
направленная влево и
направленная прямо
Для флагов есть только один режим просмотра. Все фоны спрайтов должны быть прозрачными.

Пример спрайта изображения флага: italy.png
Таблица 2.7. Элементы пула
| Название элемента | Пример | Значение |
|---|---|---|
map | ![]() | Карта мира игрового поля. Страны могут иметь произвольную форму, но они должны быть сгруппированы в узнаваемые континенты по местоположению или по цвету. |
italy | ![]() | Флаг итальянской нации. Каждой нации должен быть присвоен только один флаг. |
infantry | ![]() | Значок, представляющий одну армию. |
cavalry | ![]() | Значок, представляющий пять армий. |
cannon | ![]() | Значок. представляющий десять армий. |
firing | ![]() | Значок, представляющий армии во время сражения. |
exploding | ![]() | Значок, представляющий армии во время проигрыша сражения. |
alaska | ![]() | Форма страны Аляски. Эта функция используется для выделения страны. Для каждой страны есть одна такая форма. Его цвет не используется. Таким образом, цвет свободен. |
reddices | ![]() | Красные кубики используются для отображения результатов сражений. |
bluedices | ![]() | Синие кубики используются для отображения результатов сражений. |
mark1 | ![]() | Эта метка добавлена к сражающимся спрайтам для отображения количества армий, которые они представляют, в данном примере, 1. Также присутствуют элементы mark2 и mark3. |
Это PNG-файл, представляющий также карту мира игровых полей с закодированными цветами, что позволяет однозначно идентифицировать каждую страну. Формы этих стран должны совпадать с формами стран, указанных в файле map.png, чтобы пользователи могли щёлкнуть левой кнопкой мыши в любом месте в просматриваемой стране и выбрать самую подходящую. Маленькие острова наподобие Индонезии могут быть больше в стандартной карте, чем в файле map.png, это позволит облегчить выбор страны.

Синий компонент (в модели RGB) в цвете страны определяет страну. Индекс 0 — это страна 0 в файле onu.xml, индекс 1 — страна 1, и так далее. Белый (0xFFFFFF в RGB) определяет отсутствие страны.
Имена файлов строго прописаны в коде, поэтому их нельзя изменять. В таблице ниже представлены все кнопки, которые следует учесть.
Таблица 2.8. Кнопки графического интерфейса
| Изображение | Имя файла | Значение |
|---|---|---|
![]() | newNetGame.png | Пытается присоединиться к сетевой игре. |
![]() | recycling.png | После того, как игроки расставят свои армии, их возможно перераспределить. Эта кнопка предлагает сделать это перераспределение. |
![]() | recyclingFinished.png | Вариант «не перераспределять». Для фактического завершения распределения эту кнопку должны нажать все игроки. |
![]() | nextPlayer.png | Завершает текущий ход игрока и переключается на следующего, либо на следующий ход, если игрок остался один. |
![]() | attackOne.png | Начинает атаку с одной армией. |
![]() | attackTwo.png | Начинает атаку двумя армиями. |
![]() | attackThree.png | Начинает атаку тремя армиями. |
![]() | defendOne.png | Защищает атакованную страну одной армией. |
![]() | defendTwo.png | Защищает атакованную страну двумя армиями. |
![]() | moveArmies.png | Начинает перемещение армий между двумя странами (последнее действие в ходу). |


















