CUBE MAN- Created in DBPro. Uses NO EXTERNAL MEDIA. EXE included for those with DBC.
Version History
v1.0- the game was made!
v1.1- Changed Scoring System--Current Version
INFO
Heh I decided to make a no-media game called Cube Man! This game uses no media, however it does create a file to store your hi-score data in, so you may want to put it someplace where you don't mind a "HiScore.cbm" file appearing

(Although the hi-score system is a bit messed up... so I guess you can just post your scores here.)
OBJECTIVE
Get a hi-score by killing off the "Dark Cubes" using your shield.
GAME INFO
Anyway, the objective is to kill the enemies or "Dark Cubes" that come at you using your shield. If the enemies hit you when your shield is up, a blue circle will appear around you, to signal that you killed them. If they hit you when your shield is down, a red circle will appear, to signal that they hit you. You gain points for killing enemies, and lose points for getting hit by them. Your final score is presented to you at the end of the game.
WARNING: Your shield is helpful, but it drains energy. Energy recharges automatically, but you need energy for your shield to work.
Your energy bar is at the top of the screen. The Time bar is at the bottom.
MORE GAME INFO
At the start of the game you will be presented with a menu asking how many minutes you wish to play for. Your score will adjust to the amount of minutes that you play for. It's as balanced as I can make it for now. Use the mouse to select a time at this menu.
EVEN MORE GAME INFO
You can roam anywhere in the evironment. It is randomly generated each time you play, so it's different each time. The enemies spawn at random spots. This game has a large "random" element to it. The water is not bad, but if you go in it you will find out what happens

