Çok oyunculu bir oyunda “mermi zamanı” nasıl uygulanır?


29

Daha önce böyle bir özellik görmedim, ancak ilginç bir oyun fırsatı sunmalı.

Öyleyse evet, çok oyunculu / gerçek zamanlı bir ortamda (FPS hayal edin) yavaş hareket / mermi zaman efektini nasıl uygulayabilirim?

Şu anda slo-moed olan oyuncu için bir yanılsama gibi bir şey. Böylece herkes onu "gerçek zamanlı" görüyor, ama her şeyin yavaşladığını görüyor.

Güncelleştirme

Bir yazı tipi: Bir FPS oyununun eğlenceli olması için dengelenmesi gerektiğini unutmayın. Yani evet, bu mermi zamanı özelliği, diğer oyunculardan uzaklaşırken, "oyuncu" için küçük bir avantaj sağlayan, sağlam olmalı.

Artı, iki oyuncunun da aynı anda mermi zamanlarını aktif hale getirme olasılığı var.

Ayrıca:

Gelecekte ne pahasına olursa olsun bunu uygulayacağım. Ve, fikir bunun için tamamen yeni bir oyun motoru oluşturmak. Bu yeni seçenekler verirse, daha sonra fikirleri duymakla ilgilenirim.

Bu arada, burada ekibimle birlikte bunu düşünüyoruz, teorimiz hazırlandığında, burada paylaşacağım.

Bu mümkün mü? Böylece, "bu mümkün bile" sorusu yanıtlandı, şimdi en iyi çözümü bulma zamanı.

Çalışmayan sözde koduna yakın bir şeyle prototip bir teori gibi son derece iyi bir şey gelinceye kadar "cevabı" saklıyorum.

Fizikçiler ve filozofların söyledikleri:

Bağlantılar sizin için, çünkü konular kapalı.

https://physics.stackexchange.com/questions/17118/time-traveling-and-time-dilation-within-a-multiplayer-videogame

https://philosophy.stackexchange.com/questions/1704/seeing-everything-in-slow-motion-but-being-real-time

Soruyu fizik sitesine yazarken düşündüğüm koşullar (kopyalandı):

  1. Yavaş hareketin etkisi altında olan oyuncu, her şeyi çok daha yavaş bir şekilde görmek nedeniyle, daha kesin eylemler (çekim, hareket vb.) Yapma avantajına sahiptir.
  2. Hareketleri diğer oyuncuları gerçek zamanlı olarak etkilemelidir.
  3. Etkilenen oyuncumuzu arayan oyuncular, yaptıkları eylemleri deneyimleyebilecekleri haricinde herhangi bir fark görmezler (oyuncu vurulur / etkilenirse roket gibi).
  4. Oyuncu bu etkiden çıktığında, her zamanki gibi aynı hızda devam eder. (Eğer bu mümkün değilse, o zaman sanki tekrar senkronize oluncaya kadar acı çekmek zorunda kalacak sanırım)

Mermi süresi ile ilgili referanslar (yavaş hareket):

Ne yazık ki, uygulamaların çoğu yalnızca tek oyunculu

http://www.gamesradar.com/a-videogame-history-of-bullet-time/


3
Bu zaten MMORPG The Matrix Online'da başarıyla yapıldı. Onlarla savaşırken “İnterlok” una girdiğinizde rakiplerle savaşırken mermi zamanı geçirdiniz. Bu hem PvE hem de PvP rakipleriyle yapıldı. Interlock dışındaki herkes "gerçek zamanlı hız" gördü. Cevaplama yerine yorum yapma, çünkü nasıl yaptıklarını açıklayacak uzmanlık veya bilgi birikimine sahip olmadığım için, sadece bir oyuncu açısından ne olduğunu biliyorum.
FallenAngelEyes 16:11

3
Bu ayrıca FEAR Combat'ta da mevcuttu. Çok oyunculu oyunda SloMoDeathmatch adlı bir oyun modu vardı. Bu doğru bir hatırlamıyorsam ücretsiz bir oyundur, bu yüzden denemek ve indirmek için hala birkaç sunucu olup olmadığını görmek istiyorsanız.
alextsc

3
Sahte kod için beklediğinizi belirtmenin cevaplara yardımcı olacağını sanmıyorum. İstediğiniz tasarım yeterince katılaşınca kodun açık olması gerekir.
Tetrad

