Unlock!

È un clone di SOKOBAN

Progetto

In questa versione

  • un esploratore deve raccogliere le chiavi sparse in un labirinto
  • per sbloccare tutte le serrature e passare al livello successivo…

Utilizzo alcune risorse disponibili in GameMaker 8

  • le sprite della cartella Examples > Maze - Platform
  • la gestione degli eventi è simile a quella di MAZE.

UNLOCK

Ci sono poche risorse necessarie e i comportamenti degli oggetti sono relativamente semplici.

Risorse

Crea le risorse di base

TIPO NOME FILE IMMAGINE
Sprite spr_Muro wall_block.png Wall
wall_block_cracked1.png Wall
wall_block_cracked2.png Wall
spr_EsploratoreSu explorer_up_strip8.png Up
spr_EsploratoreDx explorer_right_strip8.png Right
spr_EsploratoreGiu explorer_down_strip8.png Down
spr_EsploratoreSx explorer_left_strip8.png Left
spr_Chiave key_gold.png key Gold
spr_Chiusa lock_silver.png Lock Silver
spr_Aperta lock_gold.png key Gold
Background back_Gioco Sfondo
Object obj_Muro spr_Muro Wall
obj_Chiave spr_Chiave key Gold
obj_Chiusa spr_Chiusa Lock Silver
obj_Aperta spr_Aperta key Gold
obj_Esploratore spr_Esploratore_Su Up
Room

Note

  1. Carica più immagini per il muro tramite Edit Sprite > File > Add from File....
  2. Per la chiave e le serrature sono disponibili le versioni luccicanti con 32 immagini!
  3. Per semplificare la gestione delle collisioni imposta, in tutte le sprite Modify Mask > Full image > Rectangle.
  4. Scegli un’immagine per lo sfondo di tuo gradimento
  5. Imposta il primo livello
    • Snap X / Snap Y32
    • Width640 (20 colonne)
    • Height576 (18 righe)
    • Speed20
    • bgSfondo
    • Tile Hor.
    • Tile Vert.
e poi utilizza Duplicate

 

WalloMuro

  • Solidon

image Create

Sprite Action Change sprite into spr_wall (subimage0speed0)
Dice Action With chance 1 out of 2 perform next (sides2)

Begin Start of block
Sprite Action Change sprite into spr_wall (subimage1speed0)
Dice Action With chance 1 out of 2 perform next (sides2)

Begin Start of block
Sprite Action Change sprite into spr_wall (subimage2speed0)
End End of block

End End of block

Usa la prima immagine ma con il lancio del dado potrebbe usare la seconda, ma con un altro lancio del dado potrebbe usare la terza.
Il contorno del labirinto risulterà sempre diverso.

 

key Goldobj_Chiave

  • Solid
  • Depth: 0

Collision Event Explorer obj_Esploratore

If Free If a position is collision free (x8*other.hspeedy8*other.vspeedRelativeonobjectsOnly solid)

Begin Start of block
image Jump to position (x8*other.hspeedy8*other.vspeedRelativeon)
End End of block

Se la chiave viene a contatto con l’esploratore, e la cella adiacente è libera, si sposta.

 

Lock Silverobj_Chiusa

  • Depth: -1

Step Event Step

image If there is a collision at position (x0y0RelativeonobjectsOnly solid)

Begin Start of block
image Change instance into obj_Aperta (…)
End End of block

Se la serratura chiusa è a contatto con un oggetto solido, la chiave, allora diventa obj_Aperta.

 

key Goldobj_Aperta

  • Depth: -1

Step Event Step

image If there is a collision at position (x0y0RelativeonobjectsOnly solidNOTon)

Begin Start of block
image Change instance into obj_Chiusa (…)
End End of block

Se la serratura aperta NON è a contatto con un oggetto solido, la chiave, allora diventa obj_Chiusa.

 

Upobj_Esploratore

  • Depth: -10

<Left>

Sprite Action Change sprite into spr_EsploratoreSx (spritespEsploratoreSxsubimage-1speed0.5)
If Grid If instance is aligned with grid (snap hor32snap vert32)

Begin Start of block
Move Action 1 Start moving in a direction (speed4)
End End of block

 

<Up>
<Right>
<Down>

Cambia la sprite dell’esploratore e la freccia in Start moving in a direction

 

<no key>

If Grid If instance is aligned with grid (snap hor32snap vert32)

Begin Start of block
Move Action 1 Start moving in a direction (speed0)
End End of block

Quando l’esploratore è allineato alla griglia

  • reagisce ai tasti di direzione e si mette in movimento
  • se nessun tasto è premuto si ferma…

Collision Event Wall obj_Muro

Move Action 1 Start moving in a direction (Speed0)

 

Collision Event key Gold obj_Chiave

image Comment

In caso di collisione con il muro, si ferma.
In caso di collisione con la chiave, non fa niente (perché agisce la chiave) ma è necessario comunque inserire l’evento.

Step Event Step

If Number If the number of instances is a value (objectobj_Chiusanumber0operationEqual to)

Begin Start of block
Sleep Action Sleep 1000 milliseconds
If Next Room If next room exists

Begin Start of block
Next Room Go to next room
End End of block

Else Action Else

Begin Start of block
Restart Game Restart the game
End End of block

End End of block

Se nel livello non ci sono oggetti obj_Chiusa, perchè sono diventati tutti obj_Aperta

  • aspetta un secondo
  • passa al prossimo livello, se esiste, oppure ricomincia da capo.

 

Finito!

Realizza dei livelli per controllare che tutto funzioni e buon divertimento!

 

Alcuni miglioramenti

Siccome hai terminato presto con gli oggetti, potresti dedicarti agli altri aspetti che possono rendere il gioco piùprofessionale

  • un certo numero di livelli
  • tutti gli accessori che non mancano mai…

 

I livelli

Crea dei gruppi di livelli all’interno della cartella di risorse Rooms e inserisci più livelli possibile…

Alcuni consigli

Tutorial Livelli semplici e progressivi per guidare l’utente alle prime armi col Sokoban
Nome_Cognome Le tue sfide rompicapo!
Sokoban
Boxworld
Peterbox
Finché i tuoi livelli non ti sembreranno avvincenti copia i livelli della versione originale e dellealtre versioni che trovi nel web!

Accessori del gioco

Prova ad aggiungere

  1. comandi per la gestione del gioco: prossimo/precedente/ricomincia livello, salva/ricarica gioco, …
  2. transizioni di livello: scegli tra quelle disponibili
  3. animazioni: tutte le serrature aperte, risolti tutti i livelli di un gruppo, …
    Wall Wall Wall Wall Wall
  4. effetti sonori: spinta, chiave nella serratura
  5. musica di sottofondo
  6. pannelli: inizio e fine del gioco, inizio e fine di un gruppo di livelli, informazioni generali
  7. contatori: livello, passi, spinte, tempo impiegato