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:

Il sito di OldGamesItalia è attualmente "in letargo". Nuovi contenuti saranno aggiunti con minore regolarità e con possibili lunghe pause tra un articolo e l'altro.
Il forum rimane attivo, ma meno legato al sito, e gli aggiornamenti riguarderanno principalmente le sezioni di IF Italia e della versione italiana del Digital Antiquarian e del CRPG Addict.
Grazie a chi ci è stato vicino nei vent'anni di attività "regolare" di OldGamesItalia, a chi ha collaborato o a chi ci ha soltanto consultati per scoprire il mondo del retrogaming. Speriamo di avere presto nuove energie per riprendere un discorso che non vogliamo davvero interrompere.
Grazie, OGI. Arrivederci!
Chi siamo | Contattaci | Policy | Manifesto
@Leonardo Boselli Alcuni progetti (tipo l'ultimo battaglia navale multiplayer in java) non li ho pubblicati... ci vuole comunque del tempo per renderli "pubblicabili" e bisogna fornire un minimo di assistenza. Al momento non ho proprio il tempo materiale di farlo (sono in ritardo con alcuni esami universitari e recuperare significa avere pochissimo tempo libero).
Quelli pubblicati che non ho ritirato sono 2 (Travel in A World of Magic il progetto del diploma di cui parlavo e Break che sarebbe un breakout molto primitivo fatto subito dopo il diploma insieme a Pong per divertirmi un po').
Entrambi soffrono di molti limiti, in particolare della mia ignoranza di qualche anno fa... sono progetti di cui vado orgoglioso ma che ormai non pubblicizzo più molto perchè vorrei creare qualcosa che rappresenti di più le mie capacità attuali (insomma quel gioco rappresenta in un certo senso un bel tema delle elementari... ti rende orgoglioso sapere di aver saputo fare qualcosa del genere all'epoca, ma ha così tante mancanze che per migliorarlo sarebbe necessario rifarlo da zero).
Per questo ho evitato di citarli nel mio messaggio. Se sei curioso vai pure a vederli (sono entrambi sul Play store, gratuiti), ma non voglio "bruciarmi" la mia possibilità di essere un giorno pubblicizzato con un progetto che ormai rappresenta solo il mio passato.
Non mi dispiace che abbiate ripreso il mio messaggio sul forum. tra l'altro per il programma in power point forse si può utilizzare una macchina virtuale con la versione di windows e la versione di power point su cui ha creato il gioco.
Grazie Lief! Sono tutti ottimi consigli. Già Schillaci mi aveva quasi convinto, ma dopo questo messaggio mi lancerò proprio su Unity3D.
Perché non ci segnali qualcosa in più sui giochi che hai realizzato? Se meritano davvero, si potrebbe pubblicizzarli sul portale.
Grazie di questo splendido intervento, Lief, che ho letto con grande piacere.
Mi sono permesso di segnalarlo anche sul forum, qui:
http://www.oldgamesitalia.net/forum/index.php?s=&showtopic=23147&view=fi...
Faccio l'università di informatica e ho già preso un diploma come perito informatico... il mio sogno è proprio sviluppare videogiochi per lavoro, ma naturalmente lo faccio già per diletto.
All'esame delle superiori (mi sono trasferito a perito informatica solo in 4 superiore quindi avevo "imparato" solo da un anno ha programmare) ho portato a termine un piccolo videogioco in 3D proprio grazie ad una guida su youtube... nel mio caso il "maestro" è stato BurgZerg Arcade con la sua serie Hack & Slash RPG, il tool è stato il gratuito Unity3d.
Recentemente ho poi portato a termine un altro videogioco questa volta in Java, una Battaglia Navale con multiplayer locale.
Programmare un videogioco non è solo difficile è qualcosa di incredibilmente difficile... e richiede tantissime abilità e conoscenze. Si pensi solo al fatto che per fare un videogioco oltre a programmarlo bisogna creare dei modelli (2D o 3D) e animarli... e solo per far questo ci vogliono un sacco di conoscenze che vanno al di la della semplice programmazione.
Però, per quanto mi riguarda, è davvero divertente. A differenza di altri programmi quando creo un videogioco ogni volta che risolvo un problema mi trovo davanti a qualcosa di incredibile... e il risultato finale è un videogioco che ho fatto io, dall'inizio alla fine.
Codificare un videogioco è una sorta di misto tra l'applicazione di algoritmi matematici e la creatività di un'opera artigianale... quando arrivi alla fine non puoi che essere estasiato dal risultato.
Probabilmente non è così per tutti, probabilmente il lavoro in azienda è diverso (in fondo nei miei progetti ero io che decidevo tutto, per altri progetti dove ho collaborato con altri si arrivava sempre a dei compromessi).
Come programmatore posso dire che solo mettendo più persone specializzate in diversi campi (musica, modellazione 3d, animazione 3d, programmazione di basso e alto livello ecc...) si possono creare dei videogiochi che abbiano il sapore di tripla A... ma nello stesso la differenza tra 1 e 10 programmatori che lavorano allo stesso progetto in termini di tempo è quasi nulla (infatti anche lavorando in 2 dovendo uno conoscere il codice dell'altro si perde sempre e comunque del tempo).
Solo un suggerimento per chi vuole iniziare... Javascript non è proprio il massimo, sarà anche il più usato (perchè è il più "semplice" per iniziare) ma ha una serie di difetti che quando si conosce le basi danno davvero fastidio e per i progetti più "grandi" (e con grandi intendo anche solo poche classi) fanno davvero la differenza... ad esempio il fatto che usi una tipizzazione dinamica porta a tantissimi errori difficili da individuare prima dell'esecuzione (e anche dopo), spesso il programma semplicemente non funziona... e allora si perde un sacco di tempo quando magari l'errore è che al posto di avere un intero hai una stringa dentro la tua variabile ma javascript non se ne accorge.
Non solo... essendo un linguaggio nato principalmente per lo scripting è molto impreciso, quindi da molte cattive abitudini che finiscono per rendere il codice poco leggibile (e questo fa perdere molto più tempo alla fine)...
Sfortunatamente ho già lavorato proprio in Javascript (è stato il mio primo e fin'ora anche unico lavoro come programmatore) e, sinceramente, è stato un incubo... in particolare nell'azienda in cui lavoravo lo usavamo sia lato server (con un framework chiamato Node) sia lato client (con un framework chiamato Angular)... Javascript è nato per essere eseguito lato client, e si vede... infatti Angular era tutto sommato decente, al contrario Node era confusionario all'ennesima potenza, dopo poche pagine di codice era già un problema capirci qualcosa (e visto che il sistema non l'avevo scritto neanche io... ma l'ho dovuto capire con una pessima documentazione è stato anche peggio).
Per questo, se qualcuno volesse iniziare, consiglio come linguaggi di programmazione Java o C# (C è anche ottimo, ha l'unico difetto di non essere ad oggetti... mentre C++ per quanto ottimo non è un linguaggio molto "accademico"). Se volete iniziare con un motore grafico Uniy3d o Unreal Engine sono gratuiti e completi... all'inizio sarà più dura ma superate le prime difficoltà lavorare con un vero engine grafico porrà meno limiti alla vostra creatività... tra l'altro sono entrambi multi-piattaforma.
Ve lo dico per esperienza... avevo iniziato con RPG Maker e avevo rinunciato perchè, superato un certo punto, non riuscivo a creare quel che avevo in testa.
Poi un mio amico mi ha consigliato Unity3d, e, superato lo scoglio iniziale, mi si è aperto il mare di possibilità che offriva.
Detto questo spero che il mio post un po' "tecnico" si sia capito almeno in parte (cerco sempre di trattenermi e di spiegare tutto, ma a volte mi capita di parlare in "cinese" per chi non è del settore), se volete qualche chiarimento sono sempre pronto a spiegare nel dettaglio (non fatevi problemi... naturalmente sempre se ricordo di controllare di nuovo questo post XD).
Fermo restando che l'università di informatica è davvero dura (non parlo di ingegneria anche se immagino che sia più o meno sullo stesso livello di difficoltà), c'è tantissima matematica e algoritmi teorici pieni di dimostrazioni noiosissime... roba che se non hai una passione infinita gli esami non li passi... per riuscire a passare parte di un esame ho fatto ben 12 tentativi (era l'esame di matematica discreta e logica) (tanto per far capire la passione a che punti può arrivare) e questo nonostante io riesca tranquillamente a prendere un 30 al primo colpo proprio di programmazione, e che per fare videogiochi ci vuole moltissimo tempo (per battaglia navale ci ho messo circa 2 settimane e mezzo, ma è un gioco molto semplice la parte più lunga è stata implementare il multi-player locale, per il videogioco del diploma ci ho messo un anno... e ad oggi non credo che quel tempo sia esagerato, credo solo che nello stesso tempo farei un videogioco migliore grazie alle conoscenze acquisite e magari senza seguire passo passo un tutorial su youtube, che magari proverei a costruirmi io stesso i miei modelli 3D al posto di cercarli online, ma ci metterei sempre un anno).
Insomma, sicuramente non tutti coloro che si divertono a giocare possono aspirare a farcela... ma, ad oggi, per fare qualche videogioco semplice basta davvero poco... un motore grafico gratuito, qualche conoscenza di C#, un tutorial su youtube e un po' di passione.
E chi lo sa... se avete l'idea del secolo potreste anche fare uno di quegli indie che fanno tanto successo (è come vincere alla lotteria). Dopotutto è pur sempre un lavoro creativo... e se un dipinto di un pittore principiante piace e fa successo non importa quanta tecnica ci abbia messo.
Un ultimo consiglio. Se volete pubblicare qualcosina (anche solo sul google play dove è molto semplice) fate attenzione al copyright. Se usate dei suoni prendeteli senza copyright o fateli voi stessi... se li fate voi stessi non fate cover di canzoni il cui copyright è sicuro (ad esempio non fate la colonna sonora di Star Wars)... stesso discorso vale per le immagini, i modelli 3D e anche il codice che utilizzate (se copiate codice d'altri)... anche il nome può essere sotto copyright (a me ad esempio la Atari ha segnalato un giochino che avevo fatto in mezza giornata per provare Unity3d... Pong... solo perchè l'ho chiamato Pong, se lo chiamavo Pallino e racchette la Atari non lo avrebbe segnalato), se per questa segnalazione avessero chiuso il mio account google play sarebbe stata durissima aprirne un altro in futuro.
Direi che questo messaggio è già abbastanza lungo.