Sama seperti game raksasa dunia terbuka memuat peta besar secara dinamis, tidak bisakah kita memuat peta, menu, dan hampir semua antarmuka atau pengaturan 3D secara terpisah melalui metode pemuatan dinamis yang sama? Tanpa mengubah lingkungan, sepertinya antarmuka dan berbagai lokasi dalam game semuanya dapat dimuat secara dinamis dengan cara yang sama seperti peta dunia terbuka besar dimuat saat Anda berjalan melaluinya.
Mengapa ini tidak dilakukan? Saya melihat begitu banyak game modern di mana Anda harus menunggu sebentar atau lebih ketika pertandingan / peta / level sedang dimuat. Saya tahu ada latensi yang terlibat dengan menghubungkan rekan tetapi itu tidak membutuhkan lebih dari beberapa saat dalam pengalaman saya. Masalah apa yang ada dengan konsep ini untuk menghentikannya agar tidak digunakan untuk menghilangkan waktu pemuatan yang terkait dengan memuat peta / level / data antarmuka?
Jawaban:
Jawabannya adalah ya, ini bisa dilakukan, dalam banyak kasus, setidaknya sampai batas tertentu.
Banyak alasan mengapa hal itu tidak dilakukan:
sumber
Jika menu Anda memiliki banyak aset, aset tersebut membutuhkan waktu untuk dimuat. Anda juga tidak tahu urutan orang yang akan menavigasi menu Anda. Mereka dapat mengklik opsi -> kembali -> kredit, atau kredit -> kembali -> memulai permainan secara berurutan. Jadi tidak ada strategi streaming yang masuk akal.
Dalam permainan dunia terbuka, Anda tahu pemain tidak akan bergerak lebih cepat daripada kecepatan tertentu, jadi Anda tahu Anda tidak perlu memuat versi detail dari lokasi yang jauh sampai mereka mendekatinya.
sumber
Faktor besar dalam kelayakan solusi semacam itu adalah kepastian dari apa yang perlu dimuat. Jika pemain memuat level yang sama sekali baru tanpa cara mengantisipasi apa yang akan mereka pilih, solusi yang sepenuhnya mulus tidak mungkin dilakukan. Misalnya, ketika pemain dapat memilih level apa saja dalam permainan untuk dimainkan, atau jika mereka memiliki kebebasan untuk berteleportasi ke area yang sepenuhnya berbeda dalam permainan dunia terbuka.
beberapa Halo game mulai memuat level yang dipilih di latar belakang saat menyiapkan game multi-pemain. Ini mengurangi waktu tunggu ketika pemain siap untuk memulai, dan mungkin yang terdekat bisa mendapatkan solusi seperti itu ketika pemain dapat dengan bebas memilih level yang berbeda dengan aset yang sama sekali berbeda.
Tentu saja, Anda mengatakan "tanpa mengubah lingkungan", tetapi saya hanya ingin membuka Halo contoh , karena itu sesuatu yang ingin saya lihat lebih banyak.
Dalam kampanye yang berkelanjutan, atau kapan pun pengembang memiliki banyak kendali atas lokasi pemain, solusi seperti itu tentu layak, seperti yang Anda katakan. Naughty Dog suka menghapus waktu pemuatan, dengan Jak dan Daxter yang terkenal tidak memiliki waktu pemuatan di PS2, dan game yang belum dipetakan memiliki waktu pemuatan tunggal di awal.
Namun, bagi banyak orang, memuat waktu bukanlah masalah yang perlu diselesaikan . Atau itu adalah masalah yang sangat rendah pada prioritas pengembang, ketika selalu ada lebih banyak yang bisa dilakukan antara sekarang dan tanggal rilis .
sumber
Waktu.
Anda perlu waktu untuk menghemat waktu. Atau Anda butuh uang untuk menebus kekurangan waktu. Bagaimanapun, "Tidak ada waktu pemuatan!" adalah fitur yang hanya dapat ditawarkan oleh mereka yang memiliki kemewahan untuk membelinya. Dibutuhkan perencanaan yang sangat hati-hati, dan Anda perlu memahami dengan baik apa yang Anda lakukan dan tidak semua pengembang game memiliki sumber daya untuk menggunakannya.
sumber
Pada akhirnya, ini sumber daya yang terbatas.
Game-game open-world dan khususnya MMO sangat dirancang untuk dapat diprediksi - Anda selalu tahu data apa yang perlu dimuat jauh sebelumnya. Anda dapat melihat ini dalam arsitektur dunia - kapan pun ada banyak sumber daya yang perlu dimuat, Anda memiliki beberapa cara untuk mencegah pengguna melihat hal-hal yang belum dimuat. Cara paling umum adalah gerbang dan pintu masuk yang menghalangi pandangan Anda ke area berikutnya untuk beberapa detik penting yang diperlukan untuk memuat. Sebagian besar MMO juga menggunakan model dan tekstur yang kurang rinci, yang mempersingkat waktu pemuatan.
Beberapa hal masih tidak dapat diprediksi, bahkan dengan desain yang cermat. Misalnya, mungkin ada spanduk khusus yang dikenakan oleh pemain, yang hanya ditampilkan setelah data yang relevan telah dikirim ke komputer Anda melalui jaringan. Tentu saja, sebagian besar gim mencoba membatasi ini agar lebih murah (mis. Spanduk Diablo III adalah komposisi sederhana, mudah dikirim karena hanya beberapa byte data). Tetapi pada akhirnya, kadang-kadang Anda hanya perlu menunggu data didapat. Dan Anda perlu menunjukkan sesuatu saat pemuatan sedang berlangsung - dalam banyak game, ini dapat menyebabkan jebol saat Anda melihat model abu-abu, detail rendah yang ditampilkan sambil menunggu data dimuat.
Dan dengan semua ini, memuat seperti ini adalah masalah yang diselesaikan (TM), tetapi itu tidak membuatnya mudah. Dibutuhkan banyak sumber daya dan waktu, baik dalam mengoptimalkan sumber daya dan pemanfaatannya untuk memastikan pengalaman bermain yang lancar, dan dalam kode itu sendiri - kode asinkron sulit. Ini juga bisa berarti pengalaman permainan yang berkurang bahkan jika semuanya berjalan dengan baik - itu berarti Anda harus memastikan Anda tidak melewati kemampuan bandwidth penyebut umum terendah Anda, jadi Anda perlu menurunkan kualitas model dan tekstur, atau membuatnya kurang bervariasi, dan geometri duniamu sangat terbatas. Jika tidak, gim ini akan sangat tidak dapat dimainkan - sementara saya ingat orang yang memainkan gim yang membutuhkan waktu 10 menit (atau bahkan lebih lama!) Untuk memuat peta, hanya karena komputer mereka tidak cukup untuk mengerjakan tugas, gim tersebut itu sendiri berjalan dengan baik setelah itu. Jika itu memuat mulus, gim hanya akan membekukan atau menampilkan tekstur dan model jelek sepanjang waktu sambil menunggu data untuk dimuat. Pemuatan yang ditangguhkan bukan merupakan win-win, ini merupakan trade-off karena sebagian besar hal dalam rekayasa :)
sumber
Salah satu alasan pemuatan dinamis tidak selalu merupakan solusi ideal yang menurut saya belum dipertimbangkan oleh jawaban lain juga merupakan pop-in dan artefak grafis lainnya.
Prediksi tentang apa yang dimuat dan apa yang tidak dimuat sering gagal, dan itu bisa menjadi pengalaman buruk ketika melakukannya. Salah satu contoh terburuk dari ini adalah di Rage by id Software. Setidaknya dalam versi awal, sistem megatexture membuatnya sehingga bahkan sesuatu seperti berputar terlalu cepat membuat sejumlah besar tekstur dan bahkan artefak geometri muncul sebelum perlahan memudar.
Masalah-masalah ini bukan masalah, semuanya sudah dimuat sebelumnya.
Sesuatu yang perlu dipertimbangkan bukan apa yang harus dimuat, tetapi apa yang harus dibongkar. Ketika Anda hanya punya begitu banyak anggaran untuk ruang, ketika Anda memuat hal-hal baru, apa yang lama untuk dihapus? Seberapa yakin Anda bahwa aset tersebut tidak akan digunakan dalam beberapa detik ke depan? Ini adalah masalah yang sulit dipecahkan.
Jika setiap kondisi permainan cukup kecil untuk masuk ke dalam anggaran sistem umum, maka setiap keuntungan jelas, alih-alih memuat, Anda langsung menuju ke tingkat dan hal-hal memudar saat Anda bermain. Namun, seperti yang disarankan oleh jawaban utama, waktu pemuatan untuk gim kecil tidak akan terlalu luas untuk dikhawatirkan.
Saya pikir layak untuk memikirkan alasan mengapa sistem pemuatan dinamis diciptakan pada awalnya, karena Anda tahu bahwa beberapa kondisi gameplay Anda mungkin terlalu besar untuk sistem umum dan permainan dengan ukuran seperti itu tidak mungkin untuk dimuat sebelumnya seluruhnya.
sumber
Satu alasan umum adalah tidak selalu sama mudahnya untuk menentukan apakah suatu sumber daya akan dibutuhkan dalam waktu dekat.
Karena Anda menggunakan paging medan sebagai contoh, saya akan melanjutkannya.
Sangat masuk akal jika Anda berada di kisi peta tertentu untuk memuat semua kisi peta yang bersebelahan di latar belakang. Anda tahu pengguna dapat, paling-paling, memasukkan salah satunya. Ketika mereka melakukannya, Anda dapat membongkar yang tidak lagi berdampingan dan memuat yang sekarang. Ini yang Anda catat.
Sekarang bayangkan perjalanan cepat. Sama sekali tidak ada cara untuk memprediksi ke mana pengguna dapat memilih untuk pergi. Mereka memiliki (biasanya) hampir seluruh peta untuk dipilih. Pra-memuat semua lokasi perjalanan cepat yang mungkin akan mengambil terlalu banyak memori (Anda mungkin juga memuat seluruh peta ke dalam memori di tempat pertama) dan terlalu banyak waktu (dengan asumsi Anda tidak memiliki seluruh peta yang dimuat sebelumnya). Kapan ini akan terjadi? Kapan mereka membuka dialog perjalanan cepat? Masalahnya hanya akan menjadi beberapa kali lebih buruk!
Inilah sebabnya mengapa sebagian besar game dengan halaman "tanpa beban" masih memiliki layar muat untuk perjalanan cepat. Itu juga mengapa, jika Anda bergerak cukup cepat, kadang-kadang Anda dapat memicu memuat layar di bahkan game tanpa peta tanpa beban (saya ingat pernah melakukan ini di TES Oblivion).
Sekarang bayangkan ini diterapkan pada sumber daya game secara umum, di mana hubungan sering tidak jelas. Anda akhirnya harus memuat semua opsi yang mungkin, atau mulai menebak apa yang akan dilakukan pengguna. Menebak itu mahal (baik dalam pengembangan dan CPU) dan kekacauan yang kompleks untuk program. Contoh spesifik:
Mungkin ada beberapa cara untuk mengatasi beberapa masalah ini, tetapi itu membutuhkan biaya kehidupan nyata . Sebagian besar gamer menerima layar pemuatan yang masuk akal dan, jika ada, cenderung bersedia menghabiskan lebih banyak pada perangkat keras untuk memitigasi mereka. Ini dilihat sebagai masalah perangkat keras , bukan masalah permainan , kecuali terlalu berlebihan atau mengganggu (seperti memuat di tengah level).
Dan perlu diingat, pemuatan latar belakang tidak gratis. Biasanya ada dampak minimal dari penggunaan medan pemuatan latar belakang modern dan beberapa file model, tetapi jika Anda tiba-tiba menebak berbagai sumber daya yang berbeda, terutama jika Anda tidak memiliki metrik yang andal dan harus membongkar banyak sumber daya dan memuat yang berlebihan , Anda dapat menggiling sistem menjadi debu.
Gagasan memuat latar belakang adalah untuk menggunakan siklus mati untuk penggunaan yang lebih baik, tetapi hanya ada begitu banyak siklus mati untuk digunakan. Hal yang sama berlaku untuk memori - pre-loading secara substansial dapat meningkatkan penggunaan memori game. Dengan layar pemuatan, Anda bisa membuang sumber daya yang ada. Tidak ada kemewahan dengan pemuatan latar belakang, artinya bisa menggandakan kebutuhan memori gim pada hitungan itu saja.
sumber
Ini adalah masalah umum yang berasal dari kenyataan bahwa permainan adalah produk soft-realtime, di mana keterlambatan pengiriman konten tidak berguna seperti pengiriman tepat waktu (berbeda dengan hard-realtime, seperti mobil di komputer, di mana keterlambatan pengiriman bisa tidak lebih baik daripada tidak ada pengiriman sama sekali). Anda harus memutuskan apa yang memuat dan di mana.
Terkadang, pengiriman terlambat sangat buruk. Misalnya, jika Anda diizinkan untuk berlarian di dunia sebelum semua dinding dimuat, Anda bisa berada di belakang tembok yang tidak akan pernah bisa Anda lewati jika permainan memuat dinding sebelum membiarkan Anda bergerak. Tidak selalu mudah untuk mengatakan kapan Anda bisa pergi dengan memuat konten "malas", dan kapan Anda harus menjamin bahwa konten tersebut dimuat sepenuhnya.
Pemuatan dinamis juga jauh lebih rumit. Anda selalu harus mempertimbangkan apa yang harus dilakukan jika sumber daya belum dimuat. Ini menguras sumber daya pembangunan. Jauh lebih mudah untuk dikembangkan ketika Anda bisa mengandalkan sumber daya yang ada.
Latensi juga tidak selalu dapat diterima. Saya pernah mendengar kasus di Starcraft di mana Anda akan "menghangatkan" game Anda dengan memuat peta yang memiliki efek samping dari caching setiap model / gambar yang dimuat secara dinamis. Anda kemudian akan keluar, dan memainkan game secara normal. Untuk para gamer elit, ini meminimalkan kegagapan GUI yang sebenarnya mempengaruhi gameplay mereka. Mencoba membuktikan latensi mana yang dapat diterima pengguna dan mana yang tidak rumit.
sumber