Kişi tamamen indirilmeden önce oyunları nasıl oynanabilir hale getirir?


75

Diablo 3 ve StarCraft 2'nin hoş bir özelliği var: Oyunun tamamını veya güncellemenin indirilmesi bitmeden oynamaya başlayabilirim.

Sanırım Diablo 3, önce UI varlıkları ve bazı düzeylerde kullanılan bazı kafes ve dokular gibi zorunlu dosyaları indirir. Ancak, bir oyuna başlarken, uygun tasarruflarım olduğunu varsayarak istediğim herhangi bir seviyeyi seçebilirim. Oynarken böyle bir gecikme yaşamadım - başlangıç ​​her zaman çok yumuşak.

Bu nasıl çalışıyor? Benzer bir özelliği nasıl uygulayabilirim?


2
World of Warcraft da: P
Kroltan

3
Tüm web sayfalarını indirmeden önce web sayfaları nasıl görüntülenebilir? Google Görsel araması, indirmek için sonsuz zaman kullanmadan sonsuz bir resim listesi nasıl sunabilir? Oyunlar daha sofistike ama oldukça benzerler.
Yalan Ryan

2
@LieRyan: "Oyunlar daha karmaşıktır" söz konusu olduğunda, bu ifadenin hiçbir temeli yoktur. Daha sofistike oyunlar olabilir, aynı şekilde (ve uygulama mağazalarına bakıldığında, ciddi sorunları çözmeyen yazılımların büyük çoğunluğu) binlerce sunucuyu yayan ve büyük ölçüde ölçeklenebilir bir web aramadan daha az karmaşık olan oyunlar olabilir. Her gün milyarlarca kullanıcı isteğini yerine getirir ve saklar. Ve sonra, arama o şirket için pek çok özellikten sadece biridir. Bu nedenle, lütfen oyunların "normal" yazılımdan daha karmaşık olduğunu düşünmenin yaşam aşamasını geçirin.
phresnel

1
jhocking: Benimle konuştun mu? (eğer öyleyse, @ <username> @ kullanımı daha iyi olacak, bu yüzden bana bildirilecek) Hayır, gerçekten acı değil. Küçükken games-dev'in yazılım mühendisliği tepesinin kralı olacağını düşündüm. Sadece şimdi daha iyi biliyorum, özellikle de ticari kodların bir takım kaynak kodunun yayınlanmasından sonra :) Açılmayı tekrarlayan yaygın bir yanılgı. Games-Dev gerçekten Elite gibi gözüküyor, ancak gerçekte bu, Süper Bilgi İşlem, Arama Motorları, Görüntü Tanıma, E-posta Pazarlama veya büyük E'ler için ERP'ler gibi yazılım geliştirmenin bir başka uzmanlığı.
phresnel

1
Kısa bir yorum, evde yetersiz bant genişliğine sahibim ( kırsal alanda yaşama maliyeti ) ve "oynanabilir" dediği halde oyun benim için oynanamaz. "Optimal" için beklemeliyim. Aksi halde, her yükleme ekranı için 5 dakika beklemekte zorlanıyorum ve gecikme gerçek değil, bu nedenle kesinlikle o zaman bazı şeyler indiriliyor. Bant genişliğinizi sınırlayarak muhtemelen kendi başınıza daha fazla test yapabilirsiniz.
DoubleDouble,

Yanıtlar:


72

Ses, video, modeller ve dokular gibi varlıklar indirme işleminin çoğunluğudur ve bu varlıkların her biri için birden çok sürüm bulunur. Bu çoklu versiyonlar çeşitli grafik seçeneklerini desteklemektir.

İlk önce düşük grafik seçeneği için gereken varlıkları göndererek (ki en küçük olanlar da olur). Her grafik seçeneğini desteklemek için gereken toplam varlıkların yalnızca% 15'ine sahip olmasına rağmen, oyunu oynamak için ihtiyacınız olan her şeye sahipsiniz.

Bunu StarCraft 2'yi tekrar yükleyerek test edebilirsiniz. 2. Grafiksel seçenekler ekranına geçmenizi sağlayacak en kısa sürede oynatın. Birçok seçenek ve ayar kullanılamayacak.


