Як ви підходите до незалежності дозволу в растровому графічному вмісті?


32

Ті ігри, яким не пощастило запускатись на специфікованій блокованій платформі, як, наприклад, портативні пристрої, повинні працювати в різних форматах роздільної здатності та співвідношенні сторін.

У 3D-грі ви можете мати HUD або графічний інтерфейс меню, заснований на растровій графіці, а в 2-грі у вас може бути купа квадроциклів, які є судинами для спрайтів.

Отже, моє запитання полягає в тому, як ви підходите до розробки та керування вмістом у різних роздільних здатностях та співвідношенні сторін? Припустимо, у вас є спрайт-символ, що має спрайт 300x400 пікселів і оточений рівнем з плиток. У різних співвідношеннях роздільної здатності / співвідношення сторін ви взагалі бачите інший FOV. Або якщо у вас є HUD або меню GUI, ви хочете, щоб деякі елементи зберігалися в одних і тих же розмірах щодо екрана. Проте джерело графіки - растрові растрові карти, а не векторні.

Очевидно, що проблема вирішувалась неодноразово. Мені цікаво почути різні підходи, які досі працювали для вас. Чи зберігаєте ви довільну розмірність агностичного "пікселя", яку ви магічно перетворюєте на потрібні розміри за допомогою формули, заснованої на співвідношенні res та size або інших підходах?

редагувати:

Отже, висновок - перерахувати співвідношення сторін. Найнижча комбінація аспектів: роздільна здатність - це те, для чого ви розробляєте важливі речі. Безпечна зона, якщо ви хочете. Те саме співвідношення сторін, але більш висока роздільна здатність є простими проблемами масштабування. Арт-контент розроблений для максимальної роздільної здатності. Більші співвідношення сторін просто показують більше рівня / FOV з поданою інформацією, яка не є критичною, як і в безпечній зоні. Щось на зразок цього зображення я зробив . alt text


1
Я не бачу, як ви перейшли від відповідей у ​​цьому питанні до висновку, який ви зробили після свого " редагування: ". ІМО, ці відповіді є неадекватними, і ви не повинні були прийняти жодну з них. EG: Ваша прийнята відповідь говорить лише про частину питання (спрайт масштабування), а не всю проблему. Те, що ви сказали після " редагування: ", корисніше, ніж відповіді тут, ІМО. Але, я насправді не «підхоплюю» його досить добре, щоб реалізувати це. На жаль, якщо я попрошу розробити нове запитання, він буде позначений як дублікат.
Даніель Каплан

Відповіді:


7

Якщо ваші роздільні здатності схожі між собою, ви можете просто використовувати одне й те саме мистецтво для всіх, можливо, деякі скорочення часу зменшення для менших екранів. Якщо вони відрізняються більше, ніж скажімо, коефіцієнт у 2 рази, вам потрібно буде написати (або принаймні налаштувати виконавця) окремі ресурси для різних роздільних можливостей.

Завдяки 2D, роздільна здатність має величезний вплив на те, як ви створюєте зображення. Спрайт, який виглядає детально та реалістично на високій роздільній здатності, буде каламутним і нерозбірливим, зменшеним. Крім того, спрайт-спрайт з чітким і чітким поглядом на низьку роздільну здатність буде виглядати дешево і надмірно просто у високій роздільній здатності.


Співвідношення аспектів мене хвилює. Наприклад, це не величезний стрибок від 1080p до 720p, оскільки аспект однаковий, тоді ми маємо справу з простим масштабуванням. Що станеться, коли ви скажете 1080p проти 1680x1050. Чи показувати я більше рівня, ширшого FOV на більш широкому аспекті, такий собі запас? Мовляв, розробити ширший аспект із безпечною зоною, куди йде весь важливий вміст, щоб не перерізати екран із вузьких аспектів.
Ключовий кадр

Я оновлю питання з візуальною презентацією цього рішення. Схоже, іншого шляху немає.
Ключовий кадр

4

Одним із способів є створення активів зображення у векторіальному форматі (SVG, Illustrator тощо) та перетворення їх у растрові зображення за потребою різних версій гри.


Звичайно, але я забув згадати, що це не варіант. Основна проблема полягає в тому, що створення растрового та векторного контенту зовсім інше (растр набагато кращий для художників). Одним із варіантів було б створення декількох растрових активів, але я переконаний, що має бути краще рішення. Наприклад, створення активів для найбільшого підтримуваного співвідношення ресурсів / розмірів і зменшення в нижчих версіях виконання часу на ходу або щось подібне. Поки залишається проблемою позиціонування.
Ключовий кадр

Так, це теж варіант, якщо ви можете нести проблеми з якістю та продуктивністю.
Matias Valdenegro

8
Я не впевнений, що це правильно, що "растр краще для художників". Мій графік саме з цієї причини використовує Illustrator. Коли прийшов час оновити до 2X роздільної здатності iPhone 4, для неї це було просто знову експортувати все. Растер може бути кращим для художників Photoshop, які не хочуть перекваліфікуватися як художники-вектори, але, зрештою, їм, мабуть, краще стати експертами у векторній графіці. Фізичні платформи змінюються занадто швидко, щоб мислити в пікселях.
Кріс Гарретт

4

Якщо ви підтримуєте повноекранний екран із різною роздільною здатністю, якщо ви хочете вдосконалення пікселів (тобто "Так, як це створив художник"), проблема полягає в тому, що не існує повністю автоматизованого способу масштабування спрайтів вгору АБО вниз (або їх обертання), що не відповідає " t не потребує схвалення людини. Зрештою, це тому, що розміщення пікселів - це суб'єктивна річ. Алгоритм візуалізації виконує деяке масштабування або обертання, і для цього необхідно використовувати деякі методи наближення, наприклад. білінеарне фільтрування. Якщо ви все ще хочете жорстких країв пікселів для того, щоб мати "досконалість пікселів" (тобто не використовувати AA або BF), вам доведеться прийняти, що масштабування на деякий ступінь потужності 2 ступеня не буде в виробляти деякі небажані артефакти.

Цікавий підхід до подібної проблеми є у RotSprite , застосуванні / алгоритмі, призначених виконувати "автоматичні" обертання спрайтів. Маючи на увазі, я маю на увазі, що це дає ряд можливих бажаних кінцевих результатів після інтенсивної обробки, з яких людський оператор може вибрати. Тоді підібрані власноруч спрати вступають у гру, тобто це крок створення вмісту, а не час виконання.

Один з можливих відповідей на ваше запитання про "довільний піксельний агістичний піксель": OpenGL (який ви, можливо, збираєтесь використовувати, якщо ви збираєтеся крос-платформний), працює абсолютно іншим чином, ніж програмний растровий рендерінг. Він враховує ширину та висоту дисплея в діапазоні з плаваючою комою 0,0-> 1,0 і відповідно відображає пікселі на графічному процесорі. Звичайно, це може призвести до артефактування, якщо, наприклад, Для текстур увімкнено BF (це те, що ваші спрайти у OpenGL).


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