Как создать квест игру на компьютер

Обновлено: 06.07.2024

Привет^ народец, сегодня я продолжу свою попытку создать игру^ используя только информацию из интернета.
Первая часть вот тут — ТЫК.

В этой статье я попробую создать игровую комнату, она же сцена, уровень, локация и так далее, а так же попробуем прописать НПЦ (внутриигровых персонажей) с квестами, и взаимодействие с предметами. Ну что, начнём словоблудие!

Сцена

Для начала откроем наш проект над которым мы работали в прошлой статье, и переименуем нашего персонажа в Player.


Далее^ используя наши познания из прошлого урока^ создаём папку Prefabs, для тех^ кто забыл как это делается, нажимаем на Assets в древе, далее правой кнопкой в папке assets, Create -> Folder.


Далее перетягиваем нашего персонажа Player в папочку Prefabs, что даёт нам возможность его сохранить со всеми настройками и скриптами^ которые мы использовали в прошлой статье. Если выползет диалоговое окно, выбираем Original Prefab, а после в папочке Scene аналогичным способом создаем новую сцену под именем Scene_01 (и снова для самых-самых, правой кнопкой тык, и выбираем Create -> Scene). Это и будет наша рабочая сцена на эту статью, дважды тык на Scene_01 и у нас снова пустая рабочая область.

Смотрим в экран и вот тут начинается главная головная боль, необходимо придумать, как будет выглядеть наш первый уровень, который необходимо построить, а главное продумать его так, чтобы он полностью удовлетворял наши потребности. Обычно для таких целей я беру пачку листов А4 и карандаш, а после несколько дней рисую разные варианты уровня, если что-то мне не нравится после рисовки, я всё равно это оставляю на будущее, поскольку в итоге из всех рисунков и собирается один более-менее играбельный уровень для игры. Но мы сейчас всё делаем по велению интернета, поэтому возьмём за идею стандартную ситуацию.

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

Вот такой вот незамысловатый сюжет будет в нашей сцене =)

Строительство

Для начала нам нужна земля, заходим в GameObjects -> 3D Object -> Terrain, это создало нам землю, но она довольно большая для моей сцены, поэтому заходим в Inspector, нажимаем на шестеренку (Terrain Setting) и ищем Mesh Resolution (On Terrain Data) для меня подошли показатели:

Тут я наверное немного поясню ситуацию. Данный Terrain я использовать не буду, у меня есть все готовые префабы для создания играбельной сцены, но для людей, которые собираются САМИ создать свою землю и объекты, прийдётся использовать данную функцию. В ней есть всё необходимое, чтобы сделать из этого квадрата равнины, горы, леса, пустыню. Необходимо просто использовать нужную Вам кисть, и натянуть текстуру. Я же в буду использовать префабы, которые шли в комплекте с персонажем, а Terrain послужит мне границами уровня. (Для тех кто всё же хочет, чтобы я создал игровую область без префабов, пишите в комментариях, тогда будет понятно, нужна ли такая информация).

Используя префабы, я начинаю строительство, выбираю для начала зелень и растягиваю её почти на весь Terrain, далее выбираю ворота, стены, горы, деревья, дорогу, и просто перетаскиваю их в сцену, немного позиционирую, а далее делаю копи-паст и собираю простейший уровень, получилось примерно так.


Все префабы ландшафта я поместил в Terrain, чтобы они не загромождали древо сцены. За 5 минут получилось невесть, что, но если провести за этим делом пару дней, то можно собрать что-то подобное.


Давайте посмотрим как поведёт наш персонаж себя в новом месте проживания. Заходим в папку Prefabs и переносим наш префаб Player в сцену, у меня он появился где-то сбоку, но я простым движением переместил его в начало каменной дороги. После удаляю из сцены Main Camera, потому как к нашему персонажу уже прикреплена камера, и дабы не было конфликтов избавляемся от камеры в сцене. Жму кнопку Play и осматриваю новые земли. Персонаж отлично себя чувствует в новом месте. Исходя из этого мы можем перейти наконец к НПЦ и квестам.

NPC или неигровые персонажи

