Dengan jawaban Sean dan Blue yang luar biasa mengenai keterbatasan platform fisik dan keputusan pro-kontra, saya akan memperluas komentar ke dalam pendekatan yang berbeda:
Mengapa Anda Mungkin Harus Mengisi Ulang Level Secara Lengkap
Jadi, panggilan loadLevel () Anda berfungsi dengan baik, ya! Anda mengalirkan informasi file level, dan melangkah membangun dunia berdasarkan itu, membuat objek dan memuat tekstur dan suara saat Anda pergi. Kemudian, ketika semuanya selesai - atau dilakukan "cukup" untuk membiarkan permainan dimulai, Anda memanggil startPlay () dan dunia Anda terungkap dan musik Anda mulai diputar.
Sekarang ketika Anda selesai dengan level, atau melarikan diri ke menu, atau keluar dari game, Anda memanggil unloadLevel () untuk membebaskan semua sumber daya dan memori yang telah Anda pegang untuk memungkinkan pengalaman yang lancar.
Sekarang, apa yang terjadi ketika Anda ingin menambahkan fitur "Tingkat Restart"? Baik...
unloadLevel(currentLevel);
loadLevel(currentLevel);
startPlay();
Dan Anda selesai! Tidak ada kode baru, hanya beberapa fungsi sederhana panggilan paling banyak, dan Anda sudah menulis dan men-debug semua itu sehingga sekarang Fitur Restart mengkilap baru Anda dicoret dari daftar Anda, dan mungkin tidak pernah ditemui lagi - kode tanpa cacat, tanpa karat adalah jenis terbaik! Pindahkan kode ke fungsi restartCurrentLevel () dan Anda dapat melipat kode itu dan tidak pernah melihatnya lagi - mungkin setelah memastikan ada level untuk memulai kembali, tentu saja :)
Tetapi kemudian Anda bertanya-tanya apakah ini bukan pemborosan, membongkar hal-hal yang baru saja akan Anda muat kembali. Nah, jika level dan sumber daya Anda kecil maka yang paling Anda dapatkan adalah beberapa detik waktu buka setiap kali "Restart" dipanggil bahkan pada sistem yang lambat (dan mungkin smartphone yang lebih tua), jadi siapa yang peduli? "Optimasi prematur", Anda memiliki hal-hal yang lebih baik dengan waktu Anda.
Ah, tetapi sekarang level Anda bertambah dan tekstur Anda menjadi lebih detail dan soundtracknya menjadi renggang dalam 512kbps dengan saluran terpisah untuk setiap lapisan suara dan musik (sepertinya ide yang bagus pada saat itu, meskipun Anda tidak ingat mengapa. ..) dan sesuatu tentang "ray voxel yang bergantung pada negara asal, menelusuri matriks transformasi Fourier multidimensi" yang menurut Anda benar-benar dibuat-buat dan bukan hal yang nyata, dan pemuatan level sebenarnya membutuhkan waktu sekarang dan permulaannya mengganggu Anda. Anda bahkan telah diuji dengan orang-orang nyata dan mereka benar-benar menunjukkan ketidaksukaan untuk waktu tunggu yang lebih buruk daripada game yang serupa (Anda tidak mengharapkan ibu kota MMORPG dengan 100 pemain dimuat sepenuhnya dalam <2 detik, bukan?), dan itu masalah.
Jadi, bagaimana Anda mengoptimalkan? Nah, jika tingkat re -loading adalah masalah, maka tidak tingkat pembebanan masalah? Jika Anda berpikir itu hanya memuat ulang, mengapa orang-orang memuat ulang level Anda jauh lebih sering daripada mereka hanya memuat level di tempat pertama? Kedengarannya seperti masalah bermain game, bukan masalah rekayasa kode. Siapa yang berpikir menyenangkan untuk memuat ulang level berulang-ulang, dan hanya berharap itu lebih cepat daripada sepenuhnya bisa dihindari ?
Perbaiki masalah sebenarnya terlebih dahulu!
Tetapi katakanlah gim Anda dirancang sehingga Anda harus memulai ulang setidaknya sekali-sekali, dan waktu muatnya cukup lama sehingga OK untuk dilakukan sekali dan sama sekali tidak dapat dihindari, tetapi Anda tidak ingin harus melakukannya lagi. Game macam apa ini? Sepertinya sedikit masalah aneh ... mungkin gim seperti Portal beresolusi tinggi di mana diasumsikan kamu akan mengacaukan puzzle berulang kali?
Pertama-tama, Anda harus menyadari bahwa ini tidak akan sepele. Anda harus menulis kode yang benar-benar baru dan belum diuji, dan ini "tergantung pada keadaan" sehingga Anda bahkan mungkin tidak tahu apa yang akan atau tidak akan digunakan kembali di antara permainan level. Apakah ada elemen acak, memunculkan, tekstur variabel (apakah kerangka Anda kadang-kadang hanya memakai baju besi?), Atau elemen perubahan lain di tingkat Anda? Apakah ada hal-hal yang berbeda dengan pemain, seperti pakaian atau model yang disesuaikan atau warna / pintu / perangkap?
Anda akan melakukan perbandingan, dan banyak dari mereka. Anda akan mengulang-ulang elemen-elemen level, membandingkan apa yang akan dibutuhkan versus apa yang dimuat sekarang (apa yang Anda lakukan dengan hal-hal yang dimuat untuk level terakhir tetapi tidak untuk yang ini - lepaskan atau tahan untuk mencegah masa depan. beban?). Jika ini benar-benar masalah besar untuk gim Anda, Anda mungkin ingin mengubah kode muat / bongkar untuk melihat apakah ada sesuatu yang sudah dimuat sebelum memuatnya (membuat kode multiguna tetapi berpotensi memperkenalkan bug baru ke fitur yang sebelumnya berfungsi, dan fungsi-fungsi yang dengan hati-hati melepaskan sumber daya yang tidak akan digunakan dalam waktu dekat). Mendesah.
Apa pun yang Anda lakukan, meskipun gim Anda sederhana, Anda akan masuk ke bug yang tidak jelas yang didasarkan pada status level / pemain saat level dimulai kembali yang tidak terjadi saat Anda memuat level pertama kali. Jadi, Anda bisa menulis pembaruan game dengan teks seperti:
"Menjatuhkan helm di atas bom ke ubin yang memiliki ledakan rudal di dekatnya yang juga dalam 200 piksel air tidak akan lagi merusak data game Anda atau menyebabkan game crash."
Alasan Nyata Kebanyakan Game Jangan repot-repot
Pernahkah Anda memperhatikan bahwa kebanyakan orang hanya mengecat atau mengeringkan dinding di atas dinding mereka yang sudah ada alih-alih dilepas ke lapisan dasar, atau meletakkan karpet tepat di atas lantai kayu alih-alih menariknya ke atas?
Fakta sederhananya adalah itu semua lebih berfungsi untuk imbalan minimal. Melukis di atas dinding Anda yang sudah ada berfungsi dengan baik sebagian besar waktu , dan nilai merobek lantai kayu seringkali minimal atau tidak ada.
Hal yang sama berlaku dalam perangkat lunak, dari game ke Power Point Presentations multimedia - jika semua yang Anda lakukan adalah mencukur beberapa detik dari layar memuat orang menghabiskan 1% dari waktu mereka melihat, maka itu lebih baik sangat sepele untuk dilakukan atau Anda mendapatkan pengembalian yang sangat buruk pada waktu yang Anda investasikan.
Jadi, sebagian besar game tidak mengganggu, dan saya kesulitan memikirkan banyak game di mana memuat layar membuat game yang lebih baik kurang berharga, kecuali beberapa contoh ekstrem; contoh ekstremnya adalah di mana mengoptimalkan pemuatan tingkat yang lebih cepat masuk akal, dan itu adalah sebagian kecil dari gim yang membuatnya ke publik, dan mungkin bahkan sebagian kecil dari gim yang tidak ada yang pernah melihat karena mereka tidak pernah dirilis.