Bagaimana cara membuat game dimainkan sebelum sepenuhnya diunduh?

75

Diablo 3 dan StarCraft 2 memiliki fitur yang bagus: Saya dapat mulai bermain sebelum game lengkap atau pembaruan selesai diunduh.

Saya kira Diablo 3 mengunduh file wajib seperti aset UI dan beberapa jala dan tekstur yang digunakan di beberapa level terlebih dahulu. Namun, ketika memulai permainan, saya dapat memilih level apa pun yang saya inginkan, dengan asumsi saya memiliki penyelamatan yang tepat. Saya tidak pernah mengalami keterlambatan seperti itu ketika bermain — mulai selalu sangat lancar.

Bagaimana cara kerjanya? Bagaimana saya bisa menerapkan fitur serupa?

nikitablack
sumber
2
World of Warcraft juga: P
Kroltan
3
Bagaimana halaman web dapat dilihat sebelum Anda mengunduh seluruh halaman web? Bagaimana pencarian Gambar Google menyajikan daftar gambar tanpa batas tanpa menggunakan waktu tak terbatas untuk mengunduh? Game lebih canggih tetapi sangat mirip.
Lie Ryan
2
@LieRyan: Mengenai "Game lebih canggih", kalimat itu tidak memiliki dasar sama sekali. Mungkin ada game yang lebih canggih, juga ada (dan melihat di toko aplikasi, itu sebagian besar perangkat lunak yang tidak menyelesaikan masalah serius) game yang secara besar kurang canggih daripada pencarian web skala besar yang menyebar ribuan server dan menangani & menyimpan miliaran permintaan pengguna setiap hari. Dan kemudian, pencarian hanyalah salah satu dari banyak fitur untuk perusahaan itu. Jadi tolong, lewati fase kehidupan dengan berpikir bahwa permainan pada dasarnya lebih kompleks daripada perangkat lunak "normal".
phresnel
1
@jhocking: Apakah Anda berbicara dengan saya? (jika demikian, lebih baik gunakan @ <username> jadi saya akan diberitahu) Nah, tidak terlalu pahit. Ketika saya masih muda, saya berpikir bahwa game-dev akan menjadi raja bukit rekayasa perangkat lunak. Saya hanya tahu lebih baik sekarang, terutama setelah rilis sejumlah kode sumber permainan komersial :) Ini adalah kesalahpahaman umum yang berulang-ulang muncul. Games-Dev benar-benar terlihat seperti Elite, tetapi dalam kenyataannya itu hanyalah spesialisasi pengembangan perangkat lunak, seperti Super Computing, Mesin Pencari, Pengenalan Gambar, Pemasaran Email, atau ERP untuk E besar.
phresnel
1
Hanya komentar singkat, saya punya bandwidth yang buruk di rumah ( biaya hidup di daerah pedesaan ), dan permainan tetap tidak dapat dimainkan untuk saya meskipun dikatakan, "dapat dimainkan". Saya harus menunggu "optimal". Kalau tidak, saya macet menunggu 5 menit untuk setiap layar memuat dan lag tidak nyata, jadi pasti mengunduh beberapa hal pada saat itu. Mungkin dapat melakukan pengujian lebih lanjut sendiri dengan membatasi bandwidth Anda.
DoubleDouble

Jawaban:

72

Aset seperti suara, video, model, dan tekstur adalah mayoritas unduhan dan untuk masing-masing aset ini ada beberapa versi. Beberapa versi ini untuk mendukung berbagai opsi grafik.

Dengan mengirimkan aset yang diperlukan untuk opsi grafis rendah terlebih dahulu (yang juga merupakan yang terkecil). Anda memiliki semua yang Anda butuhkan untuk memainkan permainan ini meskipun hanya memiliki sekitar 15% dari total aset yang diperlukan untuk mendukung setiap opsi grafik.

