Среда, 27 Ноября 2024, 02:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Нелинейные диалоги и вариации
ЯкудзаДата: Вторник, 13 Марта 2012, 17:18 | Сообщение # 1
старожил
Сейчас нет на сайте
Я тут придумал вселенную для RPG, но ни разу не работал по ним. Тут же возник вопрос: как построен сценарий, в котором разные последствия диалогов и вариации? Как их написать? По какой схеме работать?
Приведите, пожалуйста, примеры.


Сообщение отредактировал Якудза - Вторник, 13 Марта 2012, 17:30
reyzorДата: Вторник, 13 Марта 2012, 17:32 | Сообщение # 2
Проггер в законе
Сейчас нет на сайте
Внимание !! ПСЕВДОКОД !!!
Code
IF(home)
{
   if(Перевёл бабульку через дорогу)
   {
      Cash += 20р
   }

    if(не Перевёл бабульку через дорогу)
   {
      Carma -= 20
   }
    if(Пнул бабульку)
   {
      Cash -= 2000р  
      carma -= 100

   }

}


Юзаю Unity3d +C#
Мой твиттер
Помог - ставь +, Ответил на вопрос - ставь +.
danielskachkovДата: Вторник, 13 Марта 2012, 17:42 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Вот тут можно писать нелинейные сценарии:
клик
Регистрируешься и пишешь!


Из-за преступной халатности работников Эрмитажа картина Казимира Малевича "Черный квадрат" два месяца провисела вверх ногами.
zahaloneДата: Вторник, 13 Марта 2012, 17:44 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Насколько я понел все сценарии к компьютерным играм пишуться одинаково, просто при написание разветвленного сюжета учитываються эти ветви и их воздействие на весь последуйший сценарий, геймплей. Из-за этого сценарий получаеться огромный (некоторые по году их пишут и это современные комерчески успешные команды, но там геймплей около 60 часов) и часто возникают логические ляпы, пробелы.



I create and play a good game.

Сообщение отредактировал zahalone - Вторник, 13 Марта 2012, 17:50
TimKruzДата: Вторник, 13 Марта 2012, 18:11 | Сообщение # 5
старожил
Сейчас нет на сайте
Якудза, тут может быть несколько вариантов, от совсем простых до очень сложных.
Quote (reyzor)
Внимание !! ПСЕВДОКОД !!!

Ну это не совсем псевдокод, это скорее смесь чего-то Си-подобного с кириллицей. Вот так, думаю, понятнее:
Code
Если [встретил бабульку у дороги] тогда
   Перебор вариантов [действие игрока] из:
     [Перевёл через дорогу]: деньги +20р;
     [Не перевёл бабульку через дорогу]: репутация -20;
     [Пнул бабульку] деньги -2000р и репутация -100;
   Конец перебора;

Общая схема приведённого выше: если игрок столкнулся с квестовым объектом (NPC, записка на холодильнике и т.п.) игроку предоставляется возможность совершить одно из действий, при чем каждое из них повлечёт за собой определённые последствия, как положительные, так и отрицательные. Но в данном случае схема проста до безобразия, и игре фактически по фиг, как игрок будет проходить эти задания.
Для усложнения, можно, например, использовать параметр "репутации" (или чего-то в этом роде) и с его помощью влиять на предоставляемые игроку задания и их результаты. Т.е., например, игрок с отрицательной репутацией не сможет получить задание, например, передать деньги от персонажа А персонажу Б, потому что, скорей всего, он присвоит их себе. Можно сделать несколько отличных параметров, например, "доброта", "отзывчивость", "бескорыстность" и прочее. Естественно, ни один из подобных параметров не выводится на экран.
Другой вариант менее универсален. Можно составить дерево сюжета, по которому игрок может двигаться в нескольких направлениях, переходя к следующим квестам в зависимости от того, какое решение принял в предыдущих. Можно подробно рассчитать это дерево, и в файле сохранения текущей игры записывать лишь узел, на котором находится игрок. После принятия решения в новом задании игрок передвигается на следующий узел, в зависимости от его решения. Простой пример:
Code
                  [Квест 1]                          //Первый узел
              <+>           <->                     //Первое решение
       [Квест 2]            [Квест 3]             //Два узла второго уровня
    <+>      <->         <+>      <->         //Решения второго уровня
