Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Написание игр _ Текстовой квест

Автор: Костян 31.12.2005 23:36

Народ, я смотрю тут было много проектов, и задумок- тетрисов, стратегий и пр. А некому не приходило в голову создать старый добрый текстовой квест, без всяких там наворотов,можно даже в текстовом режиме. Если у кого есть какие идеи пишите, обмозгуем, вдруг чаво и получится...
P.S. ВСЕХ С НАСТУПАЮЩИМ. respect.gif

Автор: Костян 1.01.2006 23:26

Чет тут глухо как в танке, ну же творческие умы подкидывайте идеи....

Автор: Altair 2.01.2006 0:16

а какие могут быть идеи ? это простая задача и все уже давно реализованно...

Автор: Костян 2.01.2006 0:50

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

Автор: Altair 2.01.2006 1:09

Есть старые игры заслуживающие внимания, но текстовые игры, это явно прошлый век...
КОнечно на заре компьютерной эры, игры были совершенно не такие как сейчас -
по экрану гонялись буквы друг за другом, и только воображение могло подсказать что
буква D это рыцарь а точки "." это монстры smile.gif
Но сейчас то кто в такое будет играть ?
p.s. тебе хочется написать текстовую игру ? ну пиши - реализуется то она очень быстро...
какие у тебя вопросы по реализации ?
создаешь дерево вопров , и проходишь его в зависимости от того как отвечает юзер..

Автор: Shura 2.01.2006 3:20

Altair, так делается, если квест статический - т.е. если сцены меняются только от введенных игроком ответов. Это конечно легко. А если есть, например, у игрока инвентарь, и в зависимости от того, что в инвентаре, меняется как вопрос, так и варианты ответа? Т.е. для каждой сцены должен сформироваться определенный набор ответов, и не обязательно для одной и той же сцены этот набор будет всегда одинаков! И, плюс, от ответов, меняется еще и сам инвентарь! Получается для каждой сцены или для каждого варианта ответа нужно писать отдельную процедуру, которая изменяет параметры инвентаря, игрока и прочее, так что ли? Может есть более простая реализация? (Мне самому интересно...)

Автор: Бродяжник 3.01.2006 13:27

Если поковыряться в файлах Fallouta, то видно, что все равно в конце концов все сводится к чему-то вроде дерева вариантов. Просто можно тупо зашивать это дерево в программу, а можно держать его в виде каких-то скриптов. Что же касается текстовых игр, то не знаю, как квесты, а такие игры, как ADOM и Angband... в них играют и сейчас. Разработать квестовый движок можно, можно и готовый взять. А кто будет писать сюжет и ваять локации? Ведь главное-то в этом заключается...

Автор: GoodWind 3.01.2006 13:43

Цитата
а такие игры, как ADOM и Angband..

начнем с того, что adom текстовая rpg blum.gif
вообще adom классная вещь yes2.gif
в Angband не играл к сожалению...

для меня знакомство с текстовыми квестами началось с zx LordOfTeRings - вот это была вещь.... щас такого не делают уже...

Автор: Shura 3.01.2006 17:26

Цитата

А кто будет писать сюжет и ваять локации? Ведь главное-то в этом заключается...

Был бы движок, а писаки и ваяки найдутся! :-D А вот насчет "взять готовый движок" - думаю, полезнее и интереснее будет самим написать.

Только квест не просто белые строчки на черном экране, а, например, проиллюстрированы еще картинками. Играл кто-нибудь в "Космических рейнджеров"? Вот там красиво все сделано. Во второй части есть квест - целая РПГ - отдельный квест, один из... не помню сколько.. штук 50 их наверно! Там и инвентарь есть чуть-ли не в каждом квесте, и картинки (правда повторяются частенько). Мы все с другом хотели нащелкать фоток на цифровик, и слепить из этого квест по реальным событиям - да вот все времени не было... smile.gif

Автор: Бродяжник 3.01.2006 20:42

Цитата
вот все времени не было...

Вот на этом все обычно и заканчивается sad.gif

Автор: Shura 3.01.2006 21:55

А сейчас время появилось. А тут вдруг и тему подняли такую! Совпадение? ;-)

