This is a small collection of mostly game example source codes. These source codes are made available to help PlayBasic programmers kick start their game programming journey.
Looking for more source code / tutorials & media, then remember to visit the PlayBasic Resource board on our forums.
 Today we'll take a look a one approach for creation echo or motion blur styled effect using nothing more than some variable addition alpha blending.
PlayBasic Code:
; PROJECT : Echo or Motion Effect; AUTHOR Â : Kev Picone - http://PlayBasic.com; CREATED : 14/11/2021; EDITED Â : 14/11/2021; ---------------------------------------------------------------------// -------------------------------------------------------// ---------------------- MAIN LOOP ----------------------// -------------------------------------------------------type tobject
X#(10)
Y#(10)
SpeedX#
SpeedY#
Colour
endtypeDim Objects(35)as tobject
for lp=1togetarrayelements(Objects())
Objects(lp)=new tobject
x#=rnd(800)
y#=rnd(600)for poslp=0to10
Objects(lp).x#(poslp)= x#
Objects(lp).y#(poslp)= y#
next
Speed#=rndrange#(10,20)
Angle#=Rnd(360)
Objects(lp).speedx#=cos(Angle#)*Speed#
Objects(lp).speedy#=sin(Angle#)*Speed#
Objects(lp).Colour =rndrgb()next
Screen=Newfximage(GetScreenWidth(),GetScreenheight())// -------------------------------------------------------do// -------------------- MAIN LOOP ---------------------// -------------------------------------------------------for lp=1togetarrayelements(Objects())
x#=Objects(lp).x#(0)
y#=Objects(lp).y#(0)
x#+=Objects(lp).speedx#
y#+=Objects(lp).speedy#
// Â scroll old positions downfor oldpos=10to1step-1
Objects(lp).x#(oldpos)=Objects(lp).x#(oldpos-1)
Objects(lp).y#(oldpos)=Objects(lp).y#(oldpos-1)nextif x#<0then x#=0 : Objects(lp).speedx#*=-1if x#>800then x#=800 : Objects(lp).speedx#*=-1if y#<0then y#=0 : Objects(lp).speedy#*=-1if y#>600then y#=600 : Objects(lp).speedy#*=-1
Objects(lp).x#(0)=x#
Objects(lp).y#(0)=y#
nextrendertoimage Screen
cls0// render lockbuffer; set ink pen drawing mode to Alpha Addition / Alpha ADD inkmode1+64; step through the objects and the draw the oldest ones first; looping to the last down to first.for pass=10to0step-1
blendlevel#=cliprange#(pass/10.0,0,1)
BlendColour =255-(255*BlendLevel#)
BlendColour=Rgb(BlendColour,BlendColour,BlendColour)// Â Draw all the objects from this pass in one groupfor lp=1togetarrayelements(Objects())
x#=Objects(lp).x#(pass)
y#=Objects(lp).y#(pass)// Â Compute the objects colour with the fade level
ThisRGB =rgbAlphamult(Objects(lp).Colour, BlendColour)// draw it as a circlecirclec x#,y#,32,true,ThisRGB
nextnextunlockbuffer; set inkmode back to normalinkmode1rendertoscreendrawimage screen,0,0,falsesyncwait10loopspacekey()
PlayBasic LIVE - Overview of Object Echo / Motion Blur Example - (2021-11-16)
This is an older code snippet that was originally written by Crystal Noir, it creates a type of 3D particle explosion using animated 2d sprites. I've tweaking the code and fixed some logic errors and this was the end result.
This example recreates a popular demo effect known as meta balls/blobs. The scene is calculated by working out the amount of energy that each pixel receives from the surround 'blobs' or lights. The more lights the more work each pixel has to be do.
So if you did all the work (calc the distance etc) in the inner most loops, you’d get a pretty heavy per pixel calculation. Such a loop would run slowly even in assembly/machine code. So what we need to do is come up with some ways we can simplify the inner loop to get the cost per pixel down as much as possible.
This example creates a layered infinitely scrollable star field using shapes. The star field can move/wrap in all 8 directions, much like you'd see in Asteroids arcade style games.. Here we're using Shapes to batch render dots, rather than trying to brute force them individually
This little demo builds old school parallax effect with a bunch of trees, the effect is not the interesting part really. It's that rather than use images/sprites the tree images are converted into a font (CRF), so the rows of trees are drawn as strings..
Release Type:
The source code & tutorials found on this site are released as license ware for PlayBasic Users. No Person or Company may redistribute any file (tutorial / source code or media files) from this site, without explicit written permission.