Ludum Dare 42: Post mortem

Per la serie “meglio tardi che mai” ecco finalmente il post mortem di Mondriancraft.

L’idea

L’idea iniziale che ho avuto per creare qualcosa rispondente al tema: running “out of space” era un gioco ispirato alla gestione di un inventario. Mi sono ispirato al problema dell’inventario di No Man’s Sky dove il crafting degli oggetti creava alcuni un involontario puzzle. L’idea era quindi quella di creare oggetti sempre più grossi attraverso una meccanica di crafting, e quindi ottenere una sorta di puzzle simile al tetris e al gioco del 15.

Nel primo prototipo al posto di creare gli sprite degli oggetti da inserire nell’inventario ho creato alcuni quadretti colorati come segnaposto: guardandoli ho notato la somiglianza con un quadro di Mondrian, e da qui l’idea di Mondriancraft.

Meccanica di gioco

Il gioco è basato su una semplice griglia 5×5, ogni quadrato può essere o meno occupato da una tessera. Fino a quando le tessere sono larghe come il quadrato nessun problema, basta assegnare la tessera al quadrato, rimuoverla al click, e riassegnarla al secondo click controllando prima che la casella sia vuota, altrimenti ritornare un errore.

La parte complicata è come gestire le tessere più grandi di un quadrato. Un modo semplice sarebbe potuto essere quello di usare il sistema interno di collisioni, ma ho pensato che fosse inutilmente complicato per questo tipo di applicazioni.

Dopo aver riflettuto un po’ ho pensato ad una semplice meccanica ispirata a Logo. Ogni tessera è composta da quadretti, e partendo dal quadretto di ancoraggio, (ovvero quello dove si posiziona la freccia del mouse quando si muove la tessera) ogni tessera può essere descritta con una serie di passi Nord Sud Ovest Est, e quindi per controllare se lo spazio dove appoggiare quella tessera è libero sarebbe bastato effettuare la stessa sequenza di passi partendo dall’ancoraggio, e nel caso di risposta positiva andare a segnalare come occupate tutte queste caselle. Non solo: al posto di usare Nord Sud Ovest Est ho usato 0 (nord) 1 (est) 2 (sud) 3 (ovest). In questo modo avrei potuto ricalcolare il percorso da fare in base alla rotazione della tessera sommando in base 4 ad ogni passo la rotazione della tessere (sempre espressa nello stesso modo) e tenendo conto solo dell’ultima cifra.

Risolto il problema dell’ingombro, del movimento e della rotazione delle tessere l’ultima cosa da fare è stata gestire il sistema di crafring, e qui si è semplicemente trattato di avere una casella speciale e verificare se quando si porta un oggetto e questa casella è occupata la combinazione dei due oggetti corrisponde a una ricetta: in caso positivo i due oggetti spariscono e ne compare un terzo che li combina, altrimenti risulta un errore (e un messaggio di spiegazione nella versione postjam). Questo meccanismo è una semplificazione rispetto alla mia idea iniziale di avere 3 celle: due di partenza e una di destinazione, e quindi poter scomporre un elemento mettendolo nella casella di destinazione. Anche qua ha prevalso l’idea di semplificare il più possibile i passaggi.

Veste Grafica

Una volta completata la meccanica di gioco e verificata la condizione di vittoria si è trattato di creare una veste grafica che fosse meglio di un prototipo. Per questa ragione ho creato una palette di 8 colori partendo da un quadro di Mondrian, e ho utilizzato questa palette per tracciare una foto reale di un interno e un cavalletto da pittore. Per far questo ho usato Aseprite con un risultato che considero sufficientemente gradevole.

Conclusioni

Viste le condizioni in cui ho realizzato questo progetto sono soddisfatto del risultato, soprattutto perché non ha richiesto di basarmi su molte strutture pre esistenti, e ha creato un sistema semplice per poter creare in futuro altri giochi basati su griglia, tipo ad esempio dei manageriali.