Anda dapat menguji ini dengan menginstal ulang StarCraft 2. Mainkan segera setelah itu akan membiarkan Anda kemudian pergi ke layar opsi grafis. Banyak opsi dan pengaturan tidak akan tersedia.

ClassicThunder
sumber
24
Anda juga dapat menerapkan teknik yang sama untuk seluruh peta atau level dalam game dengan linieritas yang sesuai - unduh level pertama terlebih dahulu, atau apalah. Guild Wars 2 hanya mengirimkan area audio dan mulai (ditambah sedikit tambahan) pada disk, misalnya.
Josh
12
Beberapa game (seperti game Blizzard) juga memiliki kemampuan untuk mengunduh aset sesuai permintaan, berdasarkan lokasi Anda saat ini di dalam game. Ini berfungsi seperti halnya aset yang sering disinkronkan secara asinkron dari hard drive lokal, tetapi dalam kasus ini dengan penundaan yang lebih besar sebelum aset yang diminta siap.
bcrist
1
IIRC, Diablo 3 menggunakan metode yang dijelaskan oleh Josh Petrie - itu dapat dimainkan segera setelah sumber daya (mungkin hanya versi berkualitas rendah seperti yang dijelaskan dalam jawaban ini), tetapi hanya UU I yang pada awalnya dapat dimainkan. Artinya, jika Anda cukup mencekik koneksi internet Anda, Anda akan dipaksa untuk berhenti dan membiarkan unduhannya menyusul setelah menyelesaikan Act I.
Aaron Dufour
1
Dengan kata lain, gim ini dapat berjalan secara teknis segera setelah dieksekusi diinstal. Ini bisa berupa beberapa megabita data. Seberapa jauh Anda bisa masuk ke dalam permainan tergantung pada berapa banyak aset yang tersedia. Gim yang menginstal dalam 20GB memiliki sekitar 19,9999GB data dan 0,0001GB kode yang dapat dieksekusi; selama dapat melanjutkan memuat data dari jaringan, game dapat berjalan dengan instalasi kurang dari 1%.
phyrfox
1
@ Brian Lihatlah riwayat sunting. Tidak ada yang menanyakan hal-hal itu ketika saya menulis jawabannya.
ClassicThunder
33

Saya pernah menerapkan ini untuk MMO. Suatu akhir pekan ketika mencoba menginstal WOW untuk putriku memerlukan waktu 48 jam, (tambalan, kesalahan unduhan, dll.) Jadi saya memutuskan untuk membuat solusi saya sendiri yang lebih baik.

Gim biasanya membutuhkan 10 GB data sebelum dapat berjalan. Tidak semua file sebenarnya dibutuhkan segera, tetapi permainan digunakan untuk menunggu sampai semua file ada di tempat. Solusi saya adalah membuat game berjalan secara lokal seperti biasa, tetapi EXE ditipu (menggunakan minifilter file Windows) untuk berpikir semua file sudah ada. Ketika file yang diminta bukan lokal, sistem file akan mengunduhnya dan menyimpannya. Permainan perlahan disalin secara lokal sesuai kebutuhan. Ketika ada bandwidth yang tersedia, file lain yang belum dibutuhkan menetes di latar belakang. Ini bekerja dengan SEMUA permainan tanpa perlu kompilasi ulang, karena driver minifilter saya punya file saat diperlukan.

Kelemahan terburuknya adalah latensi. Solusi saya adalah membuat model Rantai Markov kecil untuk memprediksi file mana yang mungkin diperlukan selanjutnya, dan memprioritaskan pemuat latar belakang. Ini bekerja seperti pesona, dan MMO kami dapat menjalankan hampir SEGERA setelah EXE dan beberapa memuat file layar lokal (~ 20 MB). Kami dapat mengeklik tautan di laman web dan menjalankan game 10+ GB kami dalam waktu sekitar 30 detik . Kami memiliki hit rate 99%, artinya ketika game membutuhkan file baru untuk pertama kalinya sudah ada di sana!

Saya akan dengan senang hati membantu orang lain menerapkan ini.

