SORU
17 ŞUBAT 2009, Salı


Nasıl MVC deseni uygun bir oyun kodunu ayarlayabilir misin?

Ben bir çaylak olarak üniversiteye gidiyor benim bilgisayar bilimi diplomasına... programlanmış bir sürü son birkaç yıldır ama son zamanlarda almaya gittim daha teorik fikirleri organize kod, tasarım desenleri, farklar, diller, vb.

Java Dersim var, C araştırma/geliştirme düştü ve Java ve JOGL (Java OpenGL) içine taşındım. Harika! Ama bu konumuzun dışında.

Rol yapma küçük bir oyun yapmak istiyorum, ama bu soru gerçekten oyun herhangi bir tür için geçerlidir. Nasıl, Görünümü Modeli-kontrol deseni gibi yapılandırılmış bir şekilde oyun nesneleri düzenler misin? Harika bir desen, yaygın olarak kullanılan çok oldu ve çok mantıklı, ama sorun bunu nasıl çözemedim ben.

Örneğin, ekrana çizim için GL bir nesneyi takip etmek istiyorum. , MouseMotionListener, MouseWheelListener ve KeyListener (veya bir sınıf, hepsi bir bir giriş yöneticisi) MouseListener uygulayan sınıflar var. Ve ben koymak benim oyun verileri bir yere nerede tüm bu farklı sınıflar erişebilir ve değiştirebilir; eğer birisi bir düğmeye basarak klavye, giriş yönetme sınıf ihtiyaçları bir şekilde gerçekleştirmek eylemi anahtar eşlenen için; ne zaman bir çerçeve gerekiyor çizilen grafik sınıf ihtiyaçları için bir yolunu bulup döngü boyunca farklı 'şeyler' ve onları çekmek.

Ve benim en büyük sorun, GUI; ben herşeyi içine kravat mı? Bunun gibi bir şey girdi, ama tam olarak değil, ve ihtiyaçları için set hem de get adet verilerden gerçek oyun simülasyon... Ve DAHA da karmaşıklaştıran ise ben karar deneyin ve eklemek ağ, (benzer GUI) de ihtiyaçları var erişmek için bir sürü veri değiştirme ve okuma...

Sadece kafam çok karışık. Bilmiyorum nasıl yaparız bu işi birlikte nesne yönelimli moda... kolay yazı işleri açıkça uyacak desenleri, ama zaman var ton şeyler oluyor eli kolu bağlı bir oyun döngü, değiştirme birbirimizi ve oyun verileri ve benzeri ... ben bile bilmiyorum artık. Belki de aslında bu büyük bir anlaşma yapıyorum.

Herkesten bu şekilde miydi? Lütfen benim durumum biraz netlik sunmak için daha az zaman endişe ve nereden başlayacağını bilmemek geçireyim diye!

-Ricket

Edit: bana bu anlamaya yardımcı olabilecek güzel bir diyagram... Kaynak Buldum: (dikkat, PS dosya!) http://www.tucs.fi/publications/attachment.php?fname=TR553.ps.gz

http://img10.imageshack.us/img10/6278/mvcdiagramgamesbl5.png

Edit2: ayrıca MVC onun oyun planladı nasıl bu adamın açıklama istiyorum: http://interactivesection.wordpress.com/2007/11/19/dum-de-dum-drum-my-first-mvc-game-development/

Edit3: Başka bir harika yazı! http://dewitters.koonsolo.com/gamemvc.html

CEVAP
17 ŞUBAT 2009, Salı


Oyun API bir Modeli düşünmek yardımcı olabilir. Oyun eğer oyunu baştan rütbesi için UI olsaydı orada hiçbir azalma ne olurdu? Sen söyleyince ne aklından geçen bir RPG, yani bu durumda seni hayal olan oyuncu karakteri, onun stok, büyüler, yetenekler, NPC, ve hatta şeyler gibi harita ve savaş kuralları tüm katılmak modeli. Son oyun bu görüntüler nasıl veya kullanıcı ile etkileşim ne kadar özellikleri olmadan kuralları ve Tekel parçaları gibidir. 3 boyutlu nesneleri kesişme ve çarpışma gibi şeyler ile bir seviye ama hayır işleme, gölgeler, ya da ses efektleri hesaplanan ile hareket eden soyut bir set olarak Deprem gibi.

Modeli içine hepsini koyarak oyunun kendisi UI agnostik. Haydut oyunları gibi bir ASCII metin arayüzü bağlı olabilir, ya da bir komut satırı Zork, ya da bir web tabanlı, ya da 3D UI UI benzer. Bu KBS bazı korkunç bir uyum oyun mekaniği bağlı olabilir, ama mümkün olacaktır.

Görünüm UI bağımlı katman katman. Gittin ve çok teknoloji adanmış olacak UI belirli bir tercihi yansıtır. Modelin durumunu okuma ve web sayfası için 3D, ASCII, veya görüntüleri ve HTML biçiminde çizim için sorumlu olabilir. Ayrıca oyun ile etkileşim için gereken tüm kontrol mekanizmaları görüntülemek için sorumludur.

Denetleyici katmanı ikisi arasındaki tutkal. Hiç gerçek oyun mantığı var, ne de Görünümü katman sürüş için sorumlu olmalıdır. Bunun yerine eylemler model alınması halinde eylemleri View katmanında alınan (her ne düğmeler, ekranın alanlara tıklayarak, joystick eylemleri, tıklayarak) çevirmek gerekir. Örneğin, bir öğe bırakarak, bir NPC saldırıyor, ne olursa olsun. Ayrıca veri toplama ve herhangi bir dönüşüm veya işlem Görüntüleme katmanı görüntülemek için daha kolay yapmak için sorumludur.

Şimdi, yukarıda anlattığım şekilde çok farklı olay dizisi muhtemelen gerçekten bir web oyun için uygun değildir sadece bu oyun sürüş var sanki. O son zamanlarda vakit geçirdim çünkü. Bir oyun değil tahrik ederek bir kullanıcının isteği ve bir sunucunun tepkisini gibi web (örneğin bir oyun üzerinde çalışan kullanıcı makine) olur muhtemelen emin olmak için Model katmanı uygulanan Gözlemci desen iyi. Eylemler süre sonra geçiyor çünkü Modelde yer alması, örneğin, Görünümü sürekli güncellemeleri için Model yoklama tabaka olması gerekir. Gözlemci desen kullanmak yerine, modeldeki onlar ne gibi nesneleri Model değişiklikleri gözlemciler haber verir. Bu da değişikliği yansıtacak şekilde Görüntülemek için hemen güncelleştirme istemi için kullanılabilir.

Eğer 60 saniye geçen bazı onarımlar oyuncunun base için neler sonuçlandı, temel tamirler ve hemen güncellenecektir olan herhangi bir Gözlemci ona bağlı haber verir. Görünüm Gözlemci olarak bağlı olabilir ve yeniden görüntülemek için durumu değiştirildi çünkü temel ihtiyacı olduğunu unutmayın. Görüntülemek veya güncellemek için yeterli bilgi içeriyordu kendisi olabilir bildirimi güncellemek için arkanı dön ve model danışmak olabilir, ama sonuç aynı olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006