Я віддаю перевагу C / C ++ над Unity та іншими інструментами: чи це такий великий спад для розробника ігор? [зачинено]


35

У нас є великий ігровий проект із використанням Unity в школі. Над ним працює 12. Моя вчителька, здається, переконана, що це важливий інструмент для навчання студентів, оскільки він змушує студентів дивитися з високого рівня на нижчий.

Я можу зрозуміти його погляд, і мені цікаво: чи єдність такий важливий двигун у компаніях, що займаються розробкою ігор? Чи багато компаній, які використовують це, тому що вони не можуть дозволити собі використовувати щось інше? Він говорить про те, що Unity є великим гравцем у створенні ігор, але я лише бачу, що це підходить невеликим компаніям з інді-ігор, які хочуть зробити гру якомога швидше.

Як ви вважаєте, Єдність має таке велике значення в галузі? Чи загрожує це цінність навичок C ++?

Справа не в тому, що я не люблю Unity, це просто те, що я нічого з цим не вчу, я вважаю за краще досягти невеликих кроків замість Ogre або SFML.

Також у нас є вправи на практиці C ++, але це лише практика з теорією, нічого особливого.


9
Точка C ++ і OOP - повторне використання об'єктів. Єдність є прекрасним прикладом цього та перетворення платформ між платформами. Вони пропонують усі необхідні інструменти для запуску гри на XBox або iPhone або Wii. Ви серйозно говорите мені, що краще переписати все це на C ++ з нуля?
Стівен Фурлані

2
Абсолютно ні, це не те, що я хочу сказати. Я просто кажу, що мені не подобаються зібрані сміття мови, якими він поставляється, а також той факт, що ви не можете змінити код, оскільки він є власним: ви не можете його налаштувати стільки, скільки зможете налаштувати інший існуючий двигун . Ваша думка справедлива, але якщо я слідую за вами, компанії також можуть повторно використовувати свій попередній механізм, а не просто перейти на Unity. З Unity ви дотримуєтесь того, чого не можете змінити, і це завжди найбільший збиток для мене, коли я думаю про такі інструменти.
jokoon

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

Це в основному питання "яку технологію використовувати". Крім того, це більше орієнтоване на обговорення / думку. На жаль, я не можу вдруге проголосувати за закриття ...
bummzack

Відповіді:


34

Єдність є цілком правильним рішенням у цьому контексті. Уявіть собі, що на секунду є 12 людей, більшість з яких все ще перебувають у процесі вивчення C ++, написавши велику і складну ігрову програму, використовуючи її. За кількість часу, проведеного на налагодження, ви, ймовірно, змогли написати ще одну гру в Unity.

Я не кажу, що знати, як використовувати C ++, не важливо - це особливо, якщо ви плануєте приєднатися до ігрової індустрії "mainstream". Але, можливо, ваш інструктор в цьому випадку правильний - використовуйте цей проект як досвід навчання, як думати про створення архітектури гри та отримуйте задоволення від цього. У процесі спробуйте відточити свої навички C ++ за допомогою вправ або навіть піти так далеко, щоб тим часом писати невеликі ігри, використовуючи SFML або якусь іншу базову рамку.

Коли все буде зроблено, ви багато чого навчилися, напевно, станете кращим програмістом, і наступний ваш проект можна буде вирішити на C ++ з набагато більшою впевненістю.


2
Цікаво, що є школи, які викладають виключно C ++ і очікують, що студенти будуватимуть цілий ігровий движок і гру з нуля, незважаючи на те, що ще вивчають C ++. Звичайно, насправді практикується навичка - це те, як ви її засвоїте (не класні лекції та невеликі домашні завдання, більші семестри або проекти, що тривалий рік). Програмісти, здатні дуже швидко підбирати такі інструменти, як Unity, або будь-який інший двигун. Краще змусити студентів засвоїти важкі речі, оскільки легкі речі не стануть проблемою згодом.
Шон Міддлічч

Не всі розробки ігор є програмуванням, а використання Unity не обов'язково "уникає важких речей". Він просто підкреслює різні важкі речі, ніж реалізація з нуля. Дав дизайн, а не програмування. Якби гра реалізовувалася з нуля, я б очікував набагато примітивнішого "мистецтва програміста" і жодних персонажів чи сюжетів.
wrosecrans

43

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

Дозвольте мені тут щось зазначити, оскільки я часто бачу плутанину серед студентів, які програмують. "C ++ навички" не дуже корисні в довгостроковій перспективі. Що ви повинні шукати - це "навички програмування" та "навички дизайну". Якщо ви розумієте поняття мови програмування та спосіб складання програмної системи, мова насправді не має значення. Я не вважаю себе дивовижним розробником, але я можу підібрати нову мову та створити корисний код через день чи два, тому що я розумію основи.

Єдність навчання зробить вас кращими на C ++.


Gameforge та BigPoint - провідні світові компанії, і вони використовують Unity :)
daemonfire300

