Sfondo:
Quindi sto cercando di creare il mio primo motore di gioco per scopi di apprendimento. Dopo aver consultato alcuni articoli, sono riuscito a progettare le parti iniziali del mio motore almeno per farmi andare avanti. Il mio progetto finora ha il mio livello "Framework" per il quale tutti gli altri sottosistemi di livello superiore (grafica, input, audio, ecc.) Useranno. Ciò aiuterà la portabilità del codice e mi consentirà di modificare il codice di implementazione sottostante senza dover modificare l'intero codice base (solo il mio codice framework). Questa struttura ha fornito abbastanza di un quadro mentale per farmi andare avanti. Tuttavia, dopo aver programmato alcune cose e aver ottenuto un triangolo sullo schermo e spostato tramite l'input da tastiera, trovo difficile decidere come strutturare ulteriormente i miei diversi sottosistemi (grafica, input, audio, ecc.). Voglio avere un progetto in atto per consentire la comunicazione tra i sottosistemi con il minor numero di sistemi possibile.
Problema:
Il mio problema principale è che trovo difficile progettare ulteriormente il mio motore poiché non so davvero dove andare dopo. Immagino che questo sia un problema tipico per qualsiasi sviluppatore che sta sviluppando qualcosa di nuovo o sconosciuto. Ad esempio, non so veramente quale tipo di funzioni avrò bisogno o chi userà queste funzioni per il mio sistema grafico. I singoli oggetti saranno responsabili del disegno di se stessi? La finestra gestisce la grafica dei disegni? Con l'esperienza precedente, avrei un'idea migliore di queste cose e potrei progettare il mio software di conseguenza ma a questo punto non ne ho.
La mia domanda:
La mia domanda è quali sono alcuni processi di pensiero o pratiche di sviluppo che ti aiutano a provare e ad architettare un codice per il quale non sei sicuro di dove devi andare dopo? Capisco che questo possa essere un argomento importante, quindi cerco solo suggerimenti rapidi per farmi pensare a diverse tecniche possibili. Ho già alcune idee qui sotto, ma volevo ottenere più pensieri dalla comunità.
I miei pensieri su alcune possibili soluzioni:
-
Disegna alcuni diagrammi per avere un'idea di come le cose andranno a finire: Dopo aver elaborato un'idea progettuale, disegna alcuni diagrammi di classe con le loro interazioni mappate. Questi diagrammi possono aiutarti a individuare eventuali limitazioni nella tua idea di progetto rapidamente e senza alcun codice. Tuttavia, potrebbe essere necessario creare molti diagrammi prima che le limitazioni con l'idea diventino evidenti
-
Inizia a sperimentare la tua idea nel tuo codice: con un sistema di controllo delle versioni puoi semplicemente diramare il tuo codice base e iniziare a sperimentare con la tua idea. Ciò ti aiuterà a dare un feedback immediato con i limiti del tuo progetto, poiché qualsiasi duplicazione del codice o problemi di compilazione sarà immediatamente evidente dopo l'implementazione. Tuttavia, questo richiederà più tempo e può essere più difficile vedere l'immagine più grande e le ramificazioni del tuo approccio progettuale.
-
Ripristino di schemi di progettazione consolidati: basta individuare i principali problemi che il sistema deve risolvere e applicare un modello di progettazione corrispondente per risolverlo. Ci sono un sacco di schemi di progettazione comprovati che hanno aiutato a risolvere i problemi per decenni. Puoi semplicemente impostare questi pattern in modo predefinito quando non sai veramente dove andare e chiedi loro di portare avanti il tuo progetto. I problemi qui sono che ci sono così tanti modelli diversi là fuori per problemi diversi che può essere difficile decidere esattamente quale risolvere meglio il tuo problema. Inoltre, l'impostazione predefinita di un modello di progettazione può guidare l'architettura del sistema in una direzione che non si desidera particolarmente andare, ma non la noterà più avanti nel processo.
-
Qualsiasi altro pensiero ??????