Bmax or B3D?

BlitzMax Forums/BlitzMax Beginners Area/Bmax or B3D?

Sph!nx(Posted 2009) [#1]
Well, Thanks to the great help I received from these boards, I'm getting better and better at Blitz3D.

Now, of course I browsed the site and forum and found a lot of info that Bmax is more advanced, right? Now I'm wondering if Bmax is just as useful for 3D games or should I stick with B3D? Is the syntax a lot like B3D or has it some major differences that I should consider?

I'd like some user experiences with both packages so I know if I should also buy Bmax! Please respond!


Thanks a lot! :ŹD


Nate the Great(Posted 2009) [#2]
I started out with b3d and moved to blitz max. I taught myself blitz max over about a months time by trial and error with a few online tutorials I could find and the quick help button. It was certainly the fastest I have ever learned a language, but knowing b3d syntax helped. The major differences are the oo programming, ie, methods, reflection, functions in types, lists, threads, and some things like pixmaps and open gl support that allow it to be both flexible and cross-platform. It also has some nice free 3d engines that offer b3d like syntax for bmax like minib3d, although I dont use any at the moment.


explosive(Posted 2009) [#3]
Hi,

I used B3D in the past but moved to MacOS. So for me the miniB3D module, which is free, is the best choice.

I think when you feel quite confortable in coding BlitzMax is the better. At the beginning the syntax seems to be more difficult (which it actually is) but when you once used to it you can write much more efficient code.

Personally, I never want to go back to B3D.

Simon


_Skully(Posted 2009) [#4]
Hands down BlitzMax has proven to be the better choice for me. With Max3D in dev and minib3d already available its almost a no-brainer... Consider too that there is the leadworks engine which adds physics, scripting, shadows etc etc...


slenkar(Posted 2009) [#5]
Blitzmax is a much better language, B3D only has one list per type!
BLitzmax can have lists anywhere, which makes it a lot easier to organize your game.
If you want to do something as simple as creating an inventory you have to start using workarounds.
Also if there are 5000 people each holding 2 items each, in B3D you would have to cycle through 10,000 items to find the right one unless you used an array in a type which isnt as good as a list.


FlameDuck(Posted 2009) [#6]
Now, of course I browsed the site and forum and found a lot of info that Bmax is more advanced, right?
Right.

Now I'm wondering if Bmax is just as useful for 3D games or should I stick with B3D?
It depends on the complexity of the game you want to write. Blitz3D is to BlitzMAX what what WIMP is to a CLI. It makes simple tasks easier, and complex tasks impossible. So provided your game game be broken down to a series of non-overlapping simple tasks, Blitz3D is just fine. Otherwise you have to go with something else.

Is the syntax a lot like B3D or has it some major differences that I should consider?
The syntax is practically identical. The main difference is the paradigm shift from procedural to object oriented. If you're an accomplished procedural programmer, this transition might be a hurdle.


xlsior(Posted 2009) [#7]
The main difference is the paradigm shift from procedural to object oriented. If you're an accomplished procedural programmer, this transition might be a hurdle.


To an extent -- in order to get the most out of BlitzMax, you can't really get around the object oriented stuff... but there's nothing stopping you from writing procedural programs either, you just won't be able to take advantage of all the improvements that way.


Sph!nx(Posted 2009) [#8]
Thanks everybody!

So, if I all understand it right, B3D is a better engine for the simpler (3D) games but Bmax is more advanced. I always though Bmax was not originally meant for 3D games, but you can build them with it by using extensions like leadworks, right?

So, my idea is to understand B3D a little more, do my first project with it and then later on buy Bmax. It will go in my toolkit eventually! :D


xlsior(Posted 2009) [#9]
I always though Bmax was not originally meant for 3D games, but you can build them with it by using extensions like leadworks, right?


Pretty much.

There are some payware 3D libraries like Leadwerks, but also free ones like MiniB3D which is very close to the Blitz3D commandset. (with the added bonus that you can run it on Mac and Linux as well)

There's also the Blitz3D SDK, another product from BRL, which is essentially a complete wrap of the actual Blitz3D libraries that can be used from within Blitzmax, C, C++, C# or PureBasic. (commercial)

There's a dozen or so different 3D engines that work with BlitzMax, of varying degrees of complexity and features. Since BlitzMax is so modular, anyone can create their own module and add things to the command set.

Personally I only create 2D applications, and BlitzMax is amazing for that: since it uses 2D-in-3D, you get the benefits of 3D accelerated alphablending, scaling, rotating, etc...


FlameDuck(Posted 2009) [#10]
but there's nothing stopping you from writing procedural programs either
No. But then why not just stick with Blitz3D? The reason Blitz3D is less suited for complex games is because it lacks abstraction, not that it lacks features. It's a matter of language features, not engine features. BlitzMAX is a step in the right direction.


Sph!nx(Posted 2009) [#11]
Hello, me again with a few questions regarding this.

Is Bmax with the Blitz3D SDK as simple as using Blitzmax with all commands and features from B3d? (I know that the commands starts with bb, judging from the product info page)

And if this would be the case, what would be the advantages of making the games with Bmax and the SDK instead of just B3D?


Thanks a lot!


slenkar(Posted 2009) [#12]
1.Yes

2. Lists, Bmax is a lot easier to code with because of lists e.g. my post above


Sph!nx(Posted 2009) [#13]
Thanks Jeremy.

Just grasping the concept of types so can you please explain a little more about what you mean by lists? Are there any other major advantages? If I'm convinced it will help me make better games, I might be buying those two packages soon!


BLaBZ(Posted 2009) [#14]
A game isn't judged by the language used to program it(yah there are a few exceptions..)

.. Lets say you have a type and that type is "object" all "object" types have the same fields, lets say all objects are either "good" or "bad" we can then add all "good" objects to a list, "bad" objects to a list, and "all" objects to a list. With a For loop we can then go through a specific list referencing either each "good" "bad" or all objects. vs B3D where you can only loop through an entirety of each type.

Other advantages... you can pretty much do anything with it, GUI apps, your choice of a 3d engine, tis a nice language


Yasha(Posted 2009) [#15]
A couple of other major advantages are that in general programs compiled with BlitzMax are a lot faster (something like five times faster, maybe? There are tests floating around the forums, anyway) and you have access to a larger number of low-level programming features that were absent from Blitz3D - pointers (including function pointers, which opens up whole new worlds of possibility), better type and array systems, directly importing C code or assembly, static variables, nested functions...

You can ignore the OO elements until you need them and just use procedural programming if you want (or functional programming, if you're particularly awesome). The actual important changes are that the language is much better at everything now.


BLaBZ(Posted 2009) [#16]
Yah you don't get a flash of that standard windowed app before your game


Sph!nx(Posted 2009) [#17]
Excellent guys. Thanks. I know what to do. I will finish my current project with B3d but my next project will surely be with Bmax.


Mahan(Posted 2009) [#18]

Blitzmax is a much better language, B3D only has one list per type!



There are workarounds for that. I've written a userlib that mitigates the list problem to a minimum. It contains commands to control List, StringList and StringHashList. (search forums for CollLib if you want it, it's free)

While I agree BMX is way better and more modern as a language, the 3D engine of B3D is one of the most "Windows compatible" in the world. You'd have to look hard to find a Windows computer where B3D doesn't run fine today.


MGE(Posted 2009) [#19]
If it's a title you're going to sell, I would stick with B3D. Otherwise check out one of the modules available for bmax, they're fun to mess with, but a bit unstable for commercial use.


_Skully(Posted 2009) [#20]
Mahan,

DX7 is emulated now so, as nice as B3D is, its getting dated


Gabriel(Posted 2009) [#21]
Otherwise check out one of the modules available for bmax, they're fun to mess with, but a bit unstable for commercial use.

Nonsense. TV3D and Ogre, in particular have numerous commercial games between them, and are far more stable than Blitz3D, which is pretty flaky these days.


ziggy(Posted 2009) [#22]
minib3d has been used for some commercial game's releases too like supergerball and NSS4 as far as I know.