2D variation of the recent "Cascade" series I've been experimenting with. I've combined two different techniques and managed to loop it.

1) Replacement looping. Learned from @bleuje a few years ago, and have used probably hundreds of times since In this case, the loop is ~3 seconds. However, if you time how long it takes a particle to fall, it's more than 2x that time. So each particle ends (after ~3 seconds) at a point where a new identical particle begins. This is the "replacement" that is going on.

2) Particle system. Motion is dictated by forces. In this case, a downward gravity-like force, and the repulsive force of the spheres/circles. Each new particle position is determined by previous position + net forces.

These experiments are the first time I've managed to use replacement looping with particles whose position is determined by their previous position (as opposed to equations that determine a particle position for any time during the loop).

@incre_ment @bleuje very cool! Can you give an outline of how the replacement looping is implemented here? Or link a good article if you know one?
@OliverUv @bleuje
Check the 4th tutorial here:
https://bleuje.com/tutorials/
... although I would suggest having a read of the first three as well, prior.
Tutorials / articles - bleuje

@incre_ment @bleuje #bbcmicrobot ë2
X=³(100):Y=900-³(100):I=1
õ
ìX,Y+³(25)*I:ð&91,I*50,0
X=X+I*150+³(100)
çX>1280:I=I+.5:Y=Y-I*120:X=X ƃ1280
ýY<0
ãI=1¸5:C=³(6):X=³(1000)+150:Y=1024
õ
C=(C ƃ6)+1:æ0,C:ð69,X,Y:ç°X,Y-16)=0:Y=Y-4:å170
N=4
çX-N<0Ƅ°X-N,Y-12)=7:X=X+4:å170
çX+N>1280Ƅ°X+N,Y-12)=7:X=X-4:å170
ç°X-N,Y-16)=0:X=X-4:å170
ç°X+N,Y-16)=0:X=X+4:å170
N=N+4:å120
ýX<0ƄX>1280ƄY<16:í
õ
ï5,19,C,0;0;
C=(C ƃ6)+1
ï19,C,7;0;
ãK=1¸5
*FX19
í
ý£
I ran @bazzargh's program and got this.
Source: https://bbcmic.ro/?t=6XTTg #bbcbasic
Owlet BBC BASIC Editor