1st person view of a springtime island city. Use your mouse to fly over the city, jump from roof to roof or drive with the cars on the streets. You can also just let the autopilot show you around.
_='c.width.height1W/2;#y=h=99;cp=Z==$9;hDOdOX=-2c.onmousemove=b){XX-W;YY-W}; setInterval(){#@@Xcy@h+p>h?$1:cp-Y;h(#+(cy+W]/7>h (cp=1x;x{L;Ra+a-W)Ay=70y>W;-)if(T*h/(W),Bx+T*PCy+T*Pi=0>B0>CB>wC>wB+C+W,k=E],o=50*k/T|N=0>oo,N<L){s=TA;l=1<sU/s;o=L-N;L=N;oif(j*+N+o)3l,jU,!ko)jk==UQk !(o%9)?U:]F!kQG1]2i?G2]:W3o o<w/T 1<L?U:i?l@s): $8<R*T)?$8*l:l}}i=3H<4H+)](3*((4-i)*(i/4%w)/i),-FW,-2-3#a.puI,0iZ++;Z%;i=9Ho=5+U*i+Z,Z<w-1 (ho9),ho-w0},U=Y0 iHx=i%w,y=iA,z=16<JU 11<KU?abs(x/U/y/U*h):Ez<UK74>U J75>U?z/:z,GFG24>-39>(3?h:2>K82>J9/8+(y/9)<?E] KW>h JW<h?U+h:U:38<-8 38<(2 (E+FUI=a.gew,wD=I.data;Math.cos(d[4*iD[for(]=--;)*w &&|0)tImageData(isin(,j+);?0:function(=b.client0,=w||)%UA/9=cy-=40;ca(x#cx$0.@+=A/wBtXCtYEhF1G+H;iJy%Kx%O=[];PR)|Q?99:';for(Y=0;$='QPOKJHGFECBA@$# '[Y++];)with(_.split($))_=join(pop());eval(_)
Xz0nYy53aWR0aBouaGVpZ2h0FhwxHVcWLzI7Ixp5PWg9OTk7Y3A9Wj0dHj0kOTtoRE9kT1g9LTIdYy5vbm1vdXNlbW92ZT0TYil7WBRYLVc7WRRZLVd9OyBzZXRJbnRlcnZhbCgTKXsjQAIeQFgZEWN5QAEPHhFoKxpwHD5oPyQxOmNwLVkZO2gEKCMLKyhjeQsIK1ddLzc+aAkoY3A9MREFeBY7eAd7TBY7UhphKwFhDx8tVylBEQV5PTcwHXk+VzsbLSlpZihUFipoLygbVyksQhp4K1QqAlBDGnkrVCoBD1BpPTA+QhcwPkMXQj53F0M+dxJCK0MIK1csaz1FXSxvPTUwKmsvVHwVTj0wPhtvEhtvLE48TCl7cz1UQTtsPTE8cxJVL3M7bz1MLU47BUw9TjtvB2lmKGocKh8rTggrbwgpEDMGbCwEagZVLCFrF28pBGoGaz09VVFrCSEobyU5KT9VOgNdEEYha1FHMV0QMgZpP0cyXTpXEDMGbwlvPHcvVAkxPEw/VTppP2xAAnMpOiAkODwBD1IqVCk/JDgqbDpsfX0FaT0zSDw0CAhIKxwpDl0XKA4GMyooKDQICC1pKRkqKGkvNCV3KS9pKQgsDi1GVywOLTIGDi0zBiMRBWEucHUMSSwVMBFpBw4GHVorKztaJRY7BWk9OUgHbz01K1UqaStaCCxaPHctMQkoaARvBjkpLGgEby13BjB9LFU9WRwwESAFaRYISAd4PWkldyx5PWlBLHo9MTY8SlUJMTE8S1U/AWFicygCeC9VCy8CeS9VCypoKToVRQZ6PFUSSzc0PlUJSjc1PlU/ei8eOnosAwZHRkcyBjQ+Hy0zGBc5PigbMxg/aDoyPks4FzI+SjkSAh8vOAsrKHkvOQspPB4/RV0JS1c+aAlKVzxoP1UraDpVOhUzODwfLTgYCTM4PCgbMhgJKEUrRlURST1hLmdlDBUVdyx3EUQ9SS5kYXRhOwFNYXRoLgIBY29zKANkWzQqaQREWwVmb3IoBl09By0tOykIKncJJiYLfDApDHRJbWFnZURhdGEoDgRpD3NpbigQLARqKxEpOxI/MDoTZnVuY3Rpb24oFD1iLmNsaWVudBUwLBY9dxd8fBgpJVUZQS85Gj1jG3ktHD00HTA7HmNhHyh4I2N4JDAuQCs9QS93QnRYQ3RZRWgORjEGRwMrSDtpSnklS3glTz1bXTtQUil8FVE/OTk6Jztmb3IoWT0wOyQ9J1FQT0tKSEdGRUNCQUAkIx8eHRwbGhkYFxYVFBMSERAPDgwLCQgHBgUEAwIBJ1tZKytdOyl3aXRoKF8uc3BsaXQoJCkpXz1qb2luKHBvcCgpKTtldmFsKF8p
// start of submission //
c.width=c.height=w=410;W=w/2;cx=cy=h=99;cp=Z=0;ca=.9;hD=[];d=[];X=-20;
c.onmousemove=function(e){X=e.clientX-W;Y=e.clientY-W}
setInterval(function(){
cx+=Math.cos(ca+=X/w/9);cy+=Math.sin(ca);h+=cp=h<4?.1:cp-Y/w/9; // Integrate movement
if(hD[(cx|0)+(cy|0)*w+W]/7>h)cp=1; // Collision detection
for(x=w;x--;){ // Raycasting
L=w;R=ca+Math.asin((x-W)/w);
for(y=700;y>W;y--){
T=w*h/(y-W);tX=cx+T*Math.cos(R)|0;tY=cy+T*Math.sin(R)|0;i=tX<0||tY<0||tX>w||tY>w?0:tX+tY*w+W;k=hD[i];o=k*50/T|0;N=y-o<0?0:y-o;
if(N<L){s=T/w;l=s>1?0:U/s;
for(o=L-N,L=N;o--;){j=(x+N*w+o*w)*4;D[j+3]=l;D[j]=U;
if(!k||o){D[j]=k==U?99:k&&!(o%9)?U:d[i*4];D[j+1]=!k?99:d[i*4+1];D[j+2]=i?d[i*4+2]:W;D[j+3]=o&&o<w/T&&L>1?U:i?l+=Math.cos(s):Math.sin(R*T)>.8?l*.8:l}}}}}
for(i=3;i<w*w*4;i+=4)if(!D[i]){D[i]=(w*w*4-i)/w/9*(i/4%w)/i*3*w;D[i-1]=W;D[i-2]=D[i-3]=cx} // Sky
a.putImageData(I,0,0);while(i--)D[i]=0;
Z++;Z%=w;for(i=9;i--;){o=5+U*i+Z*w;if(Z<w-1)hD[o]=9;hD[o-w]=0} // Cars
},U=Y=40)
for(i=w*w;i--;){ // City creation
x=i%w;y=i/w;
z=y%U>16&&x%U>11?Math.abs(Math.cos(x/U|0)/Math.cos(y/U|0)*h):0;hD[i]=z<U?0:x%74>U&&y%75>U?z/ca:z; // Buildings
d[i*4]=d[i*4+1]=d[i*4+2]=(x-3)%U<4||(y-3)%U<9?h:x%8<2||y%9<2?0:Math.cos((x/8|0)+(y/9|0))<ca?hD[i]&&x%W>h&&y%W<h?U+h:U:0; // Tiling and roads
if((x-8)%U>38&&(y-2)%U>38)hD[i+1]=U} // Traffic signs
I=a.getImageData(0,0,w,w);D=I.data;
// end of submission //