[Квест 4] [Квест 5] [Квест 6] [Смерть игрока]
    ...      ...      ...

Можно сделать иначе: в файле сохранения хранится информация обо всех решениях, принятых игроком во время игры, которые могут в дальнейшем повлиять на другие задания или самого игрока. Т.е. в массиве в каждой ячейке хранится номер варианта решения, принятого игроком; в какой-то момент эти числа извлекаются и проверяются.

Для игры с огромным или непредсказуемым сюжетом (возможно, ММОРПГ с обновляемым количеством задач для игроков) лучше подойдёт вариант с "невидимыми" параметрами игрока; для игры с сюжетом более продуманным (однопользовательская игра с определённым смыслом) или меньшего размера лучше "дерево". Последний вариант довольно сложен и тратит память пропорционально количеству квестов в игре, да и вряд ли часто нужно проверять значения всех квестов... Значение отдельного квеста проще записать отдельно, если очень уж нужно.


ЯкудзаДата: Вторник, 13 Марта 2012, 18:12 | Сообщение # 6
старожил
Сейчас нет на сайте
Более-менее вроде понял, как их писать.
Первый документ - основной квест.
Второй документ - сайд-квесты.
Третий документ - дерево повествования (перечисление нелинейности).

Но я всё ещё не понял одного. Например: в середине повествования главный герой совершает действие, которое плохо влияет на крестьян, потом проходит ещё очень много времени и персонаж встречает важного NPC из общества, которому он навредил (то есть крестьян). Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?
reyzorДата: Вторник, 13 Марта 2012, 18:20 | Сообщение # 7
Проггер в законе
Сейчас нет на сайте
Quote (Якудза)
Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?

Например, если репутация > 20 то ты герой, если < 20 то ты нищеброд.


Юзаю Unity3d +C#
Мой твиттер
Помог - ставь +, Ответил на вопрос - ставь +.
TimKruzДата: Вторник, 13 Марта 2012, 18:21 | Сообщение # 8
старожил
Сейчас нет на сайте
Quote (Якудза)
Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?

Т.е. в дизайн-документе? Как-то так можно:
Quote
Квест №9234 "Встреча с NPC №345"
ГГ навредил крестьянам*:
"-бла-бла-бла
-бла-бла-бла"
ГГ помог крестьянам*:
"-бла-бла-бла
-бла-бла-бла"
ГГ отравил семью NPC №345**:
"-бла-бла-бла
-бла-бла-бла"

*См. квест №4312 на стр. 756.
**См. квест №2344 на стр. 498.


ЯкудзаДата: Вторник, 13 Марта 2012, 18:21 | Сообщение # 9
старожил
Сейчас нет на сайте
TimKruz, сложно выглядит. Система репутаций у меня не очень стандартная.
Для начала у главного героя есть две ветки поведения: Герой и Злодей.
Дальше уже интереснее: действия и реплики персонажа влияют на то, как к нему будут относиться те или иные группы общества - крестьяне, аристократия, лорды. Также будет шкала отношений с тем или иным городом.
Все эти вещи влияют на окончание, а благодаря диалогам игрок смог бы сам настроить для героя те или иные взгляды, кругозор и т.д.

TimKruz, в сценарий.

Не думал, что так сложно получится.


Сообщение отредактировал Якудза - Вторник, 13 Марта 2012, 18:23
AquadruosДата: Вторник, 13 Марта 2012, 18:31 | Сообщение # 10
частый гость
Сейчас нет на сайте
Ну например, грубо, присваиваем каждому из возможных действий игрока переменную (х - если игрок помог крестьянам, у - если навредил, z - если проигнорировал). Далее ветка диалога так и прописывается:
если результат квеста "крестьяне" = х то диалог:
если результат квеста "крестьяне" = у то диалог:
если результат квеста "крестьяне" = z то диалог:


