334

Основная проблема генератора вещей для RPG

Недавно в одном из комментариев я упомянул, что между делом занимаюсь разработкой некоторых РПГ механик, которым в свое время не нашлось места (или времени на проработку) в моем первом проекте Dark Plane.

В частности, это диалоговый модуль, плавно перетекающий в систему квестов. Выглядит он примерно так:

Несмотря на то, что модуль писался "под себя", по итогу он получился максимально юзер-френдли для разработчиков. Если совсем просто, то вызывается один единственный метод, в котором параметрами передается кто и что говорит, и в каких обстоятельствах. Прошлой игре, на мой взгляд, сильно не хватало сюжета. Если вдруг я решусь на продолжение, сюжетный инструмент уже будет под рукой :)

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

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

Префиксы, постфиксы и градации качества. Чувствуете, запахло Дьябло 2? :) Кстати, не обращайте внимание на графику, много где это заглушки.

Так вот. Я держал в голове необходимость именно автоматической генерации дополнительных характеристик, таких как +сила, +интеллект итд. В первую очередь, для этого был создан ряд, назовем их так, "базовых вещей", содержащих тип, иконку и привязку к мешу. Ни основных статов, ни вторичных. Например, Куртка. Или Сапоги.

Основная проблема генератора вещей для RPG Разработка, Unity, Урок, Gamedev, Инди, Видео, Без звука, Длиннопост

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

На бумаге все работает. Да и в билде тоже. Все, кроме одного.

Русских, мать их, названий предметов!

По задумке опять же, я хотел давать префиксы и постфиксы названиям предметов в зависимости от их качества и вторичных характеристик. Таким образом, условная Куртка низкого качества со статами на +сила и +крит превращалась бы в Потрепанную Могучую Куртку Внезапной Смерти (да, я могу в названия >_<). И все бы хорошо, но внезапно выяснилось, что прилагательные в русском языке умеют склоняться! Это я выяснил, запустив билд и увидев предметы типа Могучий Носки или Простой Одеяние.

Основная проблема генератора вещей для RPG Разработка, Unity, Урок, Gamedev, Инди, Видео, Без звука, Длиннопост

Не буду утомлять долгим описанием поиска выхода из ситуации. Скажу лишь, что изначально планировалось в каждую (лол) базовую вещь добавить поля, в которых вручную силами одного ребенка за вкусняшки будут добавляться все словоформы (!) всех прилагательных (!!) в двух формах префикс-постфикс в зависимости от рода и числа основного названия базовой вещи. Говоря проще, для Куртка это были бы Могучая, Новая, Старая, Фамильная итд. Для Штаны это Могучие, Новые, Старые итд. Это охрененная и дурная работа.

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

Основная проблема генератора вещей для RPG Разработка, Unity, Урок, Gamedev, Инди, Видео, Без звука, Длиннопост

На этом пока что все. Если есть вопросы - задавайте :)

Лига Разработчиков Видеоигр

5.4K постов21.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Подробнее