Allora: da piccolo giocavi coi videogiochi e dicevi “da grande farò il programmatore dei videogiochi!”.
Così hai fatto una scuola superiore con specializzazione in Informatica, lamentandoti che non spiegassero le DirectX. Poi, una volta diplomatoti, hai deciso di fare l’Università con un indirizzo informatico, sempre lamentandoti che non spiegavano mai le DirectX.
Ed ora che hai finito, hai deciso che non vuoi rinunciare come tutti i tuoi compagni (che sono andati a fare gestionali che stampano bolle e fatture) e vuoi davvero fare il programmatore di videogiochi.
Come devi fare? Non lo so, ma ti dirò come ho fatto io.
Vediamo un po’: come avrai capito, mio amato e fedele lettore (o lettrice, ma temo sia dura), l’iter sopra indicato è proprio il mio. Tutto quello che ho scritto non è però necessario, anche se utile.
L’ITIS è stata una scelta vincente: mi ha dato le basi, però mi dicono che non tutti sono buoni. Io feci l’ITIS di Busto (e ci ho pure insegnato), quindi, nel caso scegli quello :D.
L’Università è utile ma, credimi, devi fare qualcosa a casa. Io, nel mio piccolo, iniziai a comprare libri come “Game Programming Gems” o “ShaderX” e realizzai il mio primo engine casalingo.
Faceva schifo, e non disegnava altro che cubi e sfere. Erano come figli, quei cubi. Le sfere no, non voglio figlie femmine: al giorno d’oggi, le ragazze di 15 anni a 10 anni hanno già conosciuto gli uomini.
Ci sono delle scuole alternative, come l’AIV, ma tu spenderesti 7000 euro per andare in una scuola privata i cui professori sono completamente sconosciuti? Io no. Poi vedi tu: comunque una piccola percentuale dei suoi alunni ha trovato lavoro in ottimi posti. Quella piccola percentuale avrebbe trovato gli stessi posti senza frequentare quella scuola, comunque.
Perfetto, ora che abbiamo parlato della scuola, magari vorrai sapere cosa deve sapere un programmatore di videogiochi. L’ambito è talmente ampio che forse sarà bene specializzarsi: io sono specializzato in Rendering, quindi ti parlerò di quel campo.
Per fare Rendering è bene che tu sappia a dovere la geometria e la matematica ad esso relative: trigonometria, matrici, vettori e tutte queste belle cose. Un po’ di analisi non ti farà schifo quando vedrai le formule con gli integrali, da trasformare da continuo a discreto.
Poi devi sapere il C++. Lo so che nei forum il C++ è considerato vecchio e brutto e tutti gli altri linguaggi invece sono considerati belli. Purtroppo non ho mai visto un SDK che non fosse in C o C++, quindi c’è poco da fare: studialo; e lascia perdere le eccezioni, perché sono lente per le nostre applicazioni (mica facciamo gestionali).
Di certo ti interesserà un’API per fare rendering: guardati le DX9. Se hai voglia le DX10. Sì sì, le OpenGL sono libere ed il tuo amore per Stallman ti farebbe propendere per queste. Lo so bene, davvero, conosco i fans dell’opensource meglio di quanto tu possa credere. Però, purtroppo, se vuoi fare questo lavoro, ti consiglio di tenere il tuo amore per l’opensource come un hobby, per cui guardati le OGL nel tuo tempo libero.
Ed ora il meglio: un po’ di ingegneria del software. Non c’è niente di più schifoso di un software scritto di getto, perché è sempre un casino e quando va espanso e debuggato è odioso. Guardati i pattern, provane un po’ e vedi quali ti piacciono (parti dai GOF – “Gang of Four“, perchè erano in quattro. Noi informatici facciamo ridere un casino).
E poi? Dunque, fammi ricapitolare: la matematica te l’ho detta, il C++ pure, le DirectX pure, l’ingegneria pure.
Se hai già fatto tutto questo, che aspetti a mandarci il curriculum? 😀
Di analisi matematica, quali sono gli argomenti che meglio bisogna conoscere?
Fondamentalmente quello che si studia in analisi 1 🙂
Quindi:
– Integrali e derivate
– Funzioni e analisi di queste
– Serie di Taylor ed i suoi amici
Fuori di questo, credo che non ci sia niente di meglio della Fisica per capire la matematica. Aggiungerei anche la trasformata di Fourier e poi direi che c’è tutto 😀
Forse dovevo metterlo nell’articolo 😀
torno a giocare va…
Oddio le trasformate. XD
Un analfabeta matematico ha qualche speranza di programmare?? 😀
Oh boy, le trasformate. Feci un esame all’uni solo su quelle. Da incubo. 😀
Ricordo bene che da pischello il mio “sogno” era più o meno quello (programmatore di videogiochi), perchè all’epoca avevo solo una vaga idea di come era strutturato un team di sviluppatori (ero convinto fossero tutti programmatori, lol). Ora, sebbene stia studiando ingegneria informatica, mi sono reso conto che la programmazione non è la mia passione più grande (sebbene non la disdegni), e che da quando ho cominciato ad interessarmi anche all’arte digitale un paio di anni fa ho piano piano “shiftato” il mio interesse più sul game-design che non sul lato prettamente tecnico del game-development. :X
idem con patate: studio ingegneria informatica, l’ho presa perchè programmare, e magari fare il programmatore di games, mi sarebbe sempre piaciuto.
Se non fosse che poi ho capito che programmare non mi piaceva, e la pesante formazione in matematica e fisica avuta al liceo ha avuto la meglio. Di conseguenza al terzo anno ho scelto il percorso in automatica, ed ora mi diletto con i miei balocchi numerici 😀
Ehy ho fatto l’Itis, faccio l’Uni, devo dare Analisi e sono un maledetto genio, mi prendete?
Si, vogliono tutti fare i game designer 😀
Comunque per quello che ho avuto modo di vedere, a meno di
non fare lavoro sperimentale, le conoscenze analitiche
da utilizzare son sempre le solite e con l’esperienza si
diventa abili ad inquadrare i vari problemi. Se qualcuno di
voi ha davvero la possibilità, che ci tenti.
Io per ora sono fuori, se no l’avrei mandato il curriculum 😀
Nevade, se sei un genio mandaci il curriculum che quelli li cerchiamo sempre 😀
Si decidessero a rendersi conto che tra i percorsi di un informatico esiste anche lo sviluppatore di videogiochi forse metterebbero anche corsi più utili e magari anche un po’ pratici invece che tutti quei corsi inutili e tenuti male (che è la cosa peggiore) che ho visto fino ad ora.
Cmq sento spesso dire che è più utile una laurea in fisica o matematica che una in informatica se si studia per conto proprio e non stento a crederci. Peccato che quelle materie fine a se stesse siano poco interessanti.
Anche io mi sono interessato di più al game design perchè cmq è li che si crea, però avrei voluto imparare di più in questi anni invece di buttare tempo andando a scuola a non imparare. La differenza è che quando avevo un interesse vivo e potenziale di apprendimento non c’era modo di poter apprendere ciò che volevo.
M’è andata bene che il C l’abbiamo fatto (ed era la mia passione), ma già il c++ non sapevamo cos’era e per fortuna ho fatto qualcosa per l’area di progetto della quinta in cui c’erano anche le directx (un piccolo giochino in 3d prima persona veramente fatto male).
Il problema è che mancano le basi sul come funziona, perchè si fa così e ect. Se uno legge il manuale delle directx ma non sa perchè si fa qualcosa risulta tutto non intuitivo (perchè le texture si attaccano così, come si fanno le varie operazione, come si gestisce il timer per il rendering, ect).
Manca totalmente l’apporto di qualcuno con esperienza, che è per quello che di solito esistono i docenti, in modo da sapere perchè certi problemi si risolvono in un certo modo, come è meglio scrivere un certo software, come gestire progetti grossi e ect. Invece si finisce a fare programmini testuali da console per trovare stringhe palindrome o contare i caratteri…
Poi daccordo che sarebbe meglio fare qualcosa per conto proprio, però col carico delle superiori prima (in cui cmq riuscivo a trovare tempo di smanettare con le poche cose interessanti che ci venivano insegnate, c e assembly per me, ma poca roba cmq) e all’università poi (tra professori incapaci, o totalmente non stimolanti e non didattici, corsi inutili tenuti in piedi perchè ci sono i baroni che non puoi toccare e che non vedrai mai e zero apporto di esperienza), aggiungendo anche che magari uno ha anche altri hobby e non ha voglia di star li a studiare anche a casa, si finisce che non si fa niente.
Ora spero di trovare tempo per far qualcosina perchè mi sono stufato di aver fede nell’istruzione, il mio pezzettino di carta ce l’ho e ora vedrò di imparare anche quello che dovrei sapere.
C’è di buono che dove andrò a lavorare a settembre almeno un po’ di c lo userò così tolgo la ruggine.
Piuttosto Monopoli, consiglia qualche testo simpatia che torni utile, anche su web, magari che dia un’idea anche di come organizzare la stesura del codice poi visto che so che ci sono varie convenzioni a riguardo. E sopratutto qualcosa che contenga la matematica stretta necessaria per capire il funzionamento (ovvero senza fregnacce).
Ultima domanda: ma sti pattern servono davvero? A logica l’ing. del software mi sembrava potesse essere utile: si vantava di dare linee guida su come progettare bene un software. Nella pratica, almeno dove l’ho fatta io, con una docente immanicata ai piani alti ma incapace di spiegare, si è rivelata un’insieme di fregnacce con degli schifo di diagrammi da imparare quasi a memoria senza riferimento a casi reali risolti e morta li senza nemmeno sapere perchè sono meglio o peggio. Capisco che alcuni risultino ovvi, ma in genere penso che siano cose che derivino dall’esperienza, impararli così mi dice poco. Quindi vorrei capirci di più.
Cmq grazie per aver confermato una cosa che già sapevo, ma che almeno detta da uno che ci lavora ha sicuramente più credibilità.
I pattern servono 🙂 Servono a creare codice con tutte le caratteristiche fondamentali per un software di grandi dimensioni.
Secondo me è importante leggerli, capirli, provarli e decidere quali ci piacciono.
I pattern (così come le regole della musica) nascono dall’esperienza: i programmatori hanno fatto delle cose e hanno visto che funzionavano, così hanno deciso di formalizzarle.
Niente vieta in futuro di creare cose ancora migliori, che andranno a sostituire le cose odierne.
Se vuoi fare il programmatore di videogiochi, non ti aspettare niente dall’Italia: i posti disponibili, se sono tanti, sono 20 all’anno.
Inconfrontabili con le decine di migliaia in altri campi.
Capirai bene che le Università non possono dedicarsi con importanza ad un campo la cui richiesta è tanto risibile.
Ah, qualche testo 😀
La serie “Game programming Gems” e “ShaderX” va molto bene se sei già esperto, altrimenti (stai pronto che sono delle brutte bestie):
– Computer graphics (Foley, Van Dam)
– Curves and surfaces for CAGD (Farin): questo è sulle cose riguardanti l’interpolazione. Il Farin interpola TUTTO 😀
– Effective C++, More Effective C++, Effective STL (Meyer): Meyer sa tutto.
– Modern C++ Design (Alexandrescu): i pattern applicati. Ti piacerà 🙂
– Refactoring (Fowler)
La maggior parte di questi testi richiede che tu già conosca il C++ e che già conosca la matematica che andranno ad usare. Cioè, usano gli integrali e le sommatorie senza spiegarti cosa sono 🙂
Per quelli, ci sono i testi delle scuole superiori e dell’università 🙂
Per capire gli integrali e la matematica, io consiglio i libri di Fisica di Halliday-Resnik
Io sono totalmente contrario a dei corsi universitari del tipo
“DirectX”
Ma sticazzi, uno se va in università deve imparare la logica ed applicarla.
Dopodichè autonomamente ci si va a specializzare. Non ha senso che l’università
ti chiuda la mente su una specializzazione.
Ad esempio il corso di Ingenieria del Software è di VITALE importanza per
chiunque si approcci alla programmazione, ancora non capisco perchè all’ITIS
questo non venga insegnato..
Grazie Monops, vedrò se la mia mente è ancora in grado di imparare. Purtroppo io non sono un teorico ma sono del genere che deve sperimentare sulla propria pella per imparare, stesso discorso per i pattern, se mi si dice che sono così ma non so perchè è uguale a non dirmi niente.
Cmq tagliare le gambe a chi vuole andare per quella strada solo in base alle assunzioni è la causa del loro numero ridotto. Voglio dire, uno si può anche mettere in proprio o trovare formule diverse di commercio, mica deve per forza andare sotto qualcuno. Facendo così non ci saranno mai sbocchi (a meno di fare giochi per cellulari). Tanto di gente che fa gestionali o roba ecommerce ce ne fin troppa.
Riguardo ai corsi, potrei essere daccordo sul non fare corsi su “directx”, ma magari corsi su grafica 3d e rendering, che non sono usati solo in campo informatico, servono.
Da noi han messo di recente un corso di grafica ma che arriva da un altra facoltà e ci sono cenni di opengl, ma niente di approfondito.
Inoltre, è vero che non serve insegnare un linguaggio di programmazione, ma ci vuole anche la pratica, non solo le parti astratte. Alla fine tutto parte da casi reali, si astraggono per comodità, ma se ti perdi il procedimento non ti rimane come esperienza. Quindi secondo me bisognerebbe poterli mettere in pratica il più possibile.
Da noi hanno aggiunto C++ e .net ma sono corsi marginali. Secondo me è sbagliato considerando quanti corsi falsamente vengono ritenuti fondamentali e obbligatori.
Se uno vuole andare in quella direzione è giusto dargli quella possibilità.
Inoltre è ovvio che il corso non deve fare da semplice manuale ma dare qualcosa frutto dell’esperienza del docente.
Da noi cmq ingegneria del software era meglio non farla (infatti alla fine l’esame non l’ho dato).
Io avrei preferito di gran lunga meno corsi ma più lunghi e con un bel progettone così da unire teoria a pratica e avere una conoscenza che duri oltre l’esame.
Alla fine di tutta l’università mi stava interessando la computer vision e l’image processing, ma alla fine non ho approfondito perchè ho perso anni per una triennale frenata da corsi inutili e professori ancora meno utili.
>Si, vogliono tutti fare i game designer
Vero, ma quante di queste persone poi veramente si danno da fare per diventarlo? Contando anche che da quello che ho letto e sentito, non capita quasi mai di iniziare la propria “carriera” direttamente da quella posizione ma da altre (chi da programmatore, chi da tester, chi da posizione x o y). Io personalmente, per quel poco materiale veramente utile che c’è in giro sul game-design mi sto per fatti miei studiando la materia, e imparando tutte le nozioni che mi servono (ed è per questo che da anni ho imparato e sto imparando a realizzare i miei artwork digitali) per metter su il mio primo giochino da solo. Non ci vedo niente di male nell’essere interessati più al game-design che non al puro lato tecnico della realizzazione di un gioco, se una persona lo trova più stimolante.
Il punto non è tanto il voler fare il game designer, il punto è saltare
a piè pari tutto il resto.
Voglio vedere quale regista inizia da regista seduto sulla poltroncina:
ci mancherebbe altro che si debba partire da posizioni più umili, proprio
per conoscere l’ambiente che ti gira intorno.
“conosco i fans dell’opensource meglio di quanto tu possa credere.”
Non so perche’, ma mi sento tirato in causa :’D
Ragazzi Windows e’ un mercato morente!! Via via!
OpenGL rulex!! Linucs per sempre! w00t w00t! 😀
@Cherno
Su quello sono totalmente d’accordo con te. Se ho scelto di fare ingegneria informatica e di imparare comunque i fondamenti della programmazione è proprio perchè, aldilà del fatto che non nutra una cieca passione verso di essa, mi serve come base di formazione per dedicarmi più efficacemente al game-design (così mi sta servendo l’aver imparato a realizzare artwork digitali). Diciamo che per me ora come ora la programmazione non rappresenta il fine, ma piuttosto il mezzo (uno dei diversi) con il quale arrivare a fare quello che mi interessa realmente fare. Programmazione, digital art, e quant’altro vedili un po’ come tanti tasselli di un puzzle che sto cercando piano piano di mettere su per farmi una formazione sufficiente da poter cominciare a convertire le mie prime idee primordiali in qualcosa di concreto. Anche se all’inizio dovessero venire fuori porcherie, conoscere le basi di ognuna di questi lati della creazione di un gioco mi serve proprio per capire meglio quello che vorrei realizzare.
Bravo, così si fa!
Voi che avete tanti sogni, che avete così distinto davanti a voi l’obiettivo, ai miei occhi siete bestie esotiche.
“L’ITIS è stata una scelta vincente: mi ha dato le basi, però mi dicono che non tutti sono buoni. Io feci l’ITIS di Busto (e ci ho pure insegnato), quindi, nel caso scegli quello :D.”
Ah, ora si spiega come mai i tuoi pezzi sembrino provenire direttamente da qualche traduttore automatico tipo babelfish! 😀
La mia è ARTE 😀
Anzi, PURA Arte 😀
Mi stupisco che il lettore non crolli al suolo urlando a causa della densità di arte che gli entra nel cranio 😀
(o forse perchè scrivo dimmerda 😀 )
Nono Aki, non mi riferisco a te 😀 Tu sei mega tollerante 😀
Io mi riferisco a quelli che nei newsgroup cercando la parola “Windows” e postano “Windows sux” senza nemmeno leggere il thread 😀
Che figo, anch’io voglio essere una bestia esotica!
Ciao, bel post.
Ma come mai secondo te le openGL bisogna lasciarle stare?
Il motivo è semplice: non le usa nessuno, tranne Id.
I motivi sono insiti in varie cose, tra cui il quasi disinteresse delle aziende nei driver.
In realtà, alla fine, se lavorerai su console lavorerai sempre con delle API proprietarie, tranne su X360 che ha DX9 (con roba delle 10).
Se lavori su PS3 o Wii invece avrai API completamente proprietarie (il layer OGL su PS3 non lo usa nessuno perchè è lento).
Quindi, dovendo scegliere, meglio l’API che è presente su almeno due macchine 🙂
Ho capito… Infatti io pensavo che se le usava Carmack probabilmente erano valide, anche perchè se non sbaglio in passato lui sbandierava a destra e a manca la facilità d’uso delle api opengl rispetto alle directx.
Ma il fatto che il layer opengl è lento c’entra con il fatto dei driver non ottimizzati o ha qualche altra motivazione?
OpenGL è un’API molto valida, non volevo dire il contrario.
Carmack si riferiva, ai tempi, alle DX 5.0, che facevano SCHIFO 😀 Infatti ebbe a dire successivamente che le dx8 e 9 gli piacevano.
Però il mio consiglio è: non ti basare su quello che dicono gli altri per i tuoi giudizi, in particolare su strumenti professionali. In particolare di Carmack 😀
Su Ps3 il layer OGL è lento perchè fatto di fretta e male, tutto qui 😀 Parlare di “driver” non ha molto senso su PS3, però temo di non poterti dire più di così.
Su PC un mio collega mi ha raccontato una bella storia: in pratica lui, prima di lavorare da noi, lavorava in un’altra azienda, sempre in Italia. E’ facile capire cos’è: ora lavora in Milestone e faceva giochi di basket 😀
Beh, mi diceva che aveva avuto molti problemi con i driver nVidia, segnalando molti bug. Ad un certo si era deciso di passare a DX proprio perchè questi bug non c’erano.
Immagino che, come al solito, tutti i bug delle OGL più nuove verranno corretti quando la Id si metterà ad usarle, come l’ultima volta 😀
Grazie mille per le delucidazioni!
Nel mio vetusto computer i giochi opengl sono quasi sempre girati più veloci. A mio parere la Id fa bene ad usarle, per me la crew di Carmack ha un gusto discutibile nel game design ma è un piccolo genio nei motori grafici. Solo preferisco le shadow map alle stencil, anche se le farei vettorializzate per ridurre i problemi di risoluzione e memoria. Poi la scarsissima e quasi assente occlusione ambientale, ma tutto ciò sono problemi di design, non della libreria grafica, credo.
L’Università è utile ma, credimi, devi fare qualcosa a casa. Io, nel mio piccolo, iniziai a comprare libri come “Game Programming Gems” o “ShaderX” e realizzai il mio primo engine casalingo.
Io devo iniziare le superiori e ho scelto un ITIS ma come dite bisogna iniziare anche da soli e volevo sapere un paio di titoli italiani di libri o riviste che si trovano nelle edicole o nelle biblioteche in modo da inizire a fare qualcosa e se sapreste consigliarmi qualcosa ve ne sarei eternamente grato