mercoledì 6 luglio 2011

5 consigli pratici per sviluppare videogiochi (parte 4)

Ci siamo quasi. Abbiamo le idee chiare, i tool giusti e tutte le abilità necessarie per fare un videogioco. Ci manca solo un po’ di esperienza, di palestra.

Programmare è una abilità che, come tutte le abilità, migliora con la pratica. Difficilmente produrremo il nostro capolavoro al primo tentativo. Occorre invece fare molto e sbagliare molto, oltre naturalmente alla capacità di riconoscere e correggere i propri errori.

Alcuni errori, tuttavia, non si palesano immediatamente come tali. Anzi, spesso ci appaiono come nostre particolari, addirittura geniali, interpretazioni di una regola. Nella programmazione questo accade frequentemente, essendo una attività creativa e quindi volta al problem solving e alla costante ricerca di modi diversi per fare qualcosa.

In quasi ogni progetto, ad esempio, implemento in modo diverso la gestione dei messaggi tra i componenti dell’applicazione. Ogni volta termino con un certo orgoglio, felice della complicata massa di classi e pattern che si interfacciano in modi sempre più sofisticati. Salvo poi riaprire il progetto qualche giorno dopo, e capire di non capirci più nulla. Ogni volta la conclusione è la stessa: la prossima volta devo semplificare qualcosa.

Programmare è una questione di raffinamenti successivi, roba per cui occorre esperienza. Non esiste altra via.

Ma per fare esperienza occorre, indovina un po’... programmare! Dopotutto siamo informatici e la ricorsione non dovrebbe spaventarci. Quindi...

Consiglio #4: Copia i Classici


Il consiglio di questo articolo riguarda proprio il come fare esperienza. Potete lanciarvi subito nell’implementare le vostre idee, certo, ma forse non è il modo migliore. Quando scrivete il vostro gioco siete impegnati su molti fronti, primo fra tutti l’analisi e la ricerca di meccaniche avvincenti e divertenti, oltre che semplici da implementare. Fare esercizio dovrebbe invece essere una attività più focalizzata. Ci si esercita meglio e con maggior profitto se l’area su cui si vuole lavorare è contenuta. Esistono centinaia (migliaia?) di giochi già consolidati e dal provato valore di intrattenimento. Sapreste riprodurli?

Prendiamo Tetris. Tutti lo conosciamo e ci abbiamo giocato. Non ci occorre ragionarci per più di un paio di minuti per focalizzarne gli aspetti principali del gameplay. Dovremmo anche riuscire a vederne mentalmente il codice e capire di quali componenti è fatto:


  • l’area di gioco (una semplice sezione rettangolare dello schermo, nera o con un’immagine di sfondo);
  • l’anteprima del blocco successivo
  • l’area dei punteggi
  • il blocco corrente, unico elemento che si muove (in automatico verso il basso e con l’interazione del giocatore per le rotazioni e i movimenti laterali)
  • il muro che si forma
  • le righe complete (da riconoscere ed eliminare in tempo reale, abbassando il muro)
  • il muro che raggiunge la cima dell’area di gioco (condizione di gameover)
  • il numero di righe completate che raggiunge il numero stabilito dal livello (condizione di vittoria)



Una volta fatta questa lista avete messo nero su bianco le caratteristiche fondamentali di Tetris. Potete considerarla il documento di analisi e design, o la lista dei requisiti! Il gioco funziona, non dovete preoccuparvi di aspetti quali regole e giocabilità. Dovete solo scriverlo.

Tetris è, naturalmente, solo un esempio, ma non l’ho citato a caso. E’ in effetti uno dei primi giochi che andrebbero scritti, perchè fornisce una ottima palestra per comprendere i meccanismi di base di un videogioco: il game loop (ricevi ed elabora l’input, aggiorna lo stato degli oggetti, disegna il frame), le collisioni e la gestione della logica (punteggi, passaggi di livello).


Altri giochi sono l’immancabile Pong, Breakout (Arkanoid), Space Invaders, Asteroids... una cosa molto divertente e stimolante che potete fare è scaricarvi e installarvi il progetto Mame32, che contiene una vera miniera di giochi arcade anni ‘80-’90. (Ri-)Scopriteli e giocateli. Riuscirete a trovarne decine e decine da clonare per esercizio e, perchè no, anche da migliorare con vostre aggiunte.

Quando avrete implementato un paio di questi classici non solo avrete acquisito molte conoscenze indispensabili, ma avrete affinato il vostro stile di programmazione e la vostra mente. Sarete in grado di guardare ai giochi più complessi con maggior senso critico. Capirete (e riconoscerete in altri giochi, anche più recenti) le meccaniche di gameplay caratteristiche dei vari generi (platform, puzzle, shooter...).

E, cosa più importante, potrete finalmente dire: io scrivo videogiochi!



Post correlati:


 

Nessun commento:

Posta un commento