Bloody

Концепт №2: генерация квестов

Оценить эту запись
Решил поделиться с вами алгоритмом генерации квестов, который использую в своих последних проектах.

  1. Активация квеста (Игрок подошел к NPC в поисках задания)
  2. Проверка уровня персонажа и его умений (нет причин генерировать квест, который не может быть выполнен персонажем)
  3. Случайный выбор типа квеста (диалоги, сопровождение, поиск, убийство и т.д.)
  4. Случайный выбор цели квеста
  5. Случайный выбор места квеста (активация эвентов в определенной локации из списка)
  6. Решение о связи с предыдущими квестами (например, бандит похитивший дочку лесника в этом квесте может быть недобитым бандитом из другого случайного квеста)
  7. (Не)Создание возможной цепи событий в квесте (т.е квест может быть тем, чем казался, а может и развернуться на 180 градусов - на самом деле это горожане плохие, а не дракон, сволочи хотят его золото)
  8. Случайный выбор награды, основанный на предыдущих пунктах


Вопросы? Комментарии?

Отправить "Концепт №2: генерация квестов" в Digg Отправить "Концепт №2: генерация квестов" в del.icio.us Отправить "Концепт №2: генерация квестов" в StumbleUpon Отправить "Концепт №2: генерация квестов" в Google Отправить "Концепт №2: генерация квестов" в VKontakte Отправить "Концепт №2: генерация квестов" в Facebook

Обновлено 12.07.2012 в 02:47 Bloody

Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии

  1. Аватар для Валера
    Я бы добавил:
    Выбор из нескольких квестов одновременно ( чей дом тушить при общем пожаре )
    Квесты, которые будучи не взятыми, со временем исчезают ( коза нашлась, сбежавшего преступника поймал кто-то другой )
    Квесты, которые будучи выполненными, впоследствии активизируют другие, более серьезные и полезные квесты
    Квесты, которые герой дает другим персонажам ( новинка )
    Квесты, которые начинаются как цепочка неявной, случайной информации
    Квесты, имеющие более одного решения
    Квесты, имеющие более одного решения с непредсказуемыми для героя последствиями ( можно и погореть )
    Квесты, за которые не дадут ничего ( работодатель помре )
    Квесты взяв, но не выполнив ( вовремя ) которые, ставишься на счетчик или получаешь киллера
  2. Аватар для Bloody
    Валерыч, я уточню, что у меня это попунктовый список, каждый пункт которого генерится после предыдущего. Там вообще много чего генерится, не только квесты. Если меня задолбает в очередной раз мой недострой, то выложу проект как есть со всей его procedural generation

    У тебя есть пара шикарных вариантов тоже)
  3. Аватар для Валера
    Пасибо. )
    Многие пропускают этот момент, но даже простая генерация ответов непися - клондайк для разжигания интереса у игрока:
    подходишь к мужику, а он ни с того, ни с сего посылает тебя очень далеко... с чего бы это?
    А это: сгенерился ответ - "послать" - потому что "вот такой же вчера увел его любимую лошадь" - о чем можно узнать "у одного из соседей" - после чего в таверне ( появится или уже сидит ) хрен, который "видел вора и куда он повел коня" - догнав вора и вернув лошадь - можно получить предмет, несколько монет, нужную информацию, ненужные ( пока ) слухи, дочку мужика с приданым, еще пару подобных просьб в этой деревне. И т.д.
  4. Аватар для Hosse
    дочку за коня) что-то ты, Валер, перегибаешь)
    никогда не понимал, как делать рандомные события О_о *стыдно*
    с таким генерированием и задолбаться недолго...) надеюсь, этого не произойдёт, и что-то да увидит свет)
    ты как-то страхуешься ведь от того, чтобы квесты не повторялись вот так случайным образом?)
  5. Аватар для Валера
    Не, не за коня - просто мужик увидел подходящую кандидатуру на роль жениха для дочки.
    Рандомные события делаются просто - выпадением случайного числа ( в переменной есть опция ), а вот учесть все последствия в игре - это трудоемко... потому, видимо, мало кто и использует.
    Ну, а чтобы квест не повторился, надо его исключить.
    А вообще... дело в том, как сам автор походит к реалиям игры. Если он старается как-то насытить, разнообразить игру, оживить персонажей... то это можно сделать и не только рандомом.
    Например: тот же мужик, послав вас, потом обнаруживается в трактире, где к нему можно подсесть и угостить выпивкой ( он вас не узнает ), после чего проводить домой, уложить в постелю, пообщаться с его дочкой... Ну, как угодно дальше.
    Рандом - это не панацея от скуки, это структура игры. А вот сценки - это самое то, что заставляет сердце игрока трепетать от радости. В сценках наиболее проявляется ваша индивидуальность автора.
  6. Аватар для Bloody
    Цитата Сообщение от Hosse
    никогда не понимал, как делать рандомные события О_о *стыдно*
    Переменные (variables) юзать. Например, ты хочешь, чтобы произошло одно из пяти событий, назначаешь каждому событию свою переменную и делаешь случайную выборку (в списке эвентов для этой чехарды есть отдельный пункт), а потом прописываешь каждое событие. Вуаля - вот он, пирог.

    Цитата Сообщение от Hosse
    с таким генерированием и задолбаться недолго...) надеюсь, этого не произойдёт, и что-то да увидит свет)
    ты как-то страхуешься ведь от того, чтобы квесты не повторялись вот так случайным образом?)
    Естественно страхуюсь)
    Во-первых, схема сложнее, чем я описал, только что, чуть ранее. Под каждое событие выделена не одна, а несколько переменных. Например,

    X попросил Y Z и обещает в награду A,

    где X это NPC, Y - тип квеста (принести/найти/спороводить/убить), а Z - цель, а A -награда. После выполнения формула квеста заносится в отдельную переменную и при последующей генерации проверяется. Если новосозданный квест копия предыдущего, то он генерится заново.