Chris Mayer
sumber
5
+1 dan Akan lebih bagus jika Anda dapat membagikan driver ini karena saya mencari sesuatu seperti itu dan akan membuatnya sendiri seperti yang Anda lakukan tetapi jika sudah selesai saya dengan senang hati akan menggunakannya.
Furkan Omay
5
Penggunaan menarik dari beberapa teknik yang cukup canggih. Anda harus benar-benar menulis posting blog tentang ini. :) Seberapa besar teknik pembelajaran mesin sebenarnya membantu? Seberapa baik mereka dapat memprediksi file apa yang dibutuhkan?
Paul Manta
1
@FurkanOmay hal-hal semacam itu hampir selalu menjadi milik perusahaan dari atasan seseorang. Jangan meminta orang untuk melanggar ketentuan kontrak mereka.
jwenting
@jwenting Dari apa yang saya mengerti, apa yang dia lakukan bukan untuk perusahaan tetapi untuk putrinya dan untuk game seperti WoW. Saya hanya bertanya dengan sopan, tidak ada yang dipaksa. Dia hanya bisa menolak dengan alasan apa pun dan semuanya akan baik-baik saja. Saya bertanya karena dia berkata "dia akan dengan senang hati membantu orang lain menerapkan ini" jadi saya tidak berpikir meminta setidaknya titik awal bukanlah ide yang buruk karena saya sudah mengatakan saya bersedia menerapkan ini dari tanah. naik.
Furkan Omay
3

Juga di beberapa game, area dunia game akhir dan file tertunda, hanya area wajib yang disimpan, dan juga dapat diinstal saat masih memainkan game.

Chantola
sumber
2

Untuk meringkas apa yang dikatakan beberapa orang, dan mungkin menambahkan beberapa informasi:

  • unduhan awal kecil, hanya file startup dan download manager untuk sisanya. Akan menyenangkan untuk memasukkan pembuatan akun, pembuatan avatar, dan mungkin zona awal dalam hal ini.
  • saat sedang berjalan, pengguna masuk dan membuat avatar mereka, mulai mengunduh hal-hal lain, zona level rendah dan file umum terlebih dahulu (seperti suara dan tekstur dasar, Anda menggunakannya kembali sebanyak mungkin di seluruh gim Anda)
  • saat pengguna maju melalui level, mulai pra-unduh zona yang akan datang dan konten lainnya
  • jika pengguna memilih opsi yang perlu diunduh, unduh varian resolusi rendah terlebih dahulu, maka saat dia bermain unduh versi resolusi yang lebih tinggi sesuai kebutuhan dan ganti versi beresolusi rendah yang ditampilkan dengan yang sedang berjalan. Dengan cara itu pengguna melihat sesuatu, dan secara bertahap kemuliaan penuh dari permainan terungkap (jika ia memiliki bandwidth yang cukup dan kekuatan komputer tentu saja)
  • ulangi sampai semuanya diunduh


Ini akan berarti beban jaringan yang lebih tinggi saat bermain, sampai semua konten di-cache secara lokal, tetapi beban burst awal yang lebih kecil pada server Anda serta menunggu yang lebih singkat dan lebih membuat frustrasi pengguna saat mereka awalnya mengunduh permainan.
Tentu saja jika pengguna memiliki koneksi jaringan yang lambat, ia mungkin masih mendapatkan pesan "harap tunggu, memuat konten" (sediakan itu) saat berpindah zona, atau Anda mungkin ingin memeriksa bandwidth saat awalnya memulai permainan dan jika terlalu rendah untuk mengunduh andal dengan cepat minta dia menunggu di sana dan kemudian untuk setidaknya seluruh tingkat pertama (dan kemudian lagi ketika memasuki zona yang belum sepenuhnya diunduh).
Ini untuk mencegah pengguna tertinggal di tengah gameplay yang sebenarnya karena koneksi jaringannya macet.

jwenting
sumber