# Руководство пользователя &i18n-ksirkskineditor;

## Введение

&ksirk; — это компьютерная версия широко известной стратегии. В неё возможно добавлять своё игровое поле. В этом руководстве содержится инструкция, как создать собственное игровое поле с нуля с помощью диспетчера файлов, редактора &SVG;-изображений и &i18n-ksirkskineditor;.

Ниже представлен снимок экрана &i18n-ksirkskineditor; Снимок экрана

Чтобы создать новое игровое поле, необходимо пройти через три этапа: создание графики, встраивание её в &SVG;-файл и размещение спрайтов, присваивая им названия с помощью &i18n-ksirkskineditor;.

## Создание игрового поля &ksirk;

&ksirk; позволяет добавлять собственные игровые поля. Для тех, кто может работать с графикой, создание новых игровых полей — это так же просто, как копирование существующего игрового поля и изменение его данных в конфигурационном файле `.desktop` через &i18n-ksirkskineditor;. Последний шаг — это редактирование файла, описывающего, что требуется установить.

Все примеры (текст и изображения) взяты из стандартного игрового поля &ksirk;.

### Структура папок и файлов

- `Data/` : данные, используемые программой для обработки изображений игрового поля.

  - `CMakeLists.txt` : описывает, что нужно установить.

  - `onu.desktop` : основной файл для описания игрового поля. Ознакомьтесь с его описанием ниже.

- `Images/` : изображения для игрового поля (карта, спрайты и так далее).

  - `CMakeLists.txt` : описывает, что нужно установить.

  - `pool.svg` : карта и все спрайты, используемые в этом игровом поле.

  - `map-mask.png` : изображение, позволяющее программе определять, на какой стране находится курсор мыши во время игры.

  - `*.png` : остальные изображения — это изображения кнопок.

- `CMakeLists.txt` : описывает, что нужно установить.

- `Sounds/` : звуковые файлы для игрового поля.

#### Папка с данными

Эта папка содержит только один файл, `world.desktop`. Этот файл — это описание содержимого игрового поля. Он используется для описания организации мира и объяснения, как его отображать. Его не нужно заполнять вручную, это автоматически сделает &i18n-ksirkskineditor;. Но в справочных целях ниже будет рассмотрена его структура.

Группа `onu` содержит количество стран, количество наций и количество континентов. Различные группы содержат описание различных спрайтов, описание разных стран, континентов, наций и целей.

Следующие разделы описывают содержимое каждой группы.

##### Группа `onu`

##### Записи группы `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` | Количество пикселов между самым левым пикселом флага и самым правым пикселом простой пушки (когда она не стреляет и не взрывается).

##### Группы описания спрайтов

Каждый тип спрайта (флаг, пехота, кавалерия, пушка, стреляющая пушка и взрывающаяся пушка) определён группой. Запись ширины имеют только некоторые спрайты. Эта запись используется для относительного позиционирования во время анимации: стреляющие или взрывающиеся пушки не должны двигаться вокруг флага страны во время боя.

##### Записи группы описания спрайтов

Имя записи | Значение
`width` | Эталонная ширина фреймов спрайта флага.
`height` | Эталонная высота фреймов спрайта флага.
`frames` | Количество фреймов в спрайте.
`versions` | Количество версий спрайтов флагов.

##### Группы описания стран

Каждая страна, указанная в группе `onu`, имеет свою собственную группу, ярлыком которой является название страны. В таблице ниже перечислены записи этих групп.

##### Записи стран

Имя записи | Значение
`id` | Целочисленный уникальный идентификатор, должен начинаться с нуля (0).
`name` | Отображаемое название страны.
`<sprite>-point` | Каждый тип спрайта (флаг, пехота и им подобные) отображается на определённой позиции, указанной в этой записи с помощью двух целых чисел, разделённых запятой.
`neighbours` | Список идентификаторов соседних стран.

##### Группы описания наций

Каждая нация, указанная в группе `onu`, имеет свою собственную группу, ярлыком которой является название нации. В таблице ниже перечислены записи этих групп.

##### Записи наций

Имя записи | Значение
`name` | Название нации (например, `Япония`).
`leader` | Имя, которое будет предложено игроку при выборе нации.
`flag` | Название элемента спрайта флага страны в &SVG;-файле `onu`.

##### Группы описания континентов

Каждый континент, указанный в группе `onu`, имеет свою собственную группу, ярлыком которой является название континента. В таблице ниже перечислены записи этих групп.

##### Записи континентов

Имя записи | Значение
`name` | Название континентов (например, `Африка`).
`id` | Целочисленный уникальный идентификационный номер континента.
`bonus` | Количество армий, полученных в конце хода игроком, владеющим всеми странами континента.
`continent-countries` | Список идентификаторов стран внутри текущего континента.

##### Группы описания целей

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

##### Записи целей

Имя записи | Значение
`type` | Тип цели. Целью могут быть быть континенты, страны или игрок.
`nbArmiesByCountry` | Установка минимального количества армий, которые необходимо разместить в каждой стране.
`nbCountries` | Установка количества стран, которыми игрок должен владеть.
`nbCountriesFallback` | Если при типе цели «игрок» целевой игрок убит другим пользователем, этот параметр устанавливает количество стран, которые игрок должен будет завоевать вместо этого.
`desc` | Полное текстовое описание цели с соответствующими заменителями (здесь необходимо больше документации).
`continents` | Список идентификаторов континентов, которые нужно будет захватить.

#### Папка с изображениями

Эта папка содержит кнопки, относящиеся к &ksirk;, и пул &SVG;-файлов, содержащий карту и все спрайты.

##### Файл `pool.svg`

Этот &SVG;-файл содержит карту и все спрайты игры. Каждый элемент назван так, что игра может выделять определённый элемент и обрабатывать их отдельно друг от друга.

В стандартном игровом поле спрайтами являются флаги, пехота, кавалерия и пушки. Пехота представляет одну армию, кавалерия — пять, а пушки — десять. Пушки также используются для отображения сражающихся армий. Именно поэтому есть три типа спрайтов пушек: обычные статичные или движущиеся пушки, стреляющие и взрывающиеся.

Каждое изображение спрайта представляет собой взаимосвязь различных видов объектов, а для каждого вида — его фреймы. Режимы просмотра организованы вертикально, а фреймы — горизонтально. Чтобы понять, где следует обрезать изображение, необходимо разделить высоту изображения на количество режимов просмотра и ширину на количество фреймов. Эти данные находятся в файле `onu.desktop`.

Пример изображения спрайта: `cannon.png`

Для спрайтов армии предусмотрено три режима просмотра, сверху вниз:

- направленная вправо

- направленная влево и

- направленная прямо

Для флагов есть только один режим просмотра. Все фоны спрайтов должны быть прозрачными.

Пример спрайта изображения флага: `italy.png`

##### Элементы пула

Название элемента | Пример | Значение
`map` |  | Карта мира игрового поля. Страны могут иметь произвольную форму, но они должны быть сгруппированы в узнаваемые континенты по местоположению или по цвету.
`italy` |  | Флаг итальянской нации. Каждой нации должен быть присвоен только один флаг.
`infantry` |  | Значок, представляющий одну армию.
`cavalry` |  | Значок, представляющий пять армий.
`cannon` |  | Значок. представляющий десять армий.
`firing` |  | Значок, представляющий армии во время сражения.
`exploding` |  | Значок, представляющий армии во время проигрыша сражения.
`alaska` |  | Форма страны Аляски. Эта функция используется для выделения страны. Для каждой страны есть одна такая форма. Его цвет не используется. Таким образом, цвет свободен.
`reddices` |  | Красные кубики используются для отображения результатов сражений.
`bluedices` |  | Синие кубики используются для отображения результатов сражений.
`mark1` |  | Эта метка добавлена к сражающимся спрайтам для отображения количества армий, которые они представляют, в данном примере, 1. Также присутствуют элементы `mark2` и `mark3`.

##### Файл `map-mask.png`

Это PNG-файл, представляющий также карту мира игровых полей с закодированными цветами, что позволяет однозначно идентифицировать каждую страну. Формы этих стран должны совпадать с формами стран, указанных в файле `map.png`, чтобы пользователи могли щёлкнуть левой кнопкой мыши в любом месте в просматриваемой стране и выбрать самую подходящую. Маленькие острова наподобие Индонезии могут быть больше в стандартной карте, чем в файле `map.png`, это позволит облегчить выбор страны.

Образец маски карты

Синий компонент (в модели RGB) в цвете страны определяет страну. Индекс 0 — это страна 0 в файле `onu.xml`, индекс 1 — страна 1, и так далее. Белый (0xFFFFFF в RGB) определяет отсутствие страны.

##### Изображения кнопок

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

##### Кнопки графического интерфейса

Изображение | Имя файла | Значение
| `newNetGame.png` | Пытается присоединиться к сетевой игре.
| `recycling.png` | После того, как игроки расставят свои армии, их возможно перераспределить. Эта кнопка предлагает сделать это перераспределение.
| `recyclingFinished.png` | Вариант «не перераспределять». Для фактического завершения распределения эту кнопку должны нажать все игроки.
| `nextPlayer.png` | Завершает текущий ход игрока и переключается на следующего, либо на следующий ход, если игрок остался один.
| `attackOne.png` | Начинает атаку с одной армией.
| `attackTwo.png` | Начинает атаку двумя армиями.
| `attackThree.png` | Начинает атаку тремя армиями.
| `defendOne.png` | Защищает атакованную страну одной армией.
| `defendTwo.png` | Защищает атакованную страну двумя армиями.
| `moveArmies.png` | Начинает перемещение армий между двумя странами (последнее действие в ходу).

#### Папка со звуковыми файлами

Эта папка содержит три звуковых файла:

- `roll.wav` проигрывается при перемещении армий

- `cannon.wav` проигрывается при выстреле и

- `crash.wav` проигрывается при взрыве пушки

### Использование &i18n-ksirkskineditor;

После создания графики в правильной папке и файле &SVG; необходимо создать страны, игроков и так далее и связать их с соответствующим элементом &SVG; в пуле. Это возможно сделать с помощью &i18n-ksirkskineditor;. Обратите внимание, что каждая часть этого приложения автоматически описывается во всплывающих подсказках, а контекстная справка доступна с помощью комбинации клавиш &Ctrl;F1.

Ниже представлен снимок экрана &i18n-ksirkskineditor; Снимок экрана

## Список команд

### Главное окно &i18n-ksirkskineditor;

#### Кнопки

Загрузить Загрузить...

- Программа загружает существующее игровое поле.

Сохранить Сохранить

- Сохраняет текущее изменённое игровое поле.

## Руководство разработчика &i18n-ksirkskineditor;

Для получения документации об API обратитесь к https://api.kde.org/.

## Вопросы и ответы

&updating.documentation;

## Авторские права и лицензия

&ksirkskineditor;

Авторские права на программу: Gaël de Chalendar kleag@free.fr, 2009 г.

Авторские права на документацию: Gaël de Chalendar kleag@free.fr, 2009 г.

Перевод на русский язык: Мария Шикуноваtranslation-team@basealt.ru

&underFDL; &underGPL;
&documentation.index;