2013-10-28 2 views
1

Я немного размышлял о способностях ... как в DOTA, LoL и других играх MOBA/MMORPG. Если бы я сделал игру с выбором персонажа в начале и в игре, у нее были бы заклинания/способности и т. Д.C# XNA - Способности/Заклинания

Каков был бы правильный способ сделать это? Должен ли я сделать один класс Champion со всеми значениями и текстурами или инициализировать его в Game1.cs, например, Champion champ = new Champion(texture, name, Q-ability name, Q-cooldown, Q-damage, Q-manacost) - но это займет ТОНН различных деклараций ...

Должен ли я сделать папку Champion и сделать отдельный класс торговый центр? А также способности - я думаю о том, чтобы скомпоновать enum, чтобы сохранить их, или будет ли List или другая переменная работать лучше? Благодаря!

+0

Посмотрите на них: http://sourcemaking.com/design_patterns –

+0

Составной шаблон стратегии будет соответствовать этой проблеме довольно хорошо http://www.codeproject.com/Articles/119877/Patterns-In-Practice-Strategy -and-Composite –

ответ

3

Для такой игры я бы рекомендовал использовать систему сущностей (http://entity-systems.wikidot.com/). Они позволяют создавать отдельные классы заклинаний, способностей, игроков, символов и компилировать их в настраиваемые объекты. Я портировал популярную структуру сущности Ash на C#, которая доступна по адресу https://github.com/DavidArno/Ash.NET, что может пригодиться вам.

0

Помимо системы сущностей, предложенной Дэвидом Арно, если бы я хотел это сделать, я бы пошел с одним классом Hero, а затем со списком способностей внутри него. Способности все те же, разные вещи - их факторы. Например, сколько урона может дать способность и т. Д. Таким образом, вы должны создать все ваши чемпионы и свои способности.

+0

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

+0

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