Мрачное чудовище.
TimKruzДата: Вторник, 13 Марта 2012, 18:35 | Сообщение # 11
старожил
Сейчас нет на сайте
Quote (Якудза)
как к нему будут относиться те или иные группы общества - крестьяне, аристократия, лорды. Также будет шкала отношений с тем или иным городом.

Прямо как в GTA 1/2, кажется. biggrin Там выполнение заданий на банду и убийство членов банды повышало/понижало уважение банд к игроку, и у банды, чьё уважение к игроку меньше 0, нельзя взять задание (вообще убить пытаются).
Ну тогда можно так:
Quote
Квест №9234 "Встреча с NPC №345"
Отношение крестьян <0:
"-бла-бла-бла
-бла-бла-бла"
Переход на квест №9235 или 9236 //Совсем забыл эту строчку добавить
Отношение крестьян >0:
"-бла-бла-бла
-бла-бла-бла"
Переход на квест №9236 или 9237
Дополнительный пункт: ГГ отравил жену NPC №345*, но отношение крестьян >0:
"-бла-бла-бла
-бла-бла-бла"
Переход на квест №9238 или 9239

*См. квест №2344 на стр. 498.

Quote (Якудза)
Не думал, что так сложно получится.

Если у игрока только два варианта для выбора ("герой" и "злодей"), то не так уж и сложно. В конце концов, не стоит давать выбор прямо на каждом задании; в принципе, можно сделать пересечение веток сюжета.
По-моему, если всё завязано лишь на отношениях между игроком и отдельными слоями общества, то не так уж и сложно.
Хотя, конечно, да, сложно. Зато сюжет неоднозначный, запутанный. biggrin




Сообщение отредактировал TimKruz - Вторник, 13 Марта 2012, 18:37
ЯкудзаДата: Вторник, 13 Марта 2012, 19:04 | Сообщение # 12
старожил
Сейчас нет на сайте
Quote (TimKruz)
По-моему, если всё завязано лишь на отношениях между игроком и отдельными слоями общества, то не так уж и сложно.

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

Вообще, концовок пока три, две зависят от веток поведения и ещё одна от финального выбора:

Вот такая у меня нелинейность.
nonameДата: Среда, 14 Марта 2012, 20:34 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
однако, вопрос не праздный. суть, как я понимаю, в том, чтобы самому не запутаться во всех ветках.

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

а сам сюжет пишем в ворде. краткость- сестра таланта. пишем минимум текста, описывающего ситуацию выбора и список выборов:
- убить Билла(стр 13)
- накормить Билла плюшками(стр 16)
в скобках- страница, на которой описано, что произойдёт в этом случае.
*- да, номера страниц(+ пару слов пояснения) можно и нужно использовать в схеме, чтобы не вставлять туда всё описание.

далее- переходим к странице 16, где написано, что произойдёт в случае, если мы накормим Билла плюшками. там опять может быть выбор:
- попрощаться с Биллом(стр 17)
- забить Билла вантузом(стр 18)

как-то так.

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

Добавлено (14.03.2012, 20:34)
---------------------------------------------

Quote (noname)
можно попробовать обойтись и без схемы.

но со схемой всё-таки нагляднее и проще отследить последствия выборов.

на странице- в начале, перед описанием, можно сделать пояснения, типа:
"Марта точно жива
Виктор может быть жив, а может и нет"
- это если на эту страницу можно попасть различными путями- т е если, для краткости, слили две ветки в одну, но некоторые отличия(выживание Виктора) нужно учесть.

и возможность выбора в конце может быть с условием:
"если Виктор жив, то выбор: попросить Виктора убить билла(стр 19)"
- т е если он жив, то просто добавляется ещё один вариант выбора

а может быть так, что само существование Виктора автоматически влияет на последствия:
"если Виктор жив, то перейди стр(19)"


все правила форумной игры Дуэль Программистов
ЯкудзаДата: Среда, 14 Марта 2012, 20:39 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (noname)
смотря какая нелинейность.

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


Сообщение отредактировал Якудза - Среда, 14 Марта 2012, 20:41
nonameДата: Среда, 14 Марта 2012, 20:57 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Quote (Якудза)
Ну вот, например, сложная ли нелинейность в моем спойлере

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

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

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

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

