Qual è il modo migliore per separare il codice di rendering dal motore di gioco/codice logico effettivamente? Ed è anche una buona idea separarli?Separazione logica di gioco e rendering
Supponiamo di avere un oggetto di gioco chiamato Cavaliere. Il cavaliere deve essere reso sullo schermo affinché l'utente possa vederlo. Ora siamo rimasti con due scelte. O diamo al Cavaliere un metodo Render/Draw
che possiamo chiamare, oppure creiamo una classe di rendering che si occupa di rendere tutti i cavalieri.
Nello scenario in cui i due sono separati, il Cavaliere dovrebbe ancora contenere tutte le informazioni necessarie per renderlo, o anche questo dovrebbe essere separato?
Nell'ultimo progetto che abbiamo creato abbiamo deciso di lasciare tutte le informazioni necessarie per il rendering di un oggetto da memorizzare all'interno dell'oggetto stesso, ma avevamo un componente separato per leggere effettivamente tali informazioni e renderizzare gli oggetti. L'oggetto conterrebbe informazioni come dimensione, rotazione, scala e quale animazione era attualmente in riproduzione e in base a ciò l'oggetto di rendering avrebbe composto lo schermo.
I framework come XNA sembrano pensare di unirsi all'oggetto e il rendering è una buona idea, ma abbiamo paura di rimanere legati a uno specifico framework di rendering, mentre la creazione di un componente di rendering separato ci dà più libertà di cambiare framework a in qualsiasi momento.
Ignora implementazioni di XNA. Per quanto mi piaccia, il modo "predefinito" di vedere esempi sul web e nei libri è orribile. Ogni oggetto conosce la classe di base del gioco e, a sua volta, tutto sa come disegnare e così via. Questo non va bene. La soluzione di Thomas è l'ideale e ciò che molte persone fanno. – Finglas