Bu yüzden sınıflarımın çok zaman aldığını monolitik olarak düşünüyordum. Örneğin, Character
sınıfın Jump
yönteminde, bir ses efekti nesnesine bir başvuru olabilir ve bunu çalabilir. Tek başına iyi, ancak fizik, animasyon, çarpışma vb. Göz önüne alındığında, Jump yöntemi büyükleşir ve Character
sınıfın birçok farklı şeye çok bağımlılığı vardır. Yine de, bu iyi olabilir. Ancak, karakter atladığında artık bir ses çalmasını istemezsek ne olur? Şimdi, kodun karmakarışıklığında o belirli kod satırını bulmalı Jump
ve yorum yapmalıyız.
Yani .. düşünüyordum ..
Bunun yerine, bir çeşit AudioSystem
sınıf olsaydı ve tek yaptığı, diğer sınıflarda ilgilendiği rastgele olaylara abone olmaktı. Örneğin, Character
sınıf yöntemde sınıf içinde Jumped
yükseltilmiş bir olay (herhalde statik de olabilir) olabilir Character
. Daha sonra Character
sınıf, karakter atladığında çalınan küçük ses efekti hakkında hiçbir şey bilmez. AudioSystem
Sadece programcı statik olayların kullanımı yoluyla oyunda gerçekleşmesi belirli olaylarla ses efektleri kanca çekilip verebilecek büyük bir sınıf olacaktır. Çok büyük sahipsek Ardından, gibi alt sınıfları için ayrılmış olabilir EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
, vesaire.
Daha sonra, oyun seçeneklerinde, bu tür sesleri etkinleştirmek veya devre dışı bırakmak için bir onay kutusu olabilir ve yapılması gereken tek şey bu sistemi basit ve tek bir Boole bayrağıyla devre dışı bırakmaktır. Bu sistem fikri, fizik, animasyon, vb. Şeylere, oyuncu eylemlerinden kaynaklanan oyun tepkilerinin çoğunun bu ayrıntılı ve ayrıştırılmış sistemler aracılığıyla bağlandığı noktaya kadar genişletilebilir.
Tamam, bu yüzden sorum biraz belirsiz olabilir, ama bu tür bir şey kulağa nasıl geliyor? Bu tür bir sistem hakkında çok fazla konuşma duymadım. Şimdiye kadar herhangi bir kodlama yapılmadan bunların hepsi kafamda. Belki de "teoride iyi ama pratikte değil" anlaşmalarından biri. Bu tür bir sistem daha büyük bir oyunla çalışır mı yoksa sonunda bozulur ve orijinal sistemden daha fazla spagetti karmaşası haline gelir mi?