Как сделать текстовую игру на c

Добавил пользователь Валентин П.
Обновлено: 01.09.2024

хотел бы найти где нибудь примеры, но не где нету (
я бы хотел бы, что бы в консоль писалась сама история, и от того, что выбрал игрок,
то следующий текст так сказать в истории изменялся, к примеру:

вот жил-был петя, что ему нужно сегодня взять в школу?

1. карандаш
2. учебник
3. всё

и если игрок выбирает 1, то дальнейшие действия будут по типу: что ему в школе сказали, что ты взял только карандаш почему-то
а если игрок выбирает 3, то уже какой нибудь другой диалог, что его похвалили (к примеру)

1) изучить основы C++. Тут даже классы создавать не надо. Из стандартной библиотеки нужен только string и его ввод/вывод на консоль.
2) написать текстовый квест

Вот как ты написал на русском языке, только перевести на C++. Только "по типу" не пройдет, надо всё писать подробно. А это делать бесплатно никто не будет.

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.

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

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

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

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

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 24 человек(а).

Количество источников, использованных в этой статье: 8. Вы найдете их список внизу страницы.

Текстовая адвенчура или же интерактивная беллетристика (interactive fiction, для краткости – IF) является старейшим жанром компьютерных игр, имеющая в наши дни относительно небольшую, но преданную фанатскую базу. Они, как правило, находятся в свободном доступе, используют незначительный объем вычислительной мощности, а, лучше всего то, что вы можете создать такую игру, без необходимости осваивать навыки программирования.

Изображение с названием Make a Text Based Game Step 1

Попробуйте Inform 7. Inform 7 – популярный и многофункциональный инструмент для создания текстовых игр (чаще называемых интерактивной беллетристикой). Его язык программирования выполнен в виде обычных предложений на английском, одновременно предоставляя полную функциональность. Inform 7 бесплатен и доступен для систем Windows, Mac и Linux.

Изображение с названием Make a Text Based Game Step 2

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

Изображение с названием Make a Text Based Game Step 3

Изображение с названием Make a Text Based Game Step 4

Изображение с названием Make a Text Based Game Step 5

  • Quest (аналог инструментарию IF, представленному выше)
  • Twine (простой в использовании графический редактор)
  • StoryNexus (игрок выбирает один из предоставленных вариантов, вместо того, чтобы угадывать текст для ввода; StoryNexus размещает вашу игру онлайн; имеет в наличии средства монетизации)

Изображение с названием Make a Text Based Game Step 6

Изображение с названием Make a Text Based Game Step 7

Изображение с названием Make a Text Based Game Step 8

Такими раньше была интерактивная литература

Такими раньше была интерактивная литература

Про текстовые игры написано довольно много как на Хабре, так и на просторах интернета. Это один из самых первых жанров интерактивных развлечений с использованием ЭВМ и даже без него (просьба поделиться опытом НЕэлектронных текстовых игр в комментариях).

Все причины в прошлом


Понятное дело для молодого парня, увлекающегося белетристикой, возможность объединить прозу и игры, показалась очень воодушевляющей и уже вскоре я разбирался с функционалом редактора текстовых квестов для Космических Рейнджеров TGE (вроде как это TextGame Engine). На тот момент я думал, что это самый удобный, лучший, понятный и простой инструмент, который позволит мне реализовать любую задумку в кратчайшие сроки. Как же я был прав.

Внешний вид интерфейса AXMA Story Maker JS. JS дает большой раздор для фантазии, но не каждому..

Внешний вид интерфейса AXMA Story Maker JS.
JS дает большой раздор для фантазии, но не каждому..

Прошли года, идея создания текстовой игры подутихла, что бы вспыхнуть вновь с новой силой. Но обладая уже небольшим жизненным и юзерским опытом, я стал искать более современный и удобный инструмент, который позволит мне (и другим пользователям) запускать интерактивные истории не только через самих КР. И на тот момент я нашел их множество:

QSP, URQ, Instead, Twine (тогда он назывался по-другому), AXMA и т.д. Их было много, но после опыта с TGE, все они казались громоздкими, сложными в реализации творческих задумок, устаревшими. Ни один из движков не позволял мне сконцентрироваться на творчестве, но в течении следующих лет я вернусь к каждому из них вновь, узнаю о новых и все так же отложу идею создания текстовой игры на годы — до определенного момента.

Что было сейчас и будет тогда

Рекламу этой игры многие видели в youtube

Рекламу этой игры многие видели в youtube

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

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

Возвращение к новому старому

Как выглядит оригинальный редактор квестов TGE

Как выглядит оригинальный редактор квестов TGE

