Quindi stavo pensando a quanto monolitico le mie lezioni passino molto tempo. Ad esempio, nel metodo Character
della classe Jump
, si può avere un riferimento a un oggetto di effetto sonoro e riprodurlo. Di per sé va bene, ma quando si tiene conto di fisica, animazione, collisione, ecc., Il metodo Jump diventa enorme e la Character
classe ha molte dipendenze da molte cose diverse. Tuttavia, potrebbe andare bene. Tuttavia, cosa succede se non vogliamo più riprodurre un suono quando il personaggio salta? Ora, dobbiamo trovare quella specifica riga di codice nel pasticcio confuso del Jump
codice e commentarlo o altro.
Quindi .. stavo pensando ..
E se invece ci fosse una sorta di AudioSystem
classe e tutto ciò che ha fatto è stato iscriversi a eventi casuali a cui è interessato in altre classi. Ad esempio, la Character
classe potrebbe avere un Jumped
evento (anche statico, suppongo) che viene generato all'interno della Character
classe nel metodo. Quindi, la Character
classe non saprebbe nulla del piccolo effetto sonoro che viene riprodotto quando il personaggio salta. Il AudioSystem
sarebbe solo una classe enorme che il programmatore potrebbe ritirarsi a collegare gli effetti sonori con alcuni eventi che accadono nel gioco attraverso l'utilizzo di eventi statici. Poi, se si fosse troppo grande potrebbe essere separato per sottoclassi come EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
, eccetera.
Quindi, nelle opzioni per il gioco, si potrebbe avere una casella di controllo per abilitare o disabilitare questo tipo di suoni e tutto ciò che dovrebbe essere fatto è solo disabilitare quel sistema con un semplice e singolo flag booleano. Questa idea di sistemi potrebbe anche essere estesa a cose come la fisica, le animazioni, ecc. Al punto in cui la maggior parte delle risposte al gioco risultanti dalle azioni dei giocatori sono collegate attraverso questi sistemi elaborati e disaccoppiati.
Ok, quindi la mia domanda potrebbe essere un po 'vaga, ma come suona questo genere di cose? Non ho mai sentito parlare di molti tipi di discorsi su questo tipo di sistema. Questo è tutto nella mia testa in questo momento senza alcuna codifica fatta finora, quindi forse è uno di quei tipi di affari "buoni in teoria ma non in pratica". Questo tipo di sistema funzionerebbe con un gioco più grande o alla fine si guasterebbe e diventerebbe ancora più un pasticcio di spaghetti rispetto al sistema originale?