
Я уже упоминал об этом пару раз, но вот еще раз: я начал создавать игры в 2007 году. Тогда было действительно, очень сложно получить доступ к игровому движку для создания контента. Unity нигде не было видно, расходы на лицензирование Unreal были мне недоступны, и единственными инструментами, которые мне оставалось использовать, были фреймворки или API рендеринга (кто-нибудь помнит OGRE? Irrlicht?). Редакторы уровней не были обычным явлением, а документация по игровой системе была скудной, поэтому мне пришлось научиться управлять всем и разрабатывать все самостоятельно.
Для Эбонитового шпиля: Ересь я хотел, чтобы предметы играли центральную роль в игре. Я хотел, чтобы они были больше, чем просто усилители характеристик, и вели себя как настоящие объекты, с которыми вы можете взаимодействовать. Их можно поднять, надеть, бросить, кастовать и использовать как игрок, так и вражеские сущности / существа, существующие в игре. Я также хотел иметь возможность добавлять новые элементы в игру на лету, без необходимости каждый раз компилировать игру. Итак, как мне обращаться с предметами в моей игре?

CSV-файлы. Простые текстовые, читаемые и легко анализируемые файлы, которые действуют как таблица, в которую я могу добавлять записи. Он действует как база данных, содержащая список элементов, регулируемых следующими свойствами:
Имя | Тип | Актив | Цвет | Эффект | В описании игры | Вес | Ущерб | Множитель | Урон от заклинаний | Оборона | Магическая защита | Значение | Тип модификатора | Модификатор | Может появиться | Шанс появления | Список уровней |
Кажется, это длинный список того, что нужно добавить, но большинство записей - это просто вкус. По-настоящему интересные моменты происходят с категориями Тип - Эффект - Модификатор.
Тип - это именно то, что вам нужно. Он говорит нам, что это за предмет. Это доспех, который можно носить? Это оружие? Зелье? Брелок, может быть, кольцо? Это артефакт, свиток, книга или заклинание? Тип определяет поведение предмета при его использовании. Возьмем, к примеру, тип оружия: он увеличивает урон игрока, когда он сражается с врагами в ближнем бою. Однако само оружие может иметь очень низкий урон в ближнем бою, но высокий множитель урона, который увеличивает урон, наносимый другим экипированным оружием. Однако свиток нельзя использовать в бою для нанесения урона в ближнем бою, но его можно использовать, выбрав его в инвентаре и нажав ‹Клавишу использования›. Или брошен во врага, почти не нанося урона.
Эффект сообщает нам, какой… ну - эффект - предмет имеет при использовании. Кинжал с лечебным эффектом может лечить игрока, когда ‹Used› из инвентаря, но также и врагов, когда он атакует. Если вражеское существо использует кинжал по игроку, скорее всего, это только поможет ему. Эффект срабатывает каждый раз, когда объект, к которому он применяется, ‹активирован›. Это включает самоактивацию при атаке им в рукопашной или при броске. Диапазон внутриигровых эффектов: Телепортация, Исцеление, Призыв, Ослепление, Damaging, AoE Damage, AoE Healing и Открытие карты и это лишь некоторые из них.
Поле Тип модификатора может покрывать определенные потребности, например затрагивать только брошенные элементы. Или выполняет примененный эффект только к существам / игроку с примененным к ним эффектом hp_regen.

Объединив эти три категории, мы можем создать огромное количество комбинаций предметов, таких как Кинжал, который телепортирует врага в случайное место с каждым ударом. Или монета, которая ослепляет цель при броске. Применение эффекта Magic Missile к части брони эффективно заставляет чародейские стрелы лететь в том направлении, куда смотрит игрок, каждый раз, когда существо атакует игрока. Интересный факт: все заклинания в игре являются предметами. Даже один болт Magic Missigle - это предмет, к которому может быть применен другой эффект. Это позволяет создать монстра, который имеет 10% шанс поймать магический разряд, если тот поразит его. И как таковой может в свою очередь бросить это вам прямо в лицо. Типа аккуратный, ха?
Пойдя еще дальше, мы можем поиграть с параметром веса, чтобы сделать объекты внутри игры (например, бочки и стулья) доступными для любого. Их вес не позволил бы игроку (или любой другой сущности) хранить 20 бочек в карманах, но увеличенный вес объекта наносит ему значительный урон, когда он соприкасается с лицом своей цели. Особенно, если добавить эффект взрыва (привет современные FPS). Так что если бросить свиток весом всего 0,01 кг, то это бесполезно, кроме сундука? Стоит носить!
Таким образом, мы можем сделать очень тяжелую серьгу, которая замедлит вас до ползания, но может уничтожить конечного босса, если тот ударит его. А примененный эффект, срабатывающий при ударе, вызовет еще трех боссов :)
Звучит просто, и, честно говоря, это так. И с помощью этого метода легко создать как можно больше элементов с вариациями. И заклинания. А тот факт, что все предметы могут быть использованы вражескими существами, дает огромные шансы на то, что произойдут странные, забавные и интересные вещи. Особенно, когда вмешивается Полиморф.
Если вы хотите узнать обо мне больше, загляните в мой средний профиль. Вы можете приобрести находящуюся в разработке копию Ebony Spire: Heresy на моей странице itch.io всего за 2,99 $. Посмотрите мой предыдущий пост о том, почему я увольняюсь с работы, чтобы сосредоточиться только на создании игр, и если вы хотите помочь мне держать свет включенным, нажмите здесь. Как всегда, хлопайте один раз, если вам понравилась моя статья, два раза, если вы сочли ее полезной, и 20 раз, если вы считаете, что моя борода потрясающая. Зацените меня в твиттере.