Plan B, if you have the right 2D graphics software, you can use png textures with gradiant transparency instead of ghosting.
Plan C, use Joseph Thomson's "Crappy" light saber code. Which is actually some pretty neat stuff.
`Crappy lightsaber demonstration 2.0
`By Joseph Thomson
`13/10/03
`Setup
sync on
sync rate 60
autocam off
hide mouse
`Create a bitmap for the haze effect
create bitmap 1,50,50
set current bitmap 1
`Draw haze onto bitmap
ink rgb(80,255,255),0
for x=1 to 1000
a=rnd(360)
rad=rnd(15)
dot 25+sin(a)*rad,25+cos(a)*rad
next x
`Blur the bitmap to get a smooth texture and get the image
blur bitmap 1,8
blur bitmap 1,8
get image 1,0,0,50,50
delete bitmap 1
`Set the number of planes and dim arrays
numPlanes=20
numBigPlanes=10
dim particleFlux#(numPlanes+numBigPlanes)
dim particleMove#(numPlanes+numBigPlanes)
dim particleSize#(numPlanes+numBigPlanes)
`Make the small particles
for x=1 to numPlanes
`Make and texture
make object plain x,10,10
texture object x,1
`Rotate randomly
zrotate object x,rnd(180)
fix object pivot x
`Ghost it and set it not sensitive to ambient light and is transparent
ghost object on x
set object transparency x,1
set object ambient x,0
fade object x,40
`Set variables
particleFlux#(x)=rnd(360)
particleMove#(x)=x*20.0/numPlanes
particleSize#(x)=80
next x
`Make the bigger particles
for x=numPlanes+1 to numPlanes+numBigPlanes
`Make and texture
make object plain x,10,10
texture object x,1
`Rotate randomly
zrotate object x,rnd(180)
fix object pivot x
`Ghost it and set it not sensitive to ambient light and is transparent
ghost object on x
set object transparency x,1
set object ambient x,0
fade object x,50
`Set variables
particleFlux#(x)=rnd(360)
particleMove#(x)=(x-numPlanes)*20.0/numBigPlanes
particleSize#(x)=150
next x
`Make sword
make object box 1000,1,6,0.5
color object 1000,rgb(0,0,0)
make object cube 1001,1
make mesh from object 1,1001
delete object 1001
add limb 1000,1,1
offset limb 1000,1,0,12,0
hide limb 1000,1
make object cone 1001,20
scale object 1001,10,100,5
set object light 1001,0
glue object to limb 1001,1000,1
rotate object 1000,90,0,0
fix object pivot 1000
move camera -50
point camera 0,0,0
do
`Control saber rotation
saberAY#=wrapvalue(saberAY#+mousemovex())
saberAX#=wrapvalue(saberAX#+mousemovey())
`Control particles
for x=1 to numPlanes+numBigPlanes
`Position particle, rotate it, move it and point it at camera
position object x,0,0,0
rotate object x,0,0,0
turn object right x,saberAY#
pitch object up x,saberAX#
yMove#=particleMove#(x)
move object x,yMove#+1
point object x,0,0,50
move object x,-2
`Change the fluxuation value
particleFlux#(x)=wrapvalue(particleFlux#(x)+3)
`Scale the particle depending on flux value and position
scale object x,sin(particleFlux#(x))*15+particleSize#(x),sin(particleFlux#(x))*15+particleSize#(x),100
next x
`Rotate sword
rotate object 1000,0,0,0
turn object right 1000,saberAY#
pitch object up 1000,saberAX#
sync
loop
Keywords in case someone looks for this code in the future:
Star Wars, lightsaber, lightsabre, light saber, light sabre