Ağ mekaniği telafisi ile uğraşmamak için oyun mekaniğinde püf noktaları?


20

Ağ gecikme telafisini uygulamak zordur, nasıl önlenir?

Belki de püf noktaları kullanmak ve oyun mekaniğini, gecikmenin kritik olmayan veya hatta oyunun doğal bir parçası olarak algılanacak şekilde oluşturmak mümkündür?

Bu teknikler nelerdir ve bu teknikleri kullanan mevcut oyunlar (MMORPG, Strategies, ...) var mı?

GÜNCELLEŞTİRME:

Sıra tabanlı oyunlar gecikme telafisi gerektirmez, ancak gerçek zamanlı yaklaşımları görmek ilginç olurdu (veya sadece gerçek zamanlı bir izlenim, önemli kısım - kullanıcı engellenmemeli ve beklemeye zorlanmamalıdır).

Gecikme tazminatından kaçınmamın temel nedeni basitlik.



6
Gecikmenin sorun olmadığı bir oyun inşa etmek istiyorsanız; birkaç saniyenin kabul edilebileceği bir yerde sıra tabanlı bir şey oluşturmayı düşünün.
Vaughan Hilts

3
Bu Valve bağlantısı, ağ gecikme telafisinin uygulandığı oldukça karmaşık yollarla ilgilidir - bu yüzden sorunun ne istediğinin tam tersi.
Kylotan

@JohnMcDonald Evet, Valve'den bu makaleyi biliyorum ve bahsettiğim gibi - sorduğum şeyin tam tersi :).
Alexey Petrushin

Siz de GGPO bir göz atmak isteyebilirsiniz: ggpo.net
Decency

Yanıtlar:


16

Müşterinin, oyuncunun seçtiği eylemin kaydedildiğini hemen bildirmesi için bir tür geri bildirim uygulaması yaygındır, örn .:

  • arayüz sesi (örn. düğme tıklaması)
  • dünya sesi (ör. "Bir kerede komutan" diyen bir karakter)
  • animasyon (örneğin, bir kılıç sallamaya başlar)

Bunlar, bilgiler sunucuya giderken gerçekleşebilir, böylece oynatıcı eylemlerinin henüz başlamadığını fark etmez. Sunucu hemen cevap verdiği ve işlem yakında başladığı sürece, oyuncu gecikmeyi fark etmeyebilir.

Bu hileler, oyuncu girişlerinin oldukça seyrek olduğu oyunlarda çalışır ve bu nedenle bir girdinin geçerli olması için beklemek için harcadığınız süre, oynamak için harcanan toplam sürenin nispeten küçük bir oranıdır. Bu nedenle, oyunu daha az girdi yapacak şekilde yapılandırmanın yollarını bulmak istersiniz. Bu muhtemelen oyuncu eylemlerini daha soyut hale getirmek ve oyunun düşük seviyeli davranışı uygulamak anlamına gelir. Örnekler:

  • direksiyon mekaniğini yol mekaniği ile değiştir
  • hedefleme mekaniğini hedef seçim mekaniği ile değiştir
  • yuvarlak savaş savaş talimatlarını daha taktik veya stratejik planlarla değiştir
  • gerçek zamanlı / sürekli oynanışı ayrık / sıra tabanlı sistemlerle değiştir

1
Teşekkürler, sorulanları resmileştiriyorsunuz - oyuncudan sık olmayan, ertelenmiş girişler kullanın. Bunu kullanan gerçek oyunları görmek ilginç olurdu.
Alexey Petrushin

2
Yüzlerce oyun böyle şeyleri bir şekilde kullanır, ancak büyük olasılıkla diğer nedenlerden dolayı yararlı bir yan etkiyi geciktirerek saklanmıştır.
Kylotan

7

Rastgele düşünceler:

  1. hile: roketler kullanın . Roketler bir yarıçapta patlar ve herhangi bir tuhaflığı gizler.
  2. hile: sonucu önceden belirle ve durumu görsel olarak gerçekleşmeye zorla
  3. hile: saldırılar zaman alır , atk'ta gecikmeyi gizle + anim + sonuç süreksizliği
  4. hile: yerel geri bildirimleri ağ oluşturma şeylerinden ayır
  5. hile: herhangi bir tuhaflığı kapsayan çok sayıda VFX veya ekran etkinliği.
  6. devam etmeden önce çözümlenmesi gereken bir eylem tepkisi tasarımı kullanın

Yani evet, çok hile yap.


4

Cevap oldukça basit - sadece zaman açısından kritik bölümleri olmayan oyunlar oluşturun. Belirli bir nedenden dolayı bu tür enterpolasyonları uygulamaktan kaçınmak istiyorsunuz, bu da seğirme ve hızlı oyun hakkında endişelenmediğiniz anlamına geliyor. Bu, Uygarlık (bir strateji oyunu) dahil olmak üzere birçok oyun için mükemmel bir şekilde kabul edilebilir. Ancak, bunun değişken zamanlamalarda ağ üzerinden çok fazla veri geçirmeniz gereken GERÇEK ZAMANLI strateji oyunu için kabul edilebilir DEĞİLDİR . Çok yüksek gecikmeli bir ağ etrafında bir oyun tasarlamak istiyorsanız, aşağıdakileri göz önünde bulundurun:

  1. Sıra tabanlı oyunlar oluşturun. Bu tür oyunlarda, durumun gerçek zamanlı olarak girilmesine gerek yoktur ve diğer oyuncu sırayla oyunun durumunu istemcilerinin içine itebilir. Bu, ağ üzerindeki baskıyı azaltır ve istenirse birkaç saniyelik gecikmelere izin verir. Civilization , çok popüler olan ve strateji damarında, sıra tabanlı bir oyundur.
  2. Diğer oyuncuların kararlarının etkisini minimumda tutun. Oyununuz stratejikse ve sırayla oynayamazsa, gecikmeli paketlerin etkisini azaltmayı düşünün. Müşteri simülasyonun çoğunu yapabilir mi? Bir örnek, bir süre tek başına oynanan bir strateji oyunudur ve diyelim ki 16 dakika sonra başka bir oyuncuya (belki de oyuncuların her x aralıkta birlik gönderdiği ve her y aralıkta rapor verdikleri bir savaş oyunu) simüle edilir.

Umarım bu en azından biraz yardımcı olur; kesin oyun fikirlerinizi bilmeden bu zor. Oyununuzu böyle bir model etrafında oluşturmak için nedenlerinizin olduğunu varsayıyorum (basitlik, bant genişliğinden tasarruf, ağ karmaşıklığının azalması)


4

Ayrıca gecikmeyi "gerçekçilik" uğruna oynamanızın bir parçası haline getirebilirsiniz. Oyuncularınızın bazı robotları uzaktan kontrol etmek istediklerini, gecikmeyi en az 500ms veya 1s olmaya zorlayabileceğinizi düşünün (bazı dinamik gecikme dolgu sistemi uygulamak zorunda kalacaksınız).


Bu güzel bir bükülme
o0 '.

0

Ayrıca oyuncuların eylemlerini gizlemek güzel bir numara. Birçok FPS oyunu tam olarak bunu yapıyor. Mermilerin çoğunun herhangi bir görüntüsünü göstermezler, sadece sesler çalınır ve sonucu oyunculara verilen hasar şeklinde alırsınız.

Yüksek hassasiyetli silahların (keskin nişancılar ve benzeri) çok net görsel efektlere sahip olduğu bazı FPS oyunları oynadım ve aslında diğer oyuncunun arkanıza vurduğunu görebiliyordunuz, ancak gecikme tazminatı nedeniyle öldürüldünüz.

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.