Nell'ultima puntata di Developing, ho scelto il motore di gioco - Unity - e ho iniziato ad imparare ad usarlo. Ma ora è il momento di rivelare l'idea per il mio gioco e, beh, di iniziare a crearlo. Ma da dove si inizia a sviluppare un gioco? Penso sia una domanda d'importanza cruciale perché, come vedrete, iniziare lo sviluppo di un gioco col piede sbagliato può rivelarsi disastroso per il progetto. Fatemi spiegare. Fatemi iniziare dall'idea per il gioco. Creerò, e tenetevi forte perché è pazzesco, un platform bidimensionale a scorrimento orizzontale. Sì, lo so, tutti gli sviluppatori indie iniziano con un platform a scorrimento orizzontale. Ma penso ci siano delle buone ragioni. Amo il genere. Nel complesso i platform sono relativamente facili da creare - quantomeno non è un MMO. Ed ho creato molti video sul level design e il character design per i platform, il che dovrebbe tornare utile. Inoltre sarà, tenetevi forte di nuovo, un platform con una peculiarità. L'idea è di rendere magnetico il personaggio del mio platform, ovvero respingerà alcune piattaforme attraendone altre. E si potrà cambiare la polarità premendo un pulsante. L'idea mi è venuta da questo gioco: The Legend of Zelda: Oracle of Seasons. In questo gioco c'è un guanto magnetico come power-up che permette a Link di respingere alcune superfici attraendone altre. Può essere usato anche per raccogliere grandi sfere metalliche da usare nella risoluzione dei rompicapo e per combattere i nemici. È una meccanica davvero forte ma sembra limitata dal genere, dalla prospettiva top-down della telecamera, e ovviamente dai limiti tecnologici del Game Boy. Così ho pensato: e se prendessi in prestito quell'idea e la implementassi in un genere diverso, un frenetico platform 2D? Qualcosa che richiama Celeste o Super Meat Boy. Un gioco in cui bisogna padroneggiare il magnetismo per avere velocità, fluidità e precisione. Questa è l'idea. Mentre la domanda ora è: da dove inizio? Apro Unity e inizio a programmare? Apro Photoshop e inizio a creare la grafica? Inizio a pensare alla storia o ai personaggi? Da dove inizio? Sarò sincero con voi: non è il primo gioco che tento di creare. Fin da bambino ho avuto idee per i giochi, e in vari momenti della mia vita ho provato a creare quei giochi con diversi strumenti e quant'altro. Ma non ho quasi mai finito quei giochi e penso che la ragione sia sempre la stessa: ho iniziato nel modo sbagliato. Lasciate che vi mostri. Ho preso questa cartella dalla casa dei miei genitori ed è piena di note e bozzetti e idee per un gioco che stavo creando alcuni anni prima di iniziare Game Maker's Toolkit. Questo è un tappetino per il mouse di Starcraft Ghost. Quel gioco non è mai uscito, giusto? Potrebbe valere qualcosa, lo metto tra la roba di eBay. Il gioco avrebbe dovuto chiamarsi Carter's Curse. Parlava del famoso archeologo Howard Carter, il tizio che ha scoperto la tomba di Tutankhamon. E, almeno nel mio gioco, avrebbe anche rievocato un'antica maledizione egizia che lo avrebbe portato a combattere zombie, mummie e antiche divinità egizie. Ricordo di aver passato ore ed ore a disegnare tutta questa roba. Voglio dire... che nerd! Comunque. Come avreste affrontato questi nemici? La risposta: giocando a dei rompicapo Nonogram. I Nonogram sono dei rompicapo a griglie basati sulla logica, un po' come il Sudoku. Nintendo ha creato molti giochi del genere. Ero davvero ispirato da giochi come Bookworm Adventures dove c'è un rompicapo alla base dello schermo che se completato danneggia i nemici in una piccola scena di combattimento in cima allo schermo. La mia idea era simile: ci sarebbe stata una griglia Nonogram alla base dello schermo mentre Howard Carter avrebbe combattuto i mostri in cima allo schermo. Sono quindi passato allo sviluppo. Stavo creando il gioco in un'app per iPad chiamata Codea che permette di creare giochi per iOS sul vostro iPad. L'avevo utilizzata in precedenza per una vera e propria app Nonogram per iOS quindi probabilmente avrei saputo programmarlo, ma volevo che la grafica fosse meravigliosa così ho aperto Photoshop iniziando a creare sprite e frame d'animazione. Ho ancora una cartella su Dropbox piena di sprite e animazioni. Ho creato molti personaggi diversi, le mosse finali per Howard Carter, una cutscene introduttiva, i menù con dei bei pulsantoni da premere. Ero davvero preso. Ma poi ho capito una cosa. Una cosa abbastanza importante. Una cosa... abbastanza deleteria per il progetto. Il gioco non era granché. Davvero pessimo, per niente divertente. E più programmavo, più sviluppavo, e più capivo qual era il problema: i Nonogram non hanno abbastanza profondità per un gioco del genere. Non ci sono né tattica né strategia, non è possibile adattare le azioni al tipo di nemico che si sta affrontando, e in definitiva il combattimento era irrilevante. Avreste potuto ignorare l'intera sezione superiore dello schermo e il gioco avrebbe funzionato comunque perché tutto ciò che fate è giocare ad un Nonogram. Significava non poter rendere il gioco più difficile o interessante a seconda del nemico che si affronta, e significava che il giocatore avrebbe fatto la stessa cosa ancora e ancora. Avevo creato un gioco superficiale, ripetitivo e noioso. Forse avrei potuto aggiustarlo ma a quel punto ero così avanti nello sviluppo e così demoralizzato che ho cestinato tutto. Qual era stato il mio errore? Beh, con un senno di poi frutto di anni e anni... è passato quasi un decennio... mi sembra abbastanza ovvio cos'è accaduto. Ovvero: quando fate un gioco dovete create molte cose diverse. Le principali sono la musica, la grafica, il game design, la storia e il codice. Ora è facile vederle sullo stesso piano... ma non è così. In molti casi il game design non è alla pari ma bensì è la base su cui poggiano tutte le altre parti. E così se quella parte è debole finirà col far crollare il tutto. Potete risolvere i bug e ridisegnare la grafica ma se il gameplay è viziato di per sé, talvolta l'intero progetto potrebbe essere irrecuperabile. Ed è di fatto quello che mi è accaduto. Ho dedicato così tanto tempo alla grafica e all'animazione che nel momento in cui sono finalmente arrivato al gameplay, mi sono accorto che l'intero progetto era difettoso. Avevo di fatto costruito una casa su delle fondamenta davvero instabili, per poi ritrovarmi sorpreso e arrabbiato quando il water è sprofondato nel pavimento. È imbarazzante dire che non mi è successo solo quella volta. Volevo creare un gioco d'avventura punta e clicca in stile noir con un peculiare sistema d'indizi generati proceduralmente - ma ho dedicato così tanto tempo alla storia e alla ricerca su quel periodo che non ho mai iniziato a progettare quel sistema. E volevo creare una versione moderna e frenetica del gioco mobile Snake ma mi sono così impantanato nel correggere i bug e nel rendere perfetto il codice per il movimento che non ho mai scoperto se il gioco fosse divertente prima di annoiarmi ed esaurirmi. E quindi ogni volta che ho cercato di progettare un mio gioco ho messo altri elementi come la storia e la grafica davanti al gameplay. Perché? Penso si possa ridurre il tutto a due presupposti decisamente errati. Il primo presupposto è che se il gioco era figo nella mia testa, allora lo sarebbe stato anche una volta creato. Ovviamente non era così. Il secondo presupposto era l'impossibilità di capire se il gioco fosse divertente prima di completarlo. Avrei dovuto continuare a lavorare finché ad un certo punto avrei capito se funzionava... giusto? No, di nuovo sbagliato. Ed è davvero imbarazzante da raccontare perché ora le risposte appaiono ovvie. Ma non erano ovvie allora. È solo da quando faccio Game Maker's Toolkit, da quando studio lo sviluppo dei videogiochi, dopo aver intervistato dozzine e dozzine di game designer che so come nascono molti dei giochi di maggior successo. I game designer hanno continuamente delle idee e sono sicuro che nelle loro teste suonino divertentissime. Ma i migliori game designer sanno che i loro cervelli sono dei gran bugiardi. L'unico modo per sapere se un'idea è buona è metterla in pratica, testarla. Ma invece di creare l'intero gioco, un designer deve semplicemente creare un... prototipo. Un prototipo è solo un piccolo banco di prova per un'idea, progettato unicamente per vedere se l'idea è divertente o meno. Di solito questi prototipi sono davvero brutti con una grafica raffazzonata o forme di base o sprite presi da altri giochi. Spesso sono buggati e scadenti e non prevedono altro se non le caratteristiche essenziali necessarie per testare quella meccanica. Sono solo una versione sufficientemente funzionante dell'idea per il gioco, costruita il più velocemente possibile, con l'unico scopo di verificare se l'idea per il gioco funziona. È divertente o interessante? Vale la pena dedicarvicisi? È una base solida sulla quale costruire il resto del gioco? Ed è quello che farò. Questa volta lo farò nel modo giusto. Mi concentrerò esclusivamente sulla creazione del prototipo, e sarò estremamente disciplinato e non mi dedicherò ad altro se non a mettere alla prova questa idea. Per quanto riguarda la grafica, mi affiderò a Google Immagini. Non ci sarà nessuna musica, nessuna storia, non penserò al nome del gioco o dei personaggi, Non inizierò a disegnare l'icona per un gioco che non è stato ancora creato, Mark, idiota. Il codice sarà scadente e pieno di bug perché sto ancora imparando ad usare Unity, ma sarà abbastanza buono per verificare se questa idea funziona. Solo un banco di prova per testare le meccaniche di gioco e vedere cos'è divertente. Quindi iniziamo, e apriamo Unity. La prima cosa da creare era un personaggio in grado di muoversi a destra e a sinistra e saltare, così ho applicato delle forze al rigidbody alla pressione dei tasti dedicati. Ci sono stati subito dei problemi per niente incoraggianti, ma alla fine ci sono riuscito. Poi ho aggiunto un magnete alla scena facendo in modo che il personaggio ne fosse attratto. Nel farlo sono dovuto diventare un programmatore esperto elevando le mie abilità di programmazione fino alla mente galattica, così mi sono scrocchiato le dita e ho digitato questa linea di codice... come muovere un rigidbody verso un altro oggetto. Ok, sì, ho usato Google, trovato del codice, e l'ho schiaffato nel mio progetto. Ma mi sono assicurato di aver capito come funziona - fondamentalmente trova la direzione tra il personaggio ed il magnete per poi applicare le forze al rigidbody in quella direzione. Inoltre ho ottimizzato il codice in modo che accelerasse all'avvicinarsi al magnete. Poi ho fatto in modo che si potesse spegnere il magnete premendo un pulsante mantenendo però la velocità del personaggio, librandolo in aria. Quindi se inserisco una piattaforma qui sopra posso attirare il personaggio verso il magnete, lasciarlo andare e poi saltarci sopra. Non è male... ma è un po' difficile da controllare. Forse il codice non è perfetto, le cose sfuggono di mano abbastanza facilmente. Ma mentre facevo delle ricerche a riguardo, mi sono imbattuto in qualcosa di molto utile che c'è in Unity. È un componente nativo chiamato Point Effector, che è fondamentalmente... un campo magnetico. Non so come mi sia sfuggito, la sua icona è letteralmente un magnete. Ecco come funziona. Associate un collider ed un Point Effector ad un GameObject, e poi definite una forza d'attrazione. Ora quando un rigidbody sarà nel collider, sarà attratto verso il centro del campo. Inoltre potete usare il sistema di maschere di livello di Unity in modo da attrarre solo determinati oggetti. Questo avrebbe certamente reso più facile la creazione del gioco, così ho decido di rifare il prototipo. E, sì, il gioco è risultato più solido. È più facile fare delle modifiche e mi permette di fare così fighe tipo... se aggiungo un punto d'attrazione ai poli del magnete, succede questo - e non è male. Ma quando ho creato questo secondo prototipo, per qualche motivo, non so bene perché, ho deciso di non usare Mario come personaggio e di rimpiazzarlo con l'immagine di un magnete. E questo mi ha dato un'idea: e se il personaggio non fosse magnetico ma ci fosse un magnete nel mondo di gioco? E il personaggio potesse avvicinarsi e raccogliere il magnete? Per farlo ho usato il sistema nativo di Unity dei Joints, un altro componente. Questo permette di collegare due rigidbody usando vari tipi di giunto come carniere (Hinge) e molle (Spring). Quindi ora il personaggio trasporterà il magnete che, se attratto da un pezzo di metallo, porterà con sé il personaggio. Finché non lo lascerete andare e sarete di nuovo liberi di muovervi. E il gameplay che volevo in origine, dove si usava la traiettoria del magnete per lanciare il personaggio verso una piattaforma più alta, può essere ottenuto semplicemente lasciando andare il magnete a mezz'aria. Inoltre permette molte altre cose, come usare due magneti o più. E potreste, ad esempio, posizionare il magnete qui sopra, farvi inseguire da un nemico, disattivare il magnetismo e... splat! Oh, questa in effetti non è male. Potrebbe funzionare. Improvvisamente il gioco sembrava molto più interessante rispetto alla mia idea originale che, devo ammettere, iniziava a preoccuparmi un po'. Se il vostro personaggio è magnetico e viene attratto e respinto, è facilissimo sentirsi un po' fuori controllo. Mentre con un magnete come oggetto separato ci sono momenti in cui si ha il controllo totale del personaggio mentre si è un po' fuori controllo quando si trasporta il magnete. Inoltre ero preoccupato dalla carenza di idee per un gioco in cui il personaggio è magnetico. Ma non appena ho avuto due entità separate, le idee hanno cominciato a fluire. Inoltre adoro i giochi in cui si fa avanti e indietro tra due diverse tipologie di gameplay. Pensate a come cambia Mario Odyssey in base alla presenza del cappello. Nel mio gioco il personaggio è agile e può saltare molto in alto senza il magnete, mentre è lento e pesante quando lo trasporta - ma ovviamente quel magnete apre un mare di opportunità. Non dovrei essere sorpreso che sia emersa un'idea ancora migliore durante la prototipazione. Come abbiamo visto nell'episodio di GMTK 'The Games That Designed Themselves', è abbastanza comune che emergano nuove idee durante la prototipazione. Pensiamo al gioco Crypt of the Necrodancer: nel progetto originario del gioco, avrebbe dovuto essere un roguelike con un esiguo margine di tempo tra un turno e l'altro. Ma durante lo sviluppo i designer si sono accorti che sarebbe stato ancora più interessante se, al posto del timer, ci fosse stato il ritmo di una canzone. Quindi i prototipi non sono solo un modo per testare e provare la validità di un'idea: sono un modo per generare idee nuove e migliori. Durante questa fase ho fatto un'altra interessante scoperta in Unity: questo si chiama Sprite Shape. E viene generalmente usato quando si vuole fare del level design organico, come nei giochi di Ori, ma nel mio caso l'ho usato per ottenere un colore uniforme che mi ha permesso di fare un rapidissimo level design. Ho potuto assemblare l'area di un prototipo usando delle semplici maniglie come in Photoshop. E così ho ricostruito il prototipo e questa volta ho voluto che il personaggio fosse un po' più facile da controllare, qualcosa di più simile ad un vero personaggio dei videogiochi. Non volevo rimanere impantanato nella programmazione di movimenti e salti, così ho scaricato da internet uno script per il controllo del personaggio. Funziona benissimo, così in futuro potrò concentrarmi nel migliorarlo, rifarlo o quant'altro. Per ora non voglio dedicarci altro tempo. In questo prototipo ho anche iniziato a vagliare altre meccaniche come il poter lanciare e richiamare a sé il magnete come Thor e il suo martello. E dato che il rigidbody del magnete rimbalza sul rigidbody del personaggio, darà un piccolo feedback quando lo acchiappate. È una sensazione di libertà ludica. Bellissimo. E poi ho pensato a vari scenari in cui si può usare il magnete, come lanciarlo contro un muro per creare una piattaforma. Magari collegarlo ad un pistone per poi slacciarlo al momento giusto per farlo volare. Magari invertire la sua polarità per saltare tra due nastri trasportatori. O ancora: abbassare questa piattaforma, salirci sopra e poi cambiare la polarità del magnete per lanciarsi in aria. Whoa, non è niente male, vero? Sembra proprio un videogioco. È divertente! Ed è stato il momento in cui ho sentito che questa idea aveva del potenziale. È originale: ho visto molti giochi basati sul magnetismo, ma niente di simile. Permette un gameplay basato sia sul platforming sia sui rompicapo. Sento che le idee per questo gioco fluiscono così facilmente che sarà possibile creare molti livelli diversi. E, soprattutto, è davvero divertente da giocare. Mi basta entrare in questa scena su Unity, prendere un controller, ed è tutto davvero piacevole. È sicuramente un ottimo segno. È questo il potere dei prototipi: potete usarli per verificare se l'idea per un gioco è effettivamente buona. E se siete davvero fortunati, potreste veder emergere nuove idee durante questa fase di prototipazione. Credo sia necessario un certo livello di disciplina: al momento non dovete concentrarvi su nient'altro, solo il gameplay. Ed è difficile. In questo video non vi ho mostrato l'intera settimana passata sugli effetti particellari, gli shader, gli elementi dell'interfaccia e cose così - Sono ricaduto nella vecchia abitudine di essere distratto e rapito da cose che al momento non sono importanti. Ma per fortuna me ne sono reso conto e ho cestinato quel prototipo prima di tornare alle cose importanti. E in definitiva penso che abbia funzionato: ho finito col creare qualcosa che credo sia davvero divertente, che abbia del potenziale, e sul quale sono entusiasta di lavorare. I giochi precedenti che ho cercato di creare quando ero più giovane, si basavano su una sorta di cieca speranza che il gioco fosse divertente, che non è il modo più incoraggiante per creare un gioco. Ma ora sento di star costruendo su delle basi davvero solide e ora tutti gli altri aspetti - la storia, la musica, la grafica - possono essere costruiti sapendo che le fondamenta sottostanti sono solide. E così credo che sia questo il modo per iniziare a creare un gioco: costruire un prototipo. Resta solo una domanda: poi cosa diavolo faccio? Immagino che lo scopriremo la prossima volta, nel prossimo episodio di Developing. Grazie mille per la visione, e spero di rivedervi alla prossima tappa di questo viaggio. Arrivederci. L'idea mi è venuta da questo gioco, The Legend of Zelda: Oracle of Seasons. Dannazione. Da questo gioco. Oops. Da questo gioco. Mi è venuta da questo gioco. questo gioco. questo gioco. questo gioco: The Legend of Zelda: Oracle of Seasons. venuta da L'idea mi è venuta da questo gioco: The Legend of Zelda: Oracle of Seasons. Questa era ottima.