l'evoluzione dell'informatica nei videogiochi: da pong ai moderni AAA Pier Luca Lanzi
sto giocando a … alcuni giochi a cui ho giocato di recente …
http://www.facebook.com/polimigamecollectivehttps://twitter.com/@POLIMIGC
http://www.youtube.com/PierLucaLanzihttp://www.polimigamecollective.org
c’era una volta …C’era una volta …
CRC102A – Politecnico di Milano 1951
Tennis for Two (1958) - William Higinbotham - Brookhaven National Laboratory
Space Wars! (1961) - Steve Russell et al. - MIT
Space Wars! (1961) - Steve Russell et al. - MIT
Midway Sea Raider (1971)
Atari Pong 1972
Yars' Revenge (1982) – Howard Scott Warshaw – Atari 2600
https://www.youtube.com/watch?v=pvjajVf3BEc
Yars' Revenge (1982) – Howard Scott Warshaw – Atari 2600
Hardware Atari 2600 • CPU: 1.19 MHz MOS 6507• GPU: risoluzione di 160 x 192 pixel ma raggiungibile solo con
tecniche di programmazione speciali.• 128 colori su schermo ma al massimo 4 per linea• 2 canali di suono a 1-bit e controllo di volume a 4-bit• 128 Byte di RAM• ROM (cartuccia): 4 KB di capacita massima che potevano
diventare 32 KB con il bank switching
Pac-Man (1980) – Toru Iwatani - Namco
Hardware Pac-Man • CPU: Zilog Z80 @ 3.072 MHz• GPU: risoluzione di 224×288 con un frame rate di 60.61fps• 16KB ROM e 4KB RAM con 2KB di video RAM• 256 colori con 8-bit di cui solo 16 colori su schermo• 8 sprite su schermo, 64 sprite in moemoria, di 16×16 pixels e un
massimo di 4 colori per sprite
GameplayIntelligenzaArtificiale
Interfaccia�Utente
Grafica(GPU)
Suono(codice)
Motore di Animazione
Motore�Fisico
GameLoop
0
10
20
30
40
50
60
70
ODYSSEY
ATARI/
INTELLI
VISION
NES/MAST
ER SY
STEM
SNES/
MEGADRIV
E
PLAYS
TATIO
N
PS2/XBO
X/GC
XBOX360
/WII/P
S3
Prince of Persia (1989) – Jordan Mechner
IntelligenzaArtificiale
Interfaccia�Utente
Suono(codice)
Supporto�Multigiocatore Rete
Rendering(GPU)
Motore di Animazione
Motore�Fisico
GameLoop
gameplayGame Engine
Quali sono state le conseguenze?
Downwell (2015) - Ojiro Fumoto
La tecnologia è cambiata …
L’approccio allo sviluppo è cambiato …
E i problemi?
Vincoli Temporali • Tipicamente un videogioco deve garantire almeno 30 frame per
secondo (30 fps)• Un ciclo della game engine deve quindi occupare meno di 1/30 di
secondo in totale• Tutta l’elaborazione della logica di gioco e della fisica (movimenti,
collisioni, ecc.) devono essere eseguiti in meno di 1/30 di secondo
• E’ quindi necessario ottimizzare il codice al massimo per evitare qualsiasi spreco
Quali Ottimizzazioni? • Precalcolando tutto quello che è possibile
• Utilizzando strutture dati per l’accesso allo�stato del gioco e a calcoli complessi (collisioni)
• Non creando e non distruggendo nulla
• Semplificando i calcoli matematici§ Precalcolando le funzioni trigonometriche§ Evitando funzioni costose come le radici quadrate§ …
38
http://www.facebook.com/polimigamecollectivehttps://twitter.com/@POLIMIGC
http://www.youtube.com/PierLucaLanzihttp://www.polimigamecollective.org
Recommended