Marble Madness 3D: considerazioni e osservazioni

Introduzione

 

Il gioco arcade Marble Madness dell’Atari del 1984 fu il primo gioco con una grafica pseudo 3d.

Il gioco consisteva nel controllare una biglia in un percorso tridimensionale  e e raggiungere una zona definita come Goal entro un certo tempo.

Il percorso tridimensionale oltre avere pendenze e aperture aveva anche oggetti e  piccoli mostriciattoli che cercavano di  impedire alla sfera di raggiungere la zona goal.

 

La grafica del gioco era in un “finto 3d” : la mappa era mostrata attraverso una proiezione ortogonale fissa e  sfruttava illusioni ottiche.

 

Il nostro obiettivo sarà  quello di realizzare:

   i.            un gioco simile con grafica tridimensionale (OpenGL)

 ii.            un editor che permetta di poter creare mappe per questo gioco.

 

 

 

L’immagine  mostra una mappa del gioco originale.

 

Requisiti del motore grafico

1.      Realizzazione grafica 3D utilizzando OpenGL.

2.      Visualizzazione di uno spazio contenente una mappa attraverso una camera.

3.      La mappa  e’  costituita da piastrelle.

4.      Alcune piastrelle hanno particolari proprietà(esempio se appartiene ad un Goal).

5.      La pianta della piastrelle è quadrata e di uguale dimensione per tutte le piastrelle.

6.      Una piastrella è divisa in quattro triangoli uguali  dove i vertici sono due vertici della piastrella e il terzo è il centro della piastrella

7.      i vertici e il centro di una piastrella possono trovarsi su altezze diverse

8.      se i vertici di due piastrelle adiacenti si trovano su altezze diverse tra le due piastrelle si forma uno scalino.

9.      Nella mappa possono esserci anche sfere e altri oggetti

10.  Il diametro della sfere è il diametro della piastrella sono uguali

 

Requisiti del motore fisico

1.      ogni piastrella ha una proprietà che indica l’attrito rispetto alla sfera

2.      se la  sfera ha un punto di appoggio il movimento rotatorio provoca un corrispondente spostamento lungo il piano

3.      un cambio di velocità della sfera lungo il piano provoca un relativo cambio di velocità di rotazione

4.      se non c’è un punto di appoggio la sfera  la rotazione decresce fino a zero.

5.      la forza di gravità agisce applicando una accelerazione alla sfera lungo l’asse z passante per il centro della sfera verso il basso

6.      se la sfera tocca un gradino non può oltrepassarlo.

7.      la sfera può avere dai 0 ai 4 punti di appoggio sul piano

8.      ogni punto di appoggio esercita una forza normale al piano passante per punto di appoggio al centro della sfera

9.      l’attrito della piastrella provoca una accelerazione di direzione contraria alla direzione dello spostamento della sfera

 

Requisiti del editor

1.      Interfaccia grafica dell’editor realizzata attraverso MFC e OpenGL.

2.      Possibilità di definire la dimensione dello spazio su cui si potrà definire la mappa..

3.      Creazione della piastrelle.

4.      Modifica della altezza dei vertici e del centro della piastrelle.

5.      Modifica delle proprietà di una piastrella.

6.      Cancellazione delle piastrelle.

7.      Posizionamento dell’area  goal.

8.      Posizionamento dello start.

9.      Preview  tridimensionale della mappa (utilizzo del  motore grafico)

10.  Salvataggio mappa

11.  Caricamento della mappa

 

Requisiti del gioco

1.      Interfaccia grafica realizzata attraverso GLUT e OPENGL

2.      L’Interfaccia grafica  permette di selezionare la mappa , iniziare il gioco e uscire.

3.      Utilizzo del motore grafico per visualizzare la mappa

4.      Esiste un Timer

5.      Controllare una sfera in una mappa

6.      Controllare la camera di visualizzazione del gioco

7.      Stato della sfera in dato momento è dato dalla  velocità di  rotazione , direzione e  posizione del suo centro nello spazio

8.      Il controllo della sfera e della camera avviene attraverso il mouse e/o tastiera modificando la velocità di rotazione e direzione della sfera

10.  l’utente può cambiare la direzione della rotazione delle sfera

11.  se la sfera ha almeno un punto di appoggio l’utente può cambiare la velocità di rotazione della sfera in modo incrementale

9.      La sfera interagisce con l’ambiente attraverso un motore fisico

10.  Se la sfera cade in un vuoto dopo un certo numero di secondi viene riposizionata nell’ultima piastrella con pendenza nulla con direzione e velocità di rotazione nulla.

11.  Se il timer raggiunge 0 viene segnalata la sconfitta

12.  Quanto  la sfera  raggiunge il Goal del mappa viene segnalata vittoria.

 

Glossario motore grafico

 

OpenGL: Open Graphics Library

Quadrato:  una lista di  5 altezze:

una del vertice NO

una del vertice NE

una del vertice SO

una del vertice SE

una del vertice C

Triangoli: triangolo N , triangolo O, triangolo E, triangolo S

Triangolo N: triangolo formato dai vertici NO NE C del quadrato

Triangolo E: triangolo formato dai vertici NE SE C del quadrato

Triangolo O: triangolo formato dai vertici NO SO C del quadrato

Triangolo S: triangolo formato dai vertici SE SO C del quadrato

 

Gradino: la parete presente se c’è un dislivello tra piastrelle

Piastrella: quadrato con le 5 altezze definite

Vuoto: quadrato con le 5 altezze non definite

Spazio: una griglia di quadrati

Mappa: un insieme di piastrelle

Vertice: un punto nello spazio tridimensionale (x,y,z)

Proprietà piastrella: un insieme di caratteristiche associata ad una piastrella

Goal: un insieme di piastrelle che costituisce la destinazione della pallina.

Start: la piastrella su cui la pallina viene posizionata inizialmente

Camera: camera di visualizzazione del motore grafico

Glossario del motore fisico

Glossario Editor

MFC: Microsoft Foundation Classes

Caricamento: prendere il contenuto di un file e memorizzare le informazioni che contiene in memoria principale

Salvataggio: prendere il contenuto della memoria principale relativa ad un insieme di strutture dati e memorizzarle e codificarle in un certo modo su disco.

Preview: un anteprima di quello che verrà visualizzato nel gioco

Glossario Gioco

Glut: OpenGL Utility Toolkit

Interfaccia grafica gioco: un semplice interfaccia realizzata attraverso opengl e glut che permetta di accedere al gioco

Timer: un cronometro che parte da un certo valore e decresce ogni secondo di uno

Utente: giocatore

Piastrella di pendenza nulla: una piastrella dove NO NE SO SE  C si trovano alla

stessa altezza

Sconfitta: segnalato “game over” e ritorno al menu di scelta

Vittoria: segnalata “vittoria” e ritorno al menu di scelta

Tastiera e mouse: device di controllo