Masalah inti, dari apa yang bisa saya lihat, bukanlah C ++ atau Unity3D, tetapi Anda membutuhkan solusi tingkat tinggi atau solusi tingkat rendah .
Solusi tingkat rendah adalah solusi yang Anda menjadi kotor dengan proses menyerahkan input, mengelola memori, atau memuat model. Solusi tingkat tinggi adalah Anda mendapatkan satu paket yang rapi, seperti Unity3D.
Bagi saya, apakah menggunakan Unity3D (atau mesin gim lainnya) atau C ++ tergantung pada tujuan gim dan proyek Anda.
Gunakan Unity3D, jika waktu pengembangan harus cepat dan / atau game Anda tidak intensif kinerja atau tidak berada di ujung atas kinerja grafis / komputasi. Jika Anda ingin berkonsentrasi pada permainan-permainan, dan alat-alat default yang disediakan Unity3D baik-baik saja, Anda mungkin ingin mempertimbangkan untuk menggunakan Unity3D
C ++ dengan pustaka lain, jika Anda memiliki waktu pengembangan yang lebih lama, gim ini membutuhkan daya komputasi / grafis yang lebih besar, atau menggunakan beberapa teknologi yang tidak dapat dimasukkan Unity3D.
Hal yang baik tentang Unity3D adalah bahwa ia masih menggunakan bahasa scripting yang mencerminkan perkembangan dunia nyata (C # atau JavaScript). Konsep OOP dan rekayasa perangkat lunak yang Anda pelajari (Singleton, fasad, mesin negara, dekorator, komposisi) dapat diterapkan di Unity3D. Ini membantu untuk menjaga proses cookie-cutter seperti manajemen sumber daya, grafik adegan, pemuatan model, rendering, penyimpanan adegan dan lain-lain. Lebih baik lagi, jika ada fungsi yang Anda butuhkan yang tidak disediakan Unity3D, Anda dapat melakukan Pengodean DLL.
Di mana itu meninggalkan C ++? C ++ adalah bahasa, dan ada banyak konsep pemrograman yang Anda lakukan di C ++ yang dapat Anda lakukan di Unity3D, sans manajemen memori atau mungkin templat (Dengan Unity 3.2, spesifikasi bahasa telah ditingkatkan untuk mencakup penutupan, misalnya).
Jadi seperti yang telah saya nyatakan, itu sebenarnya bukan C ++ vs. Unity3D. Ini lebih dari "C ++ plus libraries / SDK atau roll your engine" vs Unity3D. Itu tergantung pada tujuan dan sasaran Anda. Untuk gim kelas atas atau gim di mana Anda perlu mengontrol pipeline atau input rendering, Anda mungkin ingin menggunakan C ++ plus mesin yang memungkinkan Anda mengacaukannya. Jika tidak, saya menggunakan Unity3D sebagai pilihan default saya untuk game 3D.
Namun, pengetahuan dengan Unity3d tidak berada di bawah pengalaman, tetapi merupakan tempat yang baik untuk memulai mempelajari proses pengembangan game secara keseluruhan. Sebagai contoh, Anda mungkin perlu belajar selama satu semester untuk menulis renderer dan memuat model dalam OpenGL, ditambah scenegraph dan input dasar. Anda dapat melakukannya di Unity3D dalam waktu kurang dari sehari.