Come hai notato, quando lavori sulle meccaniche di gioco, la velocità di iterazione è fondamentale. Più è lungo il tempo tra pensare a una modifica e riuscire a testare con tale modifica, meno produttiva sarai e più sarai distratto. Di conseguenza, si desidera sicuramente gestire il tempo di iterazione.
Per me, trovo che la mia produttività inizia davvero a diminuire quando il tempo per testare una semplice modifica supera circa cinque secondi. Quindi, quando stai sperimentando per perfezionare il modo in cui il gioco si sente, uno dei tuoi obiettivi deve essere capire "come posso fare un cambiamento e poi giocare usando quel cambiamento in meno di cinque secondi". Non importa come lo fai, purché tu possa mantenere quel tempo di iterazione fino a quel livello.
Molti grandi motori moderni (Unity, Unreal, ecc.) Tendono a farlo inserendo il loro editor all'interno del motore di gioco, in modo da poter apportare la maggior parte delle modifiche dal vivo, senza mai riavviare il gioco. I motori / i giochi più piccoli in genere concentrano il lavoro nella direzione opposta; fai in modo che il gioco si compili e si avvii così rapidamente che non importa se devi riavviare il gioco per ogni modifica; sarai ancora presente e testerai prima che scadano quei cinque secondi.
Nel mio progetto attuale, ci vogliono circa dieci secondi per fare una piccola ricompilazione, collegare, avviare il gioco e quindi raggiungere il gameplay (la maggior parte di ciò sta generando una geometria del mondo renderizzabile durante il caricamento di un gioco salvato). E questo è troppo lungo. Quindi ho creato modalità di gioco "test" separate che mi consentono di testare diverse parti del gioco senza caricare tutte le risorse di gioco reali, in modo da poter entrare e uscire molto, molto più velocemente; in genere in circa 2-3 secondi. Se voglio provare un po 'di UI, posso farlo senza caricarmi nel gioco reale. Se voglio testare il rendering, ho un'altra modalità in cui posso provarlo, di nuovo senza caricare l'intero sistema di gioco.
Ho visto altre persone che hanno affrontato il problema inserendo la logica di gioco in una DLL e lasciando che l'eseguibile del gioco già in memoria ricarichi la DLL mentre il gioco è in esecuzione, in modo da poter ricostruire la DLL e ricaricarla all'interno di un eseguibile già caricato, quindi non è necessario ricaricare / ricostruire le risorse artistiche del gioco. Mi sembra una follia, ma l'ho visto fatto.
Molto più semplice di quello sarebbe specificare i comportamenti di gioco e / o la configurazione in script o file di dati e fornire un modo per far ricaricare i file del sistema, su richiesta, o forse semplicemente guardarli per le modifiche, senza bisogno di chiudere il gioco si interrompe, ricollegarlo e quindi riavviarlo.
Ci sono molti approcci. Scegli ciò che funziona meglio per te. Ma una delle chiavi per perfezionare con successo la meccanica di gioco è l'iterazione estremamente rapida. Se non lo hai, quasi non importa cos'altro fai.