Linking .bb files

Blitz3D Forums/Blitz3D Programming/Linking .bb files

cash(Posted 2003) [#1]
I am creating a game which will have several different levels etc. Some features will be common to all levels and I can manage these using the include command and functions.

What I need to know is , is there a way to call a .bb file from within another.

Basically when one level is complete I want to call the second level and clear the world then start with a new one.
Otherwise I will end up with a huge unmanageable file while working on it.
I know I could probably call each once compiled as an .exe
but just wondered if there is another way around this.

Perhaps I am going about this the wrong way....any ideas...


darklordz(Posted 2003) [#2]
bb files just contain code... you can't call upon them just include them....

You could split the levels in functions in separate bb files and call the functions.


Ross C(Posted 2003) [#3]
Yeah, try and set up a piece of code that reads data statements and loads in objects, characters, etc. according to the data statements.

i.e.


Function load_level()
Read level_no
Read level_mesh
Read no_objects
For loop=1 To no_objects
   Read level_object(loop)
   Read level_objectx(loop)
   Read level_objecty(loop)
   Read level_objectz(loop)
Next
End Function

Data 1,"level_1.b3d",3
Data "barrel.b3d",10,0,20
Data "crate.b3d",-3,0,10
Data "desk.b3d",1,0,-6




cash(Posted 2003) [#4]
This sounds like a good way forward, I seem to be ending up with a lot of large one level games. This may be the answer.

Cheers


cash(Posted 2003) [#5]
Well I am still a bit stuck here..

I seem to be quite good at writing most types of games, FPS, Resident Evil Types etc etc...Trouble is I always end up with one level and struggle to effectively link multiple levels.

The DATA idea sounded good but I cannot seem to make it work for me.

Because I use a lot of functions I need entities to be global, and I cannot put a global object into a funtion. If I could it would make things a lot easier.

Anyone with any ideas either how to make objects global, without them being global if you know what I mean...

Or other wasy of linking a lot of levels without becoming a huge mass of dodgy code....


Doggie(Posted 2003) [#6]
You'll probably just have to load each level seperately.
I went through something similar to this
while coding my level editor. I originally
wanted to make the levels include files but
include files get included immediately.
Dynamic banks spring to mind. I don't know how
to do them but there's been quite a bit of discussion
about them. Might even be in the code archives.
Hope this helps...

Doggie


WolRon(Posted 2003) [#7]
Anyone with any ideas either how to make objects global, without them being global if you know what I mean...
Arrays are global by default so if you load all of your objects into arrays like Ross' code above, they will BE global.
numObjects = 100
Dim level_object(numObjects)
Dim level_objectx(numObjects)
Dim level_objecty(numObjects)
Dim level_objectz(numObjects)

If you really want local variables you can pass them to your functions when your functions are called.
Object1 = ; a new object
MyFunction(Object1)

Function MyFunction(anObjectThatWillBeManipulatedInThisFunction)
;Do something
End Function