Basing their movements and reactions on a tiny Perlin noise implementation, those hundred small living things don't know were to go.
for(_='b.~~b`256_=0;_>^=1E3;ZeightY*w.XXPIV?b:U=[]T);Qe*N){Ln(K|0JthG~y~x,r(g[),q(E,q(lF(0==(e&+=.0tion,f-1=x.innervar for(&255,0,+1]+p,return;c.fill.random()0|w* ),d,h=g[Style="],d,h"Rect(y,OQrequestAnimaFrame(I)func MT,m^m;m++)M[m]=_*MaGJ;KeL NNN(N(6*e5)0)}q(e,b,dL b+N(d-b)}r(e,bLe&=15;f=8>eUd;b=4>e?d:12==e||14==eUh;1)?f:-f)+2)U-b)}w=MaG,x=window,y=a.widGWidG,O=a.hYHY,A=HT#000CZC--;)H[C]={x: y,y: O,a:b:r:1+(0|3*w)J};I(Lc.globalCompositeOpera="source-over"rgba( 0.075)eZe--;Lb=H[e],d=,h==A,gT,l^l;l++)g[_+l]l]=M[l];t=du=hp=fd=d-(dJh=h-(hJ)=f-(fJl=KdE=Khvt]+u,Fvvvut]+u,tupud=(1+q(Kf]r(g[t)q(lv]r(g[p))]tq(lv]p))))/2*6V%(2VQ~a5Xcos(dQ`5XsiKdQ+=~a;+=`;if(-20>||>y+20||-20>||>O+20)= y,= O,~a=`=0hsla("80*(~a+`)%360+", 100%, 85%, .8)";c.beginPaG(Qc.arc(,,~r,2V)()}A25;};';G=/[^ -FHIMOPRSW[\]a-}]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
Zm9yKF89J2Iufn5iYDI1Nl89MDtfPl49MUUzO1plaWdodFkqdy5YWFBJVj9iOlU9W11UKTtRZSpOKXtMbihLfDBKdGhHfnkffngeLHIoZ1sdKSwcHHEoRSxxKGwdRhsoMD09KGUmGis9LjAZdGlvbhgsZhctMRY9eC5pbm5lchV2YXIgFGZvcigUEyYyNTUsEjAsESsxEF0rcCwPcmV0dXJuDjtjLmZpbGwMLnJhbmRvbSgpCzB8dwsqCRcWKQgsZCxoBz1nWwYMU3R5bGU9IgVdLGQWLGgEIgxSZWN0KBEReSxPURMDcmVxdWVzdEFuaW1hGEZyYW1lKEkpAmZ1bmMYIAETTVQsbV5tO20rKylNW21dPV8qTWFHC0o7AUtlTA4gTk5OKE4oNiplFjUpEDApfQFxKGUsYixkTA4gYitOKGQtYil9AXIoZSxiB0xlJj0xNTsUZj04PmVVZDtiPTQ+ZT9kOjEyPT1lfHwxND09ZVVoOw4aMSk/ZjotZikrGjIpVS1iKX0Udz1NYUcseD13aW5kb3cseT1hLndpZEcVV2lkRyxPPWEuaFkVSFksQT0RSFQFIzAwMANDWkMtLTspSFtDXT17eDoJeSx5OglPLGE6EWI6EXI6MSsoMHwzKncLKUp9OwFJKExjLmdsb2JhbENvbXBvc2l0ZU9wZXJhGD0ic291cmNlLW92ZXIiBXJnYmEoESARIBEgMC4wNzUpA2VaZS0tO0wTYj1IW2VdLGQ9HixoPR8XPUEsZ1QsbF5sO2wrKylnW18rbF0GbF09TVtsXTsUdD1kEnU9aBJwPWYSZD1kLShkShxoPWgtKGhKKRc9Zi0oZkocbD1LZBxFPUtoHHYGdF0rdSxGBnYPdgZ2EA91BnQQXSt1LHQGdQ9wBnUQD2Q9KDErcShLZhtdBxcccihnW3QEFykccShsHXZdBxYXHHIoZ1twBBYXKSkbEF0HCB10EAQIHHEobB12EF0HFggdcBAEFggpKSkpLzIqNlYlKDJWUX5hGTVYY29zKGRRYBk1WHNpS2RRHis9fmE7Hys9YDtpZigtMjA+Hnx8Hj55KzIwfHwtMjA+H3x8Hz5PKzIwKR49CXksHz0JTyx+YT1gPTAFaHNsYSgiEDgwKih+YStgKSUzNjArIiwgMTAwJSwgODUlLCAuOCkiO2MuYmVnaW5QYUcoUWMuYXJjKB4sHyx+ciwRMlYpDCgpfUEZMjU7An0COyc7Rz0vW14gLUZISU1PUFJTV1tcXWEtfV0vLmV4ZWMoXyk7KXdpdGgoXy5zcGxpdChHKSlfPWpvaW4oc2hpZnQoKSk7ZXZhbChfKQ==
var t = [];
for (var i=0; i < 256 ; i++) t[i] = (Math.random()*256) | 0;
function n(x, y, z) {
var p = [];
for (var i=0; i < 256 ; i++) {
p[256+i] = p[i] = t[i];
}
var X = x & 255, Y = y & 255, Z = z & 255;
x -= x | 0;
y -= y | 0;
z -= z | 0;
var u = f(x), v = f(y), w = f(z);
var A = p[X ]+Y, AA = p[A]+Z, AB = p[A+1]+Z, B = p[X+1]+Y, BA = p[B]+Z, BB = p[B+1]+Z;
return s(l(w, l(v, l(u, g(p[AA ], x , y , z ), g(p[BA ], x-1, y , z )), l(u, g(p[AB ], x , y-1, z ), g(p[BB ], x-1, y-1, z ))),
l(v, l(u, g(p[AA+1], x , y , z-1 ), g(p[BA+1], x-1, y , z-1 )), l(u, g(p[AB+1], x , y-1, z-1 ), g(p[BB+1], x-1, y-1, z-1 )))));
}
function f(t) { return t * t * t * (t * (t * 6 - 15) + 10); }
function l(t, a, b) { return a + t * (b - a); }
function g(a, x, y, z) {
var h = a & 15;
var u = h<8 ? x : y, v = h<4 ? y : h==12||h==14 ? x : z;
return ((h&1) == 0 ? u : -u) + ((h&2) == 0 ? v : -v);
}
function s(n) { return (1 + n)/2; }
// -------------------------------------------------------------------------
/*
_='f!tii;i++)t[i]=6*Math.random()nf!dee;e++)d[6+e]e]=t[e];k,m=b,h=c;a-b-=bc-=ce=f),q=f(b),u=f(c),pkrp,pp,mkkm,hm; s(l(uk ph)k phf *(6*a5)0l b+(c-bg,da&=15;e=8>ac;b=4>a?c:12=||14=d;1)?e:-e)+2)-bs(1+a)/2};function ,g(d[return,b,c,b,c],a=d[var ,l(e-1(a+125|0;]+h)}=0;6>(0==&,l(q r){))?b:&5=aa*)=[],]+m,!or(';for(Y in $='! ')with(_.split($[Y]))_=join(pop());eval(_)
*/
// -------------------------------------------------------------------------
var RES = 512, LEN = 1000, k = 0.05;
var m = Math, d = window;
var aw = a.width = d.innerWidth;
var ah = a.height = d.innerHeight;
var sd = 0, e = [], o = 20;
var r = function(rx){ return 0|( m.random()*rx ) };
c.fillStyle = '#000'
c.fillRect(0, 0, aw, ah)
for (var q = LEN; q--;) e[q] = {x: r(aw), y: r(ah), vx: 0, vy: 0, r: 1+r(3)|0};
function drawFrame() {
c.globalCompositeOperation = 'source-over'
c.fillStyle = 'rgba(0, 0, 0, 0.075)'
c.fillRect(0, 0, aw, ah)
//c.fillStyle = '#fff'
for (var q = LEN; q--;) {
var w = e[q];
var fc = (n(w.x, w.y, sd) * 6 * m.PI) % (2*m.PI);
//if (!q) console.log(fc/2/m.PI, fc, m.cos(fc)*k, m.sin(fc)*k);
w.vx += m.cos(fc)*k
w.vy += m.sin(fc)*k
w.x += w.vx;
w.y += w.vy;
var j = w.x < -o || w.x > aw + o || w.y < -o || w.y > ah + o;
if (j) {
w.x = r(aw)
w.y = r(ah)
w.vx = w.vy = 0
}
var v = w.vx + w.vy
c.fillStyle = 'hsla(' + v * 180 % 360 + ', 100%, 85%, .8)'
c.beginPath();
c.arc(w.x, w.y, w.r, 0, 2*m.PI);
c.fill();
}
sd += 0.025;
//a.style.width = window.innerWidth + "px";
//a.style.height = window.innerHeight + "px";
requestAnimationFrame(drawFrame);
}
requestAnimationFrame(drawFrame);