Saya akan menulis jawaban yang tepat karena saya berada di tahap Anda sekitar 2 bulan yang lalu.
Saya mulai menulis mesin gim yang sangat sederhana sehingga saya bisa belajar OpenGL 3.x lebih baik tetapi karena pengalaman saya dan pengetahuan saya yang jarang tentang bagaimana game 3D harus dirancang, saya biasanya mendapatkan masalah di mana saya menyadari bahwa saya seharusnya merancang kelas saya. berbeda.
Jangan khawatir tentang itu. Dengan kurangnya pengalaman Anda, Anda tidak akan pernah bisa memikirkan semua kemungkinan dan cara kelas yang akan digunakan dalam mesin Anda. Yang terbaik adalah jika Anda mempertimbangkan fitur-fitur utama kelas, mengimplementasikannya dan merestrukturisasi nantinya. Jangan mencoba terlalu banyak berpikir, Anda akan membuang-buang waktu pada tahap ini. Game pertama saya benar-benar berantakan, saya yakin itulah yang terjadi pada kebanyakan orang.
Masalah lain yang saya hadapi adalah bagaimana melacak waktu secara singkat dalam permainan dan memperbarui gerakan sesuai kebutuhan dan bagaimana memberi tahu pemberi render bahwa itu perlu digambar ulang.
Yang Anda butuhkan adalah pengetahuan tentang apa itu game loop. Ini adalah tempat yang bagus untuk memulai. Setelah Anda mulai menulis kode yang lebih kompleks seperti menangani fisika maka Anda mungkin ingin mempertimbangkan loop dengan waktu bingkai variabel, tetapi mulai dari yang kecil. Lingkaran permainan bingkai tetap sederhana sudah cukup untuk Anda saat ini.
Juga saya tetap perlu membuat fungsi Get and Set untuk melewatkan berbagai flag dari satu objek ke objek lain, apakah itu praktik yang buruk?
Ini lebih merupakan pertanyaan rekayasa perangkat lunak. Seiring waktu Anda akan melihat data mana yang perlu Anda lindungi dan mana yang aman. Mungkin yang terbaik jika Anda hanya mengimplementasikan fitur dan kemudian melihat apa yang tidak terpapar di luarnya dan dapat diperlakukan sebagai data publik.
Ini semua masalah pengalaman. Anda akan menulis kelas kamera, lalu Anda akan melihat fungsionalitas apa yang Anda inginkan darinya di samping matriks transformasi. Jika Anda ingin tips langsung, saya harus mengatakan, menerapkan tulang telanjang, memperpanjang nanti.
Artikel dan Buku:
Buku-buku ini berbicara tentang arsitektur mesin permainan modern dan jaringan pipa. Mereka akan memberi Anda gambaran yang baik tentang teknologi yang mendasarinya. Saya merekomendasikan buku pertama jika Anda harus memilih, itu kurang "bias" terhadap teknologi tertentu, meskipun pada akhirnya Anda mungkin ingin melewati keduanya karena mereka sumber pengetahuan yang hebat.
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(Saya menautkan ini karena saya merasa sulit untuk menemukan artikel tentang bagaimana deteksi tabrakan 3D yang tepat dilakukan.)
Ada lebih banyak buku, tetapi pada saat Anda selesai dengan ini (terutama Arsitektur Mesin Game), Anda akan lebih tahu apa yang Anda inginkan.
Btw, saya masih menggunakan freeglut, apakah Anda akan merekomendasikan saya pindah ke sistem windowing yang lebih baik sebelum maju atau setelah saya mendapatkan pemahaman yang lebih baik tentang OpenGL?
WinAPI, jika Anda merasa punya waktu dan kemauan untuk belajar pemrograman Windows (jika Anda mengembangkan untuk Windows). FreeGLUT baik untuk belajar, tetapi akhirnya Anda akan menginginkan lebih banyak fungsi. Padahal, jika Anda ingin pergi dengan rute lain sepenuhnya, Anda dapat meluncurkan OpenGL dengan perpustakaan seperti SFML atau SDL. Tetap dengan FreeGLUT, kecuali Anda keras kepala seperti saya. Saya langsung menuju WinAPI.