Який найкращий підхід, щоб зробити двовимірний персонаж, щоб можна було використовувати тонни різного обладнання, коли в дії?


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

Насправді, у вас просто є точки кріплення на скелеті і ви можете запустити все, що вам потрібно.
кодерангер

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

Це майже правильна відповідь. Насправді ви змусили мене зрозуміти, що я шукаю - 3D скелетна система для двовимірної анімації. Мені потрібно знайти алгоритми для цього (якщо такі є)
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

Це велике запитання, але я думаю, що ви самі відповіли на це - вам потрібна система 2-кісткової кістки, яка підтримує шари, що змінюються кістками, тож різні кінцівки можуть ходити позаду та перед собою, коли персонаж обертається. Також вам потрібно буде намалювати свої спрайти з 4 або 8 кутів (або скільки б вам не потрібно). Залежно від того, які навички є у вашій команді, може бути простіше створити ці активи в 3D та вивести їх з потрібних кутів.

Використання тривимірного двигуна також є хорошим рішенням, хоча це призведе до власного набору проблем.


Так, майже це. Щойно я отримав іншу відповідь як правильну, але і ця дійсна. Як я коментував інше, мені потрібна 3D скелетна система для 2D-анімації :)
homemdelata
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.