В качестве НПЦ мы будем использовать такие же префабы рыцарей, что и наш персонаж. Давайте поставим их перед воротами.


И вот двое из ларца одинаковых с лица стоят и охраняют наши ворота. Им я сразу дал имена NPC_01 и NPC_02, давайте подойдём и посмотрим как это выглядит в игре.


Да уж, в игре это выглядит так же ужасно, как и в сцене =) Оживим наших горе-охранников, чтобы они не стояли как пугало в поле. Для этого вернёмся к нашей первой статье, где мы оживляли нашего персонажа, и проделываем туже процедуру с болванчиками у ворот. Для тех, кто не помнит, направляемся в mixamo, находим подходящие нам анимации, добавляем их в проект, создаём аниматор контроллер и прикрепляем его к болванчикам.


Я прикрепил анимацию засыпающего человека к одному болванчику, и строго стоящего второму, это мне нужно для более полного погружения для квеста. Я понимаю, что это совсем необязательно, ведь мы не пытаемся создать ААА проект прямо на коленке как Юбисофт (это лично моё мнение), но всё же и создавать Г* мне не хочется, хоть это и попытка сделать всё при помощи интернета. Наконец пришло время для квеста!

Квест

Тут мне пришлось немного использовать крота, дабы прорыть интернет для правильного скрипта и построения квеста. Его выполнение, тоже должно было работать правильно и не вызывать ошибок, и я снова на коне! Давайте приступим.

using UnityEngine;
using System.Collections;
public class Quest: MonoBehaviour
public bool quest; // отображает название квеста на экране;
public string MissionText; // название квеста;
public string ObjectTag; // тэг объекта;
public bool MissionObjects; //отображает собран предмет или нет;
public int Money; // количество денег;

if (quest)
GUI.Label(new Rect(20, 80, 300, 30), " " + MissionText); // значение названия квеста будет браться из скрипта NPC;
if (MissionObjects)
< // если предмет собран;
GUI.Label(new Rect(150, 80, 200, 30), "[Выполнено]"); // выводит надпись;
>
>
>
>

Его мы добавляем к нашему персонажу, и изменяем его ТЕГ на Player, тег Вы можете поставить в inspector нашего Player


Далее создаём скрипт NPC

using UnityEngine;
using System.Collections;

public class NPC: MonoBehaviour

public bool quest; //переменная, которая обозначает взят квест или нет;
public bool vis; // переменная, которая будет отображать диалог между персонажами;
public string missionText; // Текст который будет отображать наименование квеста;
public string missionTag; //Тэг объекта, который необходимо принести;
private Quest MP; // подключаем скрипт Quest;

MP = GameObject.FindGameObjectWithTag(«Player»).GetComponent<Quest>(); // определяем что скрипт Quest будет находится на персонаже с тэгом player;
>