Don't worry, the game won't end.
And now for a few screens:
You can download the EXE at this link:
Cube Man 1.1
You can also use the red download tab if you want to.[b]
Otherwise, you can just copy and paste the code into a new project 
[b]CONTROLS:
Arrow Keys- Move around
Spacebar- Jump
Enter- Press and hold to Deploy Shield
P- Pause
Here is the messy code:
sync on
sync rate 60
autocam off
set camera range 1,50000
set text font "Verdana"
set text size 16
repeat
set cursor 0,0
ink rgb(55,0,0),0
box 0,0,450,400
ink rgb(0,255,0),0
Print "CONTROLS:"
ink rgb(255,255,255),0
print "ARROW KEYS- Move around"
print "SPACEBAR- Jump"
print "ENTER- Press and hold to deploy shield"
print " "
print "Press SPACE to continue"
sync
until spacekey()
RESET:
color backdrop 0
set text size 16
cls
NumItems=5
Dim Menu$(NumItems)
Dim SCORES$(10,2)
if file exist("HiScores.cbm") then load array "HiScores.cbm",SCORES$(10)
HiScore=int(val(SCORES$(1,1)))
HiName$=SCORES$(1,2)
Menu$(1)="1 Minute"
Menu$(2)="2 Minutes"
Menu$(3)="3 Minutes"
Menu$(4)="4 Minutes"
Menu$(5)="5 Minutes"
for w = 1 to NumItems
if Text Width(Menu$(w))>MaxWidth then MaxWidth=Text Width(Menu$(w))
next w
repeat
CHOOSE=0
ink rgb(0,0,255),0
box 0,0,MaxWidth+20,NumItems*20+20
for i = 1 to NumITems
ink rgb(255,255,255),0
Center Text Screen width()/2,0,"PLEASE SELECT A PLAY TIME AMOUNT."
if mousex()>0 and Mousex()<Text Width(Menu$(i)) and Mousey()>i*20 and mousey()<i*20+Text Height(Menu$(i)) then ink rgb(255,0,0),0 : CHOOSE=i
text 0,i*20,Menu$(i)
next i
sync
until CHOOSE>0 and mouseclick()=1
TIME=60*Choose
type enemy
grav as float
speed as float
TIME as integer
endtype
gosub Create_Player
position camera 0,0,-100
randomize Timer()
MapSize=10000
Make Matrix 1,MapSize,MapSize,60,60
RANNUM=0
if RANNUM=0
Grass=rgb(rnd(100),55+rnd(200),rnd(100))
Path=rgb(55+rnd(200),55+rnd(200),55+rnd(200))
endif
create bitmap 1,256,256
ink Grass,0
box 0,0,128,128
for d = 1 to 5000
ink Grass+rgbg(Grass),0
dot rnd(128),rnd(128)
next d
ink Path,0
box 129,129,256,256
for d = 1 to 5000
ink Path+200,0
dot 129+rnd(128),129+rnd(128)
next d
get image 1,0,0,256,256
delete bitmap 1
create bitmap 1,128,128
ink rgb(0,0,155),0
box 0,0,128,128
for d = 1 to 5000
ink rgb(0,0,155+rnd(100)),0
dot rnd(128),rnd(128)
next d
get image 2,0,0,128,128
delete bitmap 1
create bitmap 1,128,128
ink rgb(0,0,155),0
box 0,0,128,128
for d = 1 to 5000
ink rgb(0,0,155+rnd(100)),0
dot rnd(128),rnd(128)
next d
get image 7,0,0,128,128
delete bitmap 1
create bitmap 1,128,128
ink rgb(155,155,255),0
box 0,0,128,128
for d = 1 to 1000
ink rgb(255,255,255),0
dot rnd(128),rnd(128)
next d
blur bitmap 1,6
get image 3,0,0,128,128
delete bitmap 1
create bitmap 1,128,128
ink 0,0
box 0,0,128,128
for d = 1 to 1000
ink rgb(255,0,0),0
dot rnd(128),rnd(128)
next d
get image 5,0,0,128,128
delete bitmap 1
create bitmap 1,10,10
ink rgb(155,155,255),0
circle_fill1(5,5,5)
ink 0,0
circle_fill1(5,5,4)
ink rgb(0,0,255),0
circle_fill1(5,5,3)
get image 4,0,0,10,10,1
delete bitmap 1
create bitmap 1,10,10
ink rgb(255,0,0),0
circle_fill1(5,5,5)
ink 0,0
circle_fill1(5,5,4)
ink rgb(155,0,0),0
circle_fill1(5,5,3)
get image 6,0,0,10,10,1
delete bitmap 1
Make Object plain 2,10000,10000
xrotate object 2,90
fix object pivot 2
position object 2,5000,-50,5000
set object ambient 2,0
texture object 2,2
set object texture 2,1,3
ghost object on 2
scale object texture 2,5,5
Make Object plain 3,10000,10000
xrotate object 3,90
fix object pivot 3
position object 3,5000,-53,5000
set object ambient 3,0
texture object 3,2
set object texture 3,1,3
ghost object on 3
scale object texture 3,5,5
Make object plain 4,1000,1000
lock object on 4
position object 4,0,0,50
texture object 4,2
set object ambient 4,0
ghost object on 4
set object collision off 4
Make object sphere 5,-50000
texture object 5,3
scale object texture 5,5,5
for o = 2 to 5 : set object fog o,0 : set object ambient o,0 : next o
Make object box 6,30,25,30
Make object box 7,30,25,30
texture object 6,7
texture object 7,7
ghost object on 6
ghost object on 7
glue object to limb 6,1,2,2
glue object to limb 7,1,3,2
set object ambient 6,0
set object ambient 7,0
Make object plain 8,10,10
texture object 8,4
xrotate object 8,90 : fix object pivot 8
set object transparency 8,1
ghost object on 8
set object ambient 8,0
set object fog 8,0
Make object plain 100,30,30
set object transparency 100,1
`ghost object on 100
set object ambient 100,0
set object fog 100,0
MaxE=45
for e = 10 to MaxE
clone object e,1
texture object e,5
position object e,rnd(10000),0,rnd(10000)
Make object cylinder e+1000,50
scale object e+1000,100,5000,100
ghost object on e+1000
texture object e+1000,6
set object collision off e+1000
scale object texture e+1000,10,100
ghost object on e+1000
set object ambient e+1000,0
set object fog e+1000,0
set object transparency e+1000,1
next e
DIM E(MaxE) as Enemy
prepare matrix texture 1,1,2,2
fill matrix 1,0,1
for x = 1 to 60
for y = 1 to 60
set matrix height 1,x,y,(-300)+rnd(400)
next x
next y
x=2+rnd(18)
position object 1,(MapSize/60)*x+(MapSize/60)/2,20,(MapSize/60)*1+(MapSize/60)/2
for n = 1 to 59
if n>1
if Get MAtrix Height(1,x,n-1)<>0 or Get MAtrix Height(1,x,n)<>0 or Get MAtrix Height(1,x+1,n)<>0 or Get MAtrix Height(1,x+1,n-1)<>0
set matrix tile 1,x,n-1,4 : set matrix height 1,x,n-1,0
endif
endif
set matrix tile 1,x,n,4
set matrix height 1,x,n,0
set matrix height 1,x+1,n,0
set matrix height 1,x,n+1,0
set matrix height 1,x+1,n+1,0
x=x+-1+rnd(2)
if x<1 then x=1
if x>59 then x=59
next n
x=22+rnd(18)
for n = 1 to 59
if n>1
if Get MAtrix Height(1,x,n-1)<>0 or Get MAtrix Height(1,x,n)<>0 or Get MAtrix Height(1,x+1,n)<>0 or Get MAtrix Height(1,x+1,n-1)<>0
set matrix tile 1,x,n-1,4 : set matrix height 1,x,n-1,0
endif
endif
set matrix tile 1,x,n,4
set matrix height 1,x,n,0
set matrix height 1,x+1,n,0
set matrix height 1,x,n+1,0
set matrix height 1,x+1,n+1,0
x=x+-1+rnd(2)
if x<1 then x=1
if x>59 then x=59
next n
x=41+rnd(18)
for n = 1 to 59
if n>1
if Get MAtrix Height(1,x,n-1)<>0 or Get MAtrix Height(1,x,n)<>0 or Get MAtrix Height(1,x+1,n)<>0 or Get MAtrix Height(1,x+1,n-1)<>0
set matrix tile 1,x,n-1,4 : set matrix height 1,x,n-1,0
endif
endif
set matrix tile 1,x,n,4
set matrix height 1,x,n,0
set matrix height 1,x+1,n,0
set matrix height 1,x,n+1,0
set matrix height 1,x+1,n+1,0
x=x+-1+rnd(2)
if x<1 then x=1
if x>59 then x=59
next n
for h = 0 to 60
set matrix height 1,0,h,1000
set matrix height 1,60,h,1000
set matrix height 1,h,0,1000
set matrix height 1,h,60,1000
for z = 1 to 59
set matrix tile 1,0,z,1
set matrix tile 1,59,z,1
set matrix tile 1,z,0,1
set matrix tile 1,z,59,1
next z
next h
update matrix 1
type 3Di
x as integer
y as integer
z as integer
endtype
Dim WalkLimb(6,10) as 3Di
WalkLimb(5,1).x=0
WalkLimb(5,2).x=45
WalkLimb(5,3).x=0
WalkLimb(5,4).x=-45
WalkLimb(5,5).x=999
WalkLimb(6,1).x=0
WalkLimb(6,2).x=-45
WalkLimb(6,3).x=0
WalkLimb(6,4).x=45
WalkLimb(6,5).x=999
STAGE=1
ANIM=1
MSPEED as float
MSPEED=1
OBPADVAL as float
OBPadVal=MapSize/55
LSPEED=30
RSV=2000
Energy as float
MaxEnergy=600
Energy=MaxEnergy
STIME=Timer()/1000
OTime=Time
Score=0
NumKilled=0
NumHit=0
POINTVALUE=580-((OTime/60)*80)
NumHit=0
NumKilled=0
BLAH=5
OBLAH=0
BLAH$=""
set text size 72
repeat
ink rgb(255,155,0),0
cls
if Timer()/1000>OBLAH then OBLAH=Timer()/1000 : BLAH=BLAH-1
if BLAH=3 then Blah$="READY"
if BLAH=2 then Blah$="SET"
if BLAH=1 then Blah$="GO!"
center text Screen width()/2,screen height()/2,Blah$
sync
until Blah<0
set text size 16
do
if inkey$()="p"
set text size 48
ink rgb(55,55,55),0
repeat
center text Screen width()/2,Screen height()/2,"-=-=-PAUSED-=-="
sync
until returnkey()
set text size 16
wait 200
endif
ink rgb(0,55,0),0
text 0,30,"ENEMIES KILLED: "+str$(NumKilled)
ink rgb(55,0,0),0
text 0,60,"ENEMIES THAT HIT YOU: "+str$(NumHit)
if Timer()/1000>OLDTIME then OLDTIME=Timer()/1000 : dec TIME
if TIME<0 then GOTO Finish_Game
ink rgb(155,155,155),0
box 0,screen height()-20,OTime*3,Screen height()
ink rgb(0,0,255),0
box 0,screen height()-20,Time*3,Screen height(),rgb(55,55,55),rgb(55,55,55),rgb(0,0,255),rgb(0,0,255)
ink rgb(255,255,255),0
Text 0,screen height()-20,"TIME LEFT: "+str$(TIME)+" SECONDS."
for s = 6 to 7
if returnkey() and Energy>0 and WaitUntil=0 then Energy=Energy-2 : Show Object s : set object collision on s : else : hide object s : set object collision off s
if Energy=0 then WaitUntil=1
if Energy>60 then WaitUntil=0
inc Energy,0.5
next s
if Energy>MaxEnergy then Energy=MaxEnergy
ink rgb(155,155,155),0
Box 0,0,Maxenergy,20
if WaitUntil=0 then ink rgb(0,255,0),0 else Ink RGB(255,0,0),0
Box 0,0,Energy,20
ink rgb(255,255,255),0
Text 0,0,"ENERGY LEFT: "+str$(int(Energy))+" ENERGY"
RSV=RSV+50
if RSV>1000 then hide object 8 else show object 8
Scale object 8,RSV,RSV,RSV
position object 8,Object position x(1),-49,object position z(1)
if Object position y(1)-Object size y(1)/2<-50 and Object position y(1)+Object size y(1)/2>-50
if IDW=0
IDW=1 : RSV=0
endif
else
IDW=0
endif
for s = 6 to 7
rotate object s,Object angle x(s)-LSPEED,Object angle y(s),Object angle z(s)
next s
scroll object texture 4,0.005,0.005
OnFloor=0
if ANIM=1
if WalkLimb(5,Stage).x>Limb angle x(1,5) then rotate limb 1,5,Limb Angle x(1,5)+15,0,0
if WalkLimb(5,Stage).x<Limb angle x(1,5) then rotate limb 1,5,Limb Angle x(1,5)-15,0,0
if WalkLimb(6,Stage).x>Limb angle x(1,6) then rotate limb 1,6,Limb Angle x(1,6)+15,0,0
if WalkLimb(6,Stage).x<Limb angle x(1,6) then rotate limb 1,6,Limb Angle x(1,6)-15,0,0
If Limb Angle x(1,5)>WalkLimb(5,Stage).x-1 and Limb Angle x(1,5)<WalkLimb(5,Stage).x+1 then Stage=Stage+1
if WalkLimb(5,Stage).x=999 then Stage=2
else
rotate limb 1,5,0,0,0
rotate limb 1,6,0,0,0
endif
scroll object texture 2,0.0002,0.0002
scroll object texture 3,-0.0002,-0.0002
ANIM=0
x#=object position x(1)
y#=object position y(1)
z#=object position z(1)
ay#=object angle y(1)
Grav#=Grav#-MSPEED/20
y#=y#+Grav#
for e = 10 to MaxE
ex#=object position x(e)
ey#=object position y(e)
ez#=object position z(e)
eay#=object angle y(e)
E(e).grav=E(e).grav-0.05
ey#=ey#+E(e).grav
if ey#<get ground height(1,ex#,ez#)+Object size y(1,1)/2 then ey#=get ground height(1,ex#,ez#)+OBject size y(1,1)/2 : E(e).grav=abs(E(e).grav*0.50)
if E(e).grav>0 and E(e).grav<0.25 then E(e).grav=0.0
if E(e).grav<>0 then E(e).Speed=E(e).Speed-0.5
if E(e).speed<2 then E(e).speed=2
position object e,ex#,ey#,ez#
if E(e).grav=0.0 then point object e,x#,ey#,z#
move object e,curvevalue(4,E(e).speed,5)
if Object Collision(e,1)=1 and Object visible(6)=0
E(e).Time=100
Position object e,rnd(10000),rnd(10000),rnd(10000)
NumHit=NumHit+1
d1t=10
endif
if Object Collision(e,1)=1 and Object visible(6)=1
E(e).Time=100
Position object e,rnd(10000),rnd(10000),rnd(10000)
NumKilled=NumKilled+1
d2t=10
endif
E(e).TIME=E(e).TIME-1
if E(e).TIME>0 then show object e+1000 else hide object e+1000
position object e+1000,OBject position x(e),OBject position y(e),object position z(e)
next e
dec d1t
dec d2t
if d1t>0 or d2t>0 then show object 100 : else : hide object 100
if d2t>0 then texture object 100,4
if d1t>0 then texture object 100,6
set object to camera orientation 100
position object 100,x#,y#,z#
rem Let's handle the X axis:
if x#>MApSize-OBPadVal then x#=MapSize-OBPADVAL
if x#<0+OBPadVal then x#=0+OBPadVal
rem Now, let's handle the Z axis!
if z#>MapSize-OBPadVal then z#=MapSize-OBPADVAL
if z#<0+OBPadVal then z#=0+OBPadVal
if y#<get ground height(1,x#,z#)+Object size y(1,1)/2 then y#=get ground height(1,x#,z#)+OBject size y(1,1)/2 : Grav#=abs(Grav#*0.50) : OnFloor=1
position object 1,x#,y#,z#
if upkey() then move object 1,MSPEED*3 : ANIM=1
if downkey() then move object 1,-1*MSPEED*3 : ANIM=1
if leftkey() then yrotate object 1,ay#-1*MSPEED : ANIM=1
if rightkey() then yrotate object 1,ay#+1*MSPEED : ANIM=1
if spacekey() and OnFLoor=1 then Grav#=2.0
x#=object position x(1)
y#=object position y(1)
z#=object position z(1)
ay#=object angle y(1)
camx#=newxvalue(x#,ay#-180,140)
camz#=newzvalue(z#,ay#-180,140)
position camera curvevalue(camx#,camera position x(),10),y#+100,curvevalue(camz#,camera position z(),10)
if Camera position y()<get ground height(1,Camera position x(),camera position z())+10 then position camera camera position x(),get ground height(1,Camera position x(),camera position z())+10,Camera position z()
if Camera position y()<-50 then show object 4 : else : hide object 4
if OBJECT POSITION Y(1)<-50 then MSPEED=0.5 else MSPEED=1
point camera x#,y#+50,z#
sync
loop
Create_Player:
make object cube 2,7
Make object box 3,9,1,1
position object 3,7.5,0,0
make object box 4,9,1,1
position object 4,-7.5,0,0
make object cube 5,5
position object 5,0,7.5,0
make object box 6,1,10,1
position object 6,-2.5,-7.5,0
make object box 7,1,10,1
position object 7,2.5,-7.5,0
Make object sphere 1,0.0001
position object 1,0,0,0
Limb=1
for m = 2 to 7
Make mesh from object m,m
add limb 1,Limb,m
offset limb 1,Limb,Object position x(m),Object Position y(m),Object position z(m)
delete object m
delete mesh m
inc Limb
next m
color limb 1,1,rgb(255,0,0)
color limb 1,2,rgb(0,255,0)
color limb 1,3,rgb(0,255,0)
color limb 1,4,rgb(0,0,255)
color limb 1,5,rgb(255,155,0)
color limb 1,6,rgb(255,155,0)
rotate limb 1,2,0,0,135
rotate limb 1,3,0,0,wrapvalue(-135)
return
end
function Circle_Fill1(x,y,Radius)
for x1=0 to Radius
y1=sqrt(Radius^2-x1^2)
box x-x1,y-y1,x+x1,y+y1
next x1
endfunction
Finish_Game:
FinalCalc=0
Score=0
set text size 32
ink rgb(55,55,55),0
sync : center text Screen width()/2,Screen height()/2 ,"TIME'S UP! GAME OVER!" : sync
wait 3000
repeat
cls
ink rgb(0,255,0),0
center text Screen width()/2,0,"CALCULATING SCORE..."
ink rgb(155,255,155),0
Text 0,100,"ENEMIES KILLED:"+Str$(NumKilled,0)
ink rgb(255,155,155),0
Text 0,150,"ENEMIES WHO HIT YOU:"+Str$(NumHit,0)
ink rgb(155,155,255),0
Text 0,250,"TOTAL SCORE:"+Str$(Score)
ink rgb(155,155,155),0
Text 0,300,"CURRENT HI-SCORE: "+STR$(HiScore)+" SET BY "+HiName$
ink rgb(255,255,0),0
if Score>HiScore then Text 0,350,"NEW HI-SCORE!!!"
ENTERNAME=1
Score=(POINTVALUE*NumKilled)-((POINTVALUE/3)*NumHit)
if SCORE<=0 then SCORE=1
FinalCalc=1
ink rgb(255,255,255),0
if FinalCalc=1 then Text 0,Screen height()-48,"PRESS SPACE TO CONTINUE"
sync
until Spacekey() and FinalCalc=1
wait 200
set text size 20
cls
clear Entry Buffer
repeat
if Keystate(14)=0
Name$=Name$+Entry$()
else
if Entry$()<>"" then Name$=Left$(Name$,Len(Name$)-1) : wait 100
endif
clear entry Buffer
Center Text screen width()/2,screen height()/2,"ENTER YOUR NAME (ENTER TO CONFIRM): "+Name$
sync
until returnkey()
if LEn(Name$)>20 then Name$=Left$(Name$,20)
if LEn(Name$)=0 then Name$="Player"
if file exist("HiScores.cbm")=0
for x = 1 to 10
AddOn=10-rnd(10)
AddName$="-_- "+str$(x)
INSERTSCORE(AddOn,AddName$)
next x
endif
INSERTSCORE(Score,Name$)
Save Array "HiScores.cbm",SCORES$(10)
repeat
cls
Text 0,0,"HIGH SCORE LIST"
for i = 1 to 10
Text 0,i*20,SCORES$(i,2)+" "+SCORES$(i,1)
next i
center text Screen width()/2,Screen height()-9*20,"PRESS SPACE TO PLAY AGAIN. PRESS ESCAPE TO QUIT."
sync
until spacekey()
DeleteMedia()
goto RESET
end
function InsertScore(SCORE,NAME$)
if SCORE<=0 then SCORE=1
for a = 10 to 1 step -1
if Score>=VAL(SCORES$(a,1))
ScoreArea=a
endif
next a
a=ScoreArea
for b = 9 to a step -1
SCORES$(b+1,1)=Scores$(b,1)
SCORES$(b+1,2)=Scores$(b,2)
next b
SCORES$(a,1)=str$(Score)
Scores$(a,2)=Name$
endfunction
function Write()
Msg$ as string
if Keystate(14)=0
Msg$=Msg$+Entry$()
else
if Entry$()<>"" then Msg$=Left$(Msg$,Len(Msg$)-1)
endif
clear entry Buffer
endfunction Msg$
FUNCTION DeleteMedia()
for o = 1 to 10000
if object exist(o) then delete object o
if matrix exist(o) then delete matrix o
next o
endfunction
Comments are welcome