Каков наилучший подход для создания 2D персонажа, чтобы иметь возможность использовать тонны различного оборудования в бою?


14

Я хочу создать 2D-игру, но мне бы хотелось, чтобы персонаж носил тонны разного оборудования в разных комбинациях, например, RPG или что-то в этом роде.

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

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

1 - спрайты или анимация

Должен ли я создавать разные спрайты для каждого оборудования в каждой анимации действия?

Что лучше: просто спрайтовать оборудование и анимировать его непосредственно в коде, например, вращать и переводить (используя что-то вроде tween на Flash)?

Есть ли другой лучший вариант? (Мне действительно не нравятся идеи выше)

2 - Позиции

Допустим, во время одного из движений персонажа он начинает смотреть прямо перед игроком, но заканчивает свое движение, показывая его правую сторону игроку (например, если он размахивает мечом от одной стороны к другой).

Если мы рассмотрим одну часть пользователя, например его голову, она начинается спереди, а затем поворачивает налево.

Это означает как минимум 3 разных положения для каждого головного снаряжения (шлем, кепка, что угодно).

Это, безусловно, влияет на ответ на вопрос № 1. Как лучше всего добиться этого?

3 - Слои

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

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

Есть ли хороший способ сделать это?

Я знаю, что вопрос довольно длинный и трудный для понимания. Дайте мне знать, если вы считаете, что лучше иметь несколько рисунков, чтобы попытаться объяснить, какой из них, и я постараюсь это сделать.


На каком уровне вы собираетесь заниматься своим искусством? Как ретро пиксель арт? Или те HD-спрайты, если у вас есть какое-либо существующее искусство, которое действительно помогло бы мне адаптировать мой ответ.
Джесси Дорси

Привет Ноктрин. На самом деле я рассматриваю это как «независимый от искусства» вопрос. Позже на этих выходных я постараюсь нарисовать некоторые объяснения, чтобы было легче понять. Спасибо
homemdelata

Ответы:


8

Я думаю, это звучит так, будто вы ищете систему скелетной анимации 2D? К сожалению, я не знаю ни одной готовой системы для этого, так как она была в основном вытеснена тенденцией 3D-gfx-but-2D-игры.


+1 Гораздо проще сделать это, если просто сделать персонажа 3D.
knight666

но для "3D-gfx-but-2D-игры" мне нужно было бы рассмотреть одно из упомянутых мной решений, в противном случае мне понадобится спрайт для любых комбинаций предметов, например, один и тот же сундук с 10 различными скобками штук сгенерирует 10 анимаций :(
homemdelata

Не совсем, у вас просто есть точки крепления на скелете, и вы можете вставить все, что вам нужно.
Coderanger

2
Я сделал (с открытым исходным кодом) простую библиотеку 2d скелетной анимации для XNA, включая приличный редактор. Посетите youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 и youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Срекел

Это почти правильный ответ. На самом деле вы заставили меня понять, что я ищу 3D скелетную систему для 2D анимации. Мне нужно найти алгоритмы для этого (если таковые существуют)
homemdelata

8

Как говорит Зорба, большинство ретро-игр не делают этого специально, потому что вам нужно (со спрайтами) иметь многокадровые анимации для каждого отдельного предмета.

Некоторые "ленивые" альтернативы:

  • Палитра - меняйте механизм вместо создания совершенно разных спрайтов.
  • Нарисуйте персонажа таким образом, что единственные части его тела, которые оживляют, это части, которые не прикреплены к снаряжению. Например, если персонаж в любом случае может носить только один доспех, сделайте его Шлемом, и тогда вы сможете анимировать все тело, сохраняя голову неподвижной.
  • Используйте один спрайт для персонажа на главном экране игры, но покажите оборудование на подэкране со статичным портретом. Тогда вам не нужно беспокоиться об анимации.

2

В старых играх, таких как серия Ultima, они действительно рисовали один предмет в каждой возможной позе персонажа. С окклюзией можно бороться либо не вытягивая механизм (если левая перчатка находится позади спрайта игрока, вам не нужно об этом беспокоиться), либо просто вытягивая механизм в обратном порядке.

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

В современной игре я настоятельно рекомендую создавать 3d персонажей. Если вы хотите рисовать 2D-изображения или ваша платформа не имеет мощности для реального 3D-изображения, вам все равно лучше будет моделировать все в 3D-режиме, рендеринг, а затем настраивать конечный результат вручную.

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


То же самое, о чем я упоминаю в другом ответе, здесь очень важно: мне нужно было бы рассмотреть одно из упомянутых мной решений, иначе мне понадобится спрайт для любых комбинаций предметов, например, один и тот же сундук с 10 разными фигурными скобками сгенерирует 10 анимаций :(
homemdelata

2
Вы бы скомпоновали «конечный спрайт» во время выполнения. У вас нет спрайта для «игрока», у вас будет список спрайтов, отображаемых для каждого кадра анимации. Поэтому, если игрок направлен вправо, вы должны отобразить «левая перчатка», «левый наручник», «персонаж игрока», «сапоги», «штаны», «бронежилет», «шлем», «правый наручник» «Правая перчатка» в порядке. Затем вы самостоятельно анимируете каждый элемент снаряжения, плавая в воздухе.
ZorbaTHut

1

Посмотрите книгу Джеймса Да Силвы, где он объясняет, как он сделал «Посудомоечную машину: мертвый самурай». Он покажет вам, как KISS может решить эту проблему. Предложение использовать 3d или 2d скелетную анимацию допустимо и в некотором роде.


Вы можете добавить ссылку?
homemdelata

Ах, это Джеймс Сильва. Упс! amazon.com/Building-XNA-2-0-Games-Professionals/dp/1430209798/…
Кай

0

Это отличный вопрос, но я думаю, что вы ответили на него сами - вам нужна 2D-система костей, которая поддерживает смену слоев костей, чтобы разные конечности могли двигаться позади и впереди друг друга при вращении персонажа. Вам также нужно будет рисовать свои спрайты с 4 или 8 углов (или сколько вам нужно). В зависимости от того, какие навыки есть в вашей команде, может быть проще создать эти активы в 3D и визуализировать их с нужных вам углов.

Использование 3D-движка также является хорошим решением, хотя это принесет свои проблемы.


Да, это почти что Просто получил другой ответ как правильный, но этот тоже действителен. Как я уже прокомментировал, мне нужна 3D скелетная система для 2D анимации :)
homemdelata
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.