edición general
89 meneos
2597 clics

Bouncing Beholder, un juego de plataformas completo en sólo 1.024 bytes de código (ENG)

Un globo ocular saltarín recoge monedas mientras esquiva hierba púrpura y plantas carnívoras en "Bouncing Beholder", un completo juego de plataformas con animación fluida, física y terreno generado aleatoriamente. ¿Lo más sorprendente? Todo el juego cabe en sólo 1.024 bytes de código JavaScript. (blog del autor con explicación técnica)

| etiquetas: bouncing beholder , 1k , plataformas
Me encantan estas joyitas :-)
#1 Lo de 1.024 bytes ... tiene trampa... (y no pretendo restarle merito a la cosa)

Si intentas ejecutar el codigo que proporciona, veras que tira un error.
Eso se debe a que espera encontrar un canvas como primer elemento del DOM.
Se aprecia en la primera linea del codigo:

```js
c=document.body.children[0]
````

Si tuviese que crearlo programaticamente tendra que hacer

```js
const c = document.createElement("canvas");
c.width=800;
document.body.appendChild(c);
```

Eso ya son unos 100 bytes adicionales, o sea un incremento de un 10% sobre esos 1.024 bytes
#18 No tiene trampa, porque la competición del js1k, que es de dónde sale este jueguito, se ejecuta en un iframe que lo que te da es un body con el canvas y el script y nada más, y es parte de las reglas del juego.

Lo que sí me sorprende es que se haya tardado más de 14 años en salir esto en menéame, porque este fue el ganador de 2010, que por cierto fue el año que empezó la competición: js1k.com/2010-first/details/635
#5 luego aparte de tu 1K había Otto código proporcionado por Sinclair que hacía bastantes cosas por ti.
Como aquí, vamos
#6 la ROM, 4K. El intérprete BASIC. Pero te recuerdo que, en ese 1K de RAM, estaba también la memoria de la pantalla. Que era compartida y ahí tenía que caber programa, variables y pantalla
Que pasada la de cosas que se pueden hacer con un lenguaje de programación tan optimizado y potente como Javascript :-O
#2 Optimizado y potente. Me da la risa.
#15 si, ya estoy viendo por ahi que era posible
1.024 bytes de código... :-O
...JavaScript. :roll:
Una puntualizacion, desde el ZX81 nunca he visto un juego en 1K.
Aquel equipo tenía una memoria de 1K, y todo debía de caber ahí.
Sólo tenías BASIC y código máquina, que se implementaba como texto.

Aquí, muy meritoriamente, el código ocupa eso; por tanto no queda memoria para ejecutar, y eso sin considerar al propio intérprete.

Y, sí, existían juegos para esa máquina. No obstante todos montaban la extraordinaria ampliación a 16K
#3 siempre hay una ROM por ahí si es por eso... También en el ZX81
#4 me refería a la RAM, no sé metían los programas en ROM; a lo más que he llegado es a meterlos en EPROM.
En la ROM iba el intérprete de BASIC
#3 El de este link es el juego de la serpiente, ocupa 1,4KB. Pero lo interesante es que esta codificado en un codigo QR.
mattkc.com/etc/snakeqr/
1.024 bytes de javascript.
Y alguno se queda tan feliz.
Habría que analizar el código final a ejecutar, contando el parser, intérprete etc.
:troll:
#19 y que no tenga que cargar librerías externas, que un npm install son 200 megas para saber si una variable es falsa
#21 Una de las normas de la competición a la que pertenece este código, el js1k, es que no se pueden usar librerías externas.
¿Que mierdas hacéis comparando código JavaScript con código ensamblador?
Super Mario 3 ocupaba 384KB en un cartucho de la NES. Por contextualizar.
#8 eso es imposible, algun truco tiene que haber detras
#8 #9
Y el primer Mario Bros de la NES ocupaba 32 Kb
Una virguería.
#13 Recuerdo cuando salio el Odissey, como se menciono, que la gorra de Mario, ocupaba más memoria que el Super Mario Bros original completo.
#9 Para nada, 128KB el primer Final Fantasy de Nes. Y era un cartucho de los "grandes" cuando salio en el 87.
#8 Pero no en JavaScript.
#8 Los cartuchos de los juegazos de Konami para MSX eran de 32 KB!!! Y los últimos, como Salamander, 128 KB.

menéame