Обработка боевых эффектов в разработке игр - PullRequest
7 голосов
/ 06 мая 2009

Я пытаюсь создать техническую спецификацию высокого уровня для игры, над которой я работаю как личный проект. Это пошаговая приключенческая игра, которая, вероятно, ближе всего к Archon с точки зрения того, что я пытаюсь сделать.

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

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

  • Имею ли я, чтобы актер обрабатывал все эффекты, которые находятся в игре за / против них, если сама игра проверяет каждое оружие, броню, актера и локацию каждый раз, когда она пытается сделать решающий бросок.
  • Эффекты обрабатываются в отдельных объектах или есть объект 'эффекта' или их часть?

Возможно, я не очень хорошо объяснил себя здесь, и я более чем счастлив попытаться расширить вопрос, если моя просьба слишком широка и воздушна. Но мое первоначальное мышление заключается в том, что более умные люди, чем я, потратили время и усилия на то, чтобы придумать подобные вещи, и, честно говоря, я не хочу слишком рано портить разговор тупиком моей собственной глупости.

Речь идет о javascript, хотя на данный момент я не думаю, что это имеет большое значение.

Ответы [ 3 ]

7 голосов
/ 11 мая 2009

То, что вы называете «спецэффектами», раньше называли «модификаторами», но в наши дни термин, популярный в ММО, называют «положительными эффектами». Работать с ними так же легко или сложно, как вы этого хотите, учитывая, что вы можете выбирать, сколько разносторонности вы хотите иметь на каждой стадии.

По сути, каждый аспект системы обычно хранит список модификаторов, которые применяются к нему, и вы можете запрашивать их по требованию. Обычно есть только несколько модификаторов, которые применимы к любому игроку в любой момент времени, так что это не проблема - возьмите статистику игрока и любые модификаторы, наложенные умениями / заклинаниями / чем угодно, добавьте любые модификаторы, наложенные изношенным оборудованием, затем добавьте все, что сообщается с этим оружием. Если у вас есть стандартный интерфейс (например, sumModifiersTo (attributeID)), который используется актерами, предметами, местоположениями и т. Д., То реализация этого может быть быстрой и простой.

Как правило, объекты «эффекта» будут содержаться внутри сущности, к которой они относятся: у актеров есть список эффектов, а у предметов, которые они носят или используют, есть свой собственный список эффектов. Там, где эффекты явно активированы и / или ограничены по времени, вы сами должны их хранить, например. если у вас есть магические зелья или другие расходные материалы, их эффекты необходимо будет добавить к актеру, а не к (предположительно уничтоженному) предмету.

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

2 голосов
/ 06 мая 2009

Взгляните на книгу Head First Design Patterns , написанную Элизабет Фриман. В частности, ознакомьтесь с шаблонами Decorator и Factory, а также с методами программирования интерфейсов, а не реализаций. Я обнаружил, что эта книга чрезвычайно эффективна для иллюстрации некоторых сложных концепций, которые могут помочь вам в этом.

Надеюсь, это поможет вам в правильном направлении.

0 голосов
/ 08 мая 2009

На первый взгляд, я бы сказал, что отдельные бойцы (игрок и NPC) играют определенную роль в определении их боевых характеристик (т. Е. Значения брони, количества попаданий, диапазона урона и т. Д.) С учетом всех применяемых модификаторов. к этому комбатанту. Таким образом, боевая система не пытается выяснить, дает ли класс персонажа бонус к доспехам, влияет ли магическое оружие на удар и т. Д.

Но я бы ожидал, что сама боевая система будет находиться за пределами отдельных бойцов. Чтобы получить информацию о злоумышленнике и желаемом типе атаки, а также о цели или наборе целей и решить эту проблему.

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

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