Bir oyunda Ghost Replay özelliği nasıl oluşturulur?


19

Bir konsol yarış oyununda kişisel en iyi tur zamanını ayarladığınızda, hayaletinize karşı rekabet etme seçeneğiniz vardır.

Tek oyunculu gündelik tip oyun için bu özellik nasıl oluşturulabilir?


2
+1 Oyun geliştirmeye yeni başlayan biri için ilginç bir soru (ben). =)
Marcouiller

Bize nasıl bir oyun olduğunu söylerseniz, size daha spesifik olarak yardımcı olabiliriz.
AttackingHobo

Yanıtlar:


10

Hayaletler genellikle önceki bir girişimin tekrarını göstererek yapılır. Bu tekrar, oyuncu arabanın oynatılamayan bir sürümü ile oluşturulur, böylece onu etkileyemezsiniz. Yarış oyunları genellikle tekrar oynatma özelliğine sahip olduğundan, bu tür ücretsiz olarak gelir.

Bir yeniden oynatma sistemi oluşturmak için iyi bir başlangıç ​​noktası: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

Ayrıca bu konuda bir dizi soru var:


+1 Cevabınızla yeni bir şeyler öğrendiniz, teşekkürler! =)
Marcouiller

1

Bu, üzerinde çalıştığınız teknolojiye bağlıdır. Bu nedenle, bir teknolojiden diğerine değişebileceğinden, en iyi yolu gerçekten tartışamayız. Bence iğrenç fikir şu olurdu:

  1. Verilerinizi saklamak için temel alınan bir veri deposu kullanın (XML, Çerezler, Veritabanı, CSV, diğer ...);
  2. Bu temel veri deposuna veri erişiminizi kullanın;
  3. Bir oyuncunun en iyi skoru hakkında bilgi verisini tutmanız gerekir, bu nedenle bir tanımlayıcı gereklidir (e-posta, giriş adı, başka ...);
  4. Bu en iyi puanı tanımlayıcıyla şu ya da bu şekilde ilişkilendirin.

Kısacası, bir veritabanı kullanıldığında, iki tablonuz olabilir:

  1. Kullanıcı / oyuncu verileri (tanımlayıcı, e-posta vb.);
  2. En iyi skor tahtası bilgi verileri.

Daha sonra, istenirse bu puanın ne zaman elde edildiğine ilişkin tarih ve saat kayıtlarını içerebilecek bireysel puan tahtası ile birlikte kullanıcı bilgilerini kaydedebilirsiniz.

Umarım bu yardımcı olur ve soruyu doğru bir şekilde anladım. Aksi takdirde, cevabımı buna göre düzenleyebilmem için lütfen söyleyin.


3
Bence bunu başarmak için bir kayıt / oynatma mekanizması arıyor. Deterministik oyun ortamı, şeyleri değiştiren olayları izleme (örneğin Oyuncu girişi) ve benzerleri genellikle bunu yapmanın önerilen yoludur.
James

Girişiniz için teşekkürler James! Bunlar, bilmediğim şeyler olsa da, cevabım alçakgönüllülükle kolayca yapılabilir bir yaklaşımdır. Ancak, konuyla ilgili daha fazla bilgi edinmek istiyorum. Oh, ve yorumunuz için +1, bu bana başka yapılabilir bir yaklaşım olduğunu öğretiyor. =) Teşekkürler! =)
Marcouiller

Bu aptallık için gerçekten üzgünüm, hala her iki bilginiz sayesinde de temel bilgileri öğreniyorum, gerçekten doğru bilgi ile cevap veremem çünkü hiç sahip değilim. ne yapmak istiyorum her zaman ben yüksek puanı ayarlamak
claude keller

@Tek oyunculu bir oyun hakkında sorusunun cevabını bulduktan sonra, çok oyunculu bir kurulum için neler yapılabileceği hakkında bilgi anlatacaksınız. Sorusu, ilk önce hayaletin nasıl yaratılacağıdır.
AttackingHobo

@AttackingHobo: Bana söylediğin için teşekkürler. Aslında James'ten kayıt hakkında yorum yaptık, sonra wkerslake'in cevabını okudum, şimdi OP tarafından sorulanları daha iyi anlıyorum. Bir yana, önerilen kurulumumun çok oyunculu bir kurulumda kullanılması daha olasıdır. Hey, hala burada öğreniyorum ve daha iyi büyümeye izin verdiğiniz için teşekkürler! Deneyimli bir geliştirici olduğum halde Oyun Geliştirme benim için hala yeni bir numara. =) Yorumunuz için teşekkürler AttackingHobo! =)
Marcouiller

1

Oyununuz hakkında daha fazla bilgi sahibi olmadan bu soruya cevap vermek kolay değil. Wkerslake'in cevabı, hayaletle olan mevcut oyunun kaydedilen hayalet verilerinin determinizmini etkileyemediği sürece işe yarar. Kaydedilen veriler statik bir ortamda tek bir araba zaman denemesi ise, bu tekniği kullanmanız gerekir.

Bununla birlikte, Super Meat Boy gibi hayalet çalma ile birçok oyunda, oyuncunun konumu seviyenin ve AI'nin durumunu değiştirebilir. Açıkçası, hayalet dünyayı ve yapay zekayı etkileyemez, bu nedenle ana oyuncu için her kareyi konum + animasyon değişikliklerini (ve görünür olan her şeyi) kaydetmek daha iyi olabilir. Oynatma sırasında, hayaleti dünyada olmadan geçerli konuma ve animasyon karesine dönüştürün. Bu, bir hayaleti oynatmanıza ve geçerli oynatıcının etkilemesine izin vermez.

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.