GameObject MissionTagScanner = GameObject.FindGameObjectWithTag(«Player»); // персонаж у которого берем квест будет взаимодействовать только с тем объектом у которого тэг Player;
if (Input.GetKeyDown(KeyCode.E) & Vector3.Distance(transform.position, MissionTagScanner.transform.position) < 2) // При нажатии на клавишу Е и при дистанции между персонажами меньше чем 2;
vis = true; // переменная vis принимает значение true;
>
>
void OnGUI()
if (vis) // если переменная равна true;
if (!quest) // и если квест еще не взят;
GUI.Box(new Rect((Screen.width — 300) / 2, (Screen.height — 300) / 2, 300, 300), «Квест»); // то на экране отображается окно с названием Квест;
GUI.Label(new Rect((Screen.width — 300) / 2 + 5, (Screen.height — 300) / 2 + 15, 290, 250), «Куда ломишься, не видишь закрыто, вали отсюда пока не получил по щам.Еще и этот бездельник меч свой потерял вчера, всю ночь искал так и не нашел, теперь вот спит на посту.Сделаем так, принесешь мне потерянный меч моего напарника и я тебя пропущу, берешься? „); // и текстом который описывает квест;
if (GUI.Button(new Rect((Screen.width — 100) / 2, (Screen.height — 300) / 2 + 250, 100, 40), “Ок»)) // при нажатии на кнопку Ok;
quest = true; // квест взят;
MP.quest = true; // отображает название квеста на экране;
MP.MissionText = «Принести меч»; // текст квеста;
MP.ObjectTag = missionTag; // тэг объекта который необходимо принести;
vis = false; // все диалоговые окна закрываются;
>
>
else
< // если же квест уже взят;
GUI.Box(new Rect((Screen.width — 300) / 2, (Screen.height — 300) / 2, 300, 300), «Квест»);
GUI.Label(new Rect((Screen.width — 300) / 2 + 5, (Screen.height — 300) / 2 + 15, 290, 250), «Принес?»); //то описание квеста меняется на другой текст;
if (MP.MissionObjects) // если вы уже подобрали объект;
if (GUI.Button(new Rect((Screen.width — 100) / 2, (Screen.height — 300) / 2 + 250, 100, 40), «Да»)) // то появится кнопка да, при нажатии на которую;
quest = false; // переменная квест принимает значение false, т.е. не взят ;
MP.quest = false; // название квеста не будет отображаться на экране ;
MP.MissionText = ""; // убирается название квеста;
MP.ObjectTag = ""; // обнуляется тэг объекта;
MP.MissionObjects = false; // объект считается не подобранным;
vis = false; // диалоговое окно закрывается;
>
>
else
< // если вы еще не подобрали объект;
if (GUI.Button(new Rect((Screen.width — 100) / 2, (Screen.height — 300) / 2 + 250, 100, 40), «Нет»)) // то вместо кнопки да, будет кнопка нет;
vis = false; // при нажатии на которую, окно просто закроется;
>
>
>
>
>
>

Этот скрипт мы добавляем к NPC_01, так как я решил, что именно он будет давать нам квест!

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


Создаём скрипт Sword:

using UnityEngine;
using System.Collections;

public class Sword: MonoBehaviour

private Quest MP; // опять подключаем скрипт Quest;

void Start()
MP = GameObject.FindGameObjectWithTag(«Player»).GetComponent<Quest>();
> // определяем что скрипт Quest будет находится на персонаже с тэгом player;
void OnMouseUp()
if (Input.GetMouseButtonUp(0)) // если при нажатии на правую кнопку мыши;
if (MP.ObjectTag == gameObject.tag) // и при том что тэг объекта равен тому значению которое написано в ObjectTag;
MP.MissionObjects = true; // то переменная принимает значение true, т.е. считается что предмет собран;
Destroy(gameObject); // и удаляем этот объект со сцены;
>
>
>
>

Добавляем скрипт к нашему мечу, и теперь необходимо создать для него тег Sword. В Inspector нажимаем на Tag выбираем Add Tag, жмём на плюсик и прописываем название Sword. Готово, тег Sword готов. Возвращаемся к NPC_01, смотрим Inspector, видим наш NPC(Script) и в строке Mission Tag прописываем sword. Если всё сделано правильно, то у нас появился наш первый квест! Давайте проверим как он работает.Запускаю игру, подхожу к НПЦ и нажимаю клавишу Е (именно она прописана в скрипте как клавиша вызова диалога).


НПЦ дал наш первый квест! Нажимаю ОК и отправляюсь на поиски меча. Как видим, у нас появилась надпись, оповещающая нас, какой именно квест мы сейчас проходим в левой части экрана.


Подойдя к мечу, нажимаю на него, и он пропадает, что говорит о правильной работе скрипта! И также появляется надпись, что мы выполнили квест, а значит нужно возвращаться и отдать меч стражнику.


Вернувшись к стражнику, он задаёт вопрос, я на него отвечаю, и вижу что квест выполнен, YoHOO!


Наш первый выполненный квест в этом мире, теперь мы настоящий герой! Но остался другой вопрос, ведь квест мы выполнили, а охранник обещал нас пропустить. Теперь необходимо сделать анимацию открывающейся решетки, чтобы она открывалась, как только мы выполняем квест. Для этого выбираем нашу решетку и заходим во вкладку Animation (если у Вас её нет, то зайдите в Window -> Animation -> Animation и у Вас появится эта вкладка либо нажмите Ctrl+6). Решетку я назвал Door_01 и теперь во вкладке Animation давайте сделаем анимацию поднятия решетки. Нажимаем Create и я ставлю название DoorOpen. Далее я выбираю кадр 0:55 нажимаю на красную кнопку, а после поднимаю решетку, снова нажимаю на красную кнопку, и вот у нас есть ключи анимации как поднимается решетка.


