UPSOAR
A browser game that fits on a single QR code. Scan, copy the text, then paste in the address bar of a web browser. Or just play here.
There’s just 1 control: press to go up, release to go down. You can touch the screen, click the mouse, or press a key on the keyboard. The rest is up to you! Can you get to the top?
The QR code contains the following text:
DATA:TEXT/HTML;-PASTE-IN-WEB-BROWSER-,%3CMETA%20NAME=VIEWPORT%20CONTENT=WIDTH=DEVICE-WIDTH%3E%3CTITLE%3EUPSOAR%3C/TITLE%3E%3CBODY%20STYLE=BACKGROUND-COLOR:%23000%3E%3CCANVAS%20ID=0%20STYLE=WIDTH:100%25;MAX-WIDTH:200VMIN;POSITION:FIXED;TOP:0;BOTTOM:0;LEFT:0;RIGHT:0;MARGIN:AUTO;IMAGE-RENDERING:PIXELATED%3E%3CSCRIPT%3Elet%20e,t,a,n=Date.now,o=Math,v=o.sign,l=o.abs,r=o.PI,i=2*r,p=document.getElementById(0).getContext('2d'),c=(e,t)=%3Ea[4*e+t*d*4],s=t=%3Et.p+(t.v-t.p)*(n()-e)/50,g=(e,t)=%3E((t-e+r)%25i+i)%25i-r,d=60,m=1,u=%7Bv:1197%7D,w=%7Bv:1620%7D,h=0,I=0,b=%7Bv:0%7D,f=0,y=-1,A=new%20AudioContext,R=0,T=e=%3E%7Bif(e)%7Blet%20t=A.currentTime,a=A.createGain(),n=a.gain,o=A.createOscillator(),v=t+1;a.connect(A.destination),n.value=.1,n.exponentialRampToValueAtTime(.01,v),o.type='triangle',o.frequency.value=e,o.connect(a),o.start(),o.stop(v),o.onended=e=%3Ea.disconnect(),A.resume()%7D%7D,U=e=%3E%7Bp.resetTransform(),p.fillRect(0,0,300,150),p.globalAlpha=.2,p.drawImage(q,-2760-.5*s(u),.5*-s(w),120*d,3600),p.globalAlpha=.8,p.drawImage(q,150-s(u),75-s(w),30*d,1800),p.globalAlpha=1,p.translate(150,68),p.rotate(s(b)),p.scale(m,1),p.drawImage(q,0,f,27,19,-16,-12,27,19),requestAnimationFrame(U)%7D,q=new%20Image;q.src=URL.createObjectURL(new%20Blob([new%20Uint16Array('206171825402573025860000003328185052106000000153600000015360007720000051200503860006500000205072158037445399880000028416280181228800769000022674065280203215068654669655344777808456000000025621108213261638455526001020051218709167081442028107455244395803120535722491542621146341091742278155306310335883369930887536557372520035949835277775821302902554792867400326422001368114407106840172834358556372349716983554635192345836301383267518693570132497320870036633594651761458722835409516273531268413104618751173340485507452613664614379363312555681548323505604840258242188959917391360029311395272963618031651060020609600023409732364545183037004558345418002092704910511518414028413318119583804202381114522949113774090503945258564392763396163956231483025421298261945586257186566816336122469220075094162294468572618658971619794186301357285571884626405566090959332245406523142346372246322676642127232304093441788274805162556415488473189438067243325595031535598771942301173301114497040861320734002963801216621480507448470696109203164557615983651552575873697641508095793157336522289764741934740596842258407115187430861930577303436342140230427756379817400025552529924312000425637322781625326207655015604294417549621125310772543865480551970745974091592545107224597595790146481496984496339046090913442825577076975514324182531444663229129561135720164074575753090438778388025096622469641541464858620323744469735054154480715104584562894395724981637211808628152277332991832662045746391933789390481519353098384582895536205557631922156278460451327060094464810809338846639340818163599172726167265216000000000017737174861707033376'.match(/.%7B5%7D/g))])),q.onload=i=%3E%7Bp.drawImage(q,0,0),a=p.getImageData(0,0,d,60).data,onkeydown=onpointerdown=e=%3Et=1,onkeyup=onpointerup=e=%3Et=0,ontouchstart=ontouchend=e=%3Et=e.touches.length,p.fillStyle='%23112',p.imageSmoothingEnabled=0,setInterval((a=%3E%7Be=n(),u.p=u.v,w.p=w.v,b.p=b.v,w.v+=I,u.v+=h,I+=.5;let%20i=w.v/30%7C0,p=v(u.v-u.p),s=v(w.v-w.p),d=o.atan2(I*m,h*m),A=(o.sqrt(h*h+I*I)+.1)*m,U=c(u.v/30%7C0,i),q=0;if((f%7C%7C1==R)&&!((y=++y%25300)%255))for(;q%3C5-w.v/450;)T([0,139,147,185][3&c(27+q,y/5%7C0)]*q++*(1==R?2:1));1!=R?(t&&.5%3El(g(b.v,d))?(b.v-=.2*m,I=o.sin(b.v)*A,h=o.cos(b.v)*A):b.v=b.v+.3*g(b.v,d),t&&!U%7C%7C(v(h)%7C%7Cm)==m%7C%7C(m*=-1,b.v+=r,b.p+=r),f=40%3Ef&&t?40:20,U&&(u.v=u.p,w.v=w.p,h=t?l(h)*p*-.5:0,I=l(I)*s*-.1,b.v=d,t?I%3E0%7C%7C(T(220),I=-6,h=2*m):2%3El(A)&&0%3E=I&&(b.v=f=h=I=0,w.v=30*i)),b.p=b.v+g(b.v,b.p),!R&&1125%3Eu.v&&90%3Ew.v&&(R=1,y=239)):(h=I=b.v=0,u.v=1125,w.v=90,f=y%255/2.5%7C0?0:20,m=y%2510/5%7C0?-1:1,y%7C%7C(R=2)),w.v%3E1830&&(u.v=w.v=h=I=0)%7D),50),U()%7D;%3C/SCRIPT%3E