Architettura del modello di gioco?

0

Solo per lo sfondo, questo è un progetto che usa Swift e GameplayKit. Mi sono occupato di MVC e di schemi e architetture di design semplici. Gridare a questo thread ( Quale architettura dovrei usare per le mie entità di gioco? )

Sono in un gioco Indie a cui sto lavorando da mezzo mese e il framework sembra essere fermo e stabile. Ma sono diffidente nei confronti di eventuali difetti di progettazione che impediscono di etichettarlo come mio progetto comunitario a lungo termine per il college. L'idea è semplice, come qualsiasi gioco di costruzione di base, ci saranno entità che si muoveranno, come desideri, per attaccare gli edifici della difesa nemica (anche entità).

Il design utilizza il sistema Entity-Component-Composition. Ecco una breve introduzione della mia configurazione:

Master Class - che contiene gli strumenti e gli oggetti necessari per eseguire il gioco come back-end: manager, entità e la scena

Manager - che interagisce con i componenti delle entità con le rispettive parti del modello. ex: un gestore di sprite per aggiungere componenti sprite da entità sulla scena

Elenco delle entità - tenuto da e solo dalla classe master.

Componenti - utilizzando ECC, detenuto da un'entità ma solo un'istanza per entità

I miei metodi di cucito componenti, gestori e Master Class insieme in un modo solido e completo sono i seguenti ordini di delega.

Master Class < -delegates- Manager < -delegates- Components

I componenti dicono al manager cosa vuole che accada, e il manager dice alla Master Class cosa vuole fare con i suoi oggetti. Ogni responsabile avrà il proprio tipo di delegato per la Master Class l'attrezzo. Ogni componente avrà la stessa istanza del gestore corrispondente come delegato. Il manager funge da livello di astrazione / logica tra la domanda dei componenti e lo fa accadere utilizzando gli oggetti in Master Class. I manager verrebbero istanziati con la Master Class (dato che è il delegato) e mantenuti come riferimento debole (ARC) poiché sono anche mantenuti dalla Master Class con un riferimento strong.

La Master Class, tuttavia, può chiamare qualsiasi metodo a suo piacimento poiché ha un riferimento diretto ai gestori e alle entità ma fa solo cose che è delegato a fare e niente da solo.

I componenti. Per creare determinate entità che garantiscono una determinata funzionalità, è necessario che alcuni delegati del gestore vengano passati come parametri di avvio. Verrebbero quindi passati in componenti che richiedono quel delegato in modo che i componenti si occupino delle sue funzionalità chiamando le funzioni delegate (l'entità funge da intermediario di passaggio delegato).

Questo è un progetto che è fattibile per un gioco e un'espansione di massa? C'è qualcosa che vorresti fare diversamente? Tutti i consigli, le critiche costruttive e i suggerimenti sono benvenuti. Buona giornata e grazie per il tuo pensiero.

posta Zijin Cui 15.06.2018 - 08:30
fonte

0 risposte

Leggi altre domande sui tag