Создаю еще одну анимацию, но на этот раз решетка находится внизу, и сохраняю её как DoorClose. После захожу в Animator, и подключаю анимацию, как мы это делали уже множество раз. Проверяю и вижу, что анимация работает, решетка непрерывно открывается =).


Ну что же, вперед к финишной прямой сегодняшней статьи =). Первым делом создаю очередной скрипт OpenDoor.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OpenDoor: MonoBehaviour
private Quest MP; // подключаем скрипт Quest;

MP = GameObject.FindGameObjectWithTag(«Player»).GetComponent<Quest>(); // определяем что скрипт Quest будет находится на персонаже с тэгом player;
>


void Update()
if (MP.Money == 100)
GetComponent<Animator>().SetBool(«ODoor», true);
>
>
>

Это единственный скрипт, что я нашел в интернете, который мне подошел. Я конечно его немного подправил под мои нужны в виде MP.Money. А для того, чтобы эта строчка работала, необходимо подключить скрипт Quest, что мы и сделали в самом начале. В скриптах, что я нашел ранее, есть параметр, который даёт вознаграждение в виде денег за выполнение квеста, поэтому мы добавим одну строчку, которая нам даст 100 монет, на которые и будет отвечать скрипт открывающий решетку.

if (GUI.Button(new Rect((Screen.width — 100) / 2, (Screen.height — 300) / 2 + 250, 100, 40), «Да»)) // то появится кнопка да, при нажатии на которую;
quest = false; // переменная квест принимает значение false, т.е. не взят ;
MP.quest = false; // название квеста не будет отображаться на экране ;
MP.MissionText = ""; // убирается название квеста;
MP.ObjectTag = ""; // обнуляется тэг объекта;
MP.MissionObjects = false; // объект считается не подобранным;
MP.Money = MP.Money + 100;
vis = false; // диалоговое окно закрывается;

После всех манипуляций, добавляем наш скрипт OpenDoor на объект решетки, и вперед тестить!


После того как я сдал квест и получил свои 100 монет, решетка открылась =). На этом я думаю на сегодня хватит, продолжение будет скоро!

Заключение

Очередной этап создания игры закончен, абсолютно всё, что я тут проделал было взято из уроков или статей интернета.

Я конечно многое бы сделал по другому, но эксперимент есть эксперимент, и с каждой статьёй мне кажется игру я всё же закончу. Всегда рад Вашим комментариям, увидимся в следующей статье!

Большинство роликов на ютубе были абсолютно бесполезны! Зря потраченное время =).


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

В этом году я и ребята проектной группа стали посещать кружок «Информатика и мы». На занятиях мы приступили к изучению прикладной программы PowerPoint.

PowerPoint - это программа предназначенная для подготовки мультимедийных презентаций, входит в основной пакет офисных программ Microsoft Office и доступна каждому пользователю. Изучая основные инструменты данной программы мы заметили, что их можно использовать не только для подготовки доклада, но и для создания викторин, кроссвордов и даже мультфильмов. Это и натолкнула нас на мысль о возможности создания при помощи Microsoft PowerPoint игры. Учитель поддержал нашу идею и предложил выбрать в качестве жанра игры – квест. Так была сформулирована гипотеза нашей проектной работы.

Гипотеза: Возможно ли создать квест игру используя стандартные инструменты Microsoft PowerPoint (слайд 2)

Мы поставили перед собой следующую цель:

Цель работы : Спроектировать и создать квест игру используя стандартные средства Microsoft PowerPoint. (слайд 3)

Для успешной реализации проекта был разработан план (слайд 4):

План: 1. Выяснить какую игру называют квест.

  1. Составить картину моделируемого мира (сценарий игры):
  1. Место действия
  2. Время действия
  3. Действующие лица и занимаемое ими положение
  4. Ситуация, сложившаяся на начало игры
  5. События игры
  1. Определить правила игры .
  2. Разбить игру на отдельные блоки и смоделировать ее.
  3. Провести тестирование.

Приступив к работе над проектом, мы не совсем понимали, что такое квест и поэтому первым пунктом нашего плана работы стал вопрос выяснения, какую игру называют квестом. (слайд 4- 1) Оказалось:

Квест или как его еще называют - приключенческая игра, представляет собой интерактивную историю с главным героем, которым управляет игрок. Целью игры в данном жанре являются обследование мира, а главную роль играет решение головоломок и задач. (слайд 4 - 2)

Основным этапом построения такой игры является моделирование картины игры или другими словами написание сценария. Поэтому вторым этапом работы нашей группы было написание сценария игры. (слайд 5 - 1).

  • Выбрали место действия. Это дом из 4-х комнат по которым путешествует наш главный герой. (слайд 5 - 2).
  • Определили время действия - текущий день. (слайд 5 - 3).
  • Выбрали действующих лиц: главный герой котёнок Гав и его хозяйка девочка Маша. (слайд 5 - 4).
  • Определили ситуацию на начало игры: Маша уходит в школу, а котенок Гав остается один дома. Его задача соблюдать правила поведения в доме и подвергнуть свою жизнь опасности. (слайд 5 - 5).
  • Спланировали основные события игры.

После этого можно было приступать к работе, но работать совместно все над одной комнатой было нецелесообразно. Поэтому мы разбили наш проект на отдельные блоки (слайд 6 - 2). Каждый участник нашего проекта отвечал за разработку отдельного блока (одни работали над кухней, другие – над ванной, следующий –прихожей и т.д.) После того как отдельные блоки были сконструированы мы их собрали в одну презентацию и настроили переходы между слайдами, провели тестирование. (слайд 6 - 3). Как оказалось, так поступают все разработчики игр и других программ.

И в конце мы получили готовую, работающую игру, которую мы вам готовы продемонстрировать. ( стрелка игра -демонстрация игры файл игра.pptx )

Объяснение используемых инструментов Microsoft PowerPoint при построении игры ( по ходу показа игры ):

  1. Для организации перехода к необходимому слайду при нажатие объекта на экране (как например при щелкаем кнопкой мыши на кнопке «Загрузить игру», «Покинуть » или «далее» и переходим к необходимому слайду) использовался инструмент гиперссылка.
  1. Для настройки анимации объекта (например: движение котенка, закрытие двери и т.д.) использовали инструмент настройка анимации. Для этого выделяли объект и добавляли ему вид анимации, далее настраивали как анимация будет осуществляться (по щелчку мыши, после предыдущего, с предыдущим), настраивали время анимации и задержки.
  1. Для отображения подсказки или выполнения действия по нажатии объекта на слайде (например: появление выноски при нажатии на вазу или тапочки) использовали инструменты настройка анимации и триггеры. Вначале выноске добавляли анимацию выхода, а затем данную анимацию связывали с картинкой при нажатии на которую должна появляться выноска.

Таким образом мы достигли поставленной перед собой цели. Получили готовый продукт. И подтвердили гипотезу проекта.

Вывод: Стандартными средствами Microsoft PowerPoint возможно создать полноценную квест игру.

6 оупенсорсных средств создания текстовых игр

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

Вот вам пять оупенсорсных средств, с помощью которых можно написать свою собственную текстовую игру. Но до того как мы начнем, позвольте мне объяснить, что такое текстовая игра.


Интерактивная проза – категория компьютерных игр, в которых игрок может контролировать персонажа посредством текстовых команд. Одной из самых известных игр в этом жанре является Zork.

Более богатой на изображения версией текстовых игр является книга-игра. Книги-игры позволяют так же прокликать себе дорогу до финала. Графика, тем не менее, и в них особо сильного значения не имеет. Все фокусируется на тексте и сюжете. Отличным примером книги-игры является серия “Выбери себе приключение”.

Подыскать хорошую текстоую игрушку на английском языке можно здесь и здесь; на русском здесь, например.

Лучшие средства с открытым кодом для создания интерактивной прозы

Сегодня я покажу вам средства, с помощью которых можно создать интерактивную прозу на Linux. Программы не проставлены в каком-то определенном порядке.

1.Twine

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

Если вы еще хотите чего-то добавить в свою игру, то есть возможность облагородить творение переменными, условной логикой, изображениями, CSS и javascript. Результат Twine экспортирует в формате HTML. Такой подход дает возможность с легкостью делиться своими творениями.

На данный момент последняя версия Twine это 2.1.3, которая доступна для Linux, Windows, и Mac OS. Она лицензирована под GPL v3.

2.Quest

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

Как и Twine Quest можно расширить с помощью изображений, музыки, и звуковых эффектов. У вас даже есть возможность вставки роликов с YouTube или Vimeo и модификации интерфейса финальной версии игры с помощью HTML или javascript.

Последняя версия для Windows 5.7.0. Если у вас Linux или Mac, то можете использовать онлайн редактор. Он лицензирован под MIT. Исходный код доступен здесь.

3.Squiffy

Squiffy - это еще одно средство для создания текстовых игр от разработчиков Quest. Его отмечают как “простой способ создания интерактивной прозы”. Squiffy не сильно отличается от предыдущих вариантов, так как позволяет выводить результат в HTML и javascript, как и Twine, чтобы можно было сыграть в браузере. Для превращения игры в приложение можно использовать PhoneGap.

Самый актуальный релиз Squiffy 5.0. Его можно запускать на Linux, Mac и Windows; можно использовать в браузере. Она лицензирована под MIT. Исходный код здесь.

4.TADS

TADS или Text Adventure Development System – это “прототипный предметно-ориентированный язык программирования и набор стандартных библиотек” для создания интерактивной прозы. Наиболее свежая версия языка TADS основана на C++ и javascript. Она предоставляет компилятор как для создания игр, так и для самой игры.

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

5.Inform

Как и предыдущие варианты, Inform - это более чем простая программа для создания интерактивной прозы. Inform представляет собой целую "систему оформления интерактивной прозы на основе естественного языка". Широкий перечень средств, включенных в нее, позволяет создавать "адвенчуры, исторические симуляторы, захватывающие истории или экспериментальное цифровое искусство". Завершенный исходный код "читается как предложение на английском языке, что делает работу со средством более доступной для не-программистов".

У Inform есть библиотека созданных пользователями расширений, которые могут добавить возможностей вашим историям. Авторы написали электронную книгу, призванную помочь писателям в освоении программы. Inform можно запускать на Linux, Mac и Windows. Linux версия использует фреймворк GNOME. Наиболее актуальный релиз Inform 7.0.

6.Ren'Py

Ren'Py - средство для создания графических романов. Я даже хотел не включать его в этот список, так как оно слишком лаконично для упоминания. Если верить сайту, то он является "бесплатным и кроссплатформенным движком для цифровых рассказов. Он позволяет с легкостью комбинировать слова, изображения и звуки для создания визуального повествования и игр, симулирующих жизнь".

Как и несколько ранее уже упомянутых вариантов, Ren'Py работает со своим собственным языком, но при этом предоставляет поддержку кода на скриптовом языке программирования Python. Ren'Py предлагает поддержку Linux, Windows и Mac. В игры, созданные на нем, так же можно играть на iOS и Android. Вы даже можете создать версию игры для загрузки в Steam. Большая часть Ren'Py лицензирована под MIT. На исходный код можно взглянуть здесь. Актуальная версия 6.99.12.

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

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

Вы когда-нибудь играли в/создавали интерактивную прозу? Есть ли у вас любимые представители жанра? Может я не упомянул какие-то средства? Вы вольны оставить любые замечания, так как они будут очень полезны.

Если статья показалась вам интересной, пожалуйста, поделитесь ей с другими. Спасибо!


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

Одна из таких игр, которая используется для обучения студентов – это квест, мир которого полон разнообразных заданий и головоломок. А давайте разберемся, как создаются квесты и какая у них механика, ведь это важно при самостоятельном создании такой игры.

Что такое квест и первые квестовые игры