Автор: Бродяжник 4.01.2006 18:31

Я часто подумывал о том, как бы замутить квест (уж больно нравилась Кирандия). Могу высказать некоторые соображения. Если брать совсем грубо, то есть локации, в которых есть некоторые объекты. Игрок может воздействовать на эти объекты либо сам, либо с помощью других объектов. Он может помещать эти объекты в свой инвентарь и носить их с локации на локацию, и может класть их на землю. В результате воздействия на объекты могут происходить следующие вещи:
- объекты могут уничтожаться
- могут появляться новые объекты
- могут меняться свойства объектов
- могут изменять свои значения некоторые глобальные флаги и/или локальные флаги локации
- могут меняться качества персонажа
- может меняться отображение локации (описание и/или картинка)
- ...
В идеале хотелось бы сделать своего рода скриптовый язык, который бы все это описывал вот примерно так:

Код
Location Room1 {
Event OnEnter {
if Room1.Visited = 0
  Room1.Visited = 1
  Room1.DoorOpen = 0
  AddItem(Room1,"Key1","Ключ","Большой ржавый ключ")
  AddExit(Room1,"Door1","Дверь","Тяжелая дубовая дверь")
  Text "Эта комната вам незнакома."
else
  Text "В этой комнате вы уже бывали."
endif

Text "В северной стене видна дверь."

if Room1.DoorOpen = 1
  Text "Она открыта."
else
  Text "Она закрыта."
endif

ListAllItems
}

Event OnUse(Item1,Item2) {
if Item1 = "Key1"
  if Item2 = "Door1"
     if Room1.DoorOpen = 0
        Room1.DoorOpen = 1
        Text "Вы отперли дверь"
     else
        Room1.DoorOpen = 0
        Text "Вы заперли дверь"
     endif
   else
     Text "Ключ для этого не предназначен"
   endif  
else
   Text "Ничего не происходит"
endif
}
...
}
Это просто набросок. Поэтому для начала нужно было бы спроектировать одну локацию с парой-тройкой предметов и описать ее на подобном псевдокоде, стремясь к тому, чтобы минимизировать число ключевых слов. На основе этого разработать язык скриптов. А потом писать его интерпретатор.
С другой стороны нужна еще система обработки команд пользователя. Опять-таки, вначале нужно составить перечень допустимых команд и написать их интерпретатор. А потом разработать систему формирования команд - либо через консольный ввод, либо через GUI. Все это было бы интересно... я могу принимать участие в обсуждении. А писать что-то всерьез не хочу - и так есть чем заняться.

Автор: Дож 10.01.2006 16:07

Цитата

В идеале хотелось бы сделать своего рода скриптовый язык

Зачем скриптовый язык? Для создания карт? Тогда просто можно сделать редактор, в котором все можно было бы увидеть. Для создания новых объектов на карте(ну, например, у тебя AddItem(Room1,"Key1","Ключ","Большой ржавый ключ") )? Но все объекты типичные! Просто в редакторе вшиты некоторые необходимые типы(к примеру "ключ") и можно давать названия отдельным экземплярам(как програмные "Key1" так и пользовательские"Большой ржавый ключ").

Автор: Бродяжник 10.01.2006 16:53

Скрипты нужны для задания реакции на игровые события. Например, в сценарии сказано:
"После того, как Джек ударил жезлом по алтарю, на алтаре материализовался Огненный Кубок." Это значит, что где-то должно быть записано, что если игрок использовал объект "жезл" на объекте "алтарь", то нужно а) либо добавить в сцену объект "кубок", либо сделать уже имеющийся объект "кубок" видимым и доступным; а также б) проиграть анимацию "материализация кубка".
Где-то же это надо указывать? А в других случаях надо не добавлять, а удалять объекты, и не один, а много. То есть реакция на внешне сходные события - "применить объект А к объекту Б" - может очень сильно различаться. И при этом может учитываться то, какие действия игрок уже совершил ранее. Если я разговариваю с Архимагом до того, как поговорю с Ведьмой, он скажет мне что-то одно, а если после того, то что-то другое. Где прописывать все эти условия?
Хотя я и не настаиваю на своем мнении. Я бы делал так, но варианты вполне возможны.