1
Ayrıca, "ne pahasına olursa olsun" kötü tasarım felsefesinin kokuyor. Öyle görünüyor ki, yalnızca ilerlemeden önce kullanmayı planladığınız yöntemi (prototip veya başka bir oyunda çalışan bir örnek aracılığıyla) kanıtladıktan sonra yapmalısınız.
Tetrad

4
-1 için, 'sözde kodu' çalışma koduna yakın bir şey gibi bir prototip gibi istisnai derecede iyi bir şey ortaya çıkana kadar 'cevabı' saklıyorum. Pislik olma.
Trevor Powell

Yanıtlar:


22

Daha önce yapıldı. :) Uzmanları inceleyin , iki farklı mermi zamanı powerups olan bir yarı ömür modu.

Zzzzbov kullanıcısının bilgilerini aşağıya eklemek için EDIT

“The Expertists” deki bir mermi zamanının oynanış perspektifinden bakılması, oyuncunun sınırlı miktarda “mermi zamanı” verebilecek güç artırmaları alabilmesiydi. Kullanıldığında, oyuncunun etrafındaki bir balonun fiziği yavaşlardı.

Uzaktaki oyuncular normal hızda hareket eder, ancak balondaki herhangi bir şey (mermiler, oyuncular, patlamalar) yavaşlar. Güçlendirmeyi kullanan oyuncu biraz daha hızlı hareket eder ve kaçmalarına ya da mermileri atlatmak için dublör kullanmalarına izin verirdi.

"Mermi zamanı" balonunda yakalanan başka biri hala ne olacağını görmek mümkün olma avantajına sahiptir, ancak yakalanan bir oyuncu ile mermiler arasındaki bağıl hız farkı aynı kalır, böylece tepki verme yeteneği pratik olarak yoktur.


@ Tom IIRC, açık kaynak, bu yüzden nasıl yaptıklarını görebilmelisiniz.
Spencer Rathbun

Hmm, bir Google araması kaynak koduyla ilgili hiçbir sonuç döndürmedi. (ayrıca Uzmanlarla ilgili çok fazla bilgi: Kaynak da görüntüleniyor). Link falan mı var?
joltmode

@ Tom kendi web sitesinde olduğunu düşündüm, bu wikipedia makalesinde bağlantılı olmalıdır. Olmazsa, birkaç yıl önce HL2 motoruna geçtikleri için onu almış olabilirler. Erişim için devs'a bir e-posta göndermeniz gerekebilir. Tabii ki ben de yıkanabilirim.
Spencer Rathbun

Web siteleri de çalışmıyor ..
joltmode 16:11

5
Bunu bulana kadar aynı cevabı ekleyecektim. “The Expertists” deki bir mermi zamanının oynanış perspektifinden bakılması, oyuncunun sınırlı miktarda “mermi zamanı” verebilecek güç artırmaları alabilmesiydi. Kullanıldığında, oyuncunun etrafındaki bir balonun fiziği yavaşlardı. Uzaktaki oyuncular normal hızda hareket eder, ancak balondaki herhangi bir şey (mermiler, oyuncular, patlamalar) yavaşlar. Güçlendirmeyi kullanan oyuncu biraz daha hızlı hareket eder ve kaçmalarına ya da mermileri atlatmak için dublör kullanmalarına izin verirdi .
zzzzBov

12

Tek oyunculu mermi zamanı olan ve oyunu çok oyunculuya başarılı bir şekilde geçiren bir oyun düşünemiyorum. Bunları kullanarak oyuncuyu hızlandırarak çözen birkaç kişi olabilir, ancak bu tür bir noktayı yener.

Kurşun zamanı var çünkü oyuncuya badass gibi hissettirmek istiyorsun. Yüksek seviye algısını simüle ederek oyuncuya görünüşte haksız bir avantaj veriyorsunuz. Bunun sonucu, oyuncuların kapaktan dışarı atlamak gibi harika şeyler yaparken hedef alabiliyor olmaları. Eğer mermi zamanı etkinken oyuncuları az önce hızlandırdıysanız, onlara tepki vermeleri için daha az zaman verin, bu da istediklerinizin tam tersi.

Eşzamanlı çok oyunculu bir ortamda, kullanıcı tarafından etkinleştirilen "zamanın yavaşlaması" için tek bir oynatıcı ortamında kullanmaktan gelen hissi taklit eden bir çözüm yoktur. Zamanın kendisi yavaşladıysa, herkesin algısı artar. Özellikle fare hedeflemenin genellikle anında gerçekleştiği bir PC oyununda herkes daha yavaş hareket eden hedeflerden yararlanır.

Şimdi, bu konuda çoktan ölmüş olsaydınız, önerim, onu oyuncu tarafından aktive edilmiş bir özellik yapmak yerine, bir tür "durum" ile karşılaşma haline getirmekti. Kötü adamla iyi olanın iyi biri olduğu ve birbirlerine ateş ederken her şeyin yavaşladığı görülmüş bir John Woo filmi gibi düşünün. Böylece bir “karşılaşma” başladığında, slo-mo'yu aç ve bazı ilginç etkiler elde et. Etrafta zıplayan çocuklar ve orta havada süzülen ıskalanmış kurşun isabetlerinden sekerek sıçrayan şeyler ve hepsi. Tabii ki, bu sadece 1'e 1 oyun için gerçekten işe yarar. Tek oyunculu bir oyunda olduğu gibi mermi zamanının tek taraflı faydasını elde edemezsiniz, ancak ilginç bir oyun deneyimi olabilir.


1
Muhtemelen birbirlerini görebilecek insanları yavaşlatarak 1'den 1'e 1'e kadar uzatılabilir, daha sonra başkası onları görür görmez onları da yavaşlatır. Bu şekilde herkes savaşa girinceye kadar normal hızda.
George Duckett

Anlık hedef problemini, dönüş oranını sınırlandırarak çözebilirsiniz - asıl sorun, doğru bir sistemde, hiç kimsenin yeni referans çerçevesinden etkilenmemesi gerektiğidir; oyuncuya yalnızca mermi zamanında merminin çekildiğini görmelidir.
Jonathan Dickinson

Herkesi yavaşlatma. Mermi süresi bitene kadar diğer oyuncuları dondur . Mermi zamanı sona erdiğinde, zaman çizgileri yeniden senkronize edilecek şekilde zamanlamak istiyorsunuz.
Martin Sojka

Bu, şu ana kadarki konuyu cevaplayan tek cevap. Simülasyon hızını yavaşlatıyorsunuz, böylece oyuncuların tepki vermek ve gerçek zamanlı olarak kontrol edilmeleri halinde oruç tutacak hareketleri planlamak için daha fazla zamanı olacak. Bu çalışmayı bir oyun açısından yapmak için, katılan tüm oyuncuların (eylemi izleyen ya da katılan) yavaşlatılması gerekir ve ilgisiz tüm oyuncular (yavaşlamaya tanık olmak için yakın olmayanlar) normal hızda devam eder. Olayı görebilen herkesi yavaşlatmazsanız, aptalca görünecektir.
MrCranky,

Max Payne video oyunları "bullet-time" oyun içi yetenek olarak kullanıyor. Bazı Star Wars Jedi oyunlarının (elbette Jedi Knight II) bazılarında da herkesi yavaşlatarak (başka bir Force Speed ​​kullanıcısı hariç) sizi hızlandıran "Force Speed" var.
KeithS

8

Genel Düşünceler

Bu, genel göreliliği kullanarak en iyi şekilde tanımlanmış bir sorundur - örneğin bir uydudaki teleskopunuzdan (kurşunsuz nötrinoların ışık probleminden daha hızlı seyahat etmesinin sebebi) - sadece uydudaki teleskopunuzdan bakarak görülebilir. bu koşullar altında çözülebilen varlıklar; Yani bu tamamen mümkün.

Oyununuzun ayrı referans çerçeveleriyle başa çıkabilmesi gerekecektir - bunun net etkisinin ne olacağını bildiğim kadarıyla ('oyuncu' mermi süresi aktif olan kişi olmak):

  • Oyuncuyu gören insanlar çok hızlı bir şekilde hareket ettiğini göreceklerdir.
  • Oyuncu insanların çok yavaş hareket ettiğini görüyordu.
  • Oyuncu herkese göre geçmişe / geleceğe doğru ilerliyor olacaktı.

Neyse ki sizin için bu, mermi süresindeki bir oyuncunun diğerlerine göre avantajı olduğu anlamına gelir; muhtemelen onu hedefleyemezler - ancak inandırıcı olmaz çünkü ortalama bir insan, zaman genişlemesini gözlemlerken farkedilir bir fark görmeyeceğini bekler.

Bunu fizik üzerine yazmanızı şiddetle tavsiye ederim (bunun bir oyun olduğunu belirtin, ancak gerçek teorik bilgiye ihtiyacınız var) ve eşzamanlı bir simülasyondaki etkiyi nasıl tahmin edeceğiniz hakkında fikirlerinizi isteyin.

Bakacağım olası bir çözüm, dünyanın geri kalanına bağlı olarak mermi zamanının ilerici bir miktarını (gerçek mermi zamanından çok daha az) deneyimleyerek (geleceğe doğru ilerledikçe) oyuncuya yakalaması. zaman) onlar. Bu yolla, geçmiş zamanın depolanması vs. ile uğraşmak zorunda kalmadan yaklaşık zaman farklarını tahmin edebilirsiniz. Bu etkiyi, 'geri tepme' veya benzeri bir şeyi açıklamak için bir yol gerekir, çünkü fiziksel olarak doğru değildir.

Başka bir fikir, en temel fizik denklemlerini kötüye kullanmaktır ( s = d/t), oyuncu mermi zamanına girdiğinde her şey daha küçük hale gelir - eğer her şeyin boyutunu perspektifinden yarıya indirirseniz, ancak hızını orijinal referans çerçevesine göre aynı tutarsanız (etkili bir şekilde) iki katına çıkar) denklem hala dengede kalacak. Uzay filmlerindeki çözgü sürme dizileri bu uzay genişlemesini, etkiyi canlandırmak için kullanır - böylece insanlar onu görmeye alışır.

Gerçek çözüm

Bunu daha da düşündüm. Steamworks ağ sisteminin nasıl çalıştığına bakarsanız ( birinin bağlantısı var mı? ), Sunucu belirli bir süre içinde sürekli olarak ileridedir; ve her müşteri araya girmesi gereken 'sonraki' çerçeveyi bilir.

Örneğin, sunucunun tüm oynatıcılardan 20ms ileride olduğunu varsayalım. Bir oyuncu mermi zamanına girdiğinde güncelleme aralığını 40ms olarak değiştirir (simülasyonu 40ms zaman adımlarında çalışır ve sunucu eylemlerini geleceğe doğru 40ms sıraya koyar) - temel olarak geleceğe diğer oyunculara atıfta bulunur: referanslarından daha hızlı hareket etmelerini ve onlardan daha yavaş hareket etmelerini sağlamak. Bir kez mermi bıraktıktan sonra herkese kendisinden 5ms üstünlük sağlayın time rebound, böylece 'yetişmek' için oynayabilirler (bu sizin tesadüfen zeki oyuncular bu yetişme süreleri boyunca mermi toplayacaktır). Zaman adımına bir parabol eşlerseniz, bu biraz daha iyi görünebilir - bu, işleri yavaşlatır, durdurur ve sonra yavaş yavaş yeniden hızlandırır.

Feragatname: Ben fizikçi değilim, ama uygulanabilir bir görelilik bilgisine sahibim.


4

Heroes Over Europe için çok oyunculu oyunlarda çalışan bir prototip bullet-time modu uygularken 0.02 $ 'ımı eklemek istedim .

Tek oyuncuda, doğru anda bir düğmeye basılması zamanı yavaşlatır ve istediğiniz hedefi yakınlaştırır. Özelliği çoğaltmak için çok oyunculu olarak dünyayı yavaşlatmak istemedim (oyun aynı anda 16 oyuncuyu desteklediği için!), Bu yüzden bir "balon" yöntemi kullandım.

Özel olarak, madde işareti modu tetiklendiğinde, hedef uçağın etrafında bir küre yaratıldı. Kürenin merkezine olan mesafeye bağlı olarak zamanın geçiş hızı değişti; Zaman, yüzeyinden merkeze yakın bir yerde asgari bir değere doğrusal olarak indirgenir. Hız, kürenin ne kadar süre var olduğuna ve kürenin "buharlaşmadan" ne kadar süre kaldığına bağlı olarak da değişmiştir.

Bu, baloncuklar için gelecekteki bir başlama zamanını tanımlayan bir paket göndererek makineler arasında senkronize edildi ; bu, gecikmeye rağmen etkinin senkronize kalmasını sağladı. (Benzer şekilde, etki erken sona erdiğinde, bir paket gelecekteki zamanı sona erdireceğini ilan eder.)

Zamanın geçiş hızı her zaman işlevsel olarak tanımlanmıştır: bir kürenin tanımı, mevcut zaman ve bir pozisyon göz önüne alındığında, zamanın ne kadar hızlı aktığını belirlemek mümkün olmuştur.

Etkisi işe yaraması için, çeşitli oyun sistemlerinin zamanın bu "işlevsel" tanımına uyarlanması gerekiyordu. Uçaklar, mermiler, füzeler ve diğer etkilerin her biri dt, uygun işlevi çağırarak işe yarayan bireyi kullandı . Prototip çalışmasını sağlama çalışmalarının çoğu burada harcandı.

Sonuç oldukça iyi sonuç verdi: mermi zamanıyla hedeflenen bir oyuncu gözle görülür bir şekilde yavaşlardı ve saldırganlarının taçlarından çıkıp yavaş hareket eden mermilerden uzaklaşmaları için (küçük) bir şansı vardı. Yakındaki oyuncular uçakları ve mermileri ağır çekimde birbirlerinden kaçan görebiliyordu, ancak etkilenmediler.

Tetikleyen oyuncunun da yavaşlatıldığını, ancak kesinlikle dezavantajlı olmadıklarını unutmayın: Hedeflerinin yakınlaştırılmış bir görünümüne sahipti ve avlarının tek atışla öldürülmesini etkileyebilir. Başka bir oyuncu bu durumda sizi öldürmeye (veya çalınmayı öldürmeye!) Teşebbüs edebilir, ancak uçağa (ve onların kurşunlarına) balona girerken kaçmanız için zaman vererek etkilenir.

Ne yazık ki, çalıştığı sırada, çok oyunculu özelliği tamamlayıp cilalamak için hiç zamanımız olmadı, bu yüzden bırakıldı. (Tek oyuncu hala "Ace Kill" olarak özelliğini korudu.)


2

Kurşun zamanı değil, eğlenceli olabilir:

Peki ya Braid'in zaman yavaşlatan şeyi yapma şekline benzer bir şey? Mermi zamanını deneyimleyen kişiye yaklaştıkça, yavaş işler ... ve etki alanının dışındaysanız, zaman normal şekilde akar.

... örneğin, eğer Oyuncu A mermi zamanı harcarsa, etrafına “yavaş zaman” dereceli bir küre koyar, böylece düzgün bir şekilde nişan alabilir, ancak daha hızlı hareket etmesi gerekmez - o zaman Oyuncu B'ye ateş eden mermiler, merminin nereye vuracağını fazla tahmin et, zira ona yaklaştıkça yavaşlar.

Her ne kadar, bu konuda ne kadar çok düşünsem de, o kadar az işe yarayacağını düşünüyorum, çünkü Oyuncu A'yı kolay bir hedef haline getirebilirdi (başı yavaşladığında?) - ama yine de 3D'de görmek ilginç olurdu.


1
Gerçekten ilginç, ama eğer mermiler oyuncuya yaklaşırken yavaşlarsa, onlardan kaçmayı başarabilmelidir.
joltmode

Evet, fakat Braid'deki gibi, oyuncu da kendini yavaşlatıyor - yani oyuncuların hızını hala hızlı tutuyorlardı, bu nedenle engelleme veya kalkanların mermileri önlemek için konuşlandırılması daha kolay olacak, fakat havada dolaşmak için havada uçan gerçek hareket mermilerin yolunun yavaşlaması ...
Seb

2

Bunun eski bir soru olduğunu biliyorum ama görelilikle ilgili cevapların çoğunda konuya değinmemekte zorlandım.

Soruda açıklandığı gibi etkileri uygulandığı zaman, çok oyunculu mermi zamanı mümkün değildir.

Bunun nedeni göreliliğin nasıl çalıştığıdır; Buradaki bazılarınız bundan bahsetti ve açıkça göreliliği anladınız, ancak sorun şu ki modellerinizin yanlış ayarlanması.

Pek çok insan cevaplarınızda “Oyuncu A'nın vs Oyuncu B'yi” kullandı, ama ne yazık ki bu şeylerin hiçbiri gerçekten mevcut değil. Evet, oyuncuların, hatta birçoğunun bile, ve evet, dünyalarını kontrol edip etkileşime girebilir ve oyuna kendi bakış açılarına sahip olabilirler, ancak perspektif zaman içinde bir referans noktası değildir: bu sadece XY'ye yansıtılan bir XYZ alanıdır. uçak.

Zamanın yalnızca bir referans noktası var ve sunucu (veya ana bilgisayar). Dünyanın fiziki durumuna dair sadece bir bakış açısı ve dolayısıyla sadece bir referans noktası var. Oyuncuların ekranında gördükleri aynı fiziksel simülasyonun farklı grafik görünümleridir.

Bir oyuncunun bir simülasyonu bir hızda çalıştırmasını ve bir başkasının aynı simülasyonu başka bir hızda izlemesini ve bir desync yapmamasını sağlamak mümkün değildir. Bir yerlerde, bir şeyler vermek zorunda.

Birden fazla simülasyon yapmak veya sunucuyu istemcilerden önce çalıştırmak herhangi bir çaba sarf etmiyor. Gönderide anlatılan etki, tek referans noktasını zorlamadan ya da düşüncelerin haksızlığa uğramasına izin vermeden ve oyunculara eylemlerinin gerçekte gerçekleştiğini söylemeden söylenemez.

En iyi çözümün, hızınızın, oyuncunun etrafındaki bir balonun içinde değiştiği örgü benzeri bir etkiye sahip olan, zaten verilen bir çözüm olduğunu düşünüyorum. Olduğu söyleniyor, oyuncu yavaşlamaz ve kabarcık her zaman merkezinde olacak ve onunla birlikte taşınacaktı. Bu, oyuncunun tam hızda hareket etmesini sağlarken, ona en yakın olanlar yavaşlamış hissederler. Gücünü arttırma avantajını elde ediyor ve o bölgeden uzaktaki insanlar etki hissetmiyor. Yakında olanlar yavaşlar ama birisinin gücü kullandığı açıktır (karşı taraf oyuncuların ne olduğunu ve neden olduğunu tam olarak anlayabilmesi için bir şekilde kullanan oyuncuyu vurgulamayı öneririm).


1

Çok garip olurdu. Zaman genişlemesi sorununa bile bakmadan, mermi süresinde sadece 4 saniye harcayan bir oyuncu olduğunuzu, oyunda ki herkesin gerçek zamanlı olarak 2 saniye harcadığını hayal edin. Aynı zamanda gerçekte herkes için aynı zaman geçtiğinden, oyunda bu iki saniyede bir "geri kazanmak" zorunda kalacaksınız. Bu yüzden bir noktada, 2 saniyelik oyun süresi "atlamanız" veya normalden daha hızlı koşmak için biraz zaman harcamanız gerekecek, ya da mermi zamanını büyük olasılıkla israf edecek bir şey.

Ayrıca, yaptığınız her şeyi 2 saniyede yaptığınız zamanı 1 saniye içinde başkalarına 1 saniye içinde göndermek zorunda kalacağınız konusunda da bir şeyler var.


1

Mermi hareketlerini atlatmak veya düşman hedeflerini otomatik olarak takip etmek için oyuncuya mini hızlı zamana benzer olaylar atın, oyuncunuzun hareketlerini diğer oyunculara bulanık veya "aşamalı" görünmesini sağlayın (böylece mermilerinin neden olmadığına dair kafalarını çizmezler) vurmuyor). Çok oyunculu için yapabileceğiniz en basit, en pratik çeviri gibi görünüyor.

Başka bir çözüm, diğerlerine paralel olarak uygulanmayan bir veya daha fazla oyuncu için değiştirilen oyunun bazı fiziksel unsurlarını içeriyor.


0

Sadece herkesi yavaşlatarak oyuncunun mermi süresini deneyimlemesini sağlayın. Bunu sadece fare hassasiyetlerini azaltarak yapabilirsiniz.


Ve bu nasıl "dengeli bir oyun" anlamına gelir? : D
joltmode

Dengelidir, oyuncu hızlanmak yerine, çevredeki dünya yavaşlar. Eğer oyuncu hızlanırsa aynı avantaja sahip olacaktı, ancak bu şekilde daha makul.
Derek

0

Mermi zamanında A oyuncusu ve gerçek zamanlı olarak B oyuncusu olduğunu varsayalım. Ve oyuncu B'nin bakış açısından aşağıdakileri yaparlar:

  • Süre 0s - Oyuncu A aktif mermi zamanı
  • Time 2s - Oyuncu A, oyuncu B'ye ateş eder.
  • Time 3s - Oyuncu B, oyuncu A'ya ateş eder.

Şimdi oyuncu A'nın bakış açısına göre bu iki kat daha uzun sürecek - çünkü dünya onun için daha yavaş hareket ediyor:

  • Süre 0s - Oyuncu A aktif mermi zamanı
  • Time 4s - Oyuncu A, oyuncu B'ye ateş eder.
  • 6s. - B oyuncusu, A oyuncusuna ateş eder.

Sonunda, sunucunun içine aşağıdaki olaylar geliyor:

  • 0s - Oyuncu A mermi zamanını aktive eder
  • Time 3s - B oyuncusu, A oyuncusuna ateş eder (B bu eylemi başlatır, böylece zaman çizelgesini takip eder)
  • Zaman 4s - Oyuncu A, B oyuncuya ateş eder (A, bu eylemi başlatır)

Öyleyse, iki başlangıç ​​sorunumuz var. Birincisi, A şimdi herkesin arkasında 3 saniye oyun zamanı. Bu borcunu geri ödemek zorunda olduğu anlamına gelen bir fikriniz varsa, bu ilginç bir oyun tamircisi olabilir. Açık zeminde kırmak için mermi zamanını aktive edebileceğiniz bir kapak temelli atıcı hayal edin, ancak güvenli bir şekilde örtünün altında olduğunuzda, dünyanın geri kalanı sizinle olana kadar hareketsiz durmanız gerekir (kaçırdığınız üç saniye tekrarlanır) )

İkinci sorun çok daha büyük. Sunucunun her oyuncu için olayları kronolojik olarak yeniden düzenlemesi ve sonucu çözmesi gerekir. Öncelikle B A'ya ateş eder - bu oyuna üç saniye gelir ve A 6 saniyede görür - şimdiye kadar sorun yok. 4 saniyede, oyuncu B'yi vurur. B'nin zaman çizelgesinde bu iki saniye önce oldu. Öyleyse, A'da atışı da dahil olmak üzere, onun için geçen iki saniyelik oyun ile ne yapacağız?

Bunu etkisiz hale getirebiliriz - temel olarak "B oyuncusu bu adamı vurduğunu sandığını biliyorum , ama çoktan ölmüş olduğu anlaşıldı , bu yüzden hiç olmamış gibi davranalım" Bu çok çirkin bir deneyim olurdu, gecikmeye çok benzer, ama sorunu çözerdi .

Her iki zaman çizelgesini de sonlandırabiliriz - sunucuları bakış açısını tüm gerçek olarak kullanabilir ve her bir insanın zaman çizelgesi için bağımsız olarak endişelenmesini sağlayabiliriz. 3 saniyede B, A'ya ateş eder ve onu öldürür. 4 saniyede, A, B ile vuruyor ve onu öldürüyor. İki oyuncu da görmedikleri atışlardan ölür. Kulağa hoş gelmiyor, ama belki de bütün oyunculara görelilik çılgınlığı dünyasında kısa bir kurs verdikten sonra bunu yapmanın iyi bir yolu var.

Sözde-gerçek zamanlı bir sisteme sahip olabiliriz - önce hamle planladığınız ve ardından eşzamanlı etkinlik hesaplamasını tetiklediğiniz bir sıra tabanlı oyun. Yazmak istediğiniz oyun türü olmayışı dışındaki tüm sorunları düzelten iyi bir çözüm.

Uzun lafın kısası ben klasik anlamda etkisini kullanan kişiye olmak onu tedavi mermi zamanı uygulamak için iyi bir yolu yoktur sanmıyorum - onlar , daha hızlı hareket bunlar yavaş olarak dünyayı görmek, diğer çalışanlar normal olarak devam ediyor. Eğer onu tersine çevirirsek ve herkes madde işareti zamanlayıcısının bakış açısına güvenir ve kendilerini daha yavaş hareket ettiğini görür ve kontrolleri durgunlaşır, o zaman hepsi senkronize olur ve sorun olmaz. Ama bu gerçekten kurşun zamanı mı? Bir dış gözlemciye (ve maç tekrarlarında) öyle gözükse de katılımcıların hiçbiri bekledikleri etkiyi elde edemez.


Bu yapıldı ve etki gerçekti ve birkaç saniye için bir tanrı gibi hissetmenizi sağladı (uzman, azami ödeme 3).
Katu

-1

Hayır, bu mümkün değil. Bir oyuncunun yavaş harekete geçtiğini, diğer oyuncuların ne göreceğini düşünün? Kurşun zamanı oynatıcının normal şekilde hareket ettiğini ancak yıldırım reflekslerine sahip olduğunu görmelerini isterdiniz, değil mi? Ancak maalesef oyunu oynayan herkes aynı anda oyunu oynuyor olacak. Bu nedenle, bunu yapmanın tek yolu tüm oyunu yavaşlatmak, herkesin kurşunda olduğu gibi getirdiği avantajlardan kurtulmaktı. Ayrıca, herhangi birisinin bu düğmeye basması durumunda oyunun her zaman yavaşlaması oldukça can sıkıcı olacaktır.

Örneğin, herkesin ELSE'i yavaşlatıp normal bir şekilde hareket etmesine izin vererek (sonra bir oyunda onları normal hale getirebilir ve normalde oynamayı bırakabilirsiniz) benzer bir avantaja sahip (biri daha hızlı hareket edebilen vb.) Oyuncuların sonuçlanmasına neden olacak bir iş ortamı var. hızlı tepki göster) ama gerçekten istediğin şeyin bu olduğunu sanmıyorum.


1
Daha önce yapıldı, bu yüzden mümkün olmadığını söylemek göze batan bir yanlışlıktır.
zzzzBov 16:11

@zzzBov çok oyunculu bir oyunda kurşun zamanı gerçek biçiminde uygulamak imkansızdır. Önce tüm oyunu yavaşlatmanız, sonra gerçek dünyadaki diğer tüm oyuncular için gerçek zamanı yavaşlatmanız gerekir. Bunun hakkında düşün. Etrafınızdaki bir iş olarak bazı duraklama / yakalama şeyleri uygulamanız gerekir, ancak bu gerçek biçimde mümkün değildir.
SirYakalot

Haklısın, bir kullanıcı normal hızda çalışır ve mermi süre içinde başka bir mümkün değildir, ancak OP sonra oldu kurşun zaman en gerçek formu "... yavaş hareket / mermi zamanı etkisi [uygulayan]", etti been önceden yapıldı.
zzzzBov

@zzzBov "Şu anda moral bozan oyuncu için bir yanılsama gibi bir şey. Öyleyse herkes onu" gerçek zamanlı "görüyor, ama her şeyin yavaşladığını görüyor.” Orijinal sorudan alıntı. Özellikle normal hızda çalışan bir kullanıcı için mermi sırasında diğerini soruyor. Bu aslında onun için ne istediği kelimesi kelimesi.
Trevor Powell

Bunun zaten MP-oyunda (uzman, Max diğerleri arasında 3 ödedi) uygulanmış olması, bu cevabı geçersiz kılar.
Katu

-1

FEAR çok oyunculu mermi zamanına sahipti, ancak tüm takıma uygulandı ve diğer takımdaki herkesi yavaşlattı.

Gerçek zamanlı çok oyunculu mermi zamanı, diğerlerini yavaşlatmadan istemcileri senkronize eder, ağır çekim oyuncusu diğer oyuncuların uzun zaman önce yaptıkları olaylara tepki verirken mevcut olaylara tepki verirdi.


1
Bir çözüm olsa da; Bundan hoşlanmıyorum - etkilenmesi gereken tek kişi mermi zamanındaki oyuncu - sadece uyduların sizi daha yavaş hareket ettiği için gözlemlediğinden, kendi referans çerçevenizde daha yavaş hareket ettiğiniz anlamına gelmez.
Jonathan Dickinson

Üzgünüm, önceki düzenlemem biraz çocukça geldi. “Gerçek zamanlı mermi zamanı” yine de bir çelişki gibiydi.
Hamster

-2

Belki de, kurşun hızını yakın ışık hızlarında uzaya fırlatan PC'deki oynatıcıyı çekmek için gerekli ekipmanı ayarlamanız gerekir.

Bu, tüm problemlerinizi çözecektir ancak daha yüksek ping / gecikme süresi oluşturabilir.


-3

eğer hepsi normalden daha yavaş hareket ederlerse ama çok yavaş değillerse ve onu harekete geçirenler, tüm oyunu sualtına batırmak ya da her zaman olduğu gibi barışçıl hareketlerle harekete geçirerek dışarıya götürmek gibi daha hızlı hareket ederlerse sorun olmazdı.


1
Eski soruları cevaplamanın yanlış bir tarafı yok. Bununla birlikte, kişi cevaplarını iyi yapmak için hala çaba sarf etmeli ve bu tam olarak tam bir çözüm yolu sunmuyor ve hali hazırda mevcut cevapların kapsamadığı bir konuyu da kapsamıyor.
Josh,
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.