Чи є в 2D іграх якась причина НЕ використовувати 3D API на зразок Direct3D або OpenGL?


20

Я вже досить довго не в хобі Розробка ігор для ігор. Коли я це робив, більшість людей використовували Direct Draw для створення 2D ігор. На той момент, коли я зупинявся, люди говорили, що OpenGL або Direct3D з ортогональною проекцією - це лише шлях.

Я думаю про те, щоб повернутися до створення 2D ігор, зокрема на мобільному телефоні, але, можливо, і на платформі XNA. Щоб зробити щось за допомогою OpenGL, я мав би (сподіваюсь) невелику криву навчання, щоб пристосувати себе до 3D-розробки.

Чи є якась причина, щоб пропустити це і замість цього працювати з 2D-рамкою, де я просто маю буфер кадру Width x Height, який мені потрібно заповнити пікселями?


Це питання насправді неправильне ... Я маю на увазі: Direct3D та OpenGL насправді не є 3D-API, чи не так? Вони пропонують апаратне прискорення, але як в 2D, так і в 3D. Там є незначна різниця.
jacmoe

Відповіді:


20

Ви, безумовно, повинні використовувати щось, що використовує 3D-рендерір на бекенді. Але у своєму коді вищого рівня ви навіть не повинні бачити вісь Z. Все це слід абстрагувати на нижчих рівнях. Якщо ви безпосередньо маніпулюєте пікселями, ви, ймовірно, робите щось не так.

Для моїх власних ігор я створив набір класів для роботи з 2D-об’єктами. Моя ігрова гра стосувалася лише координат x і y. Мої заняття також обробляли такі речі, як обертання, масштабування, режими змішування тощо, тощо.

Звичайно, є також 2D бібліотеки, якими ви також можете користуватися - Cocos2D є популярною на iPhone. Більшість, якщо не всі, ці бібліотеки будуть побудовані на тривимірних API-інтерфейсах нижчого рівня, щоб вони отримували переваги від наявного прискорення.


Мені буде цікаво почути, як xna обробляє 2d api за лаштунками
Iain

5
Зрештою, це все в 3D. Spritebatch, 2D робочий коник, представляє шейдер.
drxzcl

+1 для роз'єднання інтерфейсу від реалізації.
Стів S

@Iain Ось нарікання XNA в DirectX11, написане авторами XNA xnatoolkit.codeplex.com .
ClassicThunder

8

Існує причина не використовувати 3D API.

Підтримують їх лише комп'ютери в НА, Північно-Західному ЄС та Японії ...

Я, наприклад, живу в Бразилії, мій сестринський комп'ютер новий, має багатоядерний процесор, кілька ГБ оперативної пам’яті, і все ж він не запускає ігри OpenGL.

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

І це не проблема лише з Бразилією, я запитав людей навколо, і це часто в кількох місцях світу ... Населення, яке фактично володіє картами, сумісними OpenGL або Direct3D, є меншиною ...

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

Але якщо ви орієнтуєтесь лише на ці "традиційні" ринки (NA, Північно-Західний ЄС, JP), тоді йдіть на це!

РЕДАКЦІЯ для тих, хто забороняє: Очевидно, ви не погоджуєтесь, тож чи є у вас ДОКАЗІ, що НІКОЛИ не постачає комп'ютери з чіткими мікросхемами VIA або SIS (або навіть іншими невідомими або гіршими виробниками) без жодної або лише підтримки OpenGL 1.0?

