Kendi öldürme kamera oluşturma


15

Bir sandbox araç seti için kendi kill cam sistemimi oluşturmayı planlıyorum. Bununla birlikte, kill kamının mekaniğini düşündükten sonra, oldukça kayboldum. Katil açısından gerçek öldürme sahnesini gösteren görev oyunları oyunlarında yaygın olarak görülenleri yeniden yaratmaya çalışıyorum.

Düşüncelerim:

-İnsanlar başkalarını öldürdüğünde sadece hafızada kalamam çünkü ne zaman 'kayıt sürecine' başlayacağımı bilemezdim. Birinin birisini öldürmek için ne zaman 'yaklaşık' olduğunu doğru bir şekilde belirlemem mümkün.

-Benim sadece gerçek fikrim, orijinal dünyadan tüm hareketi kopyalayan, ancak 10 saniyelik bir gecikmeyle kopyalanan tarafa yüklenen her şeyin tam bir kopyası. Bu şekilde, tüm öldürme kameraları 10 saniye uzunluğunda olacak ve kişilerin kamerası katillerinin ikinci dünyasına taşınacaktı.

Sorularım:

Bunu yapmanın zaten kabul edilmiş bir yolu var mı? Böyle bir şey için iyi fikirleri olan var mı? Yapabilirsen teşekkürler!

Yanıtlar:


10

İlgili dinamik nesnelerin hareket verilerinin son birkaç saniyesini saklayın .

Bu veriler, gerektiğinde bir killcam sahnesini yeniden oluşturmak için kullanılabilecek kadar eksiksiz olmalı, ancak yeterince kısa aralıklarla almayı ve depolamayı göze alabileceğiniz kadar eksik olmalıdır.

İzlemek isteyebileceğiniz şeylere örnekler:

  • Görünür bir oyuncu hangi yöne hareket ediyor / bakıyor
  • Katilin silah kapsamına yakınlaştırılmış olup olmadığı

Muhtemelen optimize etmek istediğiniz şeyler:

  • Katilin göremediği oyuncular hakkında veriler
  • Herkesin gerçek ekran çıktısı

Cevabınızda büyük bir sorun var, normalde kimsenin ölümünü tahmin edemezsiniz ve ayrıca bir sonraki öldürmeyi kimin alacağını tahmin edemezsiniz. bu nedenle bazı oyuncular hakkındaki verileri optimize ederek bazı öldürmeleri tekrar oynatma yeteneğini kaybedebilirsiniz.
Ali1S232

2
@Gajet Bence bu durumda, tüm ilgili nesneleri çıkartmak ve sadece daha sonra olanlar için veri depolamak anlamına geliyor. Başka bir deyişle, her şeyin ve varlıklarının pozisyonlarını takip etmek için sınırlı bir süre için bir tür depolama / güncelleme mekanizmasına sahip olmak istersiniz. Diyelim ki, sadece bir kill kam için son 10 saniyeyi istiyorsunuz. Sadece son 10 saniyeyi depolayacak kadar büyük bir veri yapısına ihtiyacınız olacak ve bunun sonunda çift uçlu bir kuyruk gibi değiştirilecek olandan daha eski bir şey olacak.
ChrisC

Sadece Ricer'in cevabını kastettiğimi teyit ediyorum. Gerçekten: Geleceği tahmin edemediğinizde, bunun için hazırlanın. :)
Anko

1
Gerçek zamanlı çevrimiçi oyunların oyunculara gerçekte ne olduğunu asla göstermemesi gerektiğini belirtmek önemlidir; Oyun her zaman gerçeğin ne olabileceği hakkında tahminlerde bulunuyor, ancak gecikmeler ve diğer ağ sorunları nedeniyle, oyunlar "nesnel gerçeğin" ne olduğunu daha sonraya kadar bulamayacaklar. Başka birinin bakış açısını yeniden oluşturabilmek için "öldürme kamı" verileriniz yoksa, ihtiyacınız olan durumlarda mantıksal öldürme kamı verileri oluşturmak için tamamen kötü hissetmemelisiniz.
Trevor Powell

0

Bunun normal olarak nasıl uygulandığı hakkında hiçbir fikrim yok, ancak her merminin ateşlendiği zamandan bir hedefi vurduğu zamana kadar bir klip kaydetmesini sağlayabilirsiniz. Çekim sadece bir hitscan ile yapılırsa, hitscan gerçekleştirdiğinizde aynı kamerada kill cam görüntülerinin oluşturulup oluşturulmayacağını hesaplayabilirsiniz.


0

Bir nesnenin dönüşümünü birkaç saniyede bir kaydedebilirsiniz. Bunu geçerli tüm dinamik nesneler için yapın. Tasarrufu, her karenin yalnızca birkaç matris kaydedeceği şekilde kademelendirin. istediğiniz kadar zamanda geri kaydedin.

Yeniden oynatma sırasında, bu dönüşümleri bir sahne motorunda canlandırmak için gerektiğinde her kare için zamana göre dönüşümler oluşturmak üzere bir oluşturma motorunda kullanırsınız.

Kesin bir kopya değil ama çok çok yakın ve oyuncuya yeniden oynatma sırasında kamera kontrolü seçeneği vermenizi sağlar, böylece sahneyi nereden göreceklerini seçebilirler.


başka bir şey kaydetmemek, sadece dönüşüm matrislerini depolamakla ilgili bir sorun var! örneğin, dönüşüm matrislerini yalnızca oyuncular için kaydederseniz, animasyonlar yanlış olabilir, düşmanın sizi öldürmeden önce ne kadar hasar aldığını ve silahını ne zaman ateşlediğini göremezsiniz. yönteminizi kullanarak özleyebileceğiniz, kolayca düşünebileceğiniz ayrıntıların uzun bir listesi var.
Ali1S232

Lütfen tekrar okuyun, sadece oyuncular için matrisler değil tüm uygun dinamik nesneler için dönüşümler kaydedersiniz. Ayrıca sağlık veya isabet noktası verilerini ve diğer öğeleri de kaydetmek yeterince kolaydır. Mesele şu ki, çok fazla veri kaydetmek oyun zamanı kaynaklarını tüketir (kötü). Kaçabildiğiniz kadar az tasarruf edersiniz ve render motorunuzun tekrar oynatma sırasında enterpolasyon ile mümkün olduğunca ağır kaldırma yapmasına izin verirsiniz. Bu bir uzlaşma ama ne değil?
Steve H

0

oyununuzda bazı tekrar oynatma özelliklerini uygulayabilirsiniz. tekrarlama işlevini kullanan killcam, sadece belirli bir oyun zamanından ve bazı oyuncuların veiw açısından oynatılan bir tekrardır. daha sonra tekrarları kaydedebilir ve bittikten sonra diğerlerinin oyunları incelemesine izin verebilirsiniz.

Ayrıca, oyununuz yüksek hesaplama gücü tüketmiyorsa, aynı oyunu 10 saniye gecikmeli girişlerle çalıştırma fikriniz iyi bir yaklaşımdır.


0

Buna ne dersin...

Sadece öldürme olasılığı olduğunda kayıt yapın.

Bunu bir AIM-BOT perspektifinden düşünün. Sadece öldürmek bir ihtimal olduğunda nişan alır / ateş eder. Bu nedenle, yalnızca bir düşman fırlatılabilir / görünür menzil içinde olduğunda kayıt yapmalısınız.


Bir nesneden çekim gerektiren durumlarda ne olur? Işın çok fazla döküm kesinlikle belirtilen diğer fikirlere göre daha CPU yoğun olacaktır. İyi fikir olsa da, bunu bir çözümün parçası olarak düşünebilirim .
Freesnöw

0

Oynatıcının çevresine bir yarıçap ayarlayın ve başka bir oyuncu yarıçapa girerse, her iki kişi için de ekran kaydına başlar. Sonra kimsenin öldürülüp öldürülmediğini görmek için beklersiniz. Eğer öyleyse, katili bulup kayıtlarını alıp öldürmeden bu yana geçen süreyi artı videonun olmasını istediğiniz uzunluğu geri sararsınız ve geri sarar ve öldürülen kişi için oynatırsınız. Kimse öldürülmediyse ve karakterin çevresindeki yarıçapta kimse yoksa, kaydı silin veya durdurun. Katil bir kapsamda yakınlaştırılırsa, hedeflediği yere bir ışın dökün ve başka bir tetikleyici yarıçap oluşturun. İçinde biri varsa, hedef karakterin hedeflediği yarıçapta kimin ve hedefleyen karakterin ekranını kaydeder. Birisi hedefleyen karakter tarafından ölürse, o zaman öldürme artı öldürme kamının olmasını istediğiniz uzunlukta geçen süreyi alırsınız ve bunu geri sarar ve öldürülen kişi için oynarsınız. Uzaklaşırlarsa kaydı durdurun. Bu bir kavram bu yüzden denemedim.

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.