3d Level Builder

Blitz3D Forums/Blitz3D Programming/3d Level Builder

Luke.H(Posted 2005) [#1]
Does any one know a good free 3d Level Builder.

Not one that makes meshes but one that makes code, so you can export the map code and use objects like doors as types.

I find if I want doors or pick-ups in my level I need to put them in by loading in the blitz as a type but in is Time consuming.


Techlord(Posted 2005) [#2]
Not one that makes meshes but one that makes code, so you can export the map code and use objects like doors as types.
I'm currently developing PersistentWorld3D an open source level builder. We could practically design it to do anything we want, but usually, a level builder generates a Level Information File (LIFE) that contains a special format used by the engine to load and create content (media and data).

PW3D will support Level Import and Export for various Blitz3D-made engines with a Scriptable Plugin System. In other words, you can code the LIFE Importer for your engine in Blitz, and script the associate LIFE Import/Export for the PW3D in BlitzScript3D.

PW3D will support a generic set of user-defined 'Objects' that can be visually represented in the level building process with an assigned mesh. So you can define an pickups, triggers, fields etc, and use a 3D shape to orientate them in the level.

It is not recommended to hard code your Level Information. I'm not exactly sure what you mean by "I find if I want doors or pick-ups in my level I need to put them in by loading in the blitz as a type but in is Time consuming."


jfk EO-11110(Posted 2005) [#3]
>>so you can export the map code and use objects like doors as types.<<

This is usually the part where Blitzbasic comes in. And it really isn't that hard. All you need to do is tagging door-objects somehow. If you build your Level with some Map Model Tool you could name the Door Meshes as "door". In Blitz you could then load the Map with LoadAnimMesh to be able to access the Meshes Children seperately. After making the Children pickable, you could do somethin like

p=0
if mousehit(1) then p=camerapick(camera, graphicswidth()/2, graphicsheight()/2)
if p<>0
pn$=entityname(p)
if pn$="door"
 ; initialize open door task
endif


picking up items would be evn simpler. right after loading the Map you would chekc all childrens names, if they are "ammo", "healthbox" etc. and store them in arrays or as types. In the game loop you could then simply check all ammos etc. if they are closeto the player:
for i=0 to ammo_count
 if ammo(i)<>0
  if entitydistance(player,ammo(i))<3.2
   freeentity ammo(i)
   ammo(i)=0
   player_ammo=player_ammo+50
   dummy_chn=playsound(sound_grabbing)
  endif
 endif
next