mercoledì 22 ottobre 2014

Diventare programmatore di videogiochi

Permettetemi di darvi alcuni consigli su come intraprendere la strada per diventare programmatore di videogiochi. Vi dirò quello che avrei voluto sentirmi dire anni fa, quando ancora dovevo scegliere il mio percorso di studi e tutto mi sembrava così confusionario.









Chiariamo subito il concetto: al processo di creazione di un videogioco prendono parte varie figure, quali il game designer, gli animatori 3D, i mdellatori 3D, 2D designer, ecc. Un ruolo fondamentale è ricoperto dal programmatore, ovvero colui che effettivamente programma il gioco mettendo insieme tutti gli elementi forniti dagli altri ruoli. Quello che fa il lavoro sporco, dietro le quinte, amante del caffè e delle notti insonni. 
In questo articolo si andrà specificatamente a parlare di programmatore di videogiochi.

Laurea o diploma?

Una delle cose che sento spesso dire in giro è che per diventare programmatore di videogiochi non serve una laurea. Beh, non sono assolutamente d'accordo. O meglio, diciamo che dipende un po' da quello che realmente volete fare. Se volete lavorare in modo indipendente, quindi non per un'azienda, allora la laurea non è richiesta specificatamente. Ma se volete entrare in un'azienda grossa o lavorare all'estero, la laurea caldamente consigliata (per non dire che è d'obbligo).
Programmare videogiochi può sembrare semplice, in realtà è uno tra i campi più complessi dell'informatica. Saper progettare algoritmi che tengano conto delle risorse a disposizione, saper sfruttare l'hardware sottostante, effettuare complessi calcoli di fisica/geometria per creare un motore grafico stabile sono cose complicate che richiedono adeguata preparazione. Avere alle spalle una solida base universitaria, oltre che essere probabilmente un requisito per l'assunzione, è un ottimo punto di partenza.

Quale laurea scegliere

Quando dico laurea, intendo proprio un corso di laurea universitario e non un corso privato specifico per una data piattaforma o linguaggio. Per quanto vi possano preparare bene, i corsi privati rischiano di essere troppo specifici e non avere validità all'estero.
Cominciate con una laurea in informatica/ingegneria informatica. Non vi serve una laurea in programmazione di videogiochi, ma un valido percorso che vi prepari bene in più di un campo. Tenete conto che nello sviluppare videogiochi, toccherete tanti ambiti diversi, ad esempio l'intelligenza artificiale,  il networking e le reti o, ancora, database e server. Tutti argomenti che ritroverete in un corso di laurea. Lo studio specifico dei videogiochi è affidato a voi nel tempo libero che vi rimane, come approfondimento.
Consiglio vivamente, se potete permettervelo, un master post laurea in game development. Qui in Italia abbiamo il validissimo master in programmazione di videogiochi dell'università di Verona (link).

Da dove iniziare

Più avanti farò una guida solo per questo argomento. Per ora quello che posso dirvi è di iniziare partendo da semplici giochi in 2D, per arrivare poi alla programmazione 3D.
Evitate come la peste i tool che offrono la possibilità di "saltare" la programmazione permettendo di fare tutto in modo grafico (vedi GameMaker). Dovete imparare a programmare! Quindi mettete su il caffè, tenetevi a fianco un paio di snak e mettetevi il gatto sulle ginocchia, che a noi programmatori piacciono tanto i gatti (viva gli stereotipi).
Per quanto riguarda il 2D vi consiglio le librerie SDL, ci sono tantissimi tutorial al riguardo. Se invece volete buttarvi sul 3D, Unity3D è un framework completo e adattissimo soprattutto a chi è alle prime armi.
Seguite tutorial che vi guidino alla prima creazione di un semplice gioco, su youtube o google è pieno.

Quale linguaggio di programmazione scegliere

