Made a fun little engine, yesterday, in SmileBASIC.
-=-=-
Tweet with video
Taking cues from my Falling Petals/Lemmings test thing in GotoJSE, I got balls falling onto Platforms, and then wondered where to take it from there.
I made the "tilt" be thumbstick controlled, and then added a little boat at the bottom, where Platdude can fire giant balls into the air.
The balls then fall down, and you can kinda guide them using the tilting platforms.
From there, I'm not sure.
A few ideas got sent to me on Twitter, and it looks like it's either going to be a shoot-em-up, or a target range, or something to that effect.
*shrugs*
If the game works out well enough, I'll likely rewrite it in JSE, later.
For now, though, if you want to see roughly where this idea came from, the Falling Lemmings example is on the Pink Examples Disk, or the code is here.
// Falling Lemmings
// by Jayenkai
// Created 2021/6/9
// Lemmings (c) DMA Design, Psygnosis, Sony
Symbol 0,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0/P@0_0_0!P@0_0_0!P.880_0_0@P.880_0_0_08!0_0_0@8!0_0_0@88dd0_0_0_088dd0_0_0_088dd0_0_0_088dd0_0_0_088dd0_0_0_088dd0_0_0_0d.0_0_0_0d.0_0_0@88d.0_0_0@88d.0_0_0_08.0_0_0_08.";
Symbol 1,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0@PP00PP0_0_0@PP00PP0_0_0!P!0_0_0@P!0_0_0@P.880_0_0@P.880_0_0_08!0_0_0@8!0_0_0@88dd0_0_0_088dd0_0_0@88d.0_0_0@88d.0_0_0@88d.00880_0_0.88d.00880_0_0!d.00880_0_0!d.00880_0_0.d.00880_0_0!d.00880_0_0!8.0_0_0_08.";
Symbol 2,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0/PP00PP0_0_0@PP00PP0_0_0@P!0_0_0@P!0_0_0_0PP880_0_0_0PP880_0_0_08!0_0_0@8!0_0_0!8.dd0_0_0@8.dd0_0_0@88d.0_0_0@88d.0_0_0!8.d!0_0_0.8.d!0_0_0!d@0_0_0!d@0_0_0.8.0.8.0_0_008.0.8.";
Symbol 3,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_P.0_0_0_0P.0_0_0@P.88PP0_0_0!P.88PP0_0_0!PP8!0_0_0!PP8!0_0_0@88dd0_0_0_088dd0_0_0_088dd0_0_0_088dd0_0_0@88d.0_0_0@88d.0_0_0_0d.0_0_0_0d.0_0_0!88d@0_0_0.88d@0_0_0.880.8.0_0_0.880.8.";
Symbol 4,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0/P@0_0_0!P@0_0_0!P.880_0_0@P.880_0_0@PP8!0_0_0!PP8!0_0_0@88dd0_0_0_088dd0_0_0_0dd880_0_0_0dd880_0_0_088dd0_0_0_088dd0_0_0_0d.0_0_0_0d.0_0_0@88d.0_0_0@88d.0_0_0_08.0_0_0_08.";
Symbol 5,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0@PP00PP0_0_0@PP00PP0_0_0!P!0_0_0@P!0_0_0@P.880_0_0@P.880_0_0_08!0_0_0@8!0_0_0@88dd0_0_0_088dd0_0_0_0dd880_0_0_0dd880_0_0_0dd8800880_0_0!dd8800880_0_0!d.00880_0_0!d.00880_0_0.d.00880_0_0!d.00880_0_0!8.0_0_0_08.";
Symbol 6,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0/PP00PP0_0_0@PP00PP0_0_0@P!0_0_0@P!0_0_0_0PP880_0_0_0PP880_0_0_08!0_0_0@8!0_0_0@dd880_0_0_0dd880_0_0_0dd880_0_0_0dd880_0_0_0d.880_0_0@d.880_0_0!d@0_0_0!d@0_0_0.8.0.8.0_0_008.0.8.";
Symbol 7,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_P.0_0_0_0P.0_0_0@P.88PP0_0_0!P.88PP0_0_0!PP8!0_0_0!PP8!0_0_0@88dd0_0_0_088dd0_0_0_088dd0_0_0_088dd0_0_0_0dd880_0_0_0dd880_0_0_0d.0_0_0_0d.0_0_0!88d@0_0_0.88d@0_0_0.880.8.0_0_0.880.8.";
Graphics 512,512,2
lems=50
flrs=5
skips=3
pt=0
Dim lemming(250,20)
Dim flr(250,20)
y=ScreenHeight()/(flrs+2)
for n=0 to flrs
flr(n,1)=jRand(64,ScreenWidth()-64)
flr(n,6)=Rnd(0.5,1.5)
flr(n,7)=Rnd(0,360)
flr(n,8)=Rnd(10,30)
flr(n,9)=Rnd(128,256)
flr(n,2)=(y*(n+1))-flr(n,9)
next
for d=0 to lems
lemming(d,1)=jRand(16,ScreenWidth()-16)
lemming(d,2)=0-jRand(16,ScreenHeight())
lemming(d,3)=0
lemming(d,4)=0
lemming(d,5)=h
lemming(d,6)=jRnd(0,8)
lemming(d,16)=1
next
Repeat
CLS 30,30,80
pt=((pt+1) mod skips)
SetFontSize 32
SetSize 1
for n=0 to flrs
flr(n,7)=(flr(n,7)+flr(n,6)) mod 360
ang=Sin(flr(n,7))*25
flr(n,11)=flr(n,1)+Sin(ang-flr(n,8))*flr(n,9);
flr(n,12)=flr(n,2)+Cos(ang-flr(n,8))*flr(n,9);
flr(n,13)=flr(n,1)+Sin(ang+flr(n,8))*flr(n,9);
flr(n,14)=flr(n,2)+Cos(ang+flr(n,8))*flr(n,9);
flr(n,15)=flr(n,1)+Sin(ang)*flr(n,9)*0.4;
flr(n,16)=flr(n,2)+Cos(ang)*flr(n,9)*0.4;
flr(n,5)=Neg(0.1);
if flr(n,11)<flr(n,13) and flr(n,12)<flr(n,14) then flr(n,5)=0.1;
if flr(n,11)>flr(n,13) and flr(n,12)>flr(n,14) then flr(n,5)=0.1
flr(n,17)=ang
SetThick 3:SetCol 255,128,0,1
Line(flr(n,11),flr(n,12),flr(n,13),flr(n,14))
SetCol 0,0,0,0.5
Oval(flr(n,1),flr(n,2),8,8,16)
SetThick 1:SetCol 150,150,150,0.3
Line(flr(n,15),flr(n,16),flr(n,11),flr(n,12))
Line(flr(n,15),flr(n,16),flr(n,13),flr(n,14))
Line(flr(n,1),flr(n,2),flr(n,15),flr(n,16))
next
for d=0 to lems
ResetDraw()
if pt==(d mod skips)
x1=lemming(d,1)
y1=lemming(d,2)
x2=lemming(d,1)
y2=lemming(d,2)+lemming(d,4)+7
for n=0 to flrs
if CollideLineToLine(flr(n,11),flr(n,12),flr(n,13),flr(n,14),x1,y1,x2,y2)
lemming(d,2)=LineCollidePointY-8
ang=flr(n,5)
lemming(d,3)=lemming(d,3)+ang
lemming(d,4)=0.5
lemming(d,5)=-flr(n,17)
endif
next
lemming(d,2)=lemming(d,2)+4+lemming(d,4)
lemming(d,4)=lemming(d,4)
lemming(d,4)=lemming(d,4)+0.5
if lemming(d,4)>6 then lemming(d,4)=6
if lemming(d,2)>ScreenHeight()+32
lemming(d,2)=-32
lemming(d,1)=jRand(16,ScreenWidth()-16);
lemming(d,3)=0
lemming(d,4)=0
endif
s=lemming(d,3)
lemming(d,1)=lemming(d,1)+s*4
if s>0 then lemming(d,16)=1
if s<0 then lemming(d,16)=0-1
lemming(d,3)=s*0.94
endif
x=lemming(d,1);y=lemming(d,2)
SetSize 0.5*lemming(d,16),0.5;SetRot lemming(d,5)*lemming(d,16)
lemming(d,6)=(lemming(d,6)+0.25) mod 8
DrawImg x,y-2,lemming(d,6)
next
Flip
Forever