Добавлено (14.03.2012, 20:57)
---------------------------------------------
--------------

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


все правила форумной игры Дуэль Программистов

Сообщение отредактировал noname - Среда, 14 Марта 2012, 20:57
ЯкудзаДата: Среда, 14 Марта 2012, 21:16 | Сообщение # 16
старожил
Сейчас нет на сайте
Quote (noname)
включая некоторые мелкие( если такой-то фермер был убит в первой части, то во второй части можно поговорить об этом с его вдовой; если выжил- можно получить у него какое-то задание). такие мелочи могут быть приятны игрокам.

Мелочи как раз-таки не будут зависеть от статуса персонажа.
Quote (noname)
и я бы предложил ориентироваться не на концовки, а на выборы по ходу игры.

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

То, что я перечислил в предыдущем спойлере - это важные решения, но я промолчал про другие, менее значимые. Например, я не сказал о том, что по сюжету клан, в котором состоял протагонист замешены в заговоре и убийстве его любимой девушки, поэтому он восстает против своих собратьев. Дальше дают выбор: уничтожить клан, либо спасти его от бывших соучастников; а также убить лидера клана, который спас героя ещё в детстве и всю жизнь наставлял его, или оставить в живых; отношения с душой дракона; роман с двумя персонажами; отношение с крестьянами, лордами, аристократией; смог ли герой доказать свою невиновность; спас ли он наследника или нет; наказал ли виновников или нет, и т.д. - все это аукнится в продолжении. Но я всё-таки сделаю несколько важных выборов независимыми от натуры персонажа.
И ещё да, я решил добавить немного оригинальности в повествование второй части: главный герой заражается чумой, несмотря на то, что душа дракона внутри него значительно увеличила время его жизни, его состояние будет постепенно ухудшаться, а внешний вид, приобретать ужасающие последствия - кожа станет разрушаться, а из-за связи с драконом глаза постепенно приобретать красный оттенок (не подумайте, что это калька с ME2, на самом деле отличия будут большими).

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


Сообщение отредактировал Якудза - Среда, 14 Марта 2012, 21:24
nonameДата: Среда, 14 Марта 2012, 22:10 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
Якудза, тогда надо детально продумать, при каких характеристиках ситуации герой будет считаться хорошим, а при каких- отступником. так, например, на данный момент не ясно, кем он будет, если заговор раскрыть удастся, но его имя будет опорочено. или- наоборот. если у тебя там только один выбор с тремя различными последствиями- это одно; а если характер героя складывается из его поступков по ходу игры- это другое, и тогда нужно прописать такие условия, чтобы ничего не упустить и чтобы фактическое поведение игры не допускало заметных отличий от задумки.

все правила форумной игры Дуэль Программистов
ЯкудзаДата: Среда, 14 Марта 2012, 22:20 | Сообщение # 18
старожил
Сейчас нет на сайте
noname, в общем, разберусь. Идея только недавно в башке появилась, поэтому есть не состыковки, позже более трезво посмотрю на сценарий и разберусь.
nonameДата: Среда, 14 Марта 2012, 22:33 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
Якудза, дай ссылки на игрушки, которые ты сделал, если такие есть.

ну, или ссылку на демку какую-нить- интересно посмотреть.

на картинке в твоей подписи щёлкал- "страница не найдена".


все правила форумной игры Дуэль Программистов
ЯкудзаДата: Суббота, 28 Апреля 2012, 18:30 | Сообщение # 20
старожил
Сейчас нет на сайте
noname, Нет у меня никаких игрушек, я просто сценарист-любитель. (:

А картинка в моей подписи - это вообще трофеи на консоли.

Добавлено (28.04.2012, 18:30)
---------------------------------------------
Эм, значит, вопрос по-поводу созданной вселенной: как датируют события в фэнтези? Я хочу отойти от обычных цифр и использовать что-нибудь другое.


Сообщение отредактировал Якудза - Суббота, 28 Апреля 2012, 18:37
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг