Як я можу реалізувати заздалегідь задані 2D спрайти, які можуть стикатися в будь-якому напрямку?


28

Я гуглив, як такі ігри, як Clash of Clans, представляють свої війська, і, здається, вони заздалегідь рендерують 3D-моделі на 2D-спрайтові аркуші до часу виконання, а також рендерують ці 2d-зображення на час виконання. Однак війська в зіткненні кланів можуть зіткнутися з будь-яким напрямком.

У моїй подібній грі, якби я створив зображення для кожної орієнтації (0-360 градусів) для кожного типу війська (їх 18 типів) на кожному кадрі в їх анімації, вони повинні були б створити величезну кількість зображень. Я не уявляю, що це роблять інші розробники, тож як я можу це реально досягти?


2
Метод, про який ви посилаєтесь, до речі називається "Рекламний щит".
Векар Е.

Відповіді:


45
  1. Зазвичай існує менше 360 напрямків. Загальний випадок становить 8 або 16. Анімації теж досить короткі.

  2. Автоматизація - твій друг. Напишіть сценарій Blender / 3DMax / тощо, щоб завантажити модель зі списку, відобразити її у кожному необхідному кадрі та напрямку до зображення. Позначте зображення відповідно до вмісту та адресуйте їх у грі.

  3. Впакуйте все в атласи текстури (ака-спрайти) для швидшого доступу.

Врешті-решт, у вас вийде кілька тисяч туритів, акуратно упакованих у кілька десятків атласів. Не така вже й велика справа;)

Я не зміг знайти зображення від CoC, але ось Diablo II, який використовував той самий підхід до анімації персонажів. Наприклад, атака ближнього бою в Амазонії:

введіть тут опис зображення


4
Баланс потужності / часу візуалізації порівняно з простором зберігання та часом завантаження.
М. Мімпен

3
Що таке "атлас"? Будь-яке посилання?
BЈовић

7
@ BЈович Шукайте "Атлас текстури". Це дуже поширена концепція.
Кромстер каже, що підтримує Моніку

2
Можливо, варто зауважити, що, обговорюючи цю техніку розробниками Blizzard North, вони в основному прийшли до висновку, що це дивна міра зупинки, щоб впоратися з незручним моментом у можливостях графіки ПК, і навіть тоді це не було насправді врешті-решт варто того. Про це було інтерв'ю, і врешті-решт знадобилося стільки часу, щоб знову відтворити все, що загальним висновком було те, що це не чудовий підхід (і наступною їхньою грою, безумовно, буде 3D).
KRyan

1
@KRyan гарне доповнення! Я б здогадувався, що це було пов’язано з кількістю VAC NPC та передач у D2. Для платформи CoC та мобільних платформ це різне співвідношення.
Кромстер каже, що підтримують Моніку

8

Також пам’ятайте про низьку роздільну здатність цих зображень. Є ще кілька речей, які ви можете зробити для економії місця, хоча я не знаю, які з них використовуються Clash of Clans:

  • Ви можете упереджувати позиціонування військ, щоб частіше зустрічалися зі стандартними напрямками (N, E, S, W, NE, SE, SW, NW), а потім оптимізувати лише для стандартних напрямків.

  • Ви можете зробити комбінований підхід, де попередньо надаєте лише деякі вказівки. Під час кадру ви можете візуалізувати війська, які не відповідають наявному зображенню, або використовувати найближче зображення, якщо у вас не вистачає часу.

  • Використовуйте симетрику ліворуч / праворуч, коли це можливо, щоб скоротити кількість збережених кадрів навпіл.

  • Ви можете надати пріоритет певним анімаціям, таким як ходьба та відпочинок, зберігаючи більше напрямків та кадрів для них. Потім деприоритизуйте інші анімації, наприклад, хитання меча, де ви зберігаєте менше напрямків та кадрів (я пропоную зберегти більше вказівок для першого та останнього кадру гойдалки).

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

В цілому, ми можемо говорити про 18 одиниць, до 8 напрямків, можливо, 2 секунди анімації при 20 кадрах в секунду, в середньому 64х64 пікселів і приблизно 2 байти на піксель. Це 18x2x20x64x64x2 = 50 Мб. Вони також можуть масштабувати кількість напрямків, роздільну здатність та кількість кадрів на основі можливостей пристрою та кількості одиниць, використовуваних на карті.


2
Ви також можете переключитися з білбордів на 3d-моделі, якщо збільшити масштаб близько до певного об'єкта - тож це 3d-близько, а потім скористатися швидшим 2d, коли у вас просто багато біжить у фоновому режимі. Робота з переходом плавно може бути складною.
Тім Б

@TimB Що особливо добре, оскільки ви в кінцевому підсумку надаєте високу роздільну здатність і використовуєте зображення для низької роздільної здатності.
Пітер

2

Окрім відповіді @Kromster, зауважте, що зображення часто значно стискаються, а у великих «атласних» зображеннях, де є багато елементів, що повторюються (наприклад, порожній фон), стиснення є суттєвим. Отже, остаточний "розмір" зображень - це не просто пряме множення розміру окремих зображень.


5
Стиснення працює для графічних процесів інакше, ніж для jpegs, особливо мобільних графічних процесорів на пристроях Clash of Clans, для яких було написано. en.wikipedia.org/wiki/S3_Texture_Compression Іншими словами: порожній фон на 100% не має значення для стиснення текстури.
Пітер

-2

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


Різних розмірів не було. Відображення щойно робило наївний найближчий сусід, коли потрібно.
Р ..

@R .. Дякую за виправлення. Минуло кілька років, як я його грав! :)
Грем

1
Вибачте, але це зовсім не відповідає на питання "Як я можу реалізувати ..".
Кромстер каже, що підтримую Моніку

@Kromster Отож, на запитання "як я це реалізую?", Я не відповідаю на це питання з коротким оглядом класичної гри, реалізованої ним (8 кутів замість 360), і згадую, що, як вони це зробили, це особливо легко зрозуміти, коли ви граєте, оскільки ОП, очевидно, не міг сказати в Clash? І помічаючи відмінності між цим загальним випадком і конкретним випадком ізометричного виду? Я вільно визнаю, що це не так добре, як ваша відповідь, але є різниця між низькоякісною відповіддю та невідповіддю на запитання.
Грем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.