Apa saja matematika, fisika, AI dan konsep umum tertentu yang harus diketahui oleh seorang programmer untuk mengembangkan mesin game? [Tutup]


9

Menjadi seorang programmer aplikasi berbasis web dan DB, saya memiliki pengetahuan dalam struktur data seperti daftar, pohon, grafik, dll. Saya benar-benar menggunakan sangat sedikit dari algoritma struktur data ini dalam pengkodean saya, kecuali untuk menyortir hal-hal dalam array sederhana, karena saya bekerja hampir seluruhnya dengan kerangka kerja berorientasi klien di mana semua fungsionalitas inti terintegrasi. Saya tahu C, PHP, Java, HTML, PL / SQL dan MySQL. Saat ini saya sedang belajar Python.

Saya ingin memulai dengan pengembangan game. Saya telah melihat pertanyaan lain mengenai saran, kiat, dan pendekatan pengembangan game untuk pemula. Saya mengerti poin ini, dan jelas dengan jawabannya. Beberapa hari setelah posting, saya membaca artikel Write Games, Not Engines , dan menyadari saya harus mengimplementasikan game sebelum saya membuat mesin game. Tetap saja, saya punya pertanyaan.

Tujuan saya adalah untuk

  • Meningkatkan keterampilan pemrograman tingkat inti saya, termasuk menggunakan algoritma struktur data, konsep matematika dan fisika.
  • Menerapkan mesin permainan yang baik, untuk memanjakan diri dalam pengkodean tingkat inti.
  • Untuk membuka jalan saya ke bidang penelitian AI.

Apa saja matematika, fisika, AI dan konsep umum tertentu yang harus diketahui oleh seorang programmer untuk mengembangkan mesin game?

Jawaban:


11

Struktur Data: Ini tentu saja pertanyaan yang valid. Namun, sementara beberapa Struktur Data berguna untuk segala jenis Game (seperti yang sudah Anda sebutkan, Daftar, Pohon ...), ada yang lain yang sangat spesifik. Misalnya, Octrees bisa sangat berguna dalam Pemrograman 3D, tetapi dalam lingkungan 2D murni Anda mungkin tidak membutuhkannya.

Algoritma : Aturan praktis yang sama berlaku. Contoh, dalam lingkungan 2D murni, pendeteksian tabrakan bekerja sangat sangat berbeda dibandingkan dalam 3D.

Penting Matematika Area: THE Lokasi paling penting untuk mesin Dev untuk menjadi akrab dengan adalah Linear Aljabar dan Topik Aljabar lebih maju (Quaternions). Cukup sederhana, jika Anda merasa nyaman dengan Aljabar Linier (dan maksud saya di luar perkalian Matriks sederhana), awal yang baik untuk Anda.

Selanjutnya Geometri, yang terhubung dengan baik ke Aljabar Linier di Engine Dev, dan mungkin tidak perlu disebutkan lagi.

Lebih jauh, tidak ada salahnya untuk memiliki pemahaman yang kuat tentang Kalkulus Dasar. Ini berguna saat menangani Mesin Fisika atau Topik Shading yang lebih canggih.

Topik menarik lainnya adalah: Combinatorics, Statistics

Fisika: Tidak wajib, JIKA Anda bermaksud membuat game sederhana. Tidak sakit, tetapi Anda akan baik-baik saja dengan fisika SMA dalam hal ini.

Jika Anda berpikir untuk menulis Mesin fisika, atau menerapkan Arsitektur yang ada, maka ya, itu wajib. Tapi jangan takut, ada banyak Buku Fisika yang ditulis khusus untuk Game-Devs. Ingatlah, bacalah ini SEBELUM Anda mulai membuat kode permainan dengan fisika. Jika gim Anda memiliki fisika, Mesin-mesin ini akan mengikat secara mendalam ke dalam arsitektur inti Anda.

AI: Jujur saja, jika AI adalah Minat utama Anda, saya tidak akan repot-repot menulis seluruh Mesin. AI jauh lebih menyenangkan untuk dilakukan ketika Anda memiliki Arsitektur yang ada untuk dimainkan. Menulis Mesin akan menyusahkan, dan akan cukup lama sampai Anda dapat menerapkan Algoritma AI yang menyenangkan.

Jenis Game apa yang ingin Anda kembangkan? Mungkin saya bisa menguraikan lebih lanjut tentang Poin-poin ini dengan informasi ini.


Terima kasih atas jawaban terperinci Anda. Sebagai jawaban untuk pertanyaan Anda .. yah pada saat ini saya tidak punya ide di otak saya, tetapi ingin mengembangkan beberapa mesin game 3d. Tetapi berpikir lebih baik untuk memulai dengan beberapa permainan 2d dan mengenal lingkungan. Sebelum semua ini saya harus memainkan beberapa game untuk mengetahui tampilan dan rasa game (karena saya tidak pernah bermain video game :-)). Sehingga mudah bagi saya untuk memahami terminologi buku dan hal-hal lain. Saya menemukan di bawah ini sangat membantu,
droid

