Ludum Dare 43

Siamo già a Dicembre ed è tempo di un nuovo Ludum Dare: il numero 43.

Per la quinta volta consecutiva ho deciso di partecipare a questa competizione, e anche in questo caso proverò a creare un gioco in Unity che possa essere giocabile via browser.

Rispetto alla volta scorsa il mio nuovo obiettivo è curare il sonoro, in particolare magari inserendo un po’ di musica.

Alle 3 di questa notte vedremo il tema, e speriamo non sia terribile!

20 Anni di Half Life

Oggi son 20 anni dall’uscita di Half Life.

Per chi non ha vissuto quei momenti Half Life ha rivoluzionato il mondo dei videogiochi come pochi altri titoli. Gli anni 90 sono stati una sequenza di titoli rivoluzionari che sfruttavano soprattutto l’accelerazione tecnologia dei processori e delle schede video, quel tipo di accelerazione che ti faceva cambiare pezzi del computer quasi ogni sei mesi.

Prima dell’uscita di Half Life fu rilasciata una demo: ancora la ricordo. Allora le demo erano distribuite tramite CD rom allegati alle riviste, internet stesso era privilegio di pochi, e quasi nessuno aveva banda sufficiente per tirar giù intere demo.

La demo di half life era particolare: in quegli anni era normale per gli FPS distribuire gratuitamente fino anche ad un terzo del videogioco completo, esattamente come fatto da Duke Nukem, Doom, o Woflenstein. Quella di Half Life era invece una demo vera e propria: un livello dimostrativo che mostrava le potenzialità del motore di gioco (eccezionali per l’epoca) e il gunplay, senza rivelare nulla della storia.

Ma è stato il gioco il vero colpo di scena: per la prima volta abbiamo avuto l’idea di un film interattivo, con un tono stabilito dal primo secondo

E dopo questo giro di giostra la storia procede ancora con lo stile di un “Walking simulator” per qualche minuto fino alla cascata di risonanza che apre un portale verso il tipico mondo pieno di mostri, portando il gioco nel vivo.

Da subito ci si rende conto che parliamo di qualcosa di completamente diverso: le prime stanze infatti le dobbiamo affrontare disarmati. I nemici naturalmente non son potenti, ma i rischi son presenti. Questo passaggio stabilisce molto bene il tono “survival” della nostra avventura: non siamo quindi il classico eroe, ma un semplice scienziato travolto dagli eventi. A breve troviamo il piede di porco, che diventerà simbolo del videogioco. Insieme al piede di porco troviamo una guardia che ci scorterà per qualche stanza: anche questo elemento era incredibile per l’epoca: l’idea di non essere l’unico personaggio nella vicenda e anzi di poterci creare una piccola squadra era certamente una ventata di aria fresca.

Poi c’è l’elemento del livello continuo: half life non era certamente un open world. Era diviso a livelli come tutti gli altri giochi, ma la transizione tra un livello e l’altro è continua con un semplice caricamento di qualche secondo. L’azione non è mai interrotta e questo aiuta ad immergersi nell’esperienza quasi cinematografica.

Poco più avanti troviamo la pistola, e insieme a questa arriva un nemico leggermente più minaccioso degli headcrab.

Proseguiamo quindi recuperando armi migliori e incontrando alieni sempre più forti fino al colpo di scena: una volta arrivati in superficie scopriamo che i militari stanno occupando la base uccidendo chiunque incontrino in modo da insabbiare l’accaduto.

Ci troviamo quindi contro dei nemici umani, dei soldati. I soldati avevano per l’epoca una intelligenza quasi incredibile: non erano carne da cannone come gli alieni, e anzi sembravano in grado di coordinarsi e stanare il nemico. Ricordo benissimo che in più occasioni hanno lanciato granate verso il mio nascondiglio e che hanno proceduto con tattiche di accerchiamento al posto di attaccarmi frontalmente.

E dopo questo abbiamo puzzle più complessi, salti da calibrare, e una storia che per quanto semplice sembrava un film comparata alla concorrenza.

Per tutti questi motivi Half Life è una pietra miliare nella storia dei videogiochi.

Come Usare Butler per caricare le patch dei tuoi giochi su Itch.io

Come forse saprai ho una pagina su itch.io dove pubblico i miei videogiochi. Itch.io è abbastanza semplice da usare, ma ricaricare i giochi tutte le volte che si effettua una patch può può portare via parecchio tempo, e soprattutto se si tratta di giochi abbastanza grossi, non è per nulla efficiente ricaricare tutta la build e farla scaricare all’utente.

Fortunatamente Itch.io ha messo a disposizione un semplice tool da riga di comando per velocizzare questa operazione: Butler.

Puoi scaricare Butler qui e una volta installato e aggiunto ai path di sistema potrai utilizzarlo con questi singoli comandi.

Per prima cosa devi autenticarti su Itch.io, scrivendo
Butler login

Una volta create le credenziali locali per effettuare un upload basterà scrivere
butler push path-build nome-utente/nome-gioco:canale --userversion:versione

vediamo queste variabili nel dettaglio
path-build: il percorso dove si trova la cartella della tua build
Nome-utente: il tuo nome utente, come appare nell’url
Nome-gioco: il nome del tuo gioco come appare nell’url
Canale: la versione della build, ad esempio windows, linux etc. Non ci sono dei nomi rigorosi ma il sistema riconoscerà ad esempio qualunque cosa con win come windows.
Versione (opzionale): il numero di versione del gioco.

Tutto qui.

A questo punto battendo invio si cominceranno a caricare i file per la prima volta, e quindi ogni volta che si vuole creare una patch basterà eseguire la stessa riga di comando semplicemente cambiando il numero di versione, e verranno caricati solamente i file modificati.

Una bella comodità.

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.