(sì, più o meno come giocando in borsa...)
(come si legge ogni tanto sui giornali)
Fare videogiochi è come fare lo scrittore, o il regista, o il disegnatore di fumetti, o il pittore, con qualcosa in più e qualcosa in meno.
È difficile però essere ricordati - anche ora che i videogiochi sono trendy - i singoli dietro a un titolo di successo sono meno noti degli artisti in altri campi
Pong 1972 | Space Invaders 1978 | Pac-Man 1980
Pitfall 1982 | Zaxxon 1982 | Mario Bros 1983
Wolfenstein3D 1992 | Doom 1993
Need for speed 1994 | Quake 1996
Tomb Raider 1996 | Resident Evil 1996
Silent Hill 1999 | Halo 2001 | God of War 2005
Assassin's Creed 2007 | GTA IV 2008 | Minecraft 2009
The Last of Us 2013
Essere un Game Programmer nella mente delle persone è spesso un concetto complesso
Vuol dire che sei quello che pubblica un videogioco
E non necessariamente quello che ha scritto il codice che lo fa girare
I ruoli dietro alla realizzazione di un videogioco sono tanti. E puoi creare un videogioco senza essere un programmatore, o almeno senza essere davvero un programmatore
Perciò quando pensate di voler diventare Game Programmer cercate di comprendere in dettaglio cosa volete fare, e non solo cosa volete ottenere
(non più di quanto serva sapere scrivere musica per fare un pezzo di successo)
(tenendo conto c'è il drag'n'drop e il copia&incolla)
(e questo è solo un piccolo elenco...)
(script e RAD, ovvero perché fare fatica quando non è necessario?)
(troverete vari altri esempi qui)
(con linguaggi dedicati)
(linguaggi semplici, con API potenti dedicate, o addirittura linguaggi progettati per rendere lo sviluppo di un determinato tipo di gioco più intuitivo e semplice)
(con linguaggi script non dedicati uniti a framework/IDE dedicati)
(potenza e semplicità di linguaggi diffusi, con librerie e/o IDE dedicati)
(con linguaggi evoluti e con framework dedicati)
(Game Engine per C++ o Java)
(Game Engine, Graphic Engine o Framework per C++)
(con linguaggi evoluti e librerie specifiche)
Questo è il linguaggio in assoluto più usato per sviluppare videogiochi
(vari giochi hanno però parti realizzate in altri linguaggi di più alto livello)
(alcuni giochi usano parti realizzate direttamente in assembler)
(librerie audio&video collegate all'hardware dei dispositivi)
(librerie specifiche per compiti specifici)
IDE & Compilatori / Piattaforme per sorgenti / Strumenti di test e di deploy
Code-Blocks Portable
(tutto inizia qui)
if(init())
{
while(!endgame())
{
readinput();
handleINPUT();
gameAI();
checkandmoveeverything();
drawandplaysounds();
}
reset();
}
if(init())
{
while(!endgame())
{
if(peekinput()) handleINPUT();
gameAI();
checkmoveeverything();
drawandplaysounds();
}
reset();
}
if(init())
{
startgamethread();
reset();
}
Gamethread:
while(!endgame())
{
if(checkinput()) handleINPUT();
gameAI();
checkmoveeverything();
drawandplaysounds();
}
UIthread:
peekinput();
Il mondo è il nostro gioco - è l'area dentro cui il nostro eroe si muove - è il tabellone dentro il quale l'utente deve selezionare le lettere per comporre le parole - è l'arena dentro cui fare combattere i nostri personaggi - è il campo da gioco - è la scacchiera - è DOVE giocare - è il CONTENITORE del gioco
Le regole definiscono come gli attori interagiscono con il mondo - le regole sono i limiti che il giocatore avrà - sono il modo con cui il giocatore giocherà
con cui interagire - sono le entità passive o attive - senzienti o meno - con cui il giocatore avrà a che fare
molto di più di quello che si potrebbe immaginare
Varie sono le scene simili o anche identiche in giochi con nulla o quasi in comune: Home, Opzioni, Credits, Leaderboards, Tutorial, Scene di fine gioco, di vittoria o sconfitta, Selezione livelli
Alcuni elementi presenti in alcune scene saranno identici (o molto simili) anche in giochi con nulla in comune (HUD, in game menu, warning dialogs)
Praticamente ogni gioco ha assets/risorse.
Perché un gioco è il programma e NEL programma (script, graphics / music)
(ascoltare e capire cosa vuole poi fare questo giocatore)
Keyboards, joypad
Virtual keyboards, virtual joypad
Touch / gestures
Accelerometer
Gyroscope
GPS coordinates
Camera Images
Sounds
(e un filmato vale di più di mille immagini)
2D e 3D
Frame based / Skeleton based
Formati diversi, peculiarità e considerazioni sui formati
Creare grafica (staticamente o dinamicamente)
Pagare qualcuno per crearla per noi
Usare asset già pronti: gratuitamente o a pagamento
(esempi gratuiti opengameart, ogab, kenney)
(i film muti non ci sono quasi più dagli anni venti)
Musica (background, streaming)
Sound effects
Formati diversi, peculiarità e considerazioni sui formati
Creare musica e suoni (staticamente o dinamicamente)
Pagare qualcuno per crearli per noi
Usare asset già pronti: gratuitamente o a pagamento
(costruire il parco giochi)
Edited / generated / endless
Map editor / Map generator
L'importanza della casualità
(abbiamo voluto un mondo, ora è il caso di gestirlo)
(giochi di sport / da tavolo / RPG / FPS / Platform / Shoot'em'Up)
(più intelligenti vuol dire sapere anche quando perdere)
(rule based / script based / seek&run / pathfind / adaptive behaviour)
(cose superflue, quindi necessarie, perché
il proprio gioco sia davvero completo)
Social interaction
Leaderboard / achievements
Multiplayer (turn based/realtime)
Server interaction
Updates
User customization
(le cose ora ci sono tutte, ora però dobbiamo portarle dagli utenti)
Packaging / protection / compression / localization
(come cercare di giustificare agli amici o al proprio partner
le tante ore passate davanti al computer)
Freeware / Shareware / Donationware
Selling / Selling items (unlock features, give game items) / advertising (and/or pay to remove)
AppStore / GooglePlay / Windows MarketPlace / Steam
Sito web / blog / Pagina su siti-community per developers
Social Networks
YouTube
Reviews
Pubblicità
Hype
Piccoli vs Grandi
Differenze su costi e tempi, e sui progetti affrontabili
Il termine Indie è spesso associato a una tipologia di giochi - ma in realtà Indie non implica nulla, se non la tipologia di team che si occupa dello sviluppo.
Essendo gruppi più piccoli possono permettersi di sperimentare di più.
Un solo programmatore, che fa o compra anche grafica e suoni, o che lavora con figure diverse per quegli aspetti in base ai progetti.
Realtà più comune in passato.
La situazione più normale ora, di solito con uno o due programmatori, uno o due grafici / game designer, con eventualmente altri per l'aspetto sonoro.
In base al team il team leader può essere il programmatore o il designer
Qualche titolo ha ancora dietro un numero non enorme di persone - pochi programmatori (che si appoggiano su un motore AAA) e un po' di grafici e artisti
Molti titoli hanno anche centinaia di persone - tra cui coordinatori di gruppi