24
Aynı tekniği uygun doğrusallığa sahip oyunlardaki tüm haritalara veya seviyelere de uygulayabilirsiniz - önce ilk seviyeleri indirin, ya da başka bir şey. Guild Wars 2, örneğin sadece disk üzerine ses ve başlangıç ​​alanları (artı biraz daha fazla) sevk etti.
Josh

12
Bazı oyunlar (Blizzard oyunları gibi), oyundaki mevcut konumunuza bağlı olarak, talep üzerine varlıkları indirme özelliğine de sahiptir. Bu, varlıkların genellikle yerel sabit diskten eşzamansız olarak nasıl aktarıldığı gibi çalışır, ancak bu durumda, istenen varlıklar hazır olmadan önce daha büyük bir gecikmeyle.
bcrist

1
IIRC, Diablo 3, Josh Petrie tarafından tarif edilen metodu kullanır - kaynaklar en kısa sürede oynanabilir hale gelir (muhtemelen bu cevapta açıklandığı gibi sadece düşük kaliteli versiyon), ancak sadece ilk önce Oynanabilir. Yani, internet bağlantınızı yeterince
Aaron Dufour

1
Diğer bir yol ise oyun teknik olarak en kısa sürede çalıştırabilirsiniz çalıştırılabilir yüklenir. Bu sadece bir kaç megabayt veri olabilir. Oyuna ne kadar girebildiğiniz, kaç varlığın mevcut olduğuna bağlıdır. 20GB'a yüklenen bir oyunda yaklaşık 19.9999 GB veri ve 0.0001 GB çalıştırılabilir kod bulunur; Ağdan veri yüklemeye devam edebildiği sürece, oyun kurulumun% 1'inden daha azını çalıştırabilir.
phyrfox 23:14

1
@Brian Düzenleme geçmişine bakın. Cevabı yazdığımda hiçbir şey sormamıştı.
ClassicThunder

33

Bunu bir kez MMO'lar için uyguladım. Kızım için WOW'u yüklemeye çalışırken bir hafta sonu 48 geçen saat sürdü (yamalar, yükleme hataları vb.) Bu yüzden kendi çözümümü kendim yapmaya karar verdim.

Oyunun genellikle, çalıştırmadan önce 10 GB veri söylemesi gerekiyor. Hemen hemen tüm dosyalara ihtiyaç duyulmaz, ancak oyunların tümü yerel olarak mevcut olana kadar beklemek için kullanılır. Benim çözümüm, oyunun normal olarak yerel olarak çalıştırılmasıydı, ancak EXE tüm dosyaların zaten mevcut olduğunu düşünerek kandırıldı (bir Windows dosya mini filtresi kullanarak). Talep edilen bir dosya yerel olmadığında, dosya sistemi indirdi ve kaydetti. Oyun gerektiğinde yavaşça yerel olarak kopyalandı. Kullanılabilir bant genişliği olduğunda, diğer gerekli olmayan dosyalar arka planda kandırıldı. Minifiltre sürücüm gerektiğinde dosya aldı çünkü bu, TÜM oyunlar ile yeniden derlemeye gerek kalmadan çalıştı.

En kötü dezavantaj gecikme oldu. Benim çözümüm, daha sonra hangi dosyanın gerekli olabileceğini tahmin etmek ve arka plan yükleyiciye öncelik vermek için küçük bir Markov Zinciri modeli oluşturmaktı. Bu bir cazibeye benziyordu ve MMO'muz sadece HEMEN ÇALIŞTIR ve yalnızca EXE ve birkaç yükleme ekranı dosyası yerel olduktan sonra (~ 20 MB) çalıştı. Bir web sayfasındaki bir bağlantıya tıklayıp 10+ GB oyunumuzu yaklaşık 30 saniye içinde çalıştırdık . % 99 isabet oranına sahip olduk, yani oyun ilk defa oradayken yeni bir dosyaya ihtiyaç duyduğunda!

Bunu başkalarına uygulamakta yardımcı olmaktan memnuniyet duyarım.


