Я тут придумал вселенную для RPG, но ни разу не работал по ним. Тут же возник вопрос: как построен сценарий, в котором разные последствия диалогов и вариации? Как их написать? По какой схеме работать? Приведите, пожалуйста, примеры.
Сообщение отредактировал Якудза - Вторник, 13 Марта 2012, 17:30
Вот тут можно писать нелинейные сценарии: клик Регистрируешься и пишешь! Из-за преступной халатности работников Эрмитажа картина Казимира Малевича "Черный квадрат" два месяца провисела вверх ногами.
Насколько я понел все сценарии к компьютерным играм пишуться одинаково, просто при написание разветвленного сюжета учитываються эти ветви и их воздействие на весь последуйший сценарий, геймплей. Из-за этого сценарий получаеться огромный (некоторые по году их пишут и это современные комерчески успешные команды, но там геймплей около 60 часов) и часто возникают логические ляпы, пробелы.
I create and play a good game.
Сообщение отредактировал zahalone - Вторник, 13 Марта 2012, 17:50
Якудза, тут может быть несколько вариантов, от совсем простых до очень сложных.
Quote (reyzor)
Внимание !! ПСЕВДОКОД !!!
Ну это не совсем псевдокод, это скорее смесь чего-то Си-подобного с кириллицей. Вот так, думаю, понятнее:
Code
Если [встретил бабульку у дороги] тогда Перебор вариантов [действие игрока] из: [Перевёл через дорогу]: деньги +20р; [Не перевёл бабульку через дорогу]: репутация -20; [Пнул бабульку] деньги -2000р и репутация -100; Конец перебора;
Общая схема приведённого выше: если игрок столкнулся с квестовым объектом (NPC, записка на холодильнике и т.п.) игроку предоставляется возможность совершить одно из действий, при чем каждое из них повлечёт за собой определённые последствия, как положительные, так и отрицательные. Но в данном случае схема проста до безобразия, и игре фактически по фиг, как игрок будет проходить эти задания. Для усложнения, можно, например, использовать параметр "репутации" (или чего-то в этом роде) и с его помощью влиять на предоставляемые игроку задания и их результаты. Т.е., например, игрок с отрицательной репутацией не сможет получить задание, например, передать деньги от персонажа А персонажу Б, потому что, скорей всего, он присвоит их себе. Можно сделать несколько отличных параметров, например, "доброта", "отзывчивость", "бескорыстность" и прочее. Естественно, ни один из подобных параметров не выводится на экран. Другой вариант менее универсален. Можно составить дерево сюжета, по которому игрок может двигаться в нескольких направлениях, переходя к следующим квестам в зависимости от того, какое решение принял в предыдущих. Можно подробно рассчитать это дерево, и в файле сохранения текущей игры записывать лишь узел, на котором находится игрок. После принятия решения в новом задании игрок передвигается на следующий узел, в зависимости от его решения. Простой пример:
Code
[Квест 1] //Первый узел <+> <-> //Первое решение [Квест 2] [Квест 3] //Два узла второго уровня <+> <-> <+> <-> //Решения второго уровня [Квест 4] [Квест 5] [Квест 6] [Смерть игрока] ... ... ...
Можно сделать иначе: в файле сохранения хранится информация обо всех решениях, принятых игроком во время игры, которые могут в дальнейшем повлиять на другие задания или самого игрока. Т.е. в массиве в каждой ячейке хранится номер варианта решения, принятого игроком; в какой-то момент эти числа извлекаются и проверяются.
Для игры с огромным или непредсказуемым сюжетом (возможно, ММОРПГ с обновляемым количеством задач для игроков) лучше подойдёт вариант с "невидимыми" параметрами игрока; для игры с сюжетом более продуманным (однопользовательская игра с определённым смыслом) или меньшего размера лучше "дерево". Последний вариант довольно сложен и тратит память пропорционально количеству квестов в игре, да и вряд ли часто нужно проверять значения всех квестов... Значение отдельного квеста проще записать отдельно, если очень уж нужно.
Более-менее вроде понял, как их писать. Первый документ - основной квест. Второй документ - сайд-квесты. Третий документ - дерево повествования (перечисление нелинейности).
Но я всё ещё не понял одного. Например: в середине повествования главный герой совершает действие, которое плохо влияет на крестьян, потом проходит ещё очень много времени и персонаж встречает важного NPC из общества, которому он навредил (то есть крестьян). Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?
Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?
Например, если репутация > 20 то ты герой, если < 20 то ты нищеброд. Юзаю Unity3d +C# Мой твиттер Помог - ставь +, Ответил на вопрос - ставь +.
Как мне написать диалоги так, чтобы было понятно, что NPC говорил бы в том (плохие отношения с крестьянами) или ином случае (хорошие отношения с крестьянами). И, наконец, как в документе вообще выстроить вариантности диалогов и ответов, а ещё и мелких деталей, которые появляются из-за действий игрока в прошлом?
Т.е. в дизайн-документе? Как-то так можно:
Quote
Квест №9234 "Встреча с NPC №345" ГГ навредил крестьянам*: "-бла-бла-бла -бла-бла-бла" ГГ помог крестьянам*: "-бла-бла-бла -бла-бла-бла" ГГ отравил семью NPC №345**: "-бла-бла-бла -бла-бла-бла" *См. квест №4312 на стр. 756. **См. квест №2344 на стр. 498.
TimKruz, сложно выглядит. Система репутаций у меня не очень стандартная. Для начала у главного героя есть две ветки поведения: Герой и Злодей. Дальше уже интереснее: действия и реплики персонажа влияют на то, как к нему будут относиться те или иные группы общества - крестьяне, аристократия, лорды. Также будет шкала отношений с тем или иным городом. Все эти вещи влияют на окончание, а благодаря диалогам игрок смог бы сам настроить для героя те или иные взгляды, кругозор и т.д.
TimKruz, в сценарий.
Не думал, что так сложно получится.
Сообщение отредактировал Якудза - Вторник, 13 Марта 2012, 18:23
Ну например, грубо, присваиваем каждому из возможных действий игрока переменную (х - если игрок помог крестьянам, у - если навредил, z - если проигнорировал). Далее ветка диалога так и прописывается: если результат квеста "крестьяне" = х то диалог: если результат квеста "крестьяне" = у то диалог: если результат квеста "крестьяне" = z то диалог: Мрачное чудовище.
как к нему будут относиться те или иные группы общества - крестьяне, аристократия, лорды. Также будет шкала отношений с тем или иным городом.
Прямо как в GTA 1/2, кажется. Там выполнение заданий на банду и убийство членов банды повышало/понижало уважение банд к игроку, и у банды, чьё уважение к игроку меньше 0, нельзя взять задание (вообще убить пытаются). Ну тогда можно так:
Quote
Квест №9234 "Встреча с NPC №345" Отношение крестьян <0: "-бла-бла-бла -бла-бла-бла" Переход на квест №9235 или 9236 //Совсем забыл эту строчку добавить Отношение крестьян >0: "-бла-бла-бла -бла-бла-бла" Переход на квест №9236 или 9237 Дополнительный пункт: ГГ отравил жену NPC №345*, но отношение крестьян >0: "-бла-бла-бла -бла-бла-бла" Переход на квест №9238 или 9239 *См. квест №2344 на стр. 498.
Quote (Якудза)
Не думал, что так сложно получится.
Если у игрока только два варианта для выбора ("герой" и "злодей"), то не так уж и сложно. В конце концов, не стоит давать выбор прямо на каждом задании; в принципе, можно сделать пересечение веток сюжета. По-моему, если всё завязано лишь на отношениях между игроком и отдельными слоями общества, то не так уж и сложно. Хотя, конечно, да, сложно. Зато сюжет неоднозначный, запутанный.
Сообщение отредактировал TimKruz - Вторник, 13 Марта 2012, 18:37
По-моему, если всё завязано лишь на отношениях между игроком и отдельными слоями общества, то не так уж и сложно.
Там не только отношения между слоями общества будут зависеть, но и принципы, взгляды на свою задачу, отношения к некоторым персонажам.
Вообще, концовок пока три, две зависят от веток поведения и ещё одна от финального выбора:
Герой: персонаж разоблачает заговор, спасает следующего наследника трона от убийц, восстанавливает своё имя, становится влиятельным человеком в замке и приближенным к королевской семье, а также побеждает душу дракона в себе. Злодей, отступник (называйте, как хотите): персонажу не удается разоблачить заговор и у власти встают злодеи/он их убивает и его объявляют в розыск, он не спасает следующего наследника трона/помогает ему сбежать, не восстанавливает своё имя, до конца своих дней живет с одной семьей в лесах, душа дракона полностью сливается с ним и ему на это всё равно. Третья концовка (не зависит от поведения): он сдается страже в конце (появление стражи зависит от нескольких факторов), персонажу не удается/удается разоблачить заговор, у власти встают злодеи/тот самый наследник трона, его имя и статус осквернено, исполнитель заговора/наследник трона объявляют его виновным в убийстве собственной девушки и приговаривают к казне.
однако, вопрос не праздный. суть, как я понимаю, в том, чтобы самому не запутаться во всех ветках.
выход один: рисовать схемы с кружочками и стрелочками. в кружочке- ситуация выбора*, на стрелке подписан вариант выбора. из прог, которые помогают такое делать, знаю FreeMind.
а сам сюжет пишем в ворде. краткость- сестра таланта. пишем минимум текста, описывающего ситуацию выбора и список выборов: - убить Билла(стр 13) - накормить Билла плюшками(стр 16) в скобках- страница, на которой описано, что произойдёт в этом случае. *- да, номера страниц(+ пару слов пояснения) можно и нужно использовать в схеме, чтобы не вставлять туда всё описание.
далее- переходим к странице 16, где написано, что произойдёт в случае, если мы накормим Билла плюшками. там опять может быть выбор: - попрощаться с Биллом(стр 17) - забить Билла вантузом(стр 18)
как-то так.
можно попробовать обойтись и без схемы. смотря какая нелинейность.
но со схемой всё-таки нагляднее и проще отследить последствия выборов.
на странице- в начале, перед описанием, можно сделать пояснения, типа: "Марта точно жива Виктор может быть жив, а может и нет" - это если на эту страницу можно попасть различными путями- т е если, для краткости, слили две ветки в одну, но некоторые отличия(выживание Виктора) нужно учесть.
и возможность выбора в конце может быть с условием: "если Виктор жив, то выбор: попросить Виктора убить билла(стр 19)" - т е если он жив, то просто добавляется ещё один вариант выбора
Ну вот, например, сложная ли нелинейность в моем спойлере с учетом того, что история главного героя на этом не закончится и будет продолжена в сиквеле, причем к какому бы выбору персонаж не пошел, история стартует, учитывая решения в предыдущих частях? То есть в продолжении будет три отличающихся друг от друга вступления и довольно глобальные отличия друг от друга вплоть до того, по какой причине персонажу приходится снова встать против врага. Не знаю даже, выдержу ли я такой напор, но очень хочется написать придуманную историю.
Сообщение отредактировал Якудза - Среда, 14 Марта 2012, 20:41
Ну вот, например, сложная ли нелинейность в моем спойлере
та вроде по-любому со схемой лучше. мож захочешь чего-нить ещё добавить, а по схеме будет проще ориентироваться.
и я бы предложил ориентироваться не на концовки, а на выборы по ходу игры. и в конце получаем не одну из трёх концовок, а ситуацию с набором характеристик: - заговор разоблачён: да/нет - законный наследник: правит/сбежал/убит - злодеи:.... ...
ну и т п- такая система гибче, т к за счёт небольшого кол-ва характеристик может получиться десятки различных вариантов.
и в следующей игре хорошо бы учитывать не одну из трёх концовок, а каждую характеристику, включая некоторые мелкие( если такой-то фермер был убит в первой части, то во второй части можно поговорить об этом с его вдовой; если выжил- можно получить у него какое-то задание). такие мелочи могут быть приятны игрокам.
и, да- три концовки и при такой системе тоже могут быть как подведение итога: по завершении игры выдаётся описывается краткий итог твоей деятельности, и таких различных продуманных текстов может быть ровно три, раз уж тебе так хочется)) все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Среда, 14 Марта 2012, 20:57
включая некоторые мелкие( если такой-то фермер был убит в первой части, то во второй части можно поговорить об этом с его вдовой; если выжил- можно получить у него какое-то задание). такие мелочи могут быть приятны игрокам.
Мелочи как раз-таки не будут зависеть от статуса персонажа.
Quote (noname)
и я бы предложил ориентироваться не на концовки, а на выборы по ходу игры.
Такая схема важна для самой историй, придуманной мной. Там взгляды у обоих статусов отличаются:
Для примера берем три разных начала второй части: 1) Вступление героя: Пока не придумал, но отличаться будет кардинально; 2) Вступление отступника/злодея: Живет на ферме вместе с семьей, которой помогает в хозяйстве. На ферму нападают неизвестные люди и выпиливают практически всю семью, кроме дочери. Главный герой без лишних разговоров пробуждает темную душу дракона в себе; 3) Типа вступление дополнительной концовки, не влияющей на репутацию персонажа: Главного героя ведут на казнь, привязывают к столбу и начинают поджигать костер. Если протагонист герой, темная душа дракона уговаривает героя дать кратковременный контроль над собой; если протагонист был злодеем, то оба персонажа без лишних разговоров приходят к выводу, что пора сваливать.
То, что я перечислил в предыдущем спойлере - это важные решения, но я промолчал про другие, менее значимые. Например, я не сказал о том, что по сюжету клан, в котором состоял протагонист замешены в заговоре и убийстве его любимой девушки, поэтому он восстает против своих собратьев. Дальше дают выбор: уничтожить клан, либо спасти его от бывших соучастников; а также убить лидера клана, который спас героя ещё в детстве и всю жизнь наставлял его, или оставить в живых; отношения с душой дракона; роман с двумя персонажами; отношение с крестьянами, лордами, аристократией; смог ли герой доказать свою невиновность; спас ли он наследника или нет; наказал ли виновников или нет, и т.д. - все это аукнится в продолжении. Но я всё-таки сделаю несколько важных выборов независимыми от натуры персонажа. И ещё да, я решил добавить немного оригинальности в повествование второй части: главный герой заражается чумой, несмотря на то, что душа дракона внутри него значительно увеличила время его жизни, его состояние будет постепенно ухудшаться, а внешний вид, приобретать ужасающие последствия - кожа станет разрушаться, а из-за связи с драконом глаза постепенно приобретать красный оттенок (не подумайте, что это калька с ME2, на самом деле отличия будут большими).
К сценарию хочу приступить после окончательной переделки над шутером про инопланетян - тогда и посмотрю, выдержу ли я такой масштаб или нет.
Сообщение отредактировал Якудза - Среда, 14 Марта 2012, 21:24
Якудза, тогда надо детально продумать, при каких характеристиках ситуации герой будет считаться хорошим, а при каких- отступником. так, например, на данный момент не ясно, кем он будет, если заговор раскрыть удастся, но его имя будет опорочено. или- наоборот. если у тебя там только один выбор с тремя различными последствиями- это одно; а если характер героя складывается из его поступков по ходу игры- это другое, и тогда нужно прописать такие условия, чтобы ничего не упустить и чтобы фактическое поведение игры не допускало заметных отличий от задумки. все правила форумной игры Дуэль Программистов
noname, Нет у меня никаких игрушек, я просто сценарист-любитель. (:
А картинка в моей подписи - это вообще трофеи на консоли.
Добавлено (28.04.2012, 18:30) --------------------------------------------- Эм, значит, вопрос по-поводу созданной вселенной: как датируют события в фэнтези? Я хочу отойти от обычных цифр и использовать что-нибудь другое.
Сообщение отредактировал Якудза - Суббота, 28 Апреля 2012, 18:37