Давным-давно в одной неволшебной стране жил-был я. И занимался тогда чудным и странным делом — писал сценарий к компьютерной игре, а также менеджил ее разработку. Долго ли, коротко ли — мы ее таки написали, но результат вышел крайне мутным. И с тех пор у меня никогда не возникало желания это все как-то повторять.
Вроде бы сказочке конец?
Не совсем. Год назад я написал вот эту заметку про нетипичную игру которая мне понравилось. А еще месяцев через десять я вспомнил что в описании игры было сказано что она создана на движке Twine и решил поглядеть что это такое.
И здесь заканчивается сказка и начинается суровая, но интересная правда жизни.
Этот самый Twine — бесплатная, но при этом полноценная система разработки текстовых игр (а также, если за хотите — интерактивных/нелинейных книг и историй). И если для книг это в целом осталось экзотикой, то компьютерные игры достаточно часто предлагают несколько сюжетных линий и развязок.
Так что на Twine можно создать как независимое произведения — интерактивные книги/игры, так и разрабатывать с помощью него текстовую «начинку» для графических игр.
Разумеется, не Twine-он единым — существует еще два десятка альтернативных программных продуктов, позволяющих создавать несложные игры с помощью более-менее удобных систем визуального редактирования. Часть из них умеет «из коробки» работать с 2D и даже с 3D-графикой, анимировать изображения, создавать исполняемые пакеты для разных систем и так далее.
Но я пока хочу поговорить о том что требует самых простых навыков и знаний (чуть позже обьясню почему). И простенький Twine здесь будет логичным выбором.
Как создать примитивную текстовую игру-квест? Вроде бы вообще ничего не надо — можно написать описательный текст для показа игроку хоть на картонках, где сверху описание ситуации, а снизу возможные действия. Ну например:
Картонка N 19. «Вы приблизились к опушке мрачного леса, здесь тропинка раздваивается. Одна из дорожек ныряет в чащу и быстро исчезает за деревьями, вторая идет вдоль леса. На развилке стоит открытый сундук. Вы можете:»
- Пойти по дорожке в чащу леса. (В этом случае возьми картонку номер 20)
- Пойти вдоль опушки леса. (В этом случае возьми картонку номер 23)
- Заглянуть в сундук (В этом случае возьми картонку номер 24)
- Крикнуть «Эгегей, есть тут кто?» (В этом случае возьми картонку номер 99)
Однако есть одна серьезная штука, которая портит задумку любому, решившему создать такой вот картонный гипертекст (картонки здесь легко заменяются html-страницами, разницы тут нет). В такой системе совершенно отсутствует контекст.
Иными словами — картонка в твоих руках содержит ВСЮ информацию о том что игрок может сделать в данной точке. В такой игре нельзя, например, реализовать нормальный инвентарь с предметами и деньгами (который стандартно встречается в современных квестах и ролевых играх). Потому что на картонке должно быть написано что-то вроде:
- Если у тебя есть ключ — ты можешь открыть замок. (В этом случае возьми картонку номер 21)
- Если у тебя есть золото — ты можешь подкупить стражника (В этом случае возьми картонку номер 25).
Понятно что если ты заранее читаешь об этих возможностях — игра сразу теряет огромную часть своей привлекательности, ведь сразу видны все возможности. Так что интересной и интригующей игре остро необходим контекст — нечто не написанное на открытых картонках. То что зависит от предыдущих действий игрока и изменяется в зависимости от них.
В игре с картонками решением будет появление ведущего, который читает открытую часть картонок игрокам, а инструкцию в закрытой части использует для того чтоб выбирать дальнейший сюжет. Собственно, так и делается в большинстве «бумажных» ролевых игр, там обязательно существует Dungeon или Game Master, управляющий прогрессом игры.
Контекст в компьютерных квестах программируется в виде условий и ветвлений, для этого используется внутренний скриптовый язык. Легкость изучения и применения этого самого языка (а это именно язык, пусть и примитивный) — то что отличает один программный продукт этого направления от другого.
А вот теперь к пользе. Мне пришло в голову что Twine и похожие на него системы — могут быть отличным подспорьем для коллективного обучения детей программированию. И не только ему, кстати. И не только детей.
В самом деле — для создания игры нужно спланировать работу, распределить ресурсы (кому-то по сердцу будет творчество и дизайн, кому-то программирование). То есть все исходные части хорошего проекта здесь есть — и проектирование, и кодирование и работа с контентом.
Думаю что для детей 9+ самое то. Понятный результат проекта, понятные усилия.
Но с другой стороны, это может быть и хакатоновским таким проектом для группы взрослых. За день вполне можно создать прототип занятной игры.
Словом, я вижу здесь массу интересных приложений, и расскажу о них уже в следующей части (значительно более конкретной и короткой).