Rumah > Java > javaTutorial > C++ : obsesi kelajuan dalam industri permainan

C++ : obsesi kelajuan dalam industri permainan

王林
Lepaskan: 2024-07-27 18:31:42
asal
614 orang telah melayarinya

C++ : speed obsession in the game industry

Bilakah kita benar-benar memerlukan kelajuan

C++ menjadi bahasa standard untuk permainan dan perisian grafik sejak dahulu lagi. Dan, ada sebab sebenar -- bekerja dengan grafik masa nyata dan fizik memerlukan prestasi tinggi. Memproses geometri, mengurus penimbal, pengiraan matriks - semua itu mengambil masa.
Tetapi, bagaimana pula dengan logik peringkat tinggi? Mekanik permainan, antara muka pengguna, pengurusan storan, permintaan rangkaian? Kestabilan dan keselamatan jauh lebih dituntut di sana, berbanding kelajuan.

Pengagihan tanggungjawab

Kami mungkin melaksanakan fungsi yang menuntut prestasi dalam bahasa yang disusun, seperti C++, dan memanggilnya daripada atur cara yang ditulis dalam bahasa dinamik, seperti Python.
Tetapi, hari ini kami sudah mempunyai perpustakaan yang didokumentasikan dengan baik dan mudah digunakan untuk Python (pygame, pyopengl, pyassimp, pybullet, numpy), yang dilaksanakan terutamanya pada C/C++ dan menyediakan fungsi untuk pengiraan berat, atau fizik/grafik khususnya. Kami mungkin tidak pernah menghadapi keperluan untuk melaksanakan perpustakaan tersebut sendiri.

Adakah C++ satu-satunya pilihan?

Adalah diterima umum, bahawa bahasa yang dikumpul sampah, seperti Java atau C#, adalah lebih perlahan daripada C++ dan tidak benar-benar memenuhi keperluan untuk pengiraan berat. Ini, sudah tentu, tidak benar.
C++ mungkin mengatasi Java atau C# dalam prestasi sebanyak 20-30% dalam beberapa kes khas, tetapi apabila ia melibatkan abstraksi masa jalan, seperti penghantaran fungsi dinamik, interaksi bahasa, tugas tak segerak, pengurusan koleksi teks atau abstrak, Java dan C# menunjukkan kecekapan yang jauh lebih tinggi daripada C++.
Selain itu, kami boleh menjalankan program Python kami pada masa jalan yang sama dengan Java atau C#, menggunakan Jython atau IronPython. Ia membawa banyak faedah, seperti memori kutipan sampah yang dikongsi, sistem jenis dan akses mudah kepada perpustakaan C# atau Java terus keluar dari kotak. Pada Java dilaksanakan bahasa dinamik yang bagus seperti Clojure dan Groovy, yang mempunyai akses lengkap ke Pustaka Kelas Java dan berkongsi faedah yang dinyatakan sebelum ini.

Apakah yang sebenarnya mempengaruhi prestasi?

Hari ini komputer peribadi jauh lebih pantas, berbanding 15-20 tahun yang lalu. Tetapi, kebanyakan program atau permainan desktop tidak berfungsi secepat yang dijangkakan (walaupun ia masih kebanyakannya dilaksanakan pada C/C++). Hari ini kita memerlukan algoritma dan pendekatan berkesan yang baik, daripada hanya kelajuan bahasa. Fungsi dengan kerumitan berterusan pada Python adalah lebih baik daripada fungsi dengan kerumitan linear pada C. Untuk melukis 100 pokok dengan 15 baris kod Python adalah lebih baik daripada melukis 500 pokok dengan 300 baris kod C++.

Ambil berat tentang permainan, bukan bahasa

Ia tidak begitu penting, bahasa apa yang anda gunakan, apabila anda tidak mempunyai sebarang permainan yang dibuat, bukan?
Membuat permainan pada C++ adalah lebih menuntut dan meletihkan, daripada melakukan perkara yang sama pada Python atau Ruby. Apabila anda membuat 1 permainan dengan C++, anda akan membuat 10 permainan dengan Python. Apabila anda membuat 5 permainan dengan Python, ia akan menjadi 0 permainan dengan C++.
Marilah kita mengambil berat tentang permainan dan keseronokan, jika tidak, apa gunanya?

Atas ialah kandungan terperinci C++ : obsesi kelajuan dalam industri permainan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan