Advantages of Blitzmax over Blitzplus?

BlitzMax Forums/BlitzMax Beginners Area/Advantages of Blitzmax over Blitzplus?

Dan60(Posted 2015) [#1]
I love Blitzplus.....but can someone give me advantages of Blitzmax over blitzplus. I may be tempted to switch.
I have a 5000 lines of code in Blitzplus. I might possibly convert to Blitzplus for Mac compatibility. I have no experience in object oriented programming but I do know C and VB6, so I wondering if I will be as productive in BlitzMax.

What do you like about Blitzmax that Blitzplus doesn't have?


Brucey(Posted 2015) [#2]
You don't need to use all of BlitzMax's OO stuff if you don't want to. You can do everything in Functions if you prefer.

What do you like about Blitzmax that Blitzplus doesn't have?

It's cross-platform. That's probably the biggest plus. (if you are into that kind of thing)
It's also very easy to extend through modules.


Yasha(Posted 2015) [#3]
It's better in every comparable way.

- faster code
- separate compilation
- prettier syntax
- automatic memory management
- much better interop with C and lower-level features (still not great, but better than "everything is an int and use banks for memory")
- reflection enables some cool metaprogramming tricks
- function pointers
- better collection/array support, inline array creation
- minor language fixes (nested globals, nested functions, properly scoped locals, proper working field initializers, etc.)

...that's just off the top of my head. Honestly the much-touted OOP support isn't that big a deal (it's not a very "modern" object model by design, anyway; you probably won't use it as-intended). It's the very long list of "minor" tweaks and fixes and general improvements that make it such a better language. They really add up.


Kryzon(Posted 2015) [#4]
Plus the modules are open source (graphics, sound, even the low-level interfaces to the operating system).
You can learn a lot and customise/tweak the modules.


Hotshot2005(Posted 2015) [#5]
BlitzMax? You do lots more than Blitzplus!

For example

OpenGL
MiniB3D (BlitzMax Module!)
Brucey's Modules

and finally

Module GUI for whichever you prefer :)


xlsior(Posted 2015) [#6]
- Instead of writing pixels directly to videomemory like in blitzplus, Blitzmax uses 2D-in-3D.
This gives you real-time rotation, zooming, flipping, transparancy/alpha-blending, etc. with with almost zero performance impact.

If you're creating games, that alone is well worth switching, WAY easier to create eyecandy.

- Has built-in ability to embed external files into the final executable (incbin)

- Ability to extend the language with 3rd party modules that can add a ton of functionality -- talk to databases, regular expressions, networking, additional fileformats, etc. There are tons of modules for blitzmax out there, most notably Brucey's repository.

- Can mix C code into Bltizmax programs, which makes it possible to use libraries and such that weren't written with Blitzmax in mind at all

- More efficient compiler: if you use frameworks, (easy with the free Framework Assistant tool) Blitzmax compile much smaller executables than Blitzplus does: Blitzplus always includes runtime binary code for its entire command set into the final exe, while blitzmax can import just the modules that contain the commands your program actually uses.

As far as object oriented programming is concerned: Blitzmax supports it, but it is NOT required at all. You can continue to write old-fashioned procedural code just like you currently do in Blitzplus.


Floyd(Posted 2015) [#7]
Double precision floats and 64-bit ints.
Optional strict mode to make you declare variables properly.


Midimaster(Posted 2015) [#8]
I would say you will not have to accept any disadvantage when converting from BlitzPlus to BlitzMax.

But because it is worth coverting all code lines manually, you will have a lot of work. At the end your code will be more modern and has more structure.

The OOP is always a "can" option. You can mix between old style and new one.

The BlitzMax forum is still very activ. You will find a lot of people which are able to support you in your project.


Floyd(Posted 2015) [#9]
And, as I was just reminded by a Blitz3D question, "call by reference" function arguments.

In Blitz3D FreeEntity( MyCube ) will free the entity but cannot set the MyCube variable to zero because all function calls are "by value".


John G(Posted 2015) [#10]
Like Brucey said above (#2), I use little if any OO but like cross platform -- PC WIN and MAC OSX.


Grisu(Posted 2015) [#11]
To put it in a Star Trek context: BP = Impulse drive; BMX = Warp speed; BMX2 = Trans Warp!


c h i e f y(Posted 2015) [#12]
Blitzplus requirements = Windows 95/98/ME/2000/XP/Vista/7/8

Blitz3D requirements = Windows 95/98/ME/2000/XP/Vista/7/8

BlitzMax requirements = Windows 2000/XP/Vista/7/8

so I guess if you have Windows 10 you just "try it" and hope it works :)


Makis(Posted 2015) [#13]
Blitzplus is easier than Blitzmax and the perfect language for a beginner..


c h i e f y(Posted 2015) [#14]
will it work in Windows 10?


xlsior(Posted 2015) [#15]
will it work in Windows 10?


Yes, Blitzplus and blitzmax both work fine in win10.


Juiceter(Posted 2015) [#16]
In bmax, the backbuffer not being preserved is a real bummer if all you want to do is make additions to it (you have to cls and redraw everything).


xlsior(Posted 2015) [#17]
In bmax, the backbuffer not being preserved is a real bummer if all you want to do is make additions to it (you have to cls and redraw everything).



That's the way it is in any language that uses 3D on modern videocards -- it be preserved on some machines, not others. Not a blitzmax limitation, but the OpenGL/Direct3D specs themselves.

If Blitzmax won't retain the backbuffer on a particular PC for you, then neither will other languages using 3D.


Juiceter(Posted 2015) [#18]
No wastage - i.e. if you only need to use a byte variable, you can do so.