Автор: Дож 10.01.2006 19:04

Тогда согласен, без скриптов не обойтись.

Автор: hardcase 13.01.2006 23:06

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

Автор: Lik 19.01.2006 4:07

Неужели не скучно писать локальную историю? Создайте сетевой квест =) Есессно придется и серверный клиент написать, но так хотя бы настоящих писак привлеч можно, в плане разработки сюжета. Кроме того, если все выйдет достаточно интересно, можно написать клиент и на др. платформе. К примеру смартфоны...
Когда-то читал биографию людей связаных с разработкой nix'ов. Они тоже играли в сетевые текстовые квесты =) В одном из них понравилось, что при входе определенной особы в храм, на алтарь падал сумрачный свет... Что самое удобное, такие спецэффекты не требуют особой производительности =)

Автор: Atos 19.01.2006 14:42

Цитата
В идеале хотелось бы сделать своего рода скриптовый язык, который бы все это описывал вот примерно так:
Такой язык уже реализован в Heroes of Might&Magic 4. Это настолько мощная вещь, что, создавая карты в редакторе, ты практически неограничен в творческих возможностях, и можешь создавать свои собственные игры. Так, есть любительские карты, где герои играют в "баскетбол" или в шашки... хотя это уже изврат... А обычные приключенческие квесты вообще легко создаются, причём опять же есть карты с очень интересными нелинейными сюжетами... и к тому же все возможности самого геройского боевого и адвенчурного движков к вашим услугам.

Автор: StormSnake 5.10.2006 19:51

мнэ... насчет геройского и адвенчурного — не знаю, мало играл. но как по ине — свое создавать интереснее! потому что красивее, хотя работать и дольше.
опаньки! мое первое сообщение на форуме! smile.gif

Автор: Noof 9.10.2006 23:13

Честно? Лучше чем то что уже написанно не сделаете. Пользы - 0 от даже изучения данной темы.
Согласен что это прошлый век. Есть готовые движки, можно использовать их такими как они есть или модифицировать но не создавать.

Автор: --Евгений-- 17.05.2017 0:40

Program Kvest ;

Uses crt;

Var b,a,c,g,z: integer;
Begin
writeln(


'Наконец-то, вы собираетесь на заслуженный отдых после 11-и mесяцев работы.Куда вы отправuтесь? 1)море; 2)лес.'
);
readln(a);
If a=1 Then
Begin
writeln (


'Море... Отличный выбор: отель, бассеин, вежливый персонал и теплый воздух! Что может быть лучше? На какое море вы ходите поехать? 1)Черное 2)Красное '
);
readln(b);
If b=1 Then
Begin
writeln(


'Как вы хотите попасть на Черное море? 1)Машина 2)самолет'
);
readln©;
If c=1 Then
Begin
writeln(


'Машина... Долго, но дешиво. Удачного отдыха.'
);
End
Else
Begin
writeln(


'Самолет?! Я знал что в душе ты АЛИГАРХ. Удачи на камфортном отдыхе.'
);
End;
End
Else
Begin
writeln(


'Как вы хотите попасть на Красное море? 1)Машина 2)самолет'
);
readln(g);
If g=1 Then
Begin
writeln(


'Машина... Долго, но дешиво. Удачного отдыха.'
);
End
Else
Begin
writeln(


'Самолет?! Я знал что в душе ты АЛИГАРХ. Удачи на камфортном отдыхе.'
);
End;
End;
End
Else
Begin
writeln(


'Лес?.. Ну что ж, тоже хорошuй выбор. Эктрим! особенно если еcть только топор! Я бы поехал na море. 1)Взять только топор 2)Пaлатка, топор, еда и т.д.'
);
readln(z);
If z=1 Then
Begin
writeln('ЭКСТРИИИМ!!! Обожаю таких людeй! Весело отдохнуть.');
End
Else
Begin
writeln(


'Просто решил сэкономить на поездке на море? Ну ладно всякие люди бывают, богатые, бедные... Удачного отдыха...'
);
End;
End;
End.