Урок 1. Локації, Дії, Переходи
Текстовий квест в QSP складається з окремих локацій. на яких можуть виконуватися різні ігрові дії. Кожна локація має початок (тут же вказується ім'я локації), код локації (середину) і кінець (знак «-», мінус).
Програвання квесту починається з найпершої локації. Традиційно ця локація називається "Початок". Для того, щоб вивести в грі текст, ви просто пишете рядок в коді локації, укладену в лапки ( « '» або «" »).
Збережіть ці рядки в текстовий файл, отконвертіруйте за допомогою GamConv і відкрийте вийшов квест в QSPGUI. В основному вікні ви повинні побачити текст «Привіт світ!».
Але це зовсім не схоже на текстовий квест. Адже якщо ми будемо просто виводити текст, то у нас вийде якась книга, а не гра.
Гра - це перш за все інтерактивність. Від цього і назва жанру Інтерактивна Література. Щоб додати інтерактивність давайте зробимо другу локацію і дамо можливість гравцеві перейти з однієї локації в іншу. Для цього потрібно створити на першій локації дію, яке буде здійснювати перехід в іншу локацію.
Друга локація створюється точно так же, як і перша. Як можна помітити, дія створюється командою «ACT», після якої йде назва дії у вигляді рядка, укладеної в лапки і двокрапка. Після двокрапки пишуться інструкції, які гра виконає після того, як гравець спробує виконати дію. А після інструкцій ставиться команда «END», яка означає кінець дії. Якщо інструкція одна, то ми можемо писати її відразу після двокрапки, на тому самому рядку, в цьому випадку «END» ставити не обов'язково (див. Вторая_локація). У нашому випадку інструкціями є перехід на іншу локацію. Він здійснюється командою «GOTO», після якої йде ім'я нової локації, укладеної в лапки.
Як ви вже помітили, всі рядки в QSP укладені в лапки ( « '» або «" »), це специфіка синтаксису, яку необхідно дотримуватися.
Відконвертовано цей приклад, ви зможете походити по двом локаціях.
Це основа всіх квестів на QSP. Далі ми спробуємо не поспішаючи зробити невеликий квест, в кожному новому уроці додаючи йому нові елементи, поки не охопимо всі можливості QSP.
Урок 2. Змінні, Умови
Нехай у нас буде гра з трьох локацій. В одній локації гравець зможе заробляти гроші, в іншого - витрачати їх на різні предмети, в третій - дарувати ці предмети різних людей. До цих трьох додамо ще одну, стартову, локацію, в якій буде пояснюватися завдання гравця. Напишемо каркас.
Можете відкомпілювати і походити по місту.
Тепер нам потрібно додати гравцеві гроші і механізм їх заробляння. Гроші ми реалізуємо за допомогою змінних. Змінні бувають двох типів: строкові, в які можна записати будь-який текст, і числові, куди можна записати будь-яке ціле число. У нашому випадку ми будемо користуватися числовими змінними. Щоб привласнити змінної якесь значення, потрібно написати її ім'я, поставити знак рівності і вказати значення, яке ми хочемо записати в змінну.
Сам механізм заробляння грошей буде у нас дуже простим. Потрібно буде перенести 3 ящика і тоді бригадир буде давати гравцеві 5 монет. Для цього потрібно буде зробити ще одну змінну, в якій буде вказано число перенесених гравцем ящиків і якщо їх 3, то додавати гравцеві гроші, і очищати лічильник ящиків. Наш квест стане таким:
Для того, щоб в тексті локації вивести значення змінної використовується конструкція « '<<Имя_переменной>> ' ». Таким чином ми змінили все локації, щоб на них виводилося кількість монет у гравця. До того ж, в локації «Порт» показується кількість ящиків, яке потрібно перенести, щоб отримати гроші. Умови в QSP задаються командою «IF», після якої йде саме умова і ставиться двокрапка. Потім йдуть інструкції, які виконаються, якщо умова вірна і ставиться команда «END», яка завершує умова. У нашому випадку ми перевіряємо, дорівнює чи змінна «Ящик» трьом. Якщо дорівнює, то ми збільшуємо змінну «Гроші» на п'ять і прирівнюємо змінну «Ящик» до нуля, щоб можна було заново тягати ящики і заробляти гроші. Щоб текст гри оновився і гравець побачив нові значення змінних, потрібно перейти на ту ж локацію. Отконвертіруйте і запустіть приклад, тепер гравець зможе заробляти гроші перенесенням ящиків.
Урок 3. Інвентар
Тепер нам потрібно додати гравцеві можливість купувати різні предмети в магазині і потім дарувати. Для предметів дуже добре підходить Інвентар. Тепер куплені предмети гравець зможе носити з собою і дарувати своїм близьким, коли захоче.
Щоб додати предмет в інвентар, є команда «ADDOBJ», після якої йде ім'я предмета. А для того, щоб видалити предмет, є команда «DELOBJ», після якої також йде ім'я предмета, який ми хочемо видалити.
За допомогою умов ми заздалегідь перевіряємо, чи є у гравця достатньо грошей, щоб купити той чи інший предмет. І якщо грошей вистачає - додаємо дію покупки цього предмета. Коли гравець вибирає дію купити що-небудь, ми забираємо у нього монети, додаємо в його інвентар предмет і робимо перехід на ту ж локацію ( «Магазин»), щоб кількість грошей перерахують.
Наступним важливим моментом буде механізм "дарування" предметів. Він буде реалізований в локації «Дім».
Конструкція «IF OBJ 'імя_предмета'» перевіряє, чи є у гравця в інвентарі вказаний предмет. У нашому випадку ми перевіряємо наявність тих предметів, які ми можемо купити в магазині. І якщо у гравця є такі предмети - створюємо дію «дарування» цих предметів. Коли гравець зробить дію, ми заберемо у нього той предмет, який він хоче подарувати і виводимо діалог подяки за подарунок. До того ж, ми використовуємо команду «DELACT», якій видаляємо дію, вказане після цієї команди.
Урок 4. Налаштування, Форматування
У цьому уроці ми розглянемо, як зробити наш квест більш привабливим. В першу чергу слід налаштувати інтерфейс так, щоб в ньому не залишалося нічого зайвого, відволікаючого від гри. Якщо ви зараз запустіть наш приклад, то побачите, що ми не використовуємо "поле додаткового опису" (справа внизу) і "командний рядок" (внизу). Щоб вони нам не заважали, їх потрібно відключити. Робиться це в такий спосіб:
Ми передаємо в функцію «SHOWSTAT» значення 0 для того, щоб відключити "поле додаткового опису". Якби ми передали щось відмінне від 0, то поле було б видимим. Те ж саме і з «SHOWINPUT». Так само ми можемо відключити інвентар - «SHOWOBJS», і список дій - «SHOWACTS».
Тепер нам потрібно зробити так, щоб наш текст був більш підходящим для нашого квесту. Для цього є 4 змінні.
Колір в QSP задається за допомогою функції «RGB», в яку ми передаємо значення його окремих компонент - червоного (Red), зеленого (Green) і синього (Blue). Звідси і назва функції.
Якщо ви не знайомі з таким способом завдання квітів, то вам може допомогти програма MS Paint. яка входить в стандартну поставку Windows. Для цього запустіть програму, клацніть два рази по будь-якому кольору в палітрі (внизу) і потім натисніть кнопку "Визначити колір". З'явиться розширена палітра, на якій можна вибрати потрібний вам колір. Під палітрою знизу буде 3 поля (Червоний, Зелений, Синій), значеннями з цих полів вам і потрібно заповнити функцію RGB.
Мінлива «BCOLOR» встановлює колір заднього фону, «FCOLOR» - колір тексту.
Слід врахувати, що якщо привласнити змінної кольору значення 0 (наприклад, «BCOLOR = 0»), то програвач квестів замінить вказаний колір на колір з налаштувань самого плеєра.
Щоб змінити розмір тексту, використовується змінна «FSIZE», шрифт тексту задётся строкової змінної «$ FNAME».
Є ще один, найкращий, на мій погляд, спосіб зробити ваш текст зовні більш привабливим. Використання HTML. Мова гіпертекстової розмітки документів дуже добре підходить для цієї мети. За допомогою нього можна не тільки задавати колір, розмір і шрифт тексту, а й робити це для окремих слів, фраз або навіть букв, а так само позиціонувати текст на екрані. Наприклад, можна розташувати заголовки по-центру рядка, або праворуч. Для цього потрібно змінної USEHTML задати значення, відмінне від 0, наприклад 1. У наступному прикладі я приведу лише невелику частину можливостей, яких, втім, буде досить для оформлення гри.