Benvenuti nel settore dei giochi :)
Quindi stai facendo un massiccio refactoring. Il refactoring massiccio è il Male, ma non è questo l'argomento. Probabilmente ti è stato dato questo compito di testare i tuoi nervi comunque, quindi non arrenderti.
La mia risposta è: si deve scomposizione in piccoli pezzi. Tra qualche mese sarà la tua routine quotidiana, quindi devi imparare a dividere e conquistare. Fondamentalmente è il tuo lavoro. Alcuni suggerimenti:
Assicurati di capire cosa dovrebbe fare questo componente . Gioca con ciò che devi eliminare e vedi cosa fa, chiedi ai tuoi colleghi se i tuoi presupposti sono giusti.
Stai riscrivendo questo modulo per un motivo. Potrebbe non essere ovvio per te, ma se ti è stato assegnato questo compito è molto probabile perché qualcosa era così schifoso che la gente sente che è meglio ricominciare da capo. Chiedi in giro: quali sono questi difetti ?
Prova a trovare la funzionalità principale del componente che stai riscrivendo, la sua stessa sostanza, il motivo per cui esiste e inizia a farlo funzionare. Deve essere davvero minuscolo, il più piccolo possibile. Chiedi ai tuoi colleghi cosa pensano che questa funzionalità sarebbe. Se è un sistema GFX, basta visualizzarlo con un poligono. Se si tratta di un sistema di animazione, basta posizionare correttamente un osso. Se si tratta di un sistema di intelligenza artificiale, fallo riprodurre un'animazione. Ecc. Ecc. Basta spazzare via tutto ciò che si frappone e ti dà tutti quegli errori scoraggianti. Non essere disturbato dai dettagli, fai in modo che questa funzionalità di base funzioni il più rapidamente possibile. La tua implementazione sarà brutta, piena di bug, hack e numeri magici e non lasceresti che nessuno guardi il tuo codice, ma non è un problema.
Una volta che hai questa caratteristica fondamentale, inizierai già a sentirti meglio. È essenziale vedere il risultato del tuo lavoro il prima possibile 1) per il tuo morale 2) per poterlo testare. Quindi, testalo, stress test, torturalo . Se si arresta in modo anomalo o mostra un bug davvero grave, risolvilo. È il cuore del tuo modulo, quindi rielaboralo un po 'e puliscilo finché non ti senti a tuo agio con esso.
Quindi mostralo ai tuoi colleghi e chiedi loro se questo è ciò di cui il gioco ha bisogno. Chiedi una recensione del codice : i tuoi colleghi probabilmente ti parleranno di un sacco di cose a cui non hai pensato. Dovrai eseguire nuovamente il refactoring per assicurarti che l'implementazione si adatti a ciò che desidera il resto del team.
Quindi, quando ti senti pronto, scegli una delle altre funzionalità che hai cestinato in precedenza, risciacqua, ripeti. Fallo funzionare il più velocemente possibile, rielabora, chiedi una recensione, rielabora.
Devo porre l'accento un'ultima volta su questo: comunicare . Chiedete a voi colleghi, non solo il vostro esempio, non solo i programmatori, tutti coloro che useranno o testeranno o valuteranno questo sistema. Non temere di fare domande stupide: in caso di dubbio, è sempre meglio ottenere le informazioni adesso piuttosto che aspettare settimane per una riunione o una recensione.
La realtà della programmazione di gioco è che non creerai nuovi sistemi luccicanti ogni giorno, è un lavoro di concentrazione e di fare le cose in modo rapido ed efficiente. Mettiti insieme, mettiti al lavoro e buona fortuna!
MODIFICARE
Ci sono informazioni extra che trovo utili nel commento di Leo e nella risposta di Dhasenan, sto spudoratamente sostenendo che da loro per completare questa risposta.
Non ho scritto su come gestire le interdipendenze . Il modulo che stai riscrivendo è probabilmente profondamente associato al resto del gioco, ecco perché ricevi così tanti errori quando cambi qualcosa. Quindi ci sono due soluzioni:
Se ci sono solo alcune dipendenze, allora sei fortunato. Il vecchio e il nuovo modulo possono essere mantenuti in parallelo per un po ', puoi anche avere un interruttore per i tuoi utenti in modo che possano decidere di cambiare tra il vecchio e il nuovo modulo ogni volta che ne hanno bisogno. Basta inserire un interruttore da qualche parte, in un file di configurazione o in un menu di debug, e usarlo ovunque il tuo modulo sia collegato al resto del gioco. Quando il nuovo modulo è pronto per la produzione, attivare l'interruttore per impostazione predefinita. Successivamente, quando il vecchio modulo non viene più utilizzato o quando la produzione deve continuare, rimuovere il vecchio modulo e l'interruttore.
Se ce ne sono moltidipendenze, è necessario scollegare e ricollegarli uno per uno. Cerca di mantenere entrambi i moduli in background e ogni volta che ottieni una nuova funzionalità, passa al nuovo modulo per quella funzione. Vale a dire scollegare e ricollegare ciò che è legato a questa funzione. Ci vorrà del tempo perché probabilmente è più lavoro che cambiare una sola chiamata di funzione: alcune strutture di dati potrebbero cambiare, il flusso del programma potrebbe cambiare, ecc. Ma è ancora meglio che riscrivere tutto una volta e impiegare settimane per uccidere la bestia della compilazione. Se è davvero impossibile mantenere in parallelo sia il vecchio che il nuovo modulo perché il modulo è così vitale per il gioco, potresti prendere in considerazione la riscrittura in atto. Ma attenzione che ciò potrebbe significare che se i difetti si trovano nell'interfaccia del vecchio modulo, si otterranno gli stessi difetti. Comunque, se questo accade,
Se c'è qualcosa di specifico nello sviluppo di videogiochi, è questo: non stiamo facendo scienza missilistica, o un complicato lavoro di ricerca, facciamo parte di un processo creativo. Quando fai qualcosa, devi creare una prima versione il più rapidamente possibile in modo che possa essere testata, giocata, disapprovata e modificata. Non puoi passare settimane a fare "un lavoro molto lungo" senza consegnare un po '.