Here is the original post...
---------------------------------------------------
Hello All, I have been working on a project called "Game Developer" for a while now. What you want to know more details? Ok..
Compiler Update 1 (Version 0.4.5)
Alright, I have updated the compiler to parse faster, and use similiar syntax. Also, certain functions have been fixed, and the compiler is slightly being rewritten. It will still do the same stuff, just in about a split second per-twenty lines
I have here, a list of all the commands in the language so far (There are actually more, but these are core commands, the language uses certain core commands at runtime to create functions within the program, and then execute those functions once the program is finished.)
>Standard Commands
if |The if command
else |If else command
endif |Endif to the if command
do |The declaration of a start of a loop
loop |The declaration of the end of a loop
repeat |The declaration of the start of a while loop
while |The declaration of the end of a while loop
wait |The wait command (Pauses program for n milliseconds...
waitkey |Waits for a key to be pressed...
num |Declares an integer
string |Declares a string
bool |Declares a boolean (true/false-1/0) value
ndim |Declares an array of type "integer#"
sdim |Declares an array of type "string$"
: |Sets a labeled point...
goto |Goes to the specified label...
gosub |Goes to a label, and expects to be returned...
return |Once in a label, if the corrosponding return is set, go back to the point of declaration...
function |Declares a function...
endfunction |Declares the end of a function...
cpp |Used to insert direct c++ code...
>ASCII Commands
loadfont |Allows you to load a font, must be done before using text...
setcursor |Positions the text "cursor" to a position on the screen...
setcolor |Sets the current text color (R,G,B style)...
print |Position text on the screen...
setfont |Sets the texts bitmap font...
setfontsize |Sets the size of the font...
>User Input Commands
hidemouse |Hides the mouse...
showmouse |Shows the mouse...
mouseclick |Checks if the mouse was clicked...
mousepositionx |Checks the mouses position x...
mousepositiony |Checks the mouses position y...
keypress |If key was just pressed...
keycheck |If the key is being pressed...
keyrelease |If the key was just released...
joystick |If any number button is being pressed on the joystick...
>File Handling Commands
; To be added
>Display Setting Commands
setrenderer |Sets the renderer required to run the game, this is usually OpenGL...
setdisplay |Sets the complete display mode, width, height, depth, fullscreen...
setvsync |Sets verticle syncing on or off (depending on the given value...
applydisplay |Applys the changes in the display...
>2D Commands
loadimage |Load an image for use as a texture, sprite, etc.
destroyimage |Remove an image from memory...
>Object Animation Commands
setobjectframeloop |Sets the frames loop of an object for the animation...
setobjectmd2animation |Sets the frame loop a simpler way for Quake 2 Models...
>Object Commands
loadobject |Loads an object into memory, and onto the screen...
positionobject |Positions an existing object onto the X, Y, Z coordinates of 3d space...
rotateobject |Rotate an object by the X, Y, and Z coordinates...
textureobject |Puts an image on the object (Textures it...)
scaleobject |Scale the object to a differant X, Y, Z size...
setobjectfx |Turns special effects on an object...
deleteobject |Removes an object out of memory, and off the screen...
showobject |Makes the object visible...
hideobject |Makes the object invisible...
>BSP Related Commands
loadziparchive |Loads a .zip, or .pk3 file into memory...
makebsp |Using the file name, loads a .bsp into memory, and on the screen...
destroybsp |Removes a .bsp file out of memory, and off the screen...
>Camera Related Commands
positioncamera |Positions a camera in 3d space...
rotatecamera |Rotates the camera in 3d space...
>Terrain Commands
createterrain |Creates a terrain from a heightmap, and a texture...
destroyterrain |Destroys the selected terrain...
createskybox |Automatically create a skybox from 6 textures...
>Light Commands
; To be added
>Sound and Music Commands
; To be added
>Other Commands
setwindowtitle |Sets the windows title text...
Game Developer is meant to be an "Easy to Use" Game Creation System. What features does it have right now? Here is a list for starters...
Compile Executable Files
Display Text to the Screen
Render in OpenGL, or System Software
Load .x, .3ds, .md2, .ms3d, and .obj Models
Load .bsp
Load a .zip or .pk3 archive
Position objects
Rotate objects
Scale objects
Make objects visible or hidden
Texture objects
Delete objects
Position a camera
Destroy a camera
Dynamic Objects
Easy Skybox function
Hide/Show Cursor
Set window title
Decide Windowed or fullscreen, in any Resolution and Depth
Use Horizontal syncing or Verticle syncing, your choice
Color the backdrop
Near-Finished key and mouse input
Bitmap fonts
Object Animation
Direct MD2 Animation frame templates for running, standing, etc
Choose between start, and end frames, easily...
And what's being worked on?
Billboarding
Sprites
Finished Key input
Particles
GLSL and HLSL Shader support
File writing and Reading
Any sound at all, sound is being worked on, desperately...
That's what is done and is being worked on, but I would like an opinion from the community, What would you like to see? What do you want to have in Game Developer? Your choice.
FAQs about Game Developer...
Q: Is there a language so that we may program our games with complete control?
A: Yes.
Q: What kind of language?
A: You can use BASIC, and C++
Q: What kind of BASIC, is it similiar to DarkBASIC or DBPro? And what of C++? Is it like Visual C++ or Normal C++?
A: This BASIC is similiar to DBPro, but uses
slightly differant semantics and syntax.
Q: Is there an editor for this "BASIC" and "C++" language?
A: Yes.
Q: Are there any screen shots for it?
A: Yes, in the included file.
Q: Why not just post them here?
A: My web server is updating, so i can post them there, then to this site.
Q: What about the games? Can we have screen shots of the games?
A: What games? I have not made a game yet that does more than tests commands and how they interact with each-other. Besides, it would not be fair to the engine to do this until it is ready.
Q: Alright, understood, is there anything else the community should know about this?
A: Yes, there is, Even though it uses software names "EasyEdit" (No relation to EasyFPS), that does not necessarily mean that it will be as "bad" as "The 3D Game Maker", see t3dgm was meant for kids, it even says so, this is meant for serious and professional Game Creators that want to make a store-quality game and be able to sell it in a few hours-days compared to months/years. It is designed to be as easy to use as "game maker"
http://www.gamemaker.nl but even more powerfull than DarkBASIC. Now then, in the screenshots, you will see the editor has the DBP Icon, the editor is the only thing to be made by DBP. Everything else, C++.
Here are some functions not mentioned...
- Games run faster than the same games made by DarkBASIC and Pro
- Games icons work fine
- DarkBASIC to GDBasic (The BASIC language for GD) converter
- GDBasic to DarkBASIC Converter
- Various other free converters for images and models included.
- GDBasic Interrpreter (This will be worked on after the initial
release of Game Developer for Development speed purposes)
- Extendanality: This can be extended, FAR more than DBP due to
the way it has been designed.
- Easier than darkbasic? Absolutely! This is going to be easier
to use than DarkBASIC, mainly because I view it necessary
sometimes to do certain things as long functions other than
short, even though you have the ability to do the short, and
insert direct C++ code.
- Use DLLs? Of course! You can insert straight C++ code, remember?
A function to do this in BASIC is soon to be created (after
necessary things have been created as well)
That's all I can remember right now, please post comments, and suggestion. Oh, and the GUI is open-source, meaning you can use how, where, and when want, modify it, change it, destroy it, etc. Enjoy.
Screenshots attatched, GUI is here:
function CreateToolBar(c1,c2)
length=screen width()
box 0,0,length,20,c1,c2,c1,c2
endfunction
function CreateMenu(menu_id,text$,c1,c2,h1,h2)
PosX=menu_id*80
box PosX,0,PosX+80,20,c1,c2,c1,c2
if len(text$)>9 then text$=left$(text$,9)
ink rgb(255,255,255),0
text PosX+2,2,text$
`menu$(menu_id)=text$
if mousex()>PosX : if mousey()>PosY : if mousex()<PosX+80 : if mousey()<PosY+20
box PosX,0,PosX+80,20,h1,h2,h1,h2
ink rgb(255,255,0),0
text PosX+2,2,text$
endif : endif : endif : endif
endfunction
function ShowSubMenu(menu_id,submenu_id,text$,c1,c2,h1,h2)
PosX=menu_id*80
PosY=submenu_id*20
PosY=PosY+20
`Check for the event...
if len(text$)>9 then text$=left$(text$,9)
box PosX,PosY,PosX+80,PosY+20,c1,c2,c1,c2
ink rgb(255,255,255),0
text PosX+2,PosY+1,text$
if mousex()>PosX : if mousex()<PosX+80 : if mousey()>PosY : if mousey()<PosY+20
box PosX,PosY,PosX+80,PosY+20,h1,h2,h1,h2
ink rgb(255,255,0),0
text PosX+2,PosY+1,text$
endif : endif : endif : endif
`submenu$(menu_id,submenu_id)=text$
endfunction
function IsMenuClicked(menu_id)
PosX=menu_id*80
res=0
if mouseclick()=1
if mousex()>PosX : if mousex()<PosX+80 : if mousey()>0 : if mousey()<20
res=1
endif : endif : endif : endif
endif
endfunction res
function IsSubMenuClicked(menu_id,submenu_id)
PosX=menu_id*80
PosY=submenu_id*20
res=0
if mouseclick()=1
if mousex()>PosX : if mousex()<PosX+80 : if mousey()>PosY+20 : if mousey()<PosY+40
res=1
endif : endif : endif : endif
endif
endfunction res
function MakeInfoBar(c1,c2)
Y=Screen height()-20
W=screen width()
H=screen height()
box 0,Y,W,H,c1,c2,c1,c2
endfunction
function WriteInfoBar(unit,text$,c)
Y=screen height()-20
H=screen height()
Unit=Unit*100
ink rgb(255,255,255),0
line Unit-2,Y,Unit-2,H
text Unit,Y+2,text$
endfunction
function ShowSideBar(Side,Width,C1,C2,T1,T2,Title$)
if Side<1 then Side=1
if Side>2 then Side=2
if Side=1 then X=0
if Side=2 then X=screen width()-Width
H=Screen height()
box X,20,X+Width,H-20,C1,C1,C2,C2
box X,20,X+Width,40,T1,T2,T1,T2
ink rgb(255,255,255),0
text X+2,22,Title$
endfunction
function ShowTab(Tab_ID,X,Layer,C1,C2,H1,H2,C3,Title$)
r=0
Unit=55
Position=55*Tab_ID
Position=Position+X
Y=Layer*20
box Position,Y,Position+55,Y+20,C1,C2,C1,C2
ink C3,0
line Position,Y,Position+55,Y
line Position+54,Y,Position+54,Y+19
ink rgb(255,255,255),0
text Position+2,Y+2,Title$
StartX=Position : StartY=Y
EndX=Position+55 : EndY=Y+20
if mousex()>StartX
if mousey()>StartY
if mousex()<EndX
if mousey()<EndY
box Position,Y,Position+55,Y+20,H1,H2,H1,H2
ink C3,0
line Position,Y,Position+55,Y
line Position+54,Y,Position+54,Y+19
ink rgb(255,255,0),0
text Position+2,Y+2,Title$
r=1
endif
endif
endif
endif
if mouseclick()=1
if mousex()>StartX
if mousey()>StartY
if mousex()<EndX
if mousey()<EndY
box Position,Y,Position+55,Y+20,H1,H2,H1,H2
ink C3,0
line Position,Y,Position+55,Y
line Position+54,Y,Position+54,Y+19
ink rgb(255,255,0),0
text Position+2,Y+2,Title$
r=2
endif
endif
endif
endif
endif
endfunction r
function ShowPointClickButton(X,Y,MainColor,LightEdge,DarkEdge)
PosX=X*20 : PosY=Y*20
SizeX=PosX+20 : SizeY=PosY+20
box PosX,PosY,SizeX,SizeY,MainColor,MainColor,MainColor,MainColor
ink LightEdge,0
line PosX,PosY,PosX,SizeY
line PosX,PosY,SizeX,PosY
ink DarkEdge,0
line SizeX,SizeY,SizeX,PosY
line SizeX,SizeY,PosX,SizeY
if mousex()>PosX
if mousey()>PosY
if mousex()<SizeX
if mousey()<SizeY
r=1
endif
endif
endif
endif
if mouseclick()=1
if mousex()>PosX
if mousey()>PosY
if mousex()<SizeX
if mousey()<SizeY
r=2
endif
endif
endif
endif
endif
endfunction r
update 1
Alright, it is much easier to alter things at the bottem, then at the top for this post. So, here are the updates:
- Sidebar Graphics updates
:Sidebar with the tabs and buttons had a graphical update. The
:sidebar images are now much better looking...
- Save File Update
:Files can now be saved, by tommorow (maybe by tonight if i
:continue working on the source) the files should be able to
:be loaded...
- Export .dba Update
:It is now possible to export the code to .dba! Yay! I don't
:think i will build an importer though...
- Scaling fixed
:Occaisonoly the message box input for the scaling would just
:jump to Y, or from X to z, but this has been fixed...
- Sidebar object clicking fixed
:You could click an object that was behind the sidebar, and it
:would count as if it wasnt behind there. This has been fixed.
- Extra tab added!
:Though you can see 3 tabs, only 1 of them really counted
:before, now there is a window to see the .gdb source code to
:your program for learning off of it later.
- Added tab error!
:Well, the tab that was added, doesnt really work so well, i'm
:not sure of what the problem is though. What is happening is
:that the text all appears on the same line, and the textbox
:is going much to far off screen. Oh well, not a big concern...
Something was decided for this update as well... I am going to buy BlueGUI for Game Developer to improve it's graphical functionality. This will fix a few bugs, and make it easier to work with. Also, if i find errors, i can just search for other peoples errors with blue. It's only $20, so i'm pretty sure i can afford it, what i'm afraid of is the download size... Wow, i hope it's not more than 10mb, my connection cancels out after about 3-5 hours on the internet, and it takes about 4-6 to download a 14mb file. But it only takes a minute to download a 1mb file. How does that one work???
Anyways, it has also been decided that i would like to sell this on tgc, so once it gets a little more finished, and if rich, lee, or mike (which ever one's make the decisions) decides to allow it, there might be a pre-order in the next month or two ready. Perhaps even sample downloads. But if they don't accept it, i would have been doing all this for nothing...
Another thing, if they dont accept it, but i find somewhere that does, i might have to hand pick about 4-5 people who are willing to agree to a contract and license for specific testing.
I will pick off of this forum, as i don't trust the entire web. But then again, who does? lol.
One other thing, this BASIC language is almost similiar to dbp, here is some example code...
;This is a comment, hurray for comments!
//This is also a comment! Again hurray for comments!
`This is yet again a comment, what's up with all the comments?
;We can only set the render once...
render=opengl
;We load the media
load object player,"media/graphics/player.x"
;We make a skybox
create sky
skyup="media/graphics/up.bmp"
skydn="media/graphics/dn.bmp"
skylf="media/graphics/lf.bmp"
skyrt="media/graphics/rt.bmp"
skyfr="media/graphics/frnt.bmp"
skybk="media/graphics/bk.bmp"
end sky
set font "media/graphics/bmpfont.bmp"
set cursor 2,2
ink 255,128,0
do
print "This is an example! Yay!"
if upkey==1
if Player(Frames)==(300,350)
else
set Player(Frames)=(300,350)
endif
endif
if downkey==1
if Player(Frames)==(250,300)
else
set Player(Frames)=(250,300)
endif
endif
if leftkey==1
if downkey==0
if upkey==0
Player(Position)=(Player(X)-1,Player(Y),Player(Z))
endif
endif
endif
if rightkey==1
if downkey==0
if upkey==0
Player(Position)=(Player(X)+1,Player(Y),Player(Z))
endif
endif
endif
loop
I think that's about right, that's the coding language, it is not meant to be an advantage for the user, rather the editor. It will most likely be downgraded for better, and faster parsing. And, with faster parsing, we have faster compile times as well!!
If you would like more detailed explanation of this code, i would be more than happy to let you know what everything does. But i will not say how, because i don't like the idea of some, person, coming along and stealing the way something works.
DOWNLOAD THE CURRENT DEMO VERSION HERE:
http://www.freewebs.com/geniesoftware/EasyEdit%20Demo%20%287z%29.7z
(You will need 7Zip... I'll post their site later...)
Update 2
Sorry, i forgot to mention the update. I'm not going to mention what had happened because Update 3 is out now....
Update 3
Yay, update 3 is out! And what does it have in store for you all? Well, to get started, the GUI looks better than ever (Still no Blue though), next the font has been changed (Not much), menu system names changed a little bit. An icon was made, various "write to menu" bugs fixed, an ini system is in the works! And (I'm pretty sure) much more! Go ahead, get that download! Enjoy it! Be the one whom tested a beta, go on, i know you want to! lol.
--------------------------------------------------------