1
+1 за те, що це дуже хороша відповідь. Навчання ігровому двигуну - це дуже важлива річ для шкіл, бо 99% часу ви не будете робити з нуля. Уміючи зануритися в існуючий двигун і розпізнати його частини, розпізнайте потік даних, і все це дуже ключові речі. Як було сказано вище, мова не має значення, незважаючи на те, що це C / C ++ 99% часу, але здатність зрозуміти двигун або взагалі просто чужий код - це неоціненний навик у будь-якій галузі програмування ... особливо критично важливий час слово - це відеоігри :)
Джеймс,

1
Я не згоден з цією відповіддю. Для мене існують відмінності між скриптерами і програмістами. Розробники Unity - це програмісти, користувачі Unity - скрипти. Результат такий же, вони роблять ігри, але з часом використання Unity може бути проблемою. Ігрова індустрія багата і тепер дозволяє такі інструменти, як Unity, але для мене це тому, що комп'ютери швидші. так що ви можете кинути багато коду, він працює: Єдність явно створена для швидкості розвитку, щось, що подобається ринку через долари, але я не думаю, що це справжній плюс.
jokoon

14
jokoon: Яка різниця між сценарієм та програмуванням? Користувач енергії Unity пише шейдери, керує порядком візуалізації та пише код AI. "Сценарії" єдності складені, і їх можна розширити за допомогою чесного до богині кодування низького рівня, якщо хочете. І хороше кодування Unity дотримується тих же принципів, що і хороше кодування Unity. Ніякої магічної різниці між двома парадигмами немає.
Григорій Евері-Вейр

9

Чи багато компаній, які використовують це, тому що вони не можуть дозволити собі використовувати щось інше?

Так, але "дозволити собі" - це набагато більше, ніж просто прямі значення долара.

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

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

Крім того, це один з небагатьох інструментів, який насправді дозволяє вам робити 3D в браузері з будь-якою регулярністю. Вони майже підтримують будь-яку платформу шейдерів - від фіксованої функції до DX9 +, а також для Mac та Windows. Саме ця технологія є неоціненною, якщо ви хочете орієнтуватися на зростаючий ринок "гри на основі браузера".

Що стосується програмного забезпечення речей, те, що ви отримуєте від Unity, - це чітке розуміння компонентного дизайну (порівняно з прокатним вашим власним двигуном C ++, який, як правило, занадто важкий з боку спадкування), а також дуже швидке та візуальне середовище, щоб спробувати ігровий код. Ви сподіваєтесь, що ви навчитесь хорошим практикам дизайну, використовуючи Unity, який ви зможете перейти до майбутніх двигунів C ++.

Звичайно, прекрасно мати перевагу однієї мови перед іншою. Особисто я віддаю перевагу C # над C ++. Але якою мовою ви користуєтесь, насправді визначає вимоги проекту більше, ніж будь-що інше. Розробники насправді не можуть дозволити собі бути фанатом, оскільки ви не хочете виходити з ринку, тому що вам не подобаються інструменти чи мова з тих чи інших причин.

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


уточнення: Ви маєте на увазі, що ліцензія Unity Pro варта того порівняно зі старим звичайним Unity? Ваш коментар був для мене трохи незрозумілим.
Кайл С

7
Я не користувався безкоштовним, лише те, що ліцензія на $ 1500 / місце є дешевою брудом порівняно з іншими комерційними ліцензіями на двигуни.
Тетрад

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

9

Основне питання, як я бачу, - це не C ++ чи Unity3D, а швидше, чи потрібне вам рішення високого рівня або низькорівневе рішення .

Рішення на низькому рівні - це те, що ви забруднилися процесами передачі вводу, управління пам'яттю або завантаженням моделей. Рішення високого рівня - це те, що ви отримуєте один акуратний пакет, наприклад, Unity3D.

Для мене, чи використовувати Unity3D (або будь-який інший ігровий движок) або C ++, залежить від цілей вашої гри та проекту.

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

  • C ++ з іншими бібліотеками, якщо у вас більший час розробки, гра потребує більшої обчислювальної / графічної потужності або використовує певну технологію, яку Unity3D не може включити.