Sappiate che i videogiochi per le società grosse sono realizzati in C++, accompagnato da diversi linguaggi di scripting tipo LUA o proprietari.
Il mio consiglio è: non focalizzatevi solo su un linguaggio. Imparate i concetti fondamentali della programmazione di videogiochi. Se un domani i giochi fossero tutti fatti in Java (fuggite, sciocchi!), il passaggio da un linguaggio all'altro deve essere indolore. Quindi, cominciate con un linguaggio che vi sembra semplice e usatelo come mezzo di studio.
Cosa ancor più fondamentale è la programmazione ad oggetti o OOP. La programmazione procedurale non è più usata da tempo in questo ambito e la sconsiglio anche per progetti più piccoli.
Un errore che vedo spesso fare è quello di utilizzare la programmazione ad oggetti in modo procedurale. Bestemmie!
 

Le materie su cui concentrarsi

Non fate il mio stesso errore. A scuola ho sempre odiato cose come geometria, fisica e matematica. Beh, che vi piaccia o meno, queste tre sono materie essenziali per fare un videogioco. Lo scoprirete nel momento in cui muoverete i primi passi nel mondo della programmazione 3D e ritroverete cose tipo vettori, matrici, forze, accelerazioni... Oppure quando dovrete gestire le collisioni in 2D e dovrete tenere conto di aree e perimetri di figure geometriche su piano cartesiano.
Ovvio che questo è un contorno a tutte le materie puramente informatiche. Ma non sputateci sopra, che un giorno vi serviranno.
Ah, dimenticavo, l'informatica è in inglese! ;)

Per ora è tutto. Spero di esservi stato utile. Se avete domande o volete chiedermi dei consigli, non esitate a scrivermi un commento!

