Başarı sistemleri daha sonra geliştirme aşamasında uygulanabilir mi?


12

Bu özelliği o sırada oyunuma uygulamak isteyip istemediğim konusunda kararsızım. Projenin kontrol dışına çıkmasını istemiyorum, bu yüzden önce çekirdek mekaniğe odaklanıyorum.

Bu, daha sonra her şeyi veriyi sürdüğümü ve her şeyi sakladığımı varsayarak uygulanması kolay bir özellik mi?


3
Birkaç yıl önce belli bir tanınmış DOS oyununu pencerelere taşıdım - oyunda herhangi bir değişiklik yapacak olsaydık, eklemeyi çok isterdim - başarılar olurdu. Bu yüzden açıkça tasarlanmayan 10 yaşın üzerindeki bir oyuna başarılar ekleyebilirsem, hemen hemen her yere eklenebileceklerini söyleyebilirim. Heck, bu sitenin başarıları var ..
Jari Komppa

Yanıtlar:


19

Tasarımın uygulama teknikleri veya sonuçları açısından mı soruyorsunuz? Her iki durumda da, sorunuzun cevabı "evet" tir.

İşlerin teknik yönünden, genel olarak konuşursak, kodunuzda başarı etkinliklerinize yanıt veren kancaları ve stat izleme kodunuzu oraya koyarsınız. Oyunda halihazırda gerçekleşen tam olarak farklı olaylar olmayan şeyleri izliyorsanız bazı yeni şeyler eklemeniz gerekebilir (örneğin: X oynatılan saat miktarı).

Şeylerin tasarım tarafından bakıldığında, başarılar dışsal motive edicilerdir ve onları eklemek, onları aramak isteyen insanlar hariç, esas oyun döngüsüne çok fazla oynamaz. Yani ne olursa olsun oldukça güvendeler.


Evet, şimdi yapıyorum. shotsFired++Yeni mermilerin örneklendiği ve shotsHit++merminin başka bir oyuncuyu etkilediği kısımda bağlantı kurmak oldukça kolaydı . Bu ne kurşunu kimin vurduğunu izlenen yardımcı oldu (ı vb öldürmeyen insanlarınkine izlemek için kullanırız çünkü)
bobobobo

5

Oyun motorunuzun iyi tasarlanmış olması ve bir tür gözlemlenebilir olay sistemi kullanması şartıyla (etkinliklerin ilgili taraflarca oluşturulduğu ve dinlendiği yerlerde), bir başarı sistemini daha sonra "ekleyerek" ( uygun dinleyiciler). Bu tür tasarım çok esnektir.


2

Halihazırda mevcut insanlar iyi cevaplar eklediğinden, ortaya çıkmamış durumlara cevap vereyim.

Eğer oyununuzu kodlamayı tamamladığınız ve şimdi başarıları kodlamaya başladığınız ve çok fazla değişken ve sayımı koruyabileceğiniz ve bu gibi belirli olaylarda ve şeyleri temizlediğinizde çok karmaşık bir konumdaysanız.

Tüm olayları almak için her zaman bir sınıf (tercihen singleton) oluşturabilirsiniz. Şimdi tüm başarılarınızı listeleyin. Ardından izlenmesi gereken tüm oyun etkinliklerini listeleyin. Örneğin, mevcut listem böyle görünüyor

KILL ENEMY - yürüme, mermi OYUNCU ÖLÜM - düşen_çok, sağlık ENTER_ROOM, EXIT_ROOM vb.

Yürüme, mermi gibi ekstra detaylar parametre olabilir. Şimdi bu Başarı izleme sınıfında fireEvent adlı bir işleve sahip olun. FireEvents için gereken tüm kodları arayın ve bu işlevi çağırın. Şimdi Başarılar sınıfındaki diğer kirli işleri yapın. bu, mevcut kod ve kod Başarılarını rahatsız etmemenin en güvenli yoludur. Benim için oldukça hızlı çalıştı.


Bu geliştirme sonrası uygulama için gerçekten iyi bir çözüm. Bunu aklımda tutacağım çünkü uygulamak isteyip istemediğimden hala emin değilim. Bunu daha sonraki bir aşamada yapabilirim çünkü projemin kapsamının kontrolden çıkmasını istemiyorum.
Bryan Harrington
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.