Слово ‘квест’ происходит от английского ‘quest’, которое означает поиск, приключение. В квестовых играх герои сталкиваются с заданиями, для выполнении которых нужно включить не только логику, но и свои знания и навыки.

Как таковой первый квест «The Game» был создан в начале 70-ых годов, в котором участники искали сокровище по координатом городов Сан-Франциско и Сиэтл. На основе этой игры был снят фильм – “Midnight Madness”. “The Da Vinci Code”, “Jumanji”, “The Game” и многие другие также основаны на идеи квестов.

Виды квестов

Существует несколько видов квестов.

Механика создания квестов

Основные принципы создания квестов

При создании квестовых игр нужно соблюдать несколько правил и принципов, которые помогут создать качественные квесты:

  • Определение цели (для чего проводится игра)
  • Придумывание сюжета
  • Количество и возраст участников
  • Территория проведения квеста
  • Наличие поисковой деятельности и решение загадок, будь это математическая или логическая загадка
  • Подсказки, позволяющие участнику дойти до финала (в основном подсказки бывают 3 в разных промежутках времени)
  • Разнообразие этапов и заданий (то есть в квестах должна быть сменяющейся деятельность, уровень сложности, которая заставляет участника совершать усилия и этим делает квест интересным)
  • Продумывание прохождения процесса (на время, на очки или на соревнование)
  • Наличие дополнительных заданий (при случае, если участник не cможет пройти задания из-за разных причин, в помощь приходят дополнительные задания)
  • Тестирование созданного квеста (нужно убедится в решимости и правильности загадок и головоломок)

Механизм заданий

При разработке заданий и подсказок в квестах можно применять две разные механизмы:

Виды заданий и подсказки

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

  • Один из интересных заданий, который поможет в изучении английских слов – это Клейлист.

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

Например: agent (2) rich(3) culture (5) always (2)

Ответ: agricultural

  • Примерно так работает задание Реалии жизни, смысл которого угадать слово составленное, например, из букв известных брендов (нужно обратить внимание, что при создании такого задания нужно отобразить картинку брендов, а не название).

Механика создания квестов

В качестве подсказки можно один из знаков/символов выбрать так, чтобы хотя бы были видны первые буквы, как например, в этом случае – Louis Vuitton

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

Механика создания квестов

Задание начинается со слова справа и табличка может быть более большая. Это зависит от предпочтений и задач. Участники должны придумать определенную количество слов, чтобы пройти на следующий этап.

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

He looked at him with an angry look, took the gun out of his pocket, and suddenly stopped.

Первая подсказка: To be, or not to be, that is the question․

Вторая подсказка: Open the tragedy of “Hamlet”, count the number of string and the number of letter. 1-15, 2-3, 1-19, 3-6, 3-1, 3-23, 4-3, 4-22

  • Довольно распространены также буквенные шифровки. Одна из таких квестов Шифр Атбаш, где нужно угадать слово при помощи переставлении букв (нужно заменить первую букву на последнюю, вторую на предпоследнюю и т․д.).

Нужно расшифровать слово hnrov. Посмотрев на алфавит и заменив первую букву на последнюю и так далее со следующими буквами, получится слово smile.

Механика создания квестов

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

Например: I live in a little city, which is cituated in the outskirds of the country. There ore a lot of tees around my house.

Еще один из видов головоломок Ребусы. Это расшифровка слов, пословиц, фраз и даже небольшого рассказа при помощи картинок, букв, цифр и разных знаков.

Механика создания квестов

Здесь слова eye, heart и рука показывающая на тебя, обозначают I love you.

  • Для создания мобильных квестов есть сайт – Движок, который бесплатный и дает возможность создавать собственные квесты (добавлять свои задании, подсказки, ограничить время, загружать фотографии и т.д).

При создании самостоятельных квестов нужно обратить внимание на то, чтобы задания были решаемыми и без ошибок, подсказки действительно подсказывали, не задавать одни и те же задания несколько раз, и не забывать посчитать время выполнения.

Информация о пользователе

Как сделать квест. Подробная инструкция с иллюстрациями.

Давненько я хочу написать этот туториал, но только сейчас обралась. Возможно, конечно, я буду говорить очевидные вещи— однако новичкам, думаю, статья всё равно поможет.
Речь пойдёт не о сюжетной основе квеста, а о механической— как с помощью переменных и переключателей регулировать выполнение квеста, причём многоступенчатого и разветвлённого.
Рассмотрим оный механизм на примере одного из квестов моей игры, «Пастырь и Пастушка», который можно получить в Шейдвуде.
Шаг 1. Сначала примерно рассмотрим структуру. Есть дух, Пастушка. С ней нужно сделать… А вот тут развилка: мы должны либо изгнать её, либо задобрить. Если мы захотим её изгнать, с ней придётся драться. Если мы задабриваем её— драки не будет.
Шаг 2, часть первая. Теперь продумаем квестодателей. Кто будет настаивать на изгнании? Местный священник. Кто будет настаивать на том, что духа нужно задобрить? Одна из крестьянок. Но даст квест именно крестьянка. Священник подойдёт к нам, когда мы будем выходить из деревни, и будет доказывать, что духа нужно именно изгнать.
Я не буду сосредотачиваться на том, как реализовала то, что крестьянка зовёт героя, или то, как священник останавливает его на выходе из деревни— сосредоточу внимание на самой механике процесса квестодавания.
Итак, мы говорим с крестьянкой. Она такая: «У меня для вас есть работа». И перед нами встаёт первый выбор: согласиться или отказаться.
Да, это первый выбор практически любого квеста, кроме обязательных.
И мы должны этот выбор отразить. Где? В переменной, показывающей стадии квеста.
У меня в игре много переменных и ещё больше переключателей. И большая часть этих переменных— квестовые. Они фиксируют, на какой стадии квест находится. Чаще всего на один квест— одна переменная, но если квест большой и сложный, переменных несколько.
Итак, создаём переменную. Называет её Пастушка (я назвала по-другому, я переменные по привычке называю исключительно по-английски, но в мейкере в этом нет необходимости). Если Пастушка = 0, то квест не взят. Если мы согласились, то начинается первая стадия квеста: переменной Пастушка присваивается значение 1.
А если отказались?
Тонкий момент. Обычно отказ от квеста не значит, что мы его больше не получим (хотя иногда бывает и так, но это не наш случай); мы можем подойти к персонажу и повторно получить просьбу поработать.
Давайте-ка представим, как это будет выглядеть (в игре это несколько более пространно, но дам более краткий и несколько утрированный вариант).
Крестьянка: Эй, паладин, у меня есть для тебя работа. Нужно задобрить духа, что обитает на болотах. Сам понимаешь, мы— простые крестьяне, а там с недавних пор шатается всякая нечисть вроде духов воды и слизней, и вообще, рядом ши торчат, так что мы туда ходить боимся, а ты у нас и воин, и маг, и сейв-лоадом владеешь…
(варианты ответа)
1. Да, давай.
2. Нет, не нужна мне работа.
Если соглашаемся, то Пастушка = 1.

Если отказываемся, то… Ничего не происходит? Давайте-ка представим, как подходим к крестьянке во второй раз. И снова:
Крестьянка: Эй, паладин, у меня есть для тебя работа. Нужно задобрить духа, что обитает на болотах. Сам понимаешь, мы— простые крестьяне…
И далее по списку.
Конечно, так можно, но… Может, сделать покрасивее? Чтобы в случае отказа она не твердила всё сначала, а просто спрашивала: «Ну что, всё же решило заработать немножко экспы?». И можно было опять— отказаться либо согласиться.
Чтобы отразить факт отказа, опять посмотрим на нашу переменную. Присвоим ей в случае отказа значение… Нет, не 2, а -1. То есть Пастушка = 0 это квест не взят, Пастушка = 1 это квест взят, Пастушка = -1 это от квеста отказались.
Сделаем в событии, которое у нас крестьянка-квестодатель, новую страничку. Если кто не знает или забыл, странички— это такие части события, которые работают в зависимости от разных условий. Чтобы создать новую страницу, нужно нажать на кнопку «Новая страница события» (New event page) наверху события.

Читайте также: