Uzay savaşlarında ışık bilgisinin yayılım hızının modellenmesi sim


29

Göreceli olarak geniş alanların üzerinde (bir tarafa 20 dakika uzaklıktaki bir küp küp) gerçekleşen ve (çoğunlukla) gerçekçi fizik kullanan bir uzay savaşı siması üzerinde çalışıyorum. Modellemek istediğim temel unsurlardan biri, bilginin savaş alanında yayılma hızıdır - yani, eğer Oyuncu A ana sürücüsünü savaş alanının bir tarafına geçirirse, Oyuncu B görmeden önce 20 dakikalık bir gecikme olur ve buna tepki verebilir

Nispeten küçük savaş alanları için bile, bu, ilgili hızları verilen önemli bir faktördür. 30kps'lik 500 metre uzunluğunda bir gemi, saniyenin 1 / 60'ında tam boyuyla yerini alacak, bu yüzden bir saniyenin 1 / 60'ındaki bir ışığın sadece onda birini hedef almak bile ışık gecikmesinden etkilenecek.

Bunu daha önce görmedim ve bunu modellemek için en iyi uygulamaların olup olmadığını merak ediyorum. Şu anda her olayı zaman damgasına basıp bir yere işaretleyerek sıraya sokuyorum ve ardından oyun dünyasındaki nesnelerden herhangi birinin yeni bir koninin kenarında olup olmadığını görmek için her bir keneyi kontrol edip etkinliği ekliyorum onların sensör sırasına. Zaten onu algılayabilecek tüm nesneler tarafından algılanan olayları kaldırarak (ancak henüz yapmadım) optimize edeceğim, ancak yine de, bunun oldukça hantal hale geleceğini ve çok yiyeceğini düşünüyorum Oyunda yüzlerce algılama nesnesi varsa (ki bu oldukça rutin olan) devir sayısı.

Kontrol etmem gereken buna daha uygun veri modelleri var mı?


7
Dunno cevabı, ama ne güzel bir soru diyeceğim!
Tim Holt,

Oha! Oyunlar çoğunlukla görselleştirme ile ilgilidir. Pikseller çok büyük olduğunda rakipleri nasıl görselleştirmeyi planladığımı bilmem gerekiyor? Basit HUD göstergeleri? Bir metin modu macera oyunu? Lütfen beni aydınlat!
Jonas Byström,

1
Modelinin fiziksel olarak doğru olduğunu söylüyorsun. Bu Newtoncu mu yoksa göreceli mi? Bu, bu tür ölçeklerde büyük bir fark yaratabilir.
MS 21.03

1
Soruyu cevaplamadığından değil, belki de Daha yavaş bir Işık Hızına bakmak size bazı fikirler verecektir.
Michael Pankov

@ JonasByström - uzun mesafeli manzara oldukça karmaşık ve onu temizlemeye çalışıyorum. Temel olarak, ışığın gecikmesine ve gemi bilgisayarının hedefin maksimum delta-v değerine ilişkin tahminlerine dayanarak, hedefin gelecekte nerede olacağına dair olasılıklı bir bakış açısı olmasını umuyorum. Şu anda, bundan daha az harika olsa da, :)
John Biesnecker

Yanıtlar:


9

Sadece burada beyin fırtınası ...

İlginç bir şekilde, ağ gecikmesi bu durumda senin arkadaşın. Sizde olduğu gibi, bazı veri paketlerinde, en azından çizim ile ilgiliyse, bir gecikme gerçekleşmesini İSTİYORUM. Ancak, her oyuncu için normalde sadece ağ hızlarından etkilenen tüm veri paketleri için bir temel gecikme yerine, her oyuncu için ışık hızı gecikmesine bağlı olarak belirli bir gecikme uygulamanız gerekir.

Genellikle sunucu, tüm istemcilere aynı anda güncellemeler gönderir, ancak ihtiyacınız olan şey, sunucunun her olay için "görüntü gecikmesini" (görüntüleyicinin mesafesine bağlı olarak) hesaplaması ve bu süreye kadar bir güncelleme göndermemesidir. saati.

Bu nedenle, her etkinlik için, etkinlikle her oyuncu arasındaki gecikme süresini hesaplayın, ardından gecikme süresi doluncaya kadar o oyuncuya gönderilmek üzere gönderilmemesi için bu olayı sıralayın.

Bu, olay gerçekleştikten sonra oyuncunun değişen konumunun veya hızının etkisini ele almaz, ancak oyuncu değişikliklerine göre sıraya alınmış olayları potansiyel olarak ayarlayabilirsiniz. Bir oyuncu yaklaşmaya başlar, olayı zamanda yaklaştırır. Oyuncu uzaklaşır, zamanda uzaklaşır.

Doppler kayması, izleyici ve olay arasındaki harekete bağlı olarak karışıma atmak için ilginç bir şey olurdu.


Zaten değişen pozisyonu ve hızları modelledim. Ölçeğe rağmen, oyundaki nesneler genellikle ışık hızının kayda değer bir oranını yakalamazlar, bu nedenle olaylar onları kolayca görmezden gelir, ancak alıcı görülebilecek alanda olursa, her bir onay işaretini kontrol eder. olay, yani iyi bir klibe doğru ilerliyorsanız, birkaç tıklamayla bunu etkileyebilir. Doppler olsa da gerçekten ilginç olurdu! Bakılacak bir şey var. :-)
John Biesnecker 21:13

2
Dikkat etmeniz gereken bir şey, bu yöntemi kullanırsanız, paketleri tarayan hiç kimse, gerekmeden önce bilgi alamaz. Eve Online gizlenmiş gemilerle benzer şeyler yapıyor. Herhangi bir gemi bir alana taşındığında tüm müşterilere bildirilir, ancak gizlenmiş bir gemi taşındığında müşterilere hiçbir şey söylenmez. Aksi halde müşteri gemiyi göstermese de, paketler gösterecektir.
Ray Britton

5

Soru şudur: Gecikmiş görüntünüzün gerçekte nasıl oynandığı konusunda tam olarak ne kadar ihtiyacınız var? % 100 doğruluk arıyorsanız, haritadaki her nesnenin eylemlerini veya durumlarını her tıklatmada kaydetmeniz ve dediğiniz gibi onları mesafeye bağlı olarak gecikmeli olarak tekrarlamanız gerekir. Oyunlarda nadiren ihtiyaç duyduğunuz nokta doğruluğu hakkında çok fazla önemsemiyorsanız, durumu aralıklarla kaydedebilir ve gecikme gerçekleştiğinde aralarında tahmin edebilirsiniz. Aynı güncelleştirmeleri kaydederek optimize edebilirsiniz.

Alternatif olarak, tüm hareketleri vektörleştirebilir ve evrensel bir gözlemciden görülen başlangıç ​​zamanı ile birlikte her nesne için bir yol kaydedebilirsiniz. Daha sonra, evrensel zaman sayacına dayanarak, her bir gözlemci için bir nesnenin beklenen konumunu, kaydettiği yol düğümlerini temel alarak, yerel saati hesaplayabilirsiniz. Bir yol düğümünün zaman damgası, ilgili tüm nesnelerin ışığının arkasına geçtiğinde, onu atarsınız.

Düzenleme: Yukarıdakiler, mutlak bir gözlemciye sahip olarak temel göreliliği aldatacağınızı varsayar (Oyuncuyu kabul ediyorum). Bu sizi zaman genişlemesinin ilginç yönlerinden bazılarını soyar, ancak bunların modellenmesi başlı başına bir proje olurdu> _>

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.