Divertiamoci programmando videogiochi

Il titolo ricorda il famigerato "divertiamoci con le bandiere" di Sheldon Cooper (un personaggio di "The Big Bang Theory", che ve lo dico a fare?).
Non è un caso, infatti questa presentazione tratta di una serie su YouTube che probabilmente solo l'autore (cioè il sottoscritto) trova interessante.
Il paragone, comunque, non va oltre, perché non si parla di bandiere, ma della programmazione di videogiochi, ed anche perché i video di Sheldon sono spassosi, mentre questi... beh, lascerò ai posteri l'ardua sentenza.

In ogni caso, si tratta di videogiochi e i videogiochi sono divertenti, questo è sicuro, ma la loro programmazione può essere noiosa, ripetitiva, frustrante e poco gratificante. Alcuni immaginano una carriera nell'industria videoludica in cui si viene "pagati per giocare", ma la realtà può essere ben diversa.

Tuttavia se l'obiettivo è quello di scoprire cosa c'è dietro le quinte, anche solo per curiosità, allora provare a programmare può essere divertente. Si impara qualcosa di nuovo, si arriva a creare un primo abbozzo di gameplay e, una cosa tira l'altra, si potrebbe creare il proprio capolavoro indie. Perché no? Alcuni sogni si avverano, altri no, ma continuate a sognare.

Ma come si sviluppa un videogioco? È davvero così difficile? Sono necessari software costosi? Occorre imparare astrusi linguaggi di programmazione?

La serie vuole provare a dare una risposta a queste domande e, per non rendere impossibile il "capirci qualcosa", si sono adottate molte semplificazioni.
Si considerano, per esempio, solo i videogiochi in due dimensioni, più facili da gestire. Inoltre, per fare qualche prova, non sono necessari software particolari: basta un editor di testo e un browser internet, programmi dispobilìbili su qualsiasi piattaforma, dallo smartphone al PC.
Infine il "game design" è ridotto all'osso: si parte da un semplice abbozzo di gioco per costruire, pezzo dopo pezzo, quello che serve per completare l'idea iniziale, scartando ciò che è troppo complesso e adottando, di volta in volta, soluzioni più efficaci.
Il tutto viene corredato dal codice sorgente, che si può scaricare e modificare a proprio piacimento, e dalla disponibilità dell'autore, pronto a rispondere ai commenti con ulteriori spiegazioni che talvolta diventano lo spunto per nuovi video.

In sintesi, la serie si propone di mostrare le basi della programmazione per mezzo del linguaggio JavaScript (attualmente il più utilizzato nell'industria del software), e di approfondire alcune tecniche basilari che possono essere utili sia nello sviluppo di semplici giochi sia in altri campi d'applicazione, cercando di imparare (e insegnare) divertendosi.
Il percorso da seguire non è certo facile, ma si può fare molta strada un passo alla volta con l'aiuto di un po' di buona volontà.

Il limite più evidente, in questa fase, è quello di non conoscere le basi del pubblico interessato. Il livello può essere troppo elevato per alcuni, che avrebbero bisogno di un corso meno improvvisato, o troppo basso per altri, che troveranno certe spiegazioni ripetitive, lente e superflue.
Inoltre i videotutorial non sono ottimali per fornire un'informazione tecnica, per la quale una pagina scritta su cui si può riflettere è molto più efficace.
In ogni caso, si vuole fare un tentativo e si spera che almeno l'autore si diverta.

Naturalmente la programmazione è solo un aspetto dello sviluppo dei videogiochi. Un altro riguarda la creazione della grafica.
Poiché i giochini che verranno sviluppati non hanno velleità commerciali, essendo solo un abbozzo creato in poche ore, non ci si può permettere di usare grafica professionale a pagamento. Quindi giungono in soccorso i numerosi siti che offrono grafica gratuita.
Per questo uno dei primi video s'intitola: "i dieci migliori siti di grafica gratuita".

Il primo progetto realizzato è "Star Cleaner": un giochino in cui si pilota un disco volante che spazza uno schermo punteggiato di stelle, evitando di essere abbattuti dai nemici.

Le fasi di sviluppo sono riassunte in cinque video:

  • Caricare le immagini - Si mostra come caricare gli sprite e gli sfondi di gioco considerando i ritardi dovuti alla connessione internet.
  • Temporizzazioni - Si spiega come tener conto dello scorrere del tempo in modo che l'azione risulti in real time.
  • Arrays - Un po' di teoria sul linguaggio JavaScript non fa male. Gli array sono un modo per raggruppare più oggetti con caratteristiche simili.
  • Collisioni - Come gestire le collisioni? Pitagora corre in nostro aiuto!
  • Il codice sorgente - Una carrellata sul codice sorgente per una visione d'insieme.
Non mi resta che augurarvi buon divertimento con le bandie... ehm, di divertirvi programmando videogiochi e chissà che in futuro uno youtuber non dedichi un let's play a uno dei vostri giochi.
Alcuni sogni si avverano, altri no, ma continuate a sognare!