У мене вдома є ДВІ машини, і вони нові (обидва мають більше одного ядра, обидва мають 2 ГБ оперативної пам'яті, обидва мають тактову частоту вище 2 ГГц ...)

У моєму університеті є 200 таких машин, навіть деякі, побудовані Dell.

Це просто, графічні процесори дорогі (навіть хитрі Intel), а на бідних ринках - це розкіш, люди, які купують машини для запуску MS Word і читають електронні листи, не збираються купувати машину з гідною графічною чіпкою, коли вони можуть придбати той, що на 50 доларів дешевше, особливо коли 50 доларів - це те, що більшість людей мають купувати продукти на цілий місяць.

БУДЬ ласка, не приходьте сюди, кажучи, що я кажу, що ви ніколи не відвідували країну третього світу, а також не кажіть, що люди третього світу не грають в ігри, вони багато, Осмос Довідник розробника про запуск їх версії Linux, вказав, що багато вхідного трафіку (насправді, більша частина його) йде з Росії, явно тому, що цих людей зазвичай ігнорують.

Тут, у Бразилії, найпопулярнішою грою є Counter-Strike, яка працює в програмному режимі ... У деяких Lan-Houses є лише 10% машин з графічним процесором, навіть великі дупи з 200 і навіть 300 станціями ...

Я не повинен був розміщувати інформацію про це, я знав, що це приверне голоси внизу, я отримую безкоштовно втрату балів за розміщення цього запису, кожен раз, коли я пояснюю, чому моя інша гра використовує Allegro 4.4 замість 5.0, оскільки 5.0 не підтримує Direct Draw або програмний режим Я отримую багато похвал від багатьох людей, які говорять про те, що я такий брехун або що я дурний, щоб сказати цю правду про фактичну доступність прискорення OpenGL.

EDIT 2: Щоб мати можливість грати і розвивати ігри, в яких є OpenGL, мені довелося благати своїх батьків та інших людей, щоб вони придбали мені GeForce 8600 (це найдешевша карта, яку я вважав, що все ще може працювати Mass Effect 1 та інші UT3 -придумайте ігри), вони купили мені один, але зараз я кілька років, не отримуючи більше ніколи інших подарунків, навіть подарунків на день народження, через те, наскільки це було дорого, і я сподіваюся, що ця картка працюватиме ще 3 або 4 роки ...

EDIT 3:
практичний приклад: Eletronic Arts створив нового клієнта для Ultima Online, який використовує 3D-прискорення для своєї двовимірної графіки ... Результат: Багато гравців, які скаржаться на смішно низькі частоти кадрів, і EA відступають у своєму рішенні змусити використовувати використання новий клієнт (тепер він може залишатися користуватися старим)

EDIT 4 у 2015 році: Ця відповідь залишиться тут переважно як історичний артефакт. Наразі кількість комп’ютерів з надзвичайно шаленими мікросхемами є низькою навіть у країнах третього світу, вони все ще існують, особливо в офісних комп'ютерах, але це не так Поширені більше, я не думаю, що вже не варто працювати з API-режимами програмного забезпечення, API на основі OpenGL - це вже зараз шлях.


3
На сьогоднішній день немає чіпів, які не підтримують 3D. Швидше за все, вам просто потрібно оновити драйвери, тому що ті, які надає Windows, не мають підтримки OpenGL. Найпоширеніші графічні процесори, що містяться в Інтернеті, - це Intel GMA та навіть яка є основна підтримка OpenGl.
Аксель Гнейтінг

1
Повторюся ще раз: фішки тут ВІДЧУТНІші, ніж Intel GMA. І так, деякі модифіковані драйвери вирішують проблему, але ви не можете очікувати, що користувачі дізнаються про це.
спійдер

Прикладний приклад: Eletronic Arts створив нового клієнта для Ultima Online, який використовує 3D-прискорення для своєї двовимірної графіки ... Результат: Багато гравців, які скаржаться на смішно низькі частоти кадрів, і EA відступають у своєму рішенні щодо застосування нового клієнта. (тепер дозволено продовжувати користуватися старим)
спідора

1
Новий клієнт - з 2008 року, про що говорить моя історія: Люди в 2008 році не любили клієнта OpenGL і повернулися до використання в 1997 році.
швидкісник

1
Тільки тому, що люди не оновлюють своїх драйверів, це не означає, що їхні комп’ютери не підтримують OpenGL та Direct3D. ОП повинен просто перевірити сумісність OpenGL / Direct3D. Якщо його немає, він повинен повідомити користувачу оновити свої драйвери. Це спрацює у 98,6% випадків, ймовірно, навіть у другому та третьому світі. Якщо серйозно, чи можете ви підключити комп'ютер, який ви можете придбати, у якого немає підтримки OpenGL / Direct3D?
Аві

3

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

Обійміть 3d і любите його, але любите його з однією меншою віссю.


2

3D API - це, як правило, шлях. Сьогоднішні графічні процесори розроблені для відтворення 3D-графіки, тому ви гарантуєте досить високу продуктивність. І як сказав ZorbaTHut, проходження 3D-маршруту дозволяє вам скористатися такими речами, як піксельні шейдери.

Насправді вже не так багато 2D API. DirectDraw застарілий, і більшість бібліотек на основі 2D / векторів там використовують OpenGL або Direct3D для здійснення їх візуалізації в будь-якому випадку. Навіть сучасні набори інструментів користувальницького інтерфейсу використовують 3D-API для їх візуалізації та складання. Візьмемо для прикладу WPF (останній фреймворк Microsoft UI): він використовує Direct3D для візуалізації.


2

Досі є дивовижна кількість справді старих машин з хитрими / неіснуючими 3d прискореннями та драйверами, які ніколи не оновлювалися, так що використання DirectDraw все ще буде набагато швидше, ніж OpenGL або D3D. Я відчув це під час роботи над двома грі багатокористувацької гри, якій зараз близько 10 років, коли я намагався написати новий бекенд візуалізації у OpenGL для підтримки інших платформ. Багато гравців повідомили, що режим OpenGL неможливо відтворити через низьку частоту кадрів. Я також погодився б із бразильським плакатом, що це частіше зустрічається за межами США та Європи, але це все ще вірно і в цих місцях.

Якщо ви орієнтуєтесь на мобільні телефони чи XNA, то обов'язково використовуйте 3D. Але якщо ви хочете зробити гру, яка працює на будь-якому ПК, де завгодно, я б сказав, що дотримуйтесь DDraw.


1

Єдине, про що я можу придумати, - це те, що використання 3D API над 2D додає певної базової складності. Принаймні у OpenGL вам потрібно завантажувати та керувати текстурами, і коли ви малюєте їх, вам потрібно правильно визначити геометрію. Шар обгортки вирішує ці проблеми.

Однак, використання тривимірної графічної графіки, здається, має більше переваг, ніж зворотних боків, тому, якщо ви запитаєте мене, то варто вартих зусиль.


1

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

Якщо ви щасливі, що гра потребує хоча б низького рівня ATi / NVidia карти / мікросхеми, то використання 3D API дозволить вам зробити багато цікавих речей (змішування альфа, масштабування / обертання тощо), які було б складно робити добре / ефективно в чистому програмному рендері.

Також майте на увазі, що деякі речі, які є дуже простими в «чистому 2D», стають цікавішими, коли задіяно тривимірне обладнання (та білінеарне фільтрування / змішування альфа). Зрозумійте поняття попередньо розмноженої альфи. А також подумайте, наприклад, про те, як би ви обробляли шви між плитками у двовимірній мапі плитки, якщо хочете переглянути масштабований / обертовий вигляд.

Також пам’ятайте, що кількість заповнення обмежена. І напрочуд легко досягти цих меж у 2D. У вас може бути не багато полігонів, але якщо ви хочете безліч шарів паралекса, змішаних альфа-альфами, або частинок, або пост-ефектів - ви можете досить легко заповнити стільки пікселів, як досить висококласна 3D-гра.

Але загалом, обладнання для 3D - це приголомшливо, а добавка сумішей - ваш друг :)

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