Хороша річ у Unity3D - це те, що він все ще використовує мови сценаріїв, які відображають реальний розвиток світу (C # або JavaScript). Концепції OOP та інженерії програмного забезпечення, які ви вивчаєте (Singletons, фасад, державні машини, декоратори, композиція), можна застосувати в Unity3D. Це допомагає піклуватися про процеси вирізання файлів cookie, такі як управління ресурсами, графік сцени, завантаження моделі, візуалізація, збереження сцен тощо. Ще краще, якщо вам потрібен функціонал, який Unity3D не надає, ви можете це зробити Кодування DLL.

Де це залишає C ++? C ++ - це мова, і є багато концепцій програмування, які ви робите в C ++, які ви можете робити в Unity3D, керувати пам'яттю або, можливо, шаблонами (з Unity 3.2, мовні характеристики покращилися, наприклад, для покриття закриттів).

Отже, як я вже заявив, це насправді не C ++ проти Unity3D. Це більше "C ++ плюс бібліотеки / SDK або згорнути власний двигун" проти Unity3D. Це залежить від ваших цілей і завдань. Для ігор або ігор високого класу, де вам потрібен контроль над конвеєром або входом, ви можете використовувати C ++ плюс двигун, який дозволяє заплутатися під капотом. Якщо ні, то я вибираю Unity3D як мій вибір за замовчуванням для 3D-ігор.

Однак знання з Unity3d не переживають досвід, але це гарне місце для початку вивчення загального процесу розробки ігор. Наприклад, вам, мабуть, знадобиться семестр, який варто вивчити, щоб написати рендерінг і завантажити модель в OpenGL, а також базовий сценарій і вхід. Це ви зробите в Unity3D менше ніж за день.


або працюйте з Ogre3d!
jokoon

Востаннє я працював з Ogre3D давно; Я думаю, що для отримання гри потрібно більше роботи, ніж Unity3D, і це хороший середній план, щоб зазирнути, як працюють речі, що знаходяться під кришкою.
Екстракун

+1 на цьому. Ви не можете віддавати перевагу C / C ++ та Unity як такому, тому що це яблука та апельсини. Що ви можете віддати перевагу, - це ідея працювати на нижчому рівні розвитку, що забезпечується C / C ++, або розвитком вищого рівня, який дозволяє Unit.
Тім Холт

8

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

Unity3D - це дійсно чудовий інструмент для розвитку ігор. Мені це дуже подобається, і я рекомендував би його майже для будь-якої гри, особливо для невеликих команд. Але сам Unity3D написаний на C ++; і ви повинні знати C ++ (а також купу інших матеріалів низького рівня), щоб дійсно зрозуміти, як це працює.

Навіть якщо ви використовуєте Unity3D, лише вміння C ++ та розуміння принципів та алгоритмів на низькому рівні дозволять вам використовувати його з усією можливістю. Це стосується і інших ігрових двигунів, до речі.

І щоб зробити дійсно гарну роботу, витіснити кожен останній шматочок продуктивності з вашої платформи за вибором та набити якомога більше найсучасніших ефектів та алгоритмів, ви не можете використовувати нічого, окрім C / C ++. Можливо, з бітами асемблера.


Це я відповідь, яку я чекав +1:]
Нотабене

3

Наскільки я можу сказати, це залежить від вашої цільової платформи, ігор AAA та консолей (XBOX, Wii тощо), як правило, в C ++, щоб отримати максимальну продуктивність, однак, якщо ви пишете браузерну гру Unity також часто б / в.

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


3

Я поїхав до магістерської програми з комп’ютерної графіки та ігрових технологій університету Пенсільванії, де ми виконували всі наші проекти на найнижчих рівнях, з проектами в C ++, OpenGL, CUDA тощо. Нашими проектами були анімація на основі фізики, анімація персонажів та архітектура IK, що представляє різні форми кривих Безьє ... Ви знаєте, насправді базовий матеріал, який використовує досвід у програмуванні, лінійній алгебрі та обчисленні.

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

Мене це дратувало? Трохи, правда, але я виявив, що розуміння школи робить мене набагато небезпечнішим, коли я використовую такі інструменти, як Unity. В даний час я працюю в іграх, де ми пропонуємо ігри від концепції до ринку менше, ніж за рік, і я все ще фанат, коли мова йде про "ті математичні речі". Моя рада тобі - пройти через рухи; ви будете абсолютно неоцінені, коли ввійдете в галузь.


Ви могли (теоретично) отримати значок з нього. :)
Циклопи

Тут немає ніякого затухання, тому що питання не старіють і не вмирають, як на форумах. :) Пізні відповіді завжди в порядку.
doppelgreener

0

Я можу запізнитися у відповіді, але це допоможе деяким людям, які мають цю плутанину ..

Спочатку я є програмістом c ++, який ненавидів використовувати двигуни сторонніх виробників (наприклад, єдність), тому що я не відчуваю, що в навчанні низького рівня є багато навчального процесу.

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

  1. Розуміння, як проектувати на високому рівні, важливіше, ніж турбуватися щодо оптимізації низького рівня.
  2. Двигуни, які мають систему архітектури Entity (архітектура, заснована на компонентах), допоможуть дізнатися, наскільки саме ця архітектура буде корисною.
  3. Ви будете знати новітні технології (принаймні термінологію), і будете принаймні в курсі галузі, що стосується Graphics.- це головна причина, що я вирішу спробувати єдність!
  4. Пропускаючи витрати часу на різні інструменти для імпортерів ресурсів. (Звичайно, я все одно люблю писати свої власні 3d-імпортери в c ++, оскільки це буде веселіше у вільний час)

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

Спочатку зрозумійте візуалізацію на високому рівні та зробіть кілька швидких прототипів з Unity та скористайтеся цим досвідом при розробці гарної гри в c ++.

Незабаром я повернусь до c ++, оскільки я набув гарного досвіду на вищому рівні з єдністю :)

Удачі!


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