Quake 3 motorunun incelenmesine yardımcı olacak kaynaklar [kapalı]


14

Quake 3 motorunun kodunu kodun ötesinde incelemeye başlamak için iyi kaynaklar (kılavuzlar, öğreticiler vb.) Var mı?

Eğitimsel amaçlar için nasıl yapılandırıldığını bilmekle çok ilgileniyorum ve belki de bazı değişiklikler yapıyorum.

Yanıtlar:


13

Yani, Wikipedia'nın id Tech 3'teki makalesine bakarak başlamalısınız . Bu, Brian Hook'un GDC konuşma özeti ve Element 61 blogundaki bazı eski şeyler ile artırılabilir . Buna ek olarak, neler olup bittiğini yeniden yapılandırmak için bulabileceğiniz eski mod eğiticilerinden oluşan bir grupla dolaşmak zorunda kalacaksınız.

Neler olup bittiğini (girişin motor içinde nasıl ele alındığı ve yönlendirildiği, ne tür bir temel olay) yapı kullanılır vb.).

Bununla çalışırken bana yardımcı olan bazı önemli noktalar:

  • Her zaman bir sunucu vardır; ayrıca bir çerçevenin üst kısmında oturan istemci mantığı da olabilir.
  • Giriş önce bir konsola, eğer ilgilenirse, daha sonra GUI'ye, sonra da uygun oyuna yönlendirilir.
  • Motor, tuzak fonksiyonları kullanılarak oyun mantığından ayrılır (zor!). Cgame'ye bakın (bellek hizmet veriyorsa) ve gerçek motor kodunu bulmak için projeler oluşturun.
  • Oyun mantığı tamamen Quake 3 sanal makinesinde çalışacak şekilde yazılabilir. Modifiye ederken ve yerel dll'leri kullanırken quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0, motorun VM kodu yerine yerel kodu çalıştırmasına izin vermek için oyunu çalıştırmanız gerekir .
  • Menü sistemi için kullanıcı arayüzü, garip, kötü, bükülmüş yapı ve geri arama yığınıdır. Bunu bir kez çözdüğünüzde kullanılabilir, ancak bu biraz deneme yanılma gerektirebilir. Unutma, bu bir yığın.
  • Yerel .dll dosyalarında kod yazıyorsanız, bellek ayırabilir, C ++ ile yazabilirsiniz veya teknenizde yüzen herhangi bir şey. STL'yi de kullanabilirsiniz - C deyimlerini sıkı bir şekilde takip etmek için motorla doğrudan arabirim kurduğunuz yer dışında bir neden yoktur.

Bir iş arkadaşınızla bunun için yaptığım bazı düzgün şeyler:

  • Kabuk komutlarını konsoldan çağırmak ve stdout / stderr akışlarını konsola (Quake konsolu) geri dökmek için basit komut satırı arabirimi.
  • Kayıtları çekmek ve görüntülemek için bir SQL veritabanı ile arayüz.
  • İstemci kümesinde esnek görüntüler oluşturmak için esnek pencereleme ve widget araç seti (çubuk grafikler, metin kutuları, resim kutuları, bağlam menüleri, yeniden boyutlandırılabilir pencereler vb. Kullanarak).
  • Yavaş roketler. :)

Şahsen, motorun gerçekten aptalca yollarla yapılan gerçekten akıllı şeylerin, gerçekten akıllı yollarla yapılan gerçekten aptalca şeylerin ve gerçekten akıllı yollarla yapılan gerçekten akıllı şeylerin harika bir kombinasyonu olduğunu buldum. Orta ölçekli bir C projesinde modülerliğe ve iyi yapılandırılmış tasarıma sahip olmanın harika bir örneği.

Son olarak, grok yapmak biraz zaman alırsa kendini kötü hissetme. Motorda aradığımı nereden bulabileceğimi gerçekten bilmek bir ayımı aldı; eğer her şey başarısız olursa, uygulama başlangıcından başlayın ve sadece fonksiyonlar için tünel açın, yorumları kendiniz için tabela olarak bırakın. Monitörüm fonksiyon adları, satır numaraları ve yaptıklarıyla ilgili kısa açıklamalarla pembe post-it notlarla kaplandı.



1

Kesinlikle.

http://en.wikipedia.org/wiki/Quake_engine , orada ne olduğuna dair iyi bir genel bakış, ancak alıntılarıyla mimarisinin ayrıntılarına hızla girebilirsiniz.

Ayrıca aradığınız şeyle daha uyumlu olabilecek oyun motoru mimarisi üzerine birkaç kitap önerebilir miyim. Quake'e özgü olmasa da, motor tasarımının ayrıntılarına girerler ve Quake motorlarının birçok yönüne paralel çalışırlar:

  • 3D Oyun Motoru Mimarisi - 978-0122290640
  • 3D Oyun Motoru Programlama - 978-1592003518

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.