Bring as many eggs as you can to the surface, and don't run out of air! Use arrow keys to move.
for(_="++Q+fPl&O)?8:N16&&O15&h(iPQ%2,oP%2)(p>.8*N(7-onkey31)**2-F=0==),at96,x=2,:r>8k[e]64/8P--%2512||ImageDa( c.fillText(/8|0;image-rendering:255;if(h(+x,y)&(f,g)=>,I[qQ]=C[fQ]*p|m(h(x,y)&15!!k[C=[y=n=E=,L=1,A=,,,,V=,,0];T=a.style.cssText+=';height:px;width:pxpixeled-moz-crisp-edges';k=new ,);M=;I=k.da;down=up=k[f.which-]=f.type[5];setInterval(A>0requestAnimionFrame(d={A=y?A-1:;D=Mh.sin(LP**1.5)*+T.charCodeAt(f%0)&;for(T+=d,q=0,h=f<8f>g>?:g<1?1:(r=D(e=*gP)?20+L*8?24?8?:4;q<384;t=q/32,s=q/4&63,u=s+x-28,v=t+y-28,l=h(i=u,o=vu%=8,v%=8,m=O4(u-4+(v-4<4/(40-v)t2s<A/4?:t+3(s+(t-1>456/tt+F(s-E1q9084?V:A,p=1-(O7?y/:D(u+8*v+)//4f=-2,f=vNuv)u)NO1?5:O?(L*6+8)%11:O8?6:0|);c.put k,0,0);V?'LEVEL'+L,,36):n,1,12);y!M(V=,LQM=,)4)=Qn,M--M,A=8)=A-=;V|x%8|y%8(,f=1,E=8])-6]))(f=2,F=9])-7]!!y)x+=E+E;y+=F+F;V=VV-8;})";G=/[-N-Q]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
Zm9yKF89IisrUStmUGwmTyk/ODpOMTYfJiYeTx8eMTUmaChpUFElMixvUCUyKR4ocD4uOCodTh0oNy0cb25rZXkbMzEaKSoqMhktGhkYRj0wFz09FiksFWF0FDk2Eyx4PTIfLBI6cj44EWtbZV0QNjQPLzhQLS0lMg41MTIMfHwLSW1hZ2VEFGEoCWMuZmlsbFRleHQoCC84fDAHO2ltYWdlLXJlbmRlcmluZzoGMjU1BTtpZihoKCt4Byx5BykmBChmLGcpPT4DLElbcVFdPUNbZlFdKnB8bQIoaCh4Dix5DikmMTUeISFrWwFDPVt5PW49RT0XLEw9MSxBPQUsEywTLBMsVj0MLAUsMBIaXTtUPWEuc3R5bGUuY3NzVGV4dCs9JztoZWlnaHQ6DHB4O3dpZHRoOgxweAZwaXhlbBRlZAYtbW96LWNyaXNwLWVkZ2VzJztrPW5ldyAJDywPKTtNPR87ST1rLmQUYTsbZG93bj0bdXA9A2tbZi53aGljaC0aXT1mLnR5cGVbNV07c2V0SW50ZXJ2YWwoA0E+MB5yZXF1ZXN0QW5pbRRpb25GcmFtZShkPQN7QT15P0EtMToFO0Q9A00UaC5zaW4oTFAqKjEuNSkqBStULmNoYXJDb2RlQXQoZiUTMCkmBTtmb3IoVCs9ZCxxPTAsaD0DZjw4C2Y+DwtnPg8/HzpnPDE/MToocj1EKGU9EypnUBUQKT8yETArTCo4PzIRND84ET8fOjQ7cTwfMzg0O3Q9cS8zMgcscz1xLzQmNjMsdT1zK3gtMjgsdj10K3ktMjgsbD1oKGk9dQcsbz12BxV1JT04LHYlPTgsbT1PNB4odS00GSsodi00GTw0Dy8oNDAtdikLdBYyHnM8QS80PwU6dBYaKzMLKHMYKyh0LTEYPjQ1Ni90C3QWGitGHihzLUUYFjELcRY5MDg0P1Y6QSxwPTEtKE83P3kvDDpEKHUrOCp2Kw8pLwUvNBVmPS0yLGY9HXZOHXUcdikcdSlOTzE/NTpPHz8oTCo2KzgpJTExOk84PzY6MAICAgJ8BSk7Yy5wdXQJaywwLDApO1Y/CCdMRVZFTCcrTCwfLDM2KToIbiwxLDEyKTt5CyFNHihWPQwsTFESTT0fLBcpBDQpED1RbixNHi0tTSxBPQUEOCkQPUEtPQ87Vnx4JTh8eSU4CygXLGY9MSxFPQE4XSktATZdKSkLKGY9MixGPQE5XSktATddHiEheSkVeCs9RStFO3krPUYrRjtWPVYeVi04O30VGikiO0c9L1sBLR9OLVFdLy5leGVjKF8pOyl3aXRoKF8uc3BsaXQoRykpXz1qb2luKHNoaWZ0KCkpO2V2YWwoXyk=
// const AIR=1;
// const WATER=2;
// const EGG=4;
// const EARTH=8;
// const ROCK=16;
// colour palette
P=[
y=n=X=Y=0,
L=1,
N=255,
96,
96,
96,
V=512,
255,
0,
x=216,
31
];
T=a.style.cssText = ';height:512px;width:512px;image-rendering:pixelated;image-rendering:-moz-crisp-edges';
k=new ImageData(64, 64);
M=16;
I=k.data;
onkeydown=onkeyup=(f,g)=>k[f.which-31]=f.type[5];
setInterval((f,g)=>N>0&&requestAnimationFrame(Z=(f,g)=>{
// decrease air, replenish at surface
N=y?N-1:255;
// Pseudo random noise function
R=(f,g)=>Math.sin(L f**1.5)*255 T.charCodeAt(f%960)&255;
// Draw each pixel
for (T =Z, q = 0,
// Map generator
h=(f,g)=>f<8||f>64||g>64?16:g<1?1:(r=R(e=96*g f),k[e])?2:
r>80 L*8?2
:r>84?8
:r>8?16
:4;
//16384 = 64 * 64 * 4; // view width x view height x colour planes
q < 16384;
t = q / 32 / 8|0,
s = q / 4 & 63,
u = s x-28,
v = t y-28,
// current tile type
l = h(i=u/8|0, j=v/8|0) ,
u %= 8,
v %= 8,
m =
// egg
l&4 && (u - 4)**2 (v-4)**2<464/(40-v)
// air bar
|| t==2&&s<N/4 ? 255 :
// player
t==31 3 ||
(s - 31)**2 (t-1 - 31)**2>456/t
// eyes
|| t==31 Y && (s -X - 31)**2==1
// legs
|| q==9084
// level fade-in
?V
// fade player according to air
:N,
// speckle on tiles
p = 1-(l&7?y/512:R(u 8*v 64)/255/4),
// Decoration - seaweed around rocks
f=-2,f=l & 16 && 15 & h(i f %2, j f%2) && (p > .8 * v ) ? 8:
l & 16 && 15 & h(i f %2, j f%2) && (p > .8 * u ) ? 8:
l & 16 && 15 & h(i f %2, j f%2) && (p > .8 * (7-v)) ? 8:
l & 16 && 15 & h(i f %2, j f%2) && (p > .8 * (7-u)) ? 8:
// select palette colour index
l&1?5:l & 16 ? (L*6 8)%11 : l & 8 ? 6 : 0,
// plot pixel
I[q ] = P[f ] * p | m,
I[q ] = P[f ] * p | m,
I[q ] = P[f ] * p | m,
I[q ] = P[f ] * p | m | 255
);
// draw image
c.putImageData(k, 0, 0);
// show level number
V?
c.fillText('LEVEL ' L,16,36):
// show score
c.fillText(n,1,12);
// go to next level
y||!M&&(V=512,L ,x=216,M=16,Y=0);
// collect eggs
if (h( x/ 8|0, y / 8|0) & 4) k[e] = n,M&&--M,N=255;
// dig earth
if (h( x/ 8|0, y / 8|0) & 8) k[e] = N-=64;
// movement inc check for walls
V | x % 8 | y % 8 ||
(Y=0,f=1,X= (h(x/8 f--%2,y/8 f--%2)&15 && !!k[8])
- (h(x/8 f--%2,y/8 f--%2)&15 && !!k[6] ))
|| (f=2,Y= (h(x/8 f--%2,y/8 f--%2)&15 && !!k[9])
- (h(x/8 f--%2,y/8 f--%2)&15 && !!k[7] && !!y )),
x = X X;
y = Y Y;
// fade
V=V&&V-8;
// smooth animation
}),31)