venerdì 24 giugno 2011

5 consigli pratici per sviluppare videogiochi (parte 1)

Se programmare è divertente, programmare videogiochi è il massimo. La brutta notizia è che programmare videogiochi è anche dannatamente difficile.

Al di là delle complessità tecniche, il peggior nemico di un aspirante game developer è sicuramente egli stesso. Se avete mai tentato questa strada, sapete che sto parlando della pericolosità intrinseca di idee, emozioni ed entusiasmi.

Le idee, alimentate dagli immediati entusiasmi, nascono come funghi, si sviluppano in modo incontrollato, si accavallano, si soffocano l’una con l’altra. Ci eccitano, ci emozionano, ci spingono a farle crescere (e, quindi, cambiare) prima ancora di averle realizzate. Ci distraggono.

Ci sovrastano.

Ci fanno abbandonare il progetto.

Tutto questo, naturalmente, ha origine nella nostra testa, da cui la teoria che noi stessi siamo il nemico da sconfiggere.

Propongo qui la prima di 5 regole pratiche, quasi zen, che distillano quelle che ritengo essere le best practices dello sviluppatore. Io le ho violate tutte indiscriminatamente più e più volte, e posso quindi affermare che non seguirle non porta a nulla di buono.

Consiglio #1: Pensa piccolo (e riduci)


Il primo punto è, forse, anche il più difficile da realizzare, nonostante l’aspetto innocuo. Richiede infatti una notevole forza di volontà unita a capacità di analisi e sintesi.

Supponiamo che vi sia venuta l’idea per un gioco. Non è grave, c’è di peggio nella vita. La vera disgrazia è se l’idea vi eccita oltre misura. E’ buon sintomo di qualcosa di troppo grosso ed elaborato, qualcosa che probabilmente non vedrà mai la luce. Pensate alla vostra capacità di sviluppatori come ad un foro in una lastra d’acciaio. Quanto misura di diametro? 2 cm? 10 cm? 30 cm? Bene. Pensate ora alla vostra idea come ad un blocco di marmo (notare: un blocco, non una sfera). Quanto misura di lato? 1 metro? 3 metri? 100 metri? A voi la conclusione, sappiate solo che la vostra idea sta dall’altra parte di quella lastra d’acciaio, e dovete farla passare dal vostro foro.

Il lavoro da fare, naturalmente, è ridurre l’idea, eliminando tutto quel che vi sta intorno, spogliandola fino a mostrarne solo il cuore. Questo processo vi lascierà con un blocco di marmo molto più piccolo e diverso dall’originale, forse ancora squadrato e spigoloso, ma già quasi in grado di passare dal foro.

Ci sono due modi per affrontare questo passo. Il primo, più difficile e che richiede maggiore esperienza, è partire già da un’idea di base semplice, aggiungervi qualcosa per farla diventare interessante e passarla poi attraverso il setaccio per eliminare nuovamente tutto quel che c’è di troppo. Come già detto, occorre esperienza e una alta comprensione (a priori) dei propri limiti. Il più delle volte, di conseguenza, la situazione di partenza non è questa, ma l’esatto contrario: partire da un’idea folle e fuori controllo (ma che allo stato attuale giudicherete perfettamente fattibile, purtroppo).

A questo punto, quanto e come ridurre è dato principalmente dalle vostre attuali capacità. Se, ad esempio, non avete mai fatto nulla in 3D, ragionare su un’idea che prenda Doom 3 come punto di partenza è follia. Ma se dobbiamo fare un esempio tanto vale esagerare. Diciamo che la vostra idea sia proprio questa: Doom 3. Qualcosa di simile, magari ambientato nel medioevo, con magie al posto dei cannoni al plasma e castelli al posto delle basi spaziali. Vediamo come applicare il principio di riduzione.

Prendete il vostro Doom 3 medievale e togliete il medioevo, le magie e i castelli. Vi rimane un tizio grosso che gira per un labirinto, inseguito però da mostri che sbucano da tutte le parti!

Ora togliete i mostri e sostituite il tizio grosso con qualcosa che sapete di poter gestire, anche graficamente. Siate onesti con voi stessi. A meno che non siate dei buoni grafici/modellatori (ma siete già dei programmatori, quindi non prendiamoci in giro...) sarete costretti a ridurre il vostro uomo ad una figura geometrica. Una sfera.

Pensateci un po’ su, poi fatevi un favore personale e togliete la sfera. Metteteci un cubo. Ah, molto meglio.

Ed ecco la vostra idea, ridotta all’osso. Un cubo che si muove in un labirinto (di pareti vuote e monocolore). Vi verrà la fortissima tentazione di aggiungere “randomicamente generato” alla parola “labirinto”. Resistete, se possibile. Almeno per ora.

Ci deve essere però un qualche pericolo in questo labirinto, qualcosa che renda il girovagare del vostro cubo avvincente. Ma avete tolto diavoli e mostri. C’è però un nemico invisibile, che non richiede uno sforzo eccessivo per essere gestito: il tempo.

Fuga dal labirinto in una corsa contro il tempo. Ecco, l’idea è stata ridotta all’osso. Certo, è cambiata, quasi non somiglia all’originale ed è sicuramente meno attraente e meno ricca, ma... sapete metterla in pratica? Sapete scrivere questo gioco? Se sì, scrivetelo. Se no, continuate a ridurre. Potete eliminare una buona fetta della complessità passando dal 3D al 2D, ad esempio.

Quando riuscirete davvero a realizzare la vostra idea ridotta (chi ha detto mutilata?!?...) avrete fatto un passo da gigante nel mondo della programmazione di videogiochi.

Concludo citando Rodain Joubert, il realizzatore di Desktop Dungeons:

If you can abstract a game to its building blocks – stripping away concerns of engineering, art, or any of the other stuff that come later – you’ll be able to see what makes other games great and apply that sort of knowledge to your own projects
Rodain Joubert, Desktop Dungeons

2 commenti:

  1. Come non darti ragione! La nostra esperienza su Unrealproject la dice molto lunga su questa prima regola.
    Quante volte vediamo nuovi utenti iscritti che propongono giochi che hanno trame belle e avvincenti anche nuovi e mai visti ma di una tale complessità che l'unica cosa che puoi dire è: "Vola basso e forse arriverai da qualche parte." per citare qualcuno "prima di volare, bisogna imparare a stare in piede e camminare"...
    A quando la prossima regola? Anticipazioni ;)
    Udun

    RispondiElimina
  2. ho aggiunto il tuo blog nei segnalibri del browser ;)
    veramente molto interessante, complimenti

    RispondiElimina