maaf melewatkan tautan di komentar saya sebelumnya: gamedev.stackexchange.com/questions/8502/…
droidsites

Di masa lalu saya akan merekomendasikan agar Anda mulai dengan game 2D terlebih dahulu jika Anda ingin mengembangkan game 3D. Namun, dengan pemberontakan Arsitektur seperti XNA, saya percaya akan lebih menyenangkan untuk terjun langsung ke 3D. Sudahkah Anda melihat C # / XNA? Seharusnya tidak menjadi masalah mengingat latar belakang pemrograman Anda
Michael Kissner

Tidak, saya belum memeriksanya. Yap ... tidak masalah untuk menggunakan C #. Tapi saya sangat tertarik dengan jenis python :-)
droidsites

Jika Anda tertarik pada Python dan Anda lebih tertarik untuk membangun game daripada membangun teknologi untuk membangun game, Anda bisa melihat Panda3D, atau Blender Game Engine.
Sean Middleditch

1

Meskipun mungkin valid untuk bertanya struktur data mana yang paling banyak digunakan dalam pengembangan game, jauh lebih valid untuk bertanya struktur data mana yang digunakan untuk masalah tertentu. Saya dapat dengan mudah menyatakan bahwa tabel hash adalah super umum dalam game, tetapi itu tidak akan memberi tahu Anda apa pun yang berguna dalam hal kapan dan di mana untuk menggunakan (dan tidak menggunakan!) Tabel hash dalam kode Anda sendiri. :)

Dalam hal matematika, Anda harus memiliki pemahaman yang kuat tentang aljabar linier (vektor, matriks, penyelesaian sistem linear, dll.), Pemahaman trigonometri yang sangat kuat, dan setidaknya pemahaman dasar tentang kalkulus (turunan sederhana dan integrasi) . Setiap kursus aljabar linier tingkat perguruan tinggi pengantar harus membuat Anda berada di jalan yang benar, jika tidak mengajarkan Anda tentang semua yang perlu Anda ketahui untuk mulai bekerja dengan prinsip-prinsip grafis 3D umum. Saya juga menautkan buku di bawah ini yang menurut Anda cukup membantu.

Untuk fisika, Anda dalam perjalanan. Fisika dapat dibagi menjadi dua kategori yang berbeda: deteksi tabrakan dan respons tabrakan. Anda benar-benar harus tahu matematika di balik deteksi tabrakan, karena matematika itu kurang lebih identik dengan apa yang perlu Anda lakukan grafik (terutama untuk membangun pohon dan peta yang Anda butuhkan untuk penyumbatan), dan Anda akan menggunakan hal itu untuk Banyak logika game Anda juga.

Respons tabrakan dapat bervariasi dari "sederhana" hingga tingkat kerumitan yang konyol, dan bahkan hal-hal sederhana dapat menjadi non-intuitif pada awalnya. Saya akan sangat, sangat menyarankan Anda menyerahkan barang-barang itu ke perpustakaan yang ada seperti Bullet, Havok, PhysX, atau sebagainya (atau Box2D jika Anda bekerja pada gameplay 2D) sampai dan kecuali Anda merasa nyaman dengan matematika dan algoritma yang ada pengetahuan dan memutuskan Anda ingin mempelajari cara kerja mesin fisika. Saya kemudian akan merekomendasikan Anda membangun mesin fisika 2D yang sangat sederhana sebagai upaya pertama Anda. Mesin fisika 3D adalah binatang buas yang sangat kompleks, dan (bisa dibilang) sejauh ini merupakan bagian yang paling rumit dan sulit dalam pemrograman game, itulah sebabnya mengapa mesin fisika adalah teknologi pihak ketiga yang paling umum dilisensi yang digunakan dalam permainan. Anda hanya tidak melihat sangat banyak game yang tidak t menggunakan Havok atau PhysX di dunia profesional, terlepas dari berapa banyak game yang memiliki mesin grafis buatan rumah sendiri dan kode mesin inti. Bahkan perusahaan yang tidak melakukan apa pun selain membuat mesin permainan biasanya melisensi mesin fisika, misalnya Unreal hanya menggunakan PhysX daripada memasukkan mesin fisika sendiri.

Saya akan merekomendasikan buku-buku berikut untuk membantu Anda memulai. Yang pertama adalah buku tingkat pengantar tentang matematika dasar yang perlu Anda ketahui sebagai programmer game 3D:

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

Yang kedua adalah buku yang terdeteksi untuk algoritma pendeteksian benturan (bukan respons benturan!) Yang akan membantu pengodean grafik dan pengetikan fisika Anda:

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.