Logo Penaz's Area

cat /dev/random > penaz

Il sorgente di VVVVVV arriva su GitHub.


Il codice sorgente di VVVVVV arriva su GitHub, e come questo ha cambiato il mio punto di vista su molte cose.

Buongiorno a tutti,

All'arrivo del nuovo anno, con il messaggio di commit "Hello WWWWWWorld!", il codice sorgente del gioco VVVVVV è approdato su GitHub.

VVVVVV è uno dei miei giochi preferiti, e da programmatore non ho potuto esimermi dal guardare tale codice, cercando di carpire tecniche e strutture che hanno portato all'uscita di quello che è stato quasi universalmente etichettato come "un gran gioco", nel suo piccolo.

Quello che ho visto, però, è risultato essere ben lontano dalle mie attese iniziali.

Leggere questo codice è stato un'emozione unica, mista ad una punta disappunto, con qualche goccia di amarezza e critica. Ma alla fine di tutto è stata un'epifania, uno scossone emotivo di cui forse tutti i programmatori hanno bisogno una volta nella vita.

Mi spiego.

La pubblicazione di questo codice sorgente è l'equivalente di aprire il vaso di Pandora, rimuovendo quel "velo" che fa sembrare il gioco un'opera di ingegno eccezionale.

Dietro a tal velo, invece, si nascondono funzioni per convertire valori booleani in stringhe, "switch" con centinaia di "case" (immaginate centinaia di condizionali, concatenati) e file sorgenti monolitici di 7000 righe.

Il codice è indiscutibilmente poco strutturato, non fa uso di grandi pattern che possano migliorarne la manutenibilità, non ha nemmeno una struttura separata dedicata alla gestione dei menu.

Ma se pensiamo oltre al mero codice, è perfettamente accettabile che sia così.

Il gioco è pubblicato, funziona bene ed è divertente.

Quale lezione possiamo ricavare da questo? Un codice ben strutturato permette una grande manutenibilità nel futuro di un prodotto. E la mancanza di una struttura solida può determinare la morte di tal prodotto (a meno che non si operi un profondo refactoring). Ma se lo sviluppatore resta imbrigliato in una rete infinita di "miglioramenti strutturali", senza apportare nulla alla sostanza (il gameplay, nel caso dei videogiochi), il prodotto non vedrà mai la luce del giorno.

Questo vale anche per le nostre conoscenze, io personalmente ne sono colpevole al 100%, personalmente sono incagliato in un'infinita battaglia per la conoscenza prima di "gettarmi nello sviluppo" di un videogioco.

Ad un certo punto è necessario fermare la corsa alla conoscenza ed iniziare a scrivere codice.

E come possiamo vedere, non è necessario avere grandi strutture di codice per creare un gioco di successo. Certo, tali strutture aiutano, soprattutto nell'ottica di espandere il gioco nel futuro, ma tali strutture devono essere al nostro servizio, e non essere un altro ostacolo all'oggi nella speranza di un domani migliore.

A volte è necessario semplicemente rimboccarsi le maniche e provarci.

Grazie a tutti per aver letto questo primo articolo dell'anno. Alla prossima!

Penaz.