28 commenti:

  1. Ciao, io frequento un liceo sociale (circa come il classico) e in questi anni mi è venuta l'ispirazione
    di studiare informatica all'università (premetto, informatica, non ingegneria informatica) a Verona per
    la precisione, vorrei sapere se, anche senza la preparazione di uno studente dello scientifico, posso
    riuscire a superarla?

    RispondiElimina
    Risposte
    1. Ciao! Guarda, io ho appunto frequentato la facoltà di informatica, sia triennale che poi i due anni di specialistica. Ho evitato ingegneria perchè mi sono fidato delle voci che dicevano fosse molto più difficile, tuttavia ora lavoro con degli ingegneri e confrontando il percorso di studi mi sembra parecchio simile (noi di informatica non abbiamo elettronica/elettrotecnica). Quello che ti posso dire, per quanto banale e scontato, è che se una cosa ti piace veramente allora con il dovuto impegno riuscirari a portarla a termine. I corsi universitari partono comunque abbastanza da zero per quanto riguarda le materie informatiche, l'unica cosa è che vanno molto in fretta quindi uno senza basi ha bisogno di più impegno per stargli dietro. La cosa che forse può essere importante verificare sono le tue basi di matematica. Per quanto anche io non andassi benissimo in matematica e non la ami particolarmente, i primi esami unirversitari sono molto pesanti dal punto di vista del calcolo (ti ritrovi analisi, geometria, fisica, calcolo numerico...) e se hai delle buone basi riuscirai a starci dietro. La cosa importante è non farsi demotivare e riuscire ad andare avanti. Ti ripeto, non ho mai amato molto la matematica, però adoro l'informatica e per quanto molto spesso ci si ritrovi a fare calcoli mi tappavo il naso e andavo avanti. Come ultima cosa ti chiedo, dato che sei ancora alle superiori e l'informatica è una cosa a cui ci si può avvicinare tranquillamente da soli, hai mai provato a programmare? Se si, ti piace? Per quanto la parte teorica sia corposa, la parte pratica dell'informatica è la programmazione. Se non l'hai ancora fatto, inizia a imparare a programmare da solo e vedi se ti piace. Se hai bisogno di aiuto per questo, sai dove trovarmi ;)

      Elimina
    2. Ciao, grazie per la risposta che ho trovato utilissima^^
      Bah, si ho provato a programmare, un mio amico mi ha insegnato qualcosa
      in C++, quindi ho fatto le solite cose come una calcolatrice, un programma per calcolare
      la forza peso o la massa e poi esercizi con while, for ecc
      Non che sia andato molto avanti (per problemi tecnici) ma mi sono divertito.
      Ora sto leggendo una guida riguardo java script su HTML.it ma la parte teorica è abbastanza noiosa.

      Elimina
    3. Scusa intendevo Java !errore!

      Elimina
    4. Gravissimo errore :)
      No scherzi a parte, vedo che ti stai comunque addentrando bene quindi sicuramente hai le idee chiare su cosa voglia dire. Ottimo!
      Hai però posto i tuoi dubbi su un articolo in particolare che riguarda la programmazione di videogiochi, sarebbe poi quello il tuo campo di interesse oppure comunque ti sei appassionato all'informatica in generale?

      Elimina
    5. Dato che mi sono sempre piaciuti i videogiochi è da parecchi anni che mi
      affascina l'idea di lavorare a un mio gioco (magari per ubisoft o bethesda, magari...),
      comunque di creare qualcosa (e per "qualcosa" intendo un videogioco) che sia apprezzato
      e giocato, oltre al fatto di poterne sapere tutti i segreti;)
      Comunque mi piace anche la parte fisica del pc (mi sono letto un manuale sull'hardware).
      E mi piacerebbe imparare è anche qualche cosa da "haker", tipo bucare reti o programmare un virus^^
      Solo che su internet non si trovano guide serie, a meno che non cerchi con tor (e non voglio).
      Questo blog però mi sembra buono, lo metterò tra i preferiti.

      Elimina
    6. Dalla tua risposta non ci sono più dubbi ormai, sei perfetto sulla strada per l'informatica. La passione non ti manca, sono sicuro che non avarai problemi! :)
      Ti ringrazio, purtroppo in questo periodo sono parecchio impegnato tra lavoro e altro e non lo sto più aggiornando molto. In ogni caso puoi dare un occhio alla sezione Hacking e Programmazione, ho fatto qualche tutorial che potrebbe interessarti ;)

      Elimina
  2. Volevo sapere la tua opinione riguardo a quelle "università" ,di cui sento parlare sempre più spesso,
    che preparano solo allo sviluppo dei videogame.
    Non perchè sia interessato a frequentarle in futuro, così per avere un'opinione.
    Ciao^^

    RispondiElimina
    Risposte
    1. Mah, guarda, come già scrissi nell'articolo l'università di Verona ha questo master post laurea che a mio parere sembra molto valido. Ora, io non avendolo frequentato non posso assicurare nula, tuttavia si tratta comunque un qualcosa realizzato in ambiente universitario con docenti competenti quindi una garanzia c'è. Diffido molto invece da quei corsi realizzati ad hoc, che peraltro hanno dei costi esorbitanti e non credo che abbiano grande validità soprattutto all'estero. La soluzione rimane un buon corso di laurea in informatica/ingegneria (possibilmente magistrale) e nel mentre concentrarsi sullo sviluppo di un portfolio indie. Poi puntare a qualche studio piccolo indie e da lì la strada è tutta in salita!

      Elimina
  3. Ciao,che percorso di studi mi consiglieresti (insieme all'universitò di verona),che sbocchi avrò? Potrei aprire una mia casa di sviluppo di videogames,o meglio lavorare per grandi aziende? Mi rivolgo a te perchè sembra che hai una bella esperienza :)

    RispondiElimina
    Risposte
    1. Ciao, tranquillo, ho fatto facce peggiori nelle foto :D
      Come già ho scritto nel post, io consiglio una laurea in informatica/ingegneria informatica. Poi, conosco alcuni che pur non essendo laureati sono riusciti ad entrare in qualche azienda di videogiochi o comunque si sono messi a lavorare in modo indie. Ad oggi, comunque, secondo me una laurea è caldamente consigliata. Anche laurea breve, poi uno si specializza magari all'estero (che offre sicuramente una preparazione migliore di quella italiana). Anche a te però chiedo, ti piace programmare? Perchè programmare videogiochi è una delle cose che ti metterà davvero a dura prova. Il post è specifico proprio per il ruolo di programmatore. Ricorda comunque che alla realizzazione di un videogioco prendono parte tante figure diverse (game designer, artist...). Il discorso varia un po' a seconda del ruolo che vuoi occupare.
      Per quanto riguarda gli sbocchi, una laurea in informatica di questi tempi ti dà da mangiare, quindi è comunque un'ottima scelta a mio parere, videogiochi o no.
      Aprire una tua azienda invece è un altro discorso. Richiede innanzitutto dei soldi da parte (inizialmente saranno più quelli che usciranno che quelli in entrata) e soprattutto gestire una azienda è molto differente che lavorarci. Si hanno tantissime responsabilità e si perde magari un po' il focus sullo sviluppo vero e proprio. Ovvio che se apri una piccola società indie con qualche amico la cosa è molto più easy!

      Elimina
    2. Programmare,mi piace anche se credo sia difficile dirlo visto che le uniche applicazioni che ho creato sono misere calcolatrici o inutili giochi come indovina il numero...non riuscendo più a proseguire da solo,mi sono rivolto a te per capire cosa fare,giusto per non commettere un grooosso errore.Comunque,ho diversi amici che sarebbero intenzionati a intraprendere questa carriera con me,fra aspiranti programmatori e designer.

      Elimina
    3. Se è una cosa che ti piace e che comunque sai che faresti in ogni caso (anche nel tempo libero), non credo sia un errore provare ad intraprenderla professionalmente. Poi, ti ripeto, al giorno d'oggi una laurea in informatica o comunque un percorso di studi di questo tipo ti da un posto di lavoro. E questo è ancor più incoraggiante. Ovvio che se un giorno scopri che odi l'informatica e la programmazione e preferisci andare a fare il pittore, ti tocca ricominciare da capo. L'unica cosa ahimè è che in Italia i posti di lavoro in questo settore sono pochi e richiedono una certa esperienza. Quindi il portfolio è essenziale! Se, come dici, hai a,ici che ti possono dare una mano e vogliono collaborare inizia a fare qualche progettino. Mi raccomando, parti dalle basi, fai cose facili! Non fare l'errore di inziare con il mega giocone, le scenegiature, l'arte...una delle cose migliori per iniziare è prendere un gioco semplice già esistente e provare a rifarselo da soli.

      Elimina
  4. Grazie di tutto,per la tua disponibilità e per avermi chiarito le idee.

    RispondiElimina
  5. Ciao malo sto per intraprendere una laurea in ingegneria aerospaziale alla sapienza di Roma, ma ho una forte passione per i videogiochi è vorrei tanto anche programmarli, secondo te con una laurea differente da quella in informatica, le possibilità di lavorare in questo settore ci sono? O vengo richieste principalmente laure informatiche?

    RispondiElimina
    Risposte
    1. Ciao Danilo! Purtroppo le lauree preferite sono quelle in informatica, triennale ma ancora meglio magistrale. Addirittura in diverse software house italiane guardano il voto di laurea, quindi conviene pure prenderla con dei buoni risultati. Nell'ambiente indie probabilmente si trova qualcosa anche senza una laurea in informatica. Ingegneria aerospaziale deve essere proprio un bel corso di laurea, impegnativo, ma molto interessante! Vedila così, il lavoro nel settore gaming scarseggia e c'è tantissima competizione, nonchè alti requisiti per entrare (parlo anche per l'estero). Quindi, lavorativamente parlando, non so quanto lavoro ci sia nel settore aerospaziale in Italia, ma credo che l'offerta sia più alta che in quello dei videogiochi. Con questo non voglio scoraggiarti, tuttavia valuta bene fino a che punto ti appassiona una o l'altra cosa e decidi di conseguenza. Temo, purtroppo, che una escluda l'altra. Ma non si sa mai nella vita ;)

      Elimina
    2. Grazie della risposta, volevo sapere cosa ne pensi dei corsi come dbaccademy o l'accademia dei videogiochi? Secondo te potrebbere offrire un corso valido per iniziare a programmare oppure sono solo dei corsi per spillare soldi alla gente?

      Elimina
    3. Non avendoli mai frequentati non posso permettermi di esprimermi sulla qualità dell'insegnamento. Da quello che vedo, il programma dei corsi sembra interessante. Tuttavia, questo tipo di scuole sono molto costose e il rapporto qualità prezzo secondo me non vale la candela. Gli attestati che rilasciano sono poco spendibili, soprattutto all'estero. Dati i prezzi e la durata, a questo punto meglio un corso di laurea triennale in informatica. Almeno si è sicuri venga riconosciuto. Logicamente, bisogna tapparsi il naso di fronte a tutti i corsi non inerenti a cose che possono essere utili nei videogames. Sicuramente comunque una buona base te la dovrebbero dare anche quel tipo di corsi...Dipende anche da quanto saresti interessato ad un percorso di studi in informatica oppure se vuoi solo buttarti sui videogames e basta.

      Elimina
  6. Ciao, a breve prenderò una laurea magistrale in Informatica e mi piacerebbe intraprendere un percorso per diventare game developer in una software house multinazionale. Purtroppo so che è un settore con molta competizione e in Italia, a parte una sede di Ubisoft, non abbiamo grandi SH. Sono sempre stato appassionato di informatica e di videogiochi, solo che questo rapporto di domanda/offerta mi spaventa. Pensavo di partire dal basso per farmi esperienza, magari facendomi assumere in qualche SH indie per qualche anno, ma non vorrei trovarmi in un vicolo cieco. Cosa mi consigli di fare? Grazie in anticipo per i consigli!

    RispondiElimina
    Risposte
    1. Ciao! Allora, conta che da neolaureato, quindi subito il primo anno dopo la laurea, sei considerato parecchio papabile per le aziende. Sia perché hanno degli sgravi finanziari assumendo neolaureati, sia perché gli conviene prendere una persona fresca di studi da poter formare da zero. Quindi, il mio consiglio spassionato è di buttarti a capofitto sulle grandi software house. Le piccole indie lasciale per ultime, quando eventualmente non se ne sarà fatto nulla del resto. Prenditi un paio di settimane (se puoi anche un mese, ma non voglio esagerare dai) per studiare e ripassare un po', perché ti verrà fatto un colloquio tecnico. Anche Ubisoft sta cercando al momento a quanto ne so!

      Elimina
    2. Ci proverò, grazie. Tu hai mai fatto un colloquio con una grande software house? Sai più o meno cosa ti chiedono al colloquio? Considera che purtroppo non ho nessuna esperienza lavorativa.

      Elimina
    3. No, ho lavorato in una piccola software house italiana di videogiochi, che purtroppo non si può definire grossa. Ho però alcuni amici che hanno fatto il colloquio a Ubisoft, per esempio. Ti possono chiedere qualche esempio di algoritmi o strutture dati ben note (tutta roba che in università si è vista e rivista), ovviamente non devi sapere l'implementazione a memoria ma basta avere un'idea generale. Poi sicuramente ti chiederanno di risolvere un piccolo problema di programmazione...nulla di super impegnativo, ma una ripassatina al C (meglio se C++) io la ridarei. Per l'esperienza lavorativa non preoccuparti, lo sanno che sei neolaureato e ne tengono conto.

      Elimina
    4. Grazie mille, dopo aver ripassato potrei tentare. Ai tuoi amici è andato bene il colloquio? Se mi va male la prima volta, è possibile riprovarci dopo qualche anno o ormai sono stato scartato per sempre? Scusa ma sono un po' ansioso...

      Elimina
    5. Non benissimo purtroppo...ma non preoccuparti, puoi sempre riprovare l'anno successivo. Vai senza paura! E tienimi aggiornato ;)

      Elimina
  7. Buona sera scusate il disturbo stavo cercando qualcuno capace di riprodurre un retroserver di un gioco Grand Fantasia in ITALIANO.La richiesta nasce dal fatto che da quando hanno fuso il server inglese a quello italiano molti giocatori hanno lasciato il gioco perchè oramai la lingua era solo ed unicamente in inglese . Qui vi lascio l'unico retroserver che esiste in Spagnolo ovviamente perchè nessuno è stato capace di crearne uno in italiano . http://gf.ignitgames.to/ mi appello a voi e alle vostre conoscenze affinchè gli italiani possano ricontinuare a giocare vi lascio la mia email se qualcuno vuole contattarmi domenik95555@gmail.com
    grz in anticipo

    RispondiElimina