Scopri “Bouncing Beholder”, il platformer completo in soli 1024 byte!

Fisica eccezionale, ambienti colorati e livelli randomizzati

In breve: Il piccolo platformer JavaScript, Bouncing Beholder, è sorprendentemente ridotto, occupando solamente 1.024 byte – circa mille volte meno dati di uno screenshot promozionale di un videogioco di punta. Nonostante le sue dimensioni ridotte, include tutti gli elementi essenziali di un platformer classico.

I giochi continuano ad aumentare di dimensioni ogni anno, ma un gruppo di sviluppatori sta cercando di invertire questa tendenza. Abbiamo già visto versioni incredibilmente ridotte di Tetris, Snake e Doom, ma le loro dimensioni ridotte spesso comportano compromessi come controlli poco fluidi, animazioni limitate e una mancanza di colore.

Tuttavia, Bouncing Beholder è diverso. Nonostante le sue dimensioni minime, offre un’avventura a scorrimento laterale completa con animazioni fluide, fisica reattiva, terreni generati casualmente, oggetti collezionabili e pericoli da evitare.

I giocatori controllano un occhio rimbalzante usando i tasti freccia, navigando in un paesaggio ingannevolmente accogliente pieno di pericoli. L’obiettivo è raccogliere quanti più gettoni possibile evitando ostacoli. E quando si perde inevitabilmente, il design del livello randomizzato garantisce che ogni riproduzione sia fresca.

Il gioco è stato scritto da Marijn Haverbeke, che lo ha originariamente creato per la competizione di codifica JS1K nel 2010. È stato recentemente riscoperto grazie in parte al suo rigido limite di dimensione del file.

Haverbeke ha raggiunto questo incredibile livello di ottimizzazione attraverso una serie di astuti trucchi di codifica. Questi includono l’abbreviazione di nomi di variabili lunghi e la rappresentazione degli stati di gioco usando formule matematiche anziché memorizzare direttamente i dati.

Ad esempio, le posizioni delle monete non sono predefinite ma seguono una semplice regola: le monete appaiono su qualsiasi piattaforma la cui altezza è divisibile per sei. Raccogliere una moneta abbassa leggermente l’altezza della piattaforma, rimuovendo efficacemente la moneta.

LEGGI  Modder Mantiene RTX 4090 e Core i9-13900K Sotto i 30°C con un Condizionatore!

Haverbeke ha anche ideato un sistema per abbreviare automaticamente i nomi lunghi dei metodi dell’API Canvas HTML5 usata per renderizzare la grafica. Invece di scrivere canvas.quadraticCurveTo(), può semplicemente usare qt(). Quando tutto il tuo gioco si adatta in un solo kilobyte, ogni carattere conta.

Infatti, il codice è così compatto che gli strumenti moderni di compressione come il Closure Compiler di Google hanno effettivamente aumentato la dimensione del file anziché ridurla.

Come Haverbeke nota umoristicamente nel suo blog: “In termini di produttività, questo è un modo terribile di programmare. Ma è sicuramente divertente. Per non parlare del fatto che mi dà una scusa per usare ogni tipo di strano trucco che posso pensare.”

Il codice completo del gioco può essere trovato sul blog di Haverbeke.

Messaggi simili: