Ah, actually those clouds couldnt be simpler.
To use this, you add the include, call initclouds. then
updateclouds(camera) , the cloud cover will follow the
entity you use when you call updateclouds.. if you do not
pass an entity to the function, then the clouds will not
follow , and you can pass through them.
Here are the cloud texures I use. However it could use some better ones.




save them as PNG.
;add clouds
Global cloudpivot=CreatePivot()
Global cloudpivot2=CreatePivot()
Dim cloudtexture(4)
cloudtexture(1)=LoadTexture("skins\cloud.png",2)
cloudtexture(2)=LoadTexture("skins\cloud2.png",2)
cloudtexture(3)=LoadTexture("skins\cloud3.png",2)
cloudtexture(4)=LoadTexture("skins\cloud4.png",2)
Global cloudcount=100
Global cloudHeight=100
Global CloudRadius=700
Global cloudfaderange#=850
Global CloudSmallest#=50,CloudLargest#=120
PositionEntity cloudpivot,0,Cloudheight,0
PositionEntity cloudpivot2,0,cloudheight,0
Type cloud
Field ent
End Type
Function initclouds()
For I=1 To cloudcount
cloud.cloud=New cloud
tp=Rand(1,2)
If tp=1 Then
cloud\ent=CreateSprite(cloudpivot)
cn=Rand(1,5)
Else
cloud\ent=CreateSprite(cloudpivot2)
EndIf
SpriteViewMode cloud\ent,1
EntityTexture cloud\ent,cloudtexture(Rand(1,4))
EntityBlend cloud\ent,0
sc#=Rnd(cloudsmallest,cloudlargest)
ScaleSprite cloud\ent,sc,sc
cr=Rand(190,250)
EntityColor cloud\ent,cr,cr,cr
PositionEntity cloud\ent,Rand(-cloudradius*.5,cloudradius*.5),Rand(cloudheight-10,cloudheight+40),Rand(-cloudradius*.5,cloudradius*.5)
EntityAutoFade cloud\ENT,0,cloudfaderange#
Next
End Function
Function updateclouds(ent=0)
If ent<>0 Then
PositionEntity cloudpivot,EntityX(ent,1),cloudheight,EntityZ(ent,1)
PositionEntity cloudpivot2,EntityX(ent,1),cloudheight,EntityZ(ent,1)
EndIf
TurnEntity cloudPIVOT,0,.012,0
TurnEntity cloudPIVOT2,0,-.01,0
End Function
Function setstormy()
AmbientLight 150,150,225
For cloud.cloud=Each cloud
sc#=Rnd(10,70)
cr=Rand(100,200)
cg=Rand(100,200)
cb=Rand(200,255)
EntityColor cloud\ent,cr,cg,cb
Next
End Function
Function SetClear()
AmbientLight 255,255,255
For cloud.cloud=Each cloud
sc#=Rnd(50,130)
cr=Rand(200,250)
EntityColor cloud\ent,cr,cr,cr
Next
End Function
Function freeclouds()
For cl.cloud=Each cloud
FreeEntity cl\ent
Delete cl
Next
End Function