5
+1 Bu sürücüyü paylaşabilirseniz çok iyi olur çünkü böyle bir şey arıyordum ve sizin yaptığınız gibi kendim yaratmak üzereydim ama çoktan yapıldıysa memnuniyetle kullanırdım.
Furkan Omay

5
Bazı oldukça gelişmiş mühendislik ilginç kullanımı. Bu konuda gerçekten bir blog yazısı yazmalısınız. :) Makine öğrenme teknikleri gerçekte ne kadar yardımcı oldu? Hangi dosyaların gerekli olduğunu ne kadar iyi tahmin edebilirler?
Paul Manta

1
@FurkanOmay böyle şeyler hemen hemen her zaman birinin işvereninin şirket malıdır. İnsanlardan muhtemelen sözleşmelerinin koşullarını çiğnemelerini istemeyin.
29'da jwenting

@jwenting Anladığım kadarıyla, yaptığı şey bir şirket için değil kızı için ve WoW gibi oyunlar içindi. Ben sadece kibarca soruyorum, kimse zorlanmaz. Herhangi bir nedenden ötürü reddedebilir ve her şey yoluna girecek. "Bunu başkasına uygulamasına yardımcı olmaktan mutlu olur" dedi, bu yüzden en azından bir başlangıç ​​noktası istemek, bunu zaten yerden uygulamaya istekli olduğumu söylediğim gibi, kötü bir fikir olmadığını sanmıyorum. yukarı.
Furkan Omay

3

Ayrıca bazı oyunlarda oyun sonu dünya alanları ve dosyalar gecikir, sadece zorunlu alanlar korunur ve oyun oynarken de kurulabilir.


2

Birkaç kişinin söylediklerini özetlemek ve belki biraz bilgi eklemek için:

  • İlk indirme küçük, geri kalanı için sadece başlangıç ​​dosyaları ve indirme yöneticisi. Hesap oluşturma, avatar oluşturma ve buna başlangıç ​​bölgeleri eklemek iyi olurdu.
  • çalışırken, kullanıcı giriş yapıyor ve avatarlarını oluşturuyor, önce diğer eşyaları, düşük seviyeli bölgeleri ve ortak dosyaları indirmeye başlıyor (temel sesler ve dokular gibi, bunları oyununuzda mümkün olduğunca tekrar kullanıyorsunuz)
  • kullanıcı seviyeler arasında ilerlerken, yaklaşmakta olan bölgeleri ve diğer içerikleri önceden indirmeye başla
  • Kullanıcı indirme ihtiyacı olan seçenekleri seçerse, önce düşük çözünürlüklü değişkenleri indirin, ardından gerektiği gibi daha yüksek çözünürlüklü sürümleri indirin ve anında görüntülenen düşük çözünürlüklü sürümlerini değiştirin. Bu şekilde kullanıcı bir şey görür ve yavaş yavaş oyunun tam ihtişamı ortaya çıkar (eğer yeterince bant genişliği ve tabii ki bilgisayar gücü varsa)
  • her şey indirilinceye kadar tekrarla


Tüm içerik yerel olarak önyüklenene kadar oynatırken daha yüksek bir ağ yükü anlamına gelir, ancak sunucularınıza daha küçük bir ilk patlama yükü ve kullanıcılar oyunun ilk sürümünü indirirken daha kısa ve daha az sinir bozucu bir bekleyiş sağlar.
Tabii ki, kullanıcı yavaş bir ağ bağlantısına sahipse, bölgeleri değiştirirken hala "lütfen bekleyiniz, içerik yükleyiniz" mesajlarını (bunları sağlayınız) alabilir veya oyuna ilk başladığınızda ve indirmek için çok düşükse bant genişliğini kontrol etmek isteyebilirsiniz. güvenli bir şekilde anında onu beklettikten sonra en azından ilk seviyenin tamamı için (ve daha sonra henüz tam olarak indirilmemiş bölgelere girerken).
Bu, kullanıcının gerçek oyunun ortasında kalmasını engellemek için çünkü ağ bağlantısı kopmuş durumda.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.