Возвращаясь к моему пути. Обыскав всё и вся на тему простых, но функциональных движков для текстовых игр, я неожиданно для себя вернулся снова к TGE — за эти годы он слегка прокачался, давая еще больше свободы для творчества, проблемой оказался только запуск новонаписанных игр, где-то вне самих КР. Но обладая уже небольшим, но опытом, я начал искать. Искал я долго, переодически забрасывая эту идею и возвращаясь к другим движкам и интерпритаторам, бесясь от их сложности и медлительности или отсутствия необходимого функционала.

Редактор всему голова

Вы можете делать игры где угодно!

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

Начало Вашей истории

Создание истории базируется на локациях и переходах. Локация описывает окружение или ситуацию, или и то и другое. Переходы связывают две локации в виде выбора игрока.

Предположим у нас есть лошадка. Мы вводим в первой локации эту лошадку.

Потом мы можем добавить локацию, где лошадка идет:

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

Параметры богу параметров!

Те кто играл в квесты КР помнят, что там у персонажа игрока мог быть свой инвентарь, или статус бар, какая-либо информация, динамически изменяемая в течении квеста. Все это отображалось в специально поле справа в виде строчек с текстом или символами. Это все реализовано с помощью параметров.

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

На начало квеста мы сделаем значение 10.

Условия трону условий!

Про условия стоит поговорить отдельно, но не сейчас. Скажу только, что движок понимает много математических и логических операторов, например:

Интерфейс редактора прост и понятен даже далекому от IT человеку

Интерфейс редактора прост и понятен даже далекому от IT человеку

При каждом переходе или посещении локации, мы можем изменять значение параметров. Условия же можно задавать только для переходов.

Локациям нельзя выставить условия посещения. Если в них ведет переход, значит все схвачено, вы либо попадете туда если соответствуете условиям перехода, либо нет.
Но есть у локаций и свои особенности — а именно варианты отображения. Официально TGE поддерживает бесконечное их количество, а неофициально — вам хватит и 5-10. Выбираются варианты отображения либо по порядку (от 1-го варианта при первом посещении, второго при втором и т.д.), либо по математической формуле которую задаем мы. При этом мы можем пользоваться значениями параметров.

И вот это дает уже бесконечный разлет фантазии. Пример:

Мы хотим, чтобы при посещении нашей локации, где лошадка идет, каждый раз в зависимости от того насколько она устала у нас менялся текст. В этот раз я использую параметр для того что бы брать его значение при вычислении — наш параметр первый — [p1] — эта переменная в формуле выдаст нам число от 1 до 10, но писать 10 описаний, как то нудно, я сделаю 3 варианта и буду использовать операции сравнения.

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

Вывод параметров в текст

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

Так же плеер поддерживает возможность вывода строковой составляющей параметра как при нынешнем значении, так и при определенном значении - для этого [p1] мы меняем на [d1] - для нынешнего значения параметра и [d1:10] - для строки при значении параметра 10.

Микровывод

Так это выглядит в онлайн-версии редактора Василия

Так это выглядит в онлайн-версии редактора Василия

Заложенный в движок функционал позволяет реализовать почти все что угодно. Например, динамические бои с элементом случайности. Сбоку мой пример боевки по мотивам DnD собранный за примерно час. При каждом ударе делается бросок двадцатигранного "кубика" и в случае успеха, показывается один из нескольких описаний попадания (или промаха).

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

Квесты могут быть протяженными и разветвленными

Квесты могут быть протяженными и разветвленными

Я не рассказал о многих функциях редактора, дальше я бы хотел подробнее рассказать именно об особенностях плеера за авторством Василия Рогина. Ну или точнее еще пару слов перед этим.

Эстетика - музыка, изображение, звуки

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

Думаю, данный функционал будет расширятся. И в скором времени графические составляющие расширятся.

Я выложить хотел бы в интернетах.

С редактором разобрались. Теперь пару слов о публикации вашего творения. Ну тут вариантов несколько:

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

Ну и конечно Вы можете выгрузить свой квест в формате *.qmm и загрузить в одну из игр серии Космические Рейнджеры, последняя часть которой носит подзаголовок Quest - отражая её суть.

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

Мысли о том, что ждет нас в будущем

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

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

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

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

В тех же Космических Рейнджерах огромный интерес создавал контекст вселенной игры. Квесты были вписаны в него.

К чему я веду. Интерактивная Литература не как самостоятельное произведение, а как часть какой то более сложной, наративной системы. И в этом плане, веб приложение собранное Василием Рогиным - по факту кастомизируемый портал, который каждая группа/сообщество, сможет подстроить под себя, рождая тем самым метасообщество читателей и создателей текстовых игр. Вот так могут и должны переродиться жанры интерактивной литературы. Опять же все, конечно, исключительно на базе личного опыта.

Напоследок

Попробуйте сами использовать редактор - и создать на нем что нибудь - это интереснее и проще чем кажется. Также доступен репозиторий проекта .

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