# Підручник з &killbots;

## Вступ

### Тип гри:

Стратегія

### Кількість гравців:

Один

&killbots; — це проста гра, яка полягає у втечі від роботів-вбивць. Про те, хто створив цих роботів, і чому їх було запрограмовано на вбивство, нічого не відомо. Все, що відомо, так це те, що роботів багато, і те, що єдиним їх призначенням є вбити вашого героя. На щастя для вас, конструктор роботів зосередився на їх кількості, а не на якості, отже, роботів важко назвати аж надто розумними. Єдиною вашою зброєю супроти нескінченного потоку бездумних автоматів є ваш чудовий інтелект і загадковий пристрій для телепортації.

### Примітка:

У цій документації часто використовуються слова роботи, купи брухту тощо, але у &killbots; можна повністю змінювати тему. Це означає, що спрайти гри, які ви бачите у процесі гри не відповідатимуть сенсу використаних термінів у можливих майбутніх темах. Але сам сенс гри і стратегія залишатимуться незмінними, навіть якщо головним героєм буде морквина, яка тікає городом від жорстоких кролів.

### Примітка:

У &killbots; закладено підтримку декількох типів гри, які керують параметрами гри і визначають, які з можливостей гри буде увімкнено. У цій документації зроблено спробу загального викладу без прив’язування до певного типу гри. Для того, щоб ознайомитися з докладнішими відомостями щодо механізмів гри, які стосуються розмірів ігрового поля, раундів, нарахування очок, енергії тощо, ознайомтеся з описом поточного типу гри, наведеними у діалоговому вікні налаштування &killbots;.

## Як грати

### Основи гри

#### Мета:

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

Знімок ґратки гри

&killbots; є покроковою грою, у яку грають на прямокутному ігровому полі. Кількість комірок у кожному з рядків або стовпчиків сітки ігрового поля визначається використаним типом гри. У кожній з комірок може бути:

Герой

- Ваш герой, на своє нещастя, застряг у кімнаті з натовпом роботів-убивць. Ви, як гравець, маєте допомогти йому вижити якомога довше.

  На початку кожного ходу герой може виконати одну з трьох дій: він може залишитися у комірці, де перебуває, може перейти у сусідню незайняту комірку або може виконати особливу дію. Див. і .

Робот

- Роботи — це механічні вбивці, призначені лише для вбивства героя за допомогою своїх металічних клешень. Вони ніколи не чули про «три закони робототехніки» і ймовірно знищать будь-кого, хто захоче їм про них повідомити.

  Кожен з роботів протягом ходу робить один крок у бік героя. Якщо робот перебуває над героєм, робот рушить униз. Якщо робот перебуває ліворуч від героя, робот рушить праворуч. Якщо робот перебуває нижче і праворуч від героя, робот зробить крок по діагоналі, вгору і ліворуч. Якщо роботові вдасться потрапити до однієї комірки з героєм, героя буде вбито, а гру завершено.

Швидкобот

- Швидкоботи — це пришвидшена версія звичайних роботів. Протягом кожного кроку, який робить герой, вони встигають зробити два кроки. На щастя, підвищена мобільність цих потвор не позначилася на їх розумових здібностях, — часто вони просто знищують один одного удвічі швидше за своїх повільніших родичів.

  Швидкоботи є не у всіх типах гри.

Купа брухту

- Якщо двоє або декілька роботів зіштовхуються, вони знищують один одного, в результаті утворюється купа брухту. Вороги не помічають куп брухту, які зустрічають на своєму шляху, і розбиваються об них. Очевидно, купи брухту є дуже цінними у грі: вони слугують барикадами між героєм і нападниками.

  У деяких з типів гри герой може штовхати купи брухту сіткою ігрового поля. Таким чином, герой може створити з куп брухту «бункер», у якому буде захищений з декількох боків. У деяких типах гри купи брухту можна використовувати для обману ворогів. Штовхання купи брухту у бік ворога знищує його і навіть може принести бонусні очки.

### Раунди, нарахування очок і енергія

Ігрові індикатори стану

#### Раунди

Гру у &killbots; поділено на раунди. Кожен раунд починається з того, що герой перебуває у центрі сітки ігрового поля, а навколо нього випадковим чином розкидано ворогів. Раунд завершується, коли буде знищено всіх ворогів. З кожним раундом кількість ворогів зростає. Кількість і тип ворогів, що додаватимуться кожного раунду, залежить від типу гри.

Ігрове поле наповнюватиметься ворогами до того часу, доки не станеться одної з таких ситуацій: вороги перебуватимуть у більше, ніж 50% комірок або буде виконано спробу безпечного телепортування, але на полі більше не буде безпечних комірок. За досягнення такої ситуації раунд буде скасовано, а кількість ворогів зменшено до початкової у першому раунді.

#### Правила оцінок

Перемоги як такої у &killbots; не існує, — герой намагається вижити якомога довше, але сумна реальність у тому, що зрештою його доля буде печальною. Тому метою у &killbots; є отримати якомога вищий результат, перш ніж станеться незворотне. Десять найкращих результатів (разом з номерами раундів, коли гра завершилася) буде показано у діалоговому вікні найкращих результатів.

Очки нараховуються за знищення ворогів. За швидкоботів дається, зазвичай, більше очок, ніж за звичайних роботів. Бонусні очки може також бути нараховано за ворогів, знищених штовханням купи брухту або чеканням під час раунду.

#### Енергія

Окрім очок, у грі герой також накопичує енергію. За допомогою накопиченої енергії герой може здійснювати безпечне телепортування і/або користуватися випарюванням. Залежно від типу гри, енергію можна набрати у декілька способів, зокрема, проходженням раунду, штовханням купи брухту або знищенням ворогів чеканням під час раунду.

Кількість енергії, яку може накопичити герой, обмежується визначеним типом гри максимумом. За деяких типів гри цей максимум зростає кожного разу, коли ви переходите на наступний рівень. Показ запасу енергії відбуватиметься, лише якщо за поточного типу гри використовується енергія і безпечні телепортування.

### Особливі дії

Окрім простого пересування з клітинки на клітинку, у розпорядженні героя є ще до чотирьох особливих дій.

#### Телепортування

Якимось чином героєві вдалося дістати до рук особистий телепортатор. На жаль, якщо використовувати його без джерела живлення, телепортатор працюватиме ненадійно. Використання телепортатора перекидає героя у випадково обрану комірку на сітці ігрового поля. Обмеження на кількість телепортувань у грі немає.

Комірка призначення завжди буде порожньою, але існують дуже навіть реальні шанси на те, що у сусідній комірці опиниться розлючений робот. Оскільки телепортування пов’язане з ризиком, його слід використовувати лише як останній шанс, якщо у героя більше не буде безпечних ходів.

#### Безпечне телепортування

У телепортатора є і інший режим роботи, за якого героя буде перекинуто у випадково вибрану, але безпечну комірку. Але для безпечного телепортування потрібна енергія, а енергії ніколи не буде багато. Очевидно, можливість безпечного телепортування у ключові моменти може значно продовжити життя героя.

Безпечне телепортування передбачене не у всіх типах гри, а кількість енергії, потрібна для безпечного телепортування може змінюватися залежно від типу гри.

#### Використання випарювача

Третій варіант використання пристрою телепортації взагалі не передбачає телепортування героя. За використання цього дещо незвичайного режиму роботи пристрій виконує телепортування всіх роботів з клітинок, розташованих поряд з клітинкою героя. Ніхто не знає, куди саме буде телепортовано роботів, але це буде місце досить далеке для того, щоб вони знову могли потурбувати героя. Оскільки роботи буквально розчиняються у повітрі, не залишаючи по собі купи брухту, цей режим названо «випарювачем». Вороги, знищені внаслідок випарювання, вважаються вбитими під час обчислення рахунку.

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

#### Перечекати раунд

Може так статися, що роботи розташуються на ігровому полі так, що знищать один одного, якщо герой зовсім не рухатиметься. У таких випадках, ви можете просто перечекати раунд.

##### Можливість перечекати раунд

Вибір чекання під час раунду призводить до того, що герой завмирає на місці, а вороги продовжують свій звичайний рух. Цей рух продовжуватиметься до того моменту часу, коли станеться одна з подій: вороги знищать один одного, і раунд буде завершено, або вороги дістануться до героя і гру буде завершено. Після того, як ви віддасте команду перечекати раунд, її вже не можна буде скасувати, отже, вам треба ретельно впевнитися, що герой дійсно перебуває у безпеці.

Навіщо ж тоді віддавати команду, яку вже не можна скасувати, якщо передумаєш? Ну, така команда додає трохи інтриги і драматизму у кінцівку раунду, але, що важливіше, за кожного ворога, знищеного під час перечікування раунду, нараховується винагорода. Розмір і тип (очки чи енергія) винагороди визначаються типом гри.

## Огляд інтерфейсу

### Керування рухами

Для керування героєм гравець може користуватися клавіатурою, мишею або одразу і клавіатурою, і мишею.

#### Клавіатурні засоби керування рухом

Існує дев’ять різних варіантів ходів: ліворуч, праворуч, вниз, вгору, у чотирьох діагональних напрямках і стояти на місці. Кожен з цих ходів може бути прив’язано до двох різних клавіш на клавіатурі. Типово, ці дев’ять ходів прив’язано до дев’яти цифрових клавіш на цифровій панелі клавіатури та до блоку 3х3 клавіш з літерами у лівому кінці QWERTY-клавіатури. Звичайно ж, користувачі, які користуються іншою розкладкою клавіатури або ті користувачі, на чиїх клавіатурах немає цифрової панелі, можуть змінити цю прив’язку клавіш за допомогою діалогового вікна налаштування скорочень.

Кожну з особливих команд з руху (таких, як телепортування) можна віддати за допомогою клавіатури. Див. меню Хід.

#### Керування рухом за допомогою миші

За допомогою миші (або іншого координатного пристрою) ходи можна здійснювати у природніший і інтуїтивніший спосіб. Пересування вказівника основною частиною ігрового поля змінює позицію курсора, який позначає напрямок вказівника відносно героя. Наприклад, пересування вказівника у область, розташовану над героєм, змінить курсор на стрілку вгору. Якщо вказівник буде розташовано безпосередньо над героєм, курсор показуватиме відсутність руху.

Одноразове клацання лівою кнопкою миші призведе до кроку героя у позначеному напрямку (якщо такий крок дозволено правилами гри). Для зручності ви можете пов’язати додаткові дії з клацанням правою та середньою кнопками миші за допомогою діалогового вікна налаштування &killbots;. Серед цих дій будуть всі дії, пов’язані з пунктами меню Хід, а також додатковий пункт: Повторний крок. Виконання повторного кроку призводить до того, що герой рухається у вказаному напрямку декілька послідовних ходів, до того часу, доки не зустріне на шляху перешкоду або не потрапить у небезпеку. Перервати повторний хід можна повторним клацанням під час виконання ходу.

### Пункти меню

&Ctrl;N Гра Створити

- Починає нову гру, поточну гру буде відкинуто.

&Ctrl;H Гра Показати найкращі результати

- Показує діалогове вікно з найкращими результатами.

&Ctrl;Q Гра Вийти

- Завершує роботу &killbots;.

R Хід Телепортування

- Телепортує героя у випадкову вільну клітинку ігрового поля. Див. .

T Хід Безпечне телепортування

- Телепортує героя у випадкову порожню комірку, яка є убезпеченою від атаки протягом поточного ходу. Див. .

Пробіл Хід Телепортування (за можливості безпечне)

- Дія для зручності. Телепортує героя у безпечне місце, якщо достатньо енергії, у іншому випадку просто переносить героя у випадкове місце.

F Хід Випарювач

- Знищує всіх роботів у клітинках, розташованих поруч з героєм. Див. .

V Хід Перечекати раунд

- Призводить до того, що герой завмирає на місці до кінця поточного раунду. Див. .

Параметри Налаштувати &killbots;...

- Відкриває діалогове вікно налаштування &killbots;, за допомогою якого ви зможете налаштувати параметри гри, обрати інший набір правил гри або змінити тему вікна гри.

Крім того, у &killbots; передбачено типові для &kde; пункти меню Параметри і Довідка. Щоб дізнатися більше, ознайомтеся з розділами щодо меню «Параметри» та меню «Довідка» підручника з основ роботи у &kde;.

## Довідник розробника для &killbots;

Зацікавлені особи можуть підлаштувати &killbots; у два основних способи: теми і набори правил.

### Створення власних тем &killbots;

Як і у більшості інших ігор для &kde;, тема &killbots; складається з трьох файлів.

#### Файл .desktop

У файлі desktop використовується стандартний синтаксис INI. У парах ключ-значення зберігаються відомості про тему та вказуються інші файли, включені до теми. Наведений нижче приклад взято з типової теми.

##### Приклад файла .desktop теми

    [KGameTheme]
    Name=Example Theme
    Description=An example theme used to demonstrate theme creation. This one features pirates.
    Author=Mr. Artist
    AuthorEmail=mrartist@example.com
    Type=SVG
    FileName=example.svg
    Preview=example.png

Перші чотири параметри містять метадані, що стосуються теми, вони є достатньо очевидними з назв параметрів. Для тем &killbots; параметр `Type` (тип) слід завжди встановлювати у значення &SVG;. У останніх двох параметрах містяться назви файлів двох інших файлів теми. Хоча це і не є обов’язковим, ми наполегливо рекомендуємо, щоб з міркувань послідовності всі три файли мали однакову базову назву.

#### Файл попереднього перегляду

Файлом попереднього перегляду має бути звичайний файл PNG з зображенням вікна програми з застосованою темою. Зображення попереднього перегляду повинно мати розміни 240 на 140 пікселів і має якомога точніше відповідати компонуванню попереднього перегляду типової теми, щоб теми у інструменті вибору теми було легко порівняти.

#### Файл &SVG;

Файл &SVG; — це файл масштабованої векторної графіки, у якому містяться графічні елементи, використані для побудови теми. Файл можна зберігати як у форматі `.svg`, так і у стиснутому форматі `.svgz`. У файлі &SVG; кожен з елементів визначається унікальним ідентифікатором. Створення нової теми найпростіше розпочати з наявної теми, у якій послідовно замінити елементи, аж до завершення створення теми. У файлі &SVG; мають бути такі елементи:

`background`

- Зображення, яке буде показано під ґраткою у основній області гри.

`status`

- Панель, яку буде використано для показу відомостей про поточний раунд, кількість ворогів і енергію.

`textcolor`

- Цей елемент має бути однотонним прямокутником. Його колір буде використано для розфарбування тексту на панелях стану.

`cell`

- Окрема комірка ґратки.

`hero`

- Герой, яким керуватиме гравець.

`enemy`

- Основний ворог.

`fastenemy`

- Пришвидшений ворог.

`junkheap`

- Залишки від зіткнення між ворогами.

`cursor0`

- Курсор, який вказує рух праворуч.

`cursor1`

- Курсор, який вказує рух вгору і праворуч.

`cursor2`

- Курсор, який вказує рух вгору.

`cursor3`

- Курсор, який вказує діагональний рух вгору і ліворуч.

`cursor4`

- Курсор, який вказує рух ліворуч.

`cursor5`

- Курсор, який вказує діагональний рух вниз і ліворуч.

`cursor6`

- Курсор, який вказує рух вниз.

`cursor7`

- Курсор, який вказує рух вниз і праворуч.

`cursor8`

- Курсор, який вказує на нерухомість.

#### Встановлення власних тем

Для того, щоб програма &killbots; виявила і змогла використовувати нову тему, ці файли слід скопіювати до відповідного каталогу. Щоб встановити тему лише для поточного користувача, скопіюйте файли стільниці (desktop), попереднього перегляду (preview) і &SVG; до підкаталогу `killbots/themes` у локальному каталозі, що визначається командою ``qtpaths` `--paths GenericDataLocation`` . Щоб тема стала доступною для всіх користувачів системи, скопіюйте ці файли до підкаталогу `killbots/themes` у загальносистемному каталозі (з виведених результатів попередньої команди, наприклад, `/usr/share` або щось подібне). Не забувайте, що для виконання цієї операції вам будуть потрібні права доступу адміністратора системи.

### Створення власного типу гри

#### Файл .desktop набору правил

У &killbots; створення нового типу гри дуже просте, особливо якщо ви розпочнете це створення на основі існуючого файла набору правил. Набори правил зберігаються у окремих файлах стільниці (desktop), у яких параметри і метадані вказано у вигляді простих пар ключ-значення.

##### Типовий тип гри &killbots;

    [KillbotsRuleset]
    Name=Killbots
    Name[gl]=Robots asasinos
    Author=Parker Coates
    AuthorContact=parker.coates@kdemail.net
    Description=<qt><p>The default Killbots game type.</p><p>Includes a medium size grid, safe teleports, fast enemies and pushable junkheaps.</p></qt>
    Description[uk]=<qt><p>Типовий тип гри Killbots.</p><p>Передбачено середнього розміру ґратку, безпечні телепортації, швидких ворогів та пересування куп брухту.</p></qt>
    Rows=16
    Columns=16
    EnemiesAtGameStart=8.0
    EnemiesAddedEachRound=4.0
    FastEnemiesAtGameStart=-2.0
    FastEnemiesAddedEachRound=2.0
    EnergyEnabled=true
    EnergyAtGameStart=0
    EnergyAddedEachRound=0
    MaxEnergyAtGameStart=12.0
    MaxEnergyAddedEachRound=0.0
    SafeTeleportEnabled=true
    CostOfSafeTeleport=1
    VaporizerEnabled=false
    CostOfVaporizer=0
    PushableJunkheaps=Many
    SquaskKillsEnabled=true
    JunkheapsAtGameStart=0.0
    JunkheapsAddedEachRound=0.0
    PointsPerEnemyKilled=5
    PointsPerFastEnemyKilled=10
    WaitKillPointBonus=0
    WaitKillEnergyBonus=1
    SquashKillPointBonus=0
    SquashKillEnergyBonus=1

Зауважте, що всі текстові параметри слід вводити американською англійською. Як видно з наведеного прикладу, переклади до файла стільниці можна додавати повторенням назви ключа з кодом мови у квадратних дужках. Крім того у текст поля `Description` можна додавати форматування, для цього його значення слід розташувати між тегами <qt>.

У файлі набору правил повинні міститися всі перелічені нижче параметри.

`Name`

- Назва набору правил у тому вигляді, у якому її буде показано у інструменті для вибору набору правил та у діалоговому вікні найкращих результатів.

`Author`

- Автор набору правил.

`AuthorContact`

- Відомості для зв’язку з автором. Зазвичай, це адреса електронної пошти.

`Description`

- Опис правил. Тут має бути надано короткий огляд типу гри, але зовсім не обов’язково вказувати список всіх значень параметрів, оскільки ці дані можна бути побачити у діалоговому вікні «Подробиці».

`Rows`

- Кількість рядків у ґратці гри.

`Columns`

- Кількість стовпчиків у ґратці гри.

`EnemiesAtGameStart`

- Кількість звичайних ворогів, яких буде додано у ґратку на початку першого раунду.

`EnemiesAddedEachRound`

- Кількість звичайних ворогів, яких буде додано до ґратки на початку кожного з раундів.

`FastEnemiesAtGameStart`

- Кількість швидких ворогів, яких буде додано до ґратки на початку першого раунду.

`FastEnemiesAddedEachRound`

- Кількість швидких ворогів, яких буде додано до ґратки на початку кожного з раундів.

`EnergyEnabled`

- Якщо встановлено у значення `false`, герой зможе отримувати або витрачати енергію.

`EnergyAtGameStart`

- Кількість одиниць енергії, яку буде надано героєві на початку першого раунду.

`EnergyAddedEachRound`

- Кількість одиниць енергії, яку додано героєві на початку кожного раунду.

`MaxEnergyAtGameStart`

- Максимальна кількість одиниць енергії, яку герой здатен зберігати на початку першого раунду.

`MaxEnergyAddedEachRound`

- Зміна у максимальній кількості одиниць енергії, які здатен зберігати герой, на початку кожного раунду.

`SafeTeleportEnabled`

- Якщо буде встановлено у значення `false`, можливість безпечного телепортування буде вимкнено.

`CostOfSafeTeleport`

- Кількість одиниць енергії, потрібна для здійснення безпечного телепортування.

`VaporizerEnabled`

- Якщо буде встановлено у значення `false`, можливість дії випарювання буде вимкнено.

`CostOfVaporizer`

- Кількість одиниць енергії, потрібна для здійснення випарювання.

`PushableJunkheaps`

- Кількість куп брухту, які можна штовхати одночасно. Серед можливих значень: `None` (жодної), `One` (одну) та `Many` (багато).

`SquaskKillsEnabled`

- Якщо має значення «true», герой може знищувати ворогів штовханням на них куп брухту.

`JunkheapsAtGameStart`

- Кількість куп брухту, які буде розташовано на ігровому полі на початку першого раунду.

`JunkheapsAddedEachRound`

- Кількість додаткових куп брухту, які буде розташовано на ігровому полі на початку кожного раунду.

`PointsPerEnemyKilled`

- Кількість очок, яка нараховуватиметься на знищення звичайного ворога.

`PointsPerFastEnemyKilled`

- Кількість очок, яка нараховуватиметься за знищення швидкого ворога.

`WaitKillPointBonus`

- Кількість бонусних очок, які нараховуватимуться за знищення ворога під час перечікування раунду.

`WaitKillEnergyBonus`

- Кількість бонусних одиниць енергії, якою буде нагороджено героя за знищення ворога протягом перечікування раунду.

`SquashKillPointBonus`

- Кількість бонусних очок, якими нагороджуватиметься герой за знищення ворога за допомогою купи брухту.

`SquashKillEnergyBonus`

- Кількість бонусних одиниць енергії, якими нагороджуватиметься герой за знищення ворога штовханням купи брухту.

#### Встановлення власних типів гри

Для того, щоб програма &killbots; виявила і використала новий тип гри, файл правил гри слід розташувати у відповідному каталозі. Щоб встановити тип гри лише для поточного користувача, скопіюйте цей файл до підкаталогу `killbots/rulesets` у локальному каталозі, що визначається командою ``qtpaths` `--paths GenericDataLocation`` . Щоб типом гри могли користуватися всі, скопіюйте файл до підкаталогу `killbots/rulesets` у загальносистемному каталозі, що визначається командою ``qtpaths` `--paths GenericDataLocation`` (з виведених даних попередньої команди, ймовірно, `/usr/share` або щось подібне). Зауважте, що для копіювання вам можуть знадобитися права доступу адміністратора.

## Подяки і ліцензія

&killbots;

Авторські права на програму належать Parker Coates parker.coates@kdemail.com, ©2007–2009

Авторські права на документацію належать © 2008–2009 Parker Coates parker.coates@kdemail.com

Переклад українською: Юрій Чорноіван yurchor@ukr.net

&underFDL; &underGPL;
&documentation.index;