... и многое другое.)
Данный пост навеян техническими вопросами о реализации монстров и локаций - как таковых и их рандомизации\генерации на Квестере в часности. Все ниже изложенноебыло мной опробованно и успешно применено для создания РПГ бродилки
С появлением возможности присвоения условий в квестах, оптимальный путь создания бестиария и реализации боевки оного стал следующим:
- создаем точку входа в бой - перед нами монстр!
- создаем цикл точек перехода по типу: стоим перед монстром\бьем по монстру\отходим-получаем удар.
- создаем точку выхода - победа над монстром.
(просчитывание и наладку счетчиков урона и жизней, своей и монстра - здесь опускаю т.к. все интуитивно понятно)
При этом:
Функционал точки стоим перед монстром нужен для - попытки сбежать\применить эликсир жизни\свиток портала\заклинание и т.д. и т.п.
Функционал точки бьем по монстру нужен непосредственно для обработки урона\крита\промаха с помощью функции Случайно.
Функционал точки отходим-получаем удар нужен для обработки попадания\промаха монстра по игроку, и выхода из боя в случае победы.
теперь монстры - создать можно ЛЮБОЕ количество монстров и их наименований. Их не нужно создавать индивидуально. Единственный ньюанс - помимо картинки, имени, хп, и возможного лута - ничего задать не удасться. В часности речь о резистах и т.п.
Инструментарий квестера позволяет присвоить переменную - условно скелет\зомби\гоблин и т.д. и т.п. и с учетом этой переменной входить в точки боя и выходить из них.
Тоесть, созданная нами схема боя используется для всех возможных монстров, переменная описания монстра задает его имя, хп при входе в бой и она же служит выходной точкой, регламентирующей как лут с монстра, так и возврат игрока в пещеру\лабиринт\кладбище или любую другую локацию после победы над ным.
Что позволяет в принципе не заморачиваться с описанием каждого конкретного моба в любой точке любой локации.
Реализация оружия в квестах на данный момент возможна только в сторону его условной замены одного на другое.
Однако есть возможность создания эффекта псевдо усиления каждого конкретного оружия. По мимо урона напрямую задаваемого каждому конкретному образцу оружия, можно поступить следующим образом:
В точке - бьем по монстру видимость ссылок перехода дальше привязываем к тому или иному оружию (фактически к условию) если у персонажа в руках обычный меч ( присвоено условие - меч) создается одна графа функции - Случайно и переход, например:
- вероятность удара 40%
- вероятность промаха 40%
- вероятность крита 20%
Если у персонажа в руках двуручный меч ( присвоено условие - двуручный меч) создается другая графа функции - Случайно и переход, например:
- вероятность удара 50%
- вероятность промаха 20%
- вероятность крита 30%
сами переходы должны быть завязанны на условия оружия, т.е. каждое оружие имееет свой переход в точке бьем по монстру и все они в итоге дают доступ в точку отходим-получаем удар
Количество и эффект оружия заданного таким образом ограничивается только фантазией и терпением автора.
По мимо самих вероятностей попадания\промаха, урон для функции - Случайно может быть и должен быть задан отдельно каждому оружию.
Неплохим разнообразием в бою может быть функция адреналина или ярости.
Скажем каждый нанесенный удар прибавляет 5 ярости, а полученный урон, ну пусть 10 ярости. При достижении определенного порогового значения присваиваем условие - Вы в ярости которое открывает в точке бьем по монстру по мимо обычного удара оружием еще один вариант удара (в моем случае это был яростный удар - наносящий удвоенный урон.)
В принципе аналогичным образом может быть построен любой параметр персонажа, начиная от удачи варьирующей кол-во лута и собранных реагентов и заканчивая регенерацией или наоборот кровотечением.
С текущим инструментарием квестера не возможно создать реально работающие типы брони в числовом их эквиваленте, входящие и влияющие на формулы расчета урона, так и возможность резиста получаемого урона. Я использую различную броню как дополнительные условия прохода в какую либо локацию. Например пройти в штольни можно только в кожанном доспехе, а в пещеры понадобится что то по серьезней.
Подобные присваеваемые условия (читай предметы) могут служить дополнительными факторами как прохода (в эльфийский лес можно войти только приналичии эльфийского плаща), так и для доп функций (у меня наличие эльфийского плаща удваивало сбор трав и давало +1 хп за действие, но не более регламентированного максимума хп.)
Реализуется элементарно.
На локациях с некоторой вероятностью делаем с помощью уже извесной функции Случайно травы, которые можно собрать и запасти в инвентарь, а в монстрах соответственно нахождение реагентов.
Сложнее с рецептурой зельеварения. Мало того что нужно задавать условия в рецептах для каждого реагента (есть\нет), но нужно будет задать и вероятность удачного \неудачного опыта зельеварения.
И если за каждую удачную попытку добавлять опыт (делаем счетчик опыта для зельеварения) то при достижении определенных показателей можно не только присваивать условия - читай юный алхимик, опытный алхимик и т.д. с любым количеством рангов, но и открывать более мощные варианты зелий при получении определенной ступени.
При создании и использовании эликсиров следует учитывать что не всегда правильно просто плюсовать эффект т.е. жизнь+элик, дабы не выходить за рамки максимума заданного хп или манны нужно присваивать определенное количество жизни или энергии при выпивании эликсира.
Аналогичным способом реализуется добыча руды,дерева и крафтинга изделий.)
Если с городом\лавками все более или менее понятно, то подземелья\лес\кладбища и т.д. ставят интересный вопрос.
Либо жестко фиксированная карта с многокилометровыми цепочками точек описания, на которой можно вернуться назад\пройти вперед и фиксированной картой и обьектами на ней. Либо подход позволяющий упростить все до минимума (любое подземелье, любого размера создается в 4 точки, 2 из которых - вход и выход), но исключающий жесткую карту местности и возможность легкого возвращения назад по своим следам.
Я шла вторым путем с малой долей первого. Приведу пример кладбища из своего квеста:
- точка входа (Старые ворота)
- точка движения (шаг вперед и накатывающийся туман закрывает нас с головой)
- узловая точка - функция Случайно генерирует несколько вариантов перехода - шагнув вперед, вы видите перед собой:
старое надгробите\раскопанную могилу\маленький склеп\мертвое дерево\разрушенную статую\зомби\скелета\ круг портала и т.д. и т.п.
Соответственно зомби и скелет запускают цикл боевки, склеп ведет в фиксированную, отдельную локацию, круг портала возвращает в город (мой вариант выхода из локи.), ну и остальное возвращает нас в точку движения.
Еще одним простым выходом с локации лабиринта является свиток\амулет и пр. городского портала. который можно использовать в любой точке не городской локации.
Что снимает вопрос по возврату в город и замкнутости локаций типа лес\пещера\кладбище.
Увы, ни силу, ни ловкость как числовые параметры ввести в боевую систему просчета урона при текущем инструментарии Квестера не получится. Мне по крайней мере не удалось. Однако, Если взять счетчик опыта за монстров и привязать к условиям, то можно создать не только таблицу левелов (1 опыта - условие - первый левел, 100 опыта - условие - второй левел\заменяющее предыдущее условие и т.д. и т.п.), но и задать влияние на максимальные хп персонажа в зависимости от левела.
з.ы. именно так я использовала инструментарий Квестера для создания своей бродилки.)