MVC o componenti o entrambi?


9

Sono uno sviluppatore esperto ma recentemente ho voluto entrare nella programmazione del gioco, ma come sai lo sviluppo del gioco è una bestia completamente diversa dalla maggior parte delle altre forme di programmazione (forse migliorata solo dallo sviluppo del sistema operativo).

Detto questo, ho letto Game Coding Complete (ISBN 978-1-58450-680-5) di Mike McShaffry.

Inizialmente stavo provando a sviluppare un modello di componente con l'assortimento di componenti usuali (ad es. SpacialComponent, VisualComponent, EntityLogicComponent, ecc.) Tuttavia Mr. McShaffry raccomanda di utilizzare il modello MVC che sembra molto attraente ma non sono sicuro di come può farlo funzionare con il modello componente, se possibile, ma, senza componenti, il modello MVC sembra una sorta di mostro ereditario monolitico malvagio e non molto flessibile, a cui non mi interessa davvero.

Sono davvero confuso su dove andare da questo punto.

Hai esperti voodoo di codifica di giochi con qualche idea o consiglio?

Grazie mille!


Questa domanda su StackOverflow parla della progettazione basata su componenti, potrebbe esserti di aiuto.
Macke,

Risposte:


6

Domande utili:

Architettura del motore di gioco MVC (Model-View-Controller) - Sì o No?

Perché MVC e TDD non sono più impiegati nell'architettura di gioco?

Compartimentazione simile a MVC nei giochi?

Per me, ho una classe base RenderComponent e poi alcune che ereditano da quella (GameSprite, UISprite, o se stai facendo 3d StaticModel, DynamicModel, BillboardModel, ecc.) E se l'oggetto si vuole renderizzare, l'oggetto invia il suo Membro RenderComponent al sistema di rendering. Non è necessario che il sistema di rendering sappia quale tipo di oggetto ha inviato RenderComponent. Sa solo che ha qualcosa da renderizzare e meglio farlo, altrimenti!

Mantienilo di base e incentrato sulla composizione piuttosto che sull'eredità. Separare logica, dati e rappresentazione non è incompatibile con un sistema componente.


6

Consiglio di ignorare i componenti per il tuo primo gioco perché risolvono alcuni tipi di complessità aggiungendo maggiore complessità in altre aree e se non hai già creato un gioco non hai idea del valore di questo compromesso o meno.

Per la maggior parte, però, non impantanarti nei paradigmi di programmazione e codifica solo un gioco. Non ci sono modi giusti o sbagliati, altrimenti nessuno avrebbe bisogno di porre questo tipo di domande. Risolvilo mentre vai avanti.


1
+1 per "risolvono alcuni tipi di complessità aggiungendo maggiore complessità in altre aree". Così vero per quasi il 99% dei "modelli di progettazione" là fuori, o addirittura per la tecnologia in generale.
kizzx2,

2

Non userei uno schema MVC rigoroso, ma separerei il rendering dalla simulazione e lo incollerei su un altro thread.

Penso che i componenti siano molto utili in realtà, ma vedo spesso le persone semplicemente ignorarli e scrivere il loro codice direttamente nel componente "principale" qualunque esso sia. Devi ricordare che i giochi sono pieni di hack perché sono spesso scritti in una scadenza con il presupposto che il codice non verrà riutilizzato.

Sono un po 'confuso sul perché pensi che questi approcci siano incompatibili. Quale codice di gioco hai visto?

Personalmente, penso che i giochi richiedano un po 'di design frontale. Ho visto un paio di basi di codice che erano incubi a causa della "mentalità da codice".

Detto questo, penso che dovresti semplicemente saltare e programmare un gioco. Farai così tanti errori durante la scrittura del tuo primo gioco che questi tipi di problemi non contano molto. Una volta che hai una migliore comprensione di ciò che è necessario, puoi tornare indietro e iniziare a guardare l'architettura e vedere come risolve i problemi che hai riscontrato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.