Основне питання, як я бачу, - це не 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 менше ніж за день.