N.B.: articolo WIP
Ciao a tutti, oggi si va a fare un enorme esperimento mentale.
Qualche tempo fa, basandomi sull’IGDA Curriculum Framework, ho provato a pensare: come si potrebbe comporre un piano di studi ideale di tre anni riguardante lo sviluppo di videogames?
Ovviamente si suppone che chi voglia fare un percorso del genere abbia una buona base sull’informatica e sulla programmazione in generale.
Il piano di studi da me ideato è diviso in corsi che vanno a identificare i seguenti sottopercorsi:
- Game design
- Computer science
- Game development
- Art skills
- Game studies
- Game production
Per ciascun corso, sarà presente una descrizione, un syllabus, o dei link a corsi di università reali che mostreranno informazioni a riguardo.
Prima di entrare nei dettagli, faccio una lista di quelli che a mio modesto parere sono i prerequisiti necessari per affrontare gli argomenti che poi seguono:
Matematica discreta
Libro: Discrete Mathematics with Applications – Susanna S.Epp
Algebra lineare
Libro: Linear Algebra – Lipschutz, Lipson
Algoritmi e strutture dati
Libro: Data structures using C – Reema
Architettura dei calcolatori
Libro: Structured Computer Organization – Tanenbaum
Analisi matematica
Libro: Calculus – Larson, Edwards
Programmazione
Libro: C How to program – Deitel, Deitel
Fondamenti di informatica
Libro: Computer science illuminated – Dale, Lewis
Sistemi operativi
Libro: Operating Systems Concepts – Silberschatz, Galvin, Gagne
Reti di calcolatori
Libro: Computer Networks – Tanenbaum, Wetherall
Ingegneria del software
Libro: Software engineering – Sommerville
Quella che segue è la struttura che mi è venuta in mente.
1° parte
Introduction to videogame studies
Introduzione allo studio del medium videogioco nella quale si esaminano le sue funzioni culturali, educazionali e sociali.
Syllabus
- Studio dei videogiochi
- L’industria
- Cos’è un gioco
- Storia
- Estetica del videogioco
- Cultura del videogioco
- Cultura del giocatore
- Narrativa
- Serious games
- Videogiochi e rischi
Libro
- Understanding Video Games: The Essential Introduction
Game design 1
Corso di introduzione alla disciplina del game design. L’approccio è inizialmente analitico, diventa poi pratico con la prototipazione e con le tecniche di design iterativo. La parte finale è dedicata alla comprensione dell’integrazione del game design all’interno di un team di sviluppo reale.
Syllabus
- Basi di game design
- Il ruolo del game designer
- Struttura di un gioco
- Elementi formali
- Elementi drammatici
- Sistemi dinamici
- Progettare un gioco
- Concettualizzazione
- Prototipazione
- Prototipazione digitale
- Playtesting
- Funzionalità, completezza ed equilibrio
- Divertimento e accessibilità
- Lavorare come game designer
- Strutture di team
- Fasi di sviluppo
- Il documento di design
- Comprendere la game industry
- Vendere un’idea alla game industry
Libro
- Game Design Workshop – A playcentric approach to creating innovative games
Practical game development 1
Corso di introduzione allo sviluppo di videogames 3D con l’utilizzo di Unity.
Si studiano e si applicano le tecniche basilari di sviluppo di videogiochi, incluse la gestione degli input, dei suoni, la fisica, le camere, l’intelligenza artificiale, le interfacce utente e qualche cenno sul multiplayer online.
L’approccio è molto incentrato sulla pratica su Unity e SDL, al termine è previsto un progetto nel quale si implementa un videogioco in 3 dimensioni.
Syllabus
- Introduzione alla programmazione di giochi
- Oggetti di gioco e grafica 2D
- Vettori e fisica di base
- Intelligenza artificiale
- OpenGL
- Grafica 3D
- Audio
- Sistemi di input
- Camere
- Rilevamento collisioni
- Interfacce utente
- Animazione con scheletri
- Grafica intermedia
- File dei livelli e dati binari
Libri
- Game programming algorithms and techniques – Sanjay Madhav
- Game Programming in C++: Creating 3D Games – Sanjay Madhav
- Unity in Action: Multiplatform Game Development in C# with Unity 5 – Joe Hocking
Computer graphics
Corso di introduzione alla computer grafica. Si svolge su due filoni, uno di teoria e uno pratico nel quale, utilizzando C++ e OpenGL, si mettono in pratica i concetti teorici.
Syllabus
- Matematica miscellanea
- Algoritmi di rasterizzazione
- Processamento del segnale
- Algebra lineare
- Matrici di trasformazione
- Viewing
- Eliminazione della superficie nascosta
- Shading
- Ray tracing
- Mappatura delle texture
- La pipeline grafica
- Strutture dati per grafica
- Sampling
- Curve
- Animazione
- Utilizzo dell’hardware grafico
- Costruzione di applicazioni grafiche interattive
- Luce
- Colore
- Percezione visuale
- Riproduzione del tono
- Illuminazione globale
- Modelli di riflessione
- Rendering image-based
- Visualizzazione
Libri
- Fundamentals of computer graphics – Peter Shirley e altri
- Learn OpenGL
- OpenGL Programming guide – Shreiner e altri
2° parte
History of video games
Vabbè, abbastanza banale. Studiare la storia per poter guardare le cose in prospettiva. Utile approfondire l’evoluzione della tecnologia negli anni.
Libro
- The Ultimate History of Video Games – Steven L. Kent
Level & world design
Corso utile a mettere in pratica i concetti visti in Game design 1 (design iterativo incluso) nella creazione di un livello, di un mondo o di un ambiente di gioco in generale.
L’approccio è sia teorico sia pratico, si vedrà come prototipare livelli usando AutoREALM e realizzarli effettivamente in Unity.
Si conclude con un progetto realizzato in Unity.
Syllabus
- Previsualizzazione
- Pianificazione e costruzione di livelli
- Illuminazione, texturing, particelle, effetti e audio
- Attori, oggetti di scena, item e dettagli sulla camera
- Design per genere
- Scripting
- QA e play-testing
- Considerazioni per gli MMOG
Libri
- Designing virtual worlds – Richard A. Bartle (utile per approfondire)
- Building levels in Unity – Volodymyr Gerasimov
-
Ultimate Game Design: Building Game Worlds – Tom Meigs
Game engine development 1
In questo corso si introduce dal punto di vista teorico e pratico l’architettura di un motore di gioco. Si affronta in dettaglio la struttura e lo sviluppo del motore di rendering in C++.
- Introduzione
- Fondamenti di ingegneria del software per giochi
- Matematica 3D
- Sistemi a basso livello
- Sistema di supporto
- Risorse e file system
- Game loop e simulazione real-time
- Human Interface Devices
- Strumenti per debug e sviluppo
- Grafica e moto
- Motore di rendering
- Sistemi di animazione
- Collisioni e dinamiche del corpo rigido
Libri
- Game Engine Architecture – Jason Gregory
-
OpenGL Superbible: Comprehensive Tutorial and Reference – Sellers
Artificial intelligence
Corso che introduce tecniche di intelligenza artificiale utilizzate nell’industria videoludica. Le varie tecniche sono viste sia in teoria, sia in pratica (sempre con Unity).
Syllabus
- Tecniche
- Movimento
- Pathfinding
- Decision making
- Tattiche e strategie
- Apprendimento
- Giochi da tavolo
- Tecnologie di supporto
- Gestione dell’esecuzione
- Interfacciarsi col mondo
- Strumenti e creazione di contenuti
- Progettare IA di gioco
- Sparatutto
- Guida
- Strategico in tempo reale
- Sport
- Strategico a turni
Libro
- Artificial Intelligence for Games – Ian Millington
- Unity 2018 Artificial Intelligence Cookbook – Jorge Palacios
3° parte
Computer animation
Syllabus
- Background tecnico
- Interpolazione e tecniche di base
- Algoritmi avanzati
- Fenomeni naturali
- Modellare e animare figure articolate
Libro
- Computer animation: algorithms and techniques
Advanced game mechanics design
In questo corso ci si affaccia alla progettazione di meccaniche di gioco complesse.
Syllabus
- Progettazione di meccaniche di gioco
- Emergenza e progressione
- Sistemi complessi e struttura dell’emergenza
- Economia interna
- “Machinations”
- Meccanismi comuni
- Design patterns
- Simulare ed equilibrare giochi
- Costruzione di economie
- Integrazione di level design e meccaniche
- Meccanismi di progressione
- Meccaniche significative
Libro
- Game Mechanics: Advanced Game Design – Ernest Adams
Practical game development 2
Si raffinano le competenze acquisite in Practical game development 1 e si implementa un gioco che fa uso di meccaniche di gioco complesse, come ad esempio può essere un simulatore di macroeconomia. La complessità va gestita sia sul piano del design sia su quello dell’ingegneria del software. Il tutto, con l’utilizzo di Unity.
Syllabus
- Implementazione di meccaniche di gioco avanzate
- Ottimizzazioni Unity
Computational Geometry
4° parte
Game production
Corso introduttivo al processo di produzione di un gioco, si parla delle difficoltà intrinseche, dei vari componenti del team di sviluppo, delle documentazioni che è necessario produrre e delle varie fasi di sviluppo.
E’ evidente il legame di questa materia con l’ingegneria del software.
Syllabus
- Difficoltà dello sviluppo di giochi
- Componenti di un gioco
- Contesto di mercato
- Elementi di design chiave
- Documento di design del gioco
- Documento di design tecnico
- Piano di progetto
- Tracciare i task
- Strategie di outsourcing
- Pubblicazione del gioco
Game design 2
Si affrontano in maniera completa delle tecniche poco comuni di game design.
Syllabus
- Generazione procedurale
- Giochi pervasivi
- Gamification
Online game development
Syllabus
- Internet
- Sockets
- Serializzazione di oggetti
- Replicazione di oggetti
- Topologie di rete e giochi di esempio
- Latenza, jitter e affidabilità
- Gestione migliore della latenza
- Scalabilità
- Sicurezza
- Motori di gioco reali
- Servizi per giocatori
- Server di cloud hosting dedicati
Libro
- Multiplayer game programming: architecting networked games – Glazer, Madhav
3D modeling
5° parte
Serious game design
Game engine development 2
Completamento di Game Engine Development 1.
Si prosegue lo sviluppo di un motore di gioco con la creazione di un sistema di gameplay.
- Introduzione ai sistemi di gameplay
- Comportamento a run-time
Audio design
6° parte
Game Company creation
Virtual reality design
Syllabus
- Introduzione e background
- Cenni storici
- Linee guida di design
- Percezione
- Realtà oggettiva e soggettiva
- Modelli e processi di percezione
- Modalità di percezione
- Percezione di spazio e tempo
- Stabilità percettiva, attenzione e azione
- Percezione: linee guida di design
- Effetti di salute collaterali
- Motion sickness
- Problemi alla vista
- Sfide hardware
- Latenza
- Misurare sickness
- Linee guida per ridurre effetti collaterali
- Creazione contenuti
- Concetti ad alto livello
- Design degli ambienti
- Condizionare il comportamento
- Transizione alla creazione di contenuti VR
- Linee guida di design
- Interazione
- Interazione human-centered
- Concetti di interazione in VR
- Dispositivi di input
- Pattern e tecniche di interazione
- Linee guida di interazione
- Design iterativo
- Filosofia del design iterativo
- Fase di definizione
- Fase di creazione
- Fase di apprendimento
- Linee guida di design iterativo
- Presente e futuro della realtà virtuale
Libro
- The VR book: human-centered design for virtual reality – Jason Jerald