differences between Blitzmax (from BRL) and Blitzmax NG ?

Started by RemiD, March 15, 2018, 18:37:52

Previous topic - Next topic

RemiD

Hello,

If you are / were a Blitzmax and Blitzmax NG user, can you briefly explain what are the main differences ? advantages / disadvantages ? (please)

I want to continue to code my future games with Blitz3d but also with Blitzmax + Openb3d ( seeing what some of you manage to achieve, this is inspiring, and probably more future proof than Blitz3d... )

In an ideal world, i want to create games which are compatible with Windows XP, Vista, 7, 8, 10, and preferably compatible with 32bits and 64bits computers...
And i want to be able to play with images / textures, and meshes, surfaces, vertices, triangles, joints / bones, animations, sounds...

Thanks !

markcwm

New platforms: 64 bit, Android arm/arm64v8a, RaspberryPi arm/arm64, Emscripten js (it seems iOS has been removed - edit: no it hasn't).

New features: Generics (wip), Nested functions, Interfaces, Operator overloading, Method/function overloading, IPv6, Mojo2 renderer, SDL backend, latest Boehm (bdw) GC.

It's all been pretty stable for me, in the last 6 months of development I found only a few bugs (koriolis.zipstream, brl.socketstream) and they were fixed with amazing speed. The latest copy may take a bit of luck to to build so just use the latest bmx-ng release, which is now 0.93.

Derron

- emscripten is not really supported because of some issues with the way Blitzmax handles methods/function pointers
- nested functions are supported in vanilla too
- mojo2 renderer works with vanilla (now) too

@ luck to build
Hmm, it build everytime once all errors were fixed. No luck needed :-p
But yes, some modules might need a bit of work to compile flawless - but most prominent modules were already fixed and are available at github.com/maxmods - for vanilla and NG. Even some "github.com/bmx-ng" stuff is working with vanilla (bmk or mojo2 for example).


If you never used Brucey's bmk[.exe] then another benefit is: post and pre-compilation hooks (pre.bmk and post.bmk -lua-scripts in your project folder) so you could eg. create version stamps before compiling your binary - your main-file then includes this text file so it can properly print a compilation/version timestamp on your application screen. With post-hooks you can run "strip" to reduce filesizes, you can auto-create zip-files or remove temporary files or sign an apk ...



bye
Ron

Henri

Hi,

Key points in BlitzmaxNG are:

  * No ties to Assembler anymore, but only pure C-code. This makes portability easier to other platforms.

  * 32/64Bit support.

  * Added language features.

  * Actively developed.

At this point I consider NG to reach a level of maturity where most of the basic issues have been ironed out. Everything I've tested runs fine with the latest GCC (for Window platform it's MinGW-w64 https://sourceforge.net/projects/mingw-w64/ , upon installation option are: posix for threads, i686 for 32bit,  exception=silj. Installation folder is "<bmxng>\MinGWx86" for 32 bit and "<bmxng>\MinGWx64" for 64bit compilation ).

Brucey just updated the latest full release version, with all included, found in https://github.com/bmx-ng/bmx-ng/releases.

-Henri
- Got 01100011 problems, but the bit ain't 00000001

RemiD

Ok, so if i understand correctly, i can use :
->BRL Blitzmax + minib3d
->NG Blitzmax + Openb3d

and for minib3d there is only one version, compatible with BRL Blitzmax here :
https://github.com/si-design/minib3d

but for Openb3d there are several versions, but the one compatible with NG Blitzmax is by "markcwm" (aka "munch") which is a "translation" of what "angros47" codes (for Freebasic)
https://sourceforge.net/projects/minib3d/files/
https://github.com/markcwm/openb3d.mod

Is there an install guide for each ?

I found these :

for BRL Blitzmax + minib3d :
to download BRL Blitzmax : https://nitrologic.itch.io/blitzmax
to download Minib3d : https://github.com/si-design/minib3d

for NG Blitzmax + openb3d :
to download Blitzmax NG : https://github.com/bmx-ng/bmx-ng/releases
to install BlitzMax NG : https://www.syntaxbomb.com/index.php/topic,61.0.html
to download Openb3d : https://github.com/markcwm/openb3d.mod
to install Openb3d : https://www.syntaxbomb.com/index.php?topic=102.0

additionaly, to download and install MinGW :
http://www.mojolabs.nz/posts.php?topic=105834
https://www.syntaxbomb.com/index.php/topic,36.0.html

please tell me if something i wrote is wrong, or if something is missing, i am just trying to understand...

Henri

Just to clarify,

if you download full release version, then all you have to do is select 'rebuild all modules' menu option from MaxIDE, or alternatively use command line from <bmx-ng>\bin and type "bmk makemods -a" without quotes. MinGW is already included.

After this you are good to go. Of course, everytime you add modules they need to be built as well, but not necessarely rebuild all, just select 'build modules' in MaxIDE, or in command line without -a option. With command line you can also specify which module you want to build by adding modulename without ".mod" suffix.

-Henri
- Got 01100011 problems, but the bit ain't 00000001

Brucey

Quote from: Henri on March 16, 2018, 12:10:48
Just to clarify,

if you download full release version, then all you have to do is select 'rebuild all modules' menu option from MaxIDE, or alternatively use command line from <bmx-ng>\bin and type "bmk makemods -a" without quotes. MinGW is already included.

-Henri

Just to clarify further.  :D

You don't actually need to rebuild modules. If you have the "Quick Scan" option disabled/unchecked in the IDE, then any module dependencies that are out-of-date (in regards to needing to be built) will automatically be built as part of your app build.
This should apply to all apps, regardless which modules you are using.

For example, if you want to build a wxMax app, rather than having to wait half-an-hour for all the modules to build, you can just build your app, and only those parts that are used by your app (and their dependencies) will be built.

At least, that's how it's meant to work. If you have any issues, please do let me know - the easiest way is by creating an issue on github, but email works too ;-)


... I should add, if you have upgraded "bcc" separately to doing a fresh install, then it's recommended that you do module rebuild because changes to bcc often result in changes to the compiled binaries. A good way to tell if your modules are out-of-sync with the current build is that everything starts crashing in apparently random places...


LT

So, iOS has been removed and is no longer part of the roadmap?

markcwm

QuoteOk, so if i understand correctly, i can use :
->BRL Blitzmax + minib3d
->NG Blitzmax + Openb3d
Yes, but you can also use Minib3d with NG and Openb3d with Brl.

Quoteand for minib3d there is only one version, compatible with BRL Blitzmax here :
https://github.com/si-design/minib3d

but for Openb3d there are several versions, but the one compatible with NG Blitzmax is by "markcwm" (aka "munch") which is a "translation" of what "angros47" codes (for Freebasic)
https://sourceforge.net/projects/minib3d/files/
https://github.com/markcwm/openb3d.mod
Yes, that's the official Minib3d repo as Simon left it, it is stable but not completed. Bmx Openb3d is a wrapper of the C++ Openb3d library functions but also wraps data members/fields and methods so complex Minib3d projects can be converted.

QuoteIs there an install guide for each ?
I found these :

for BRL Blitzmax + minib3d :
to download BRL Blitzmax : https://nitrologic.itch.io/blitzmax
to download Minib3d : https://github.com/si-design/minib3d

for NG Blitzmax + openb3d :
to download Blitzmax NG : https://github.com/bmx-ng/bmx-ng/releases
to install BlitzMax NG : https://www.syntaxbomb.com/index.php/topic,61.0.html
to download Openb3d : https://github.com/markcwm/openb3d.mod
to install Openb3d : https://www.syntaxbomb.com/index.php?topic=102.0
Yes, all those links are right. As others have said, installing NG can be quite easy if you get the latest release, the Win version has MinGW in a subfolder so you don't even need to set up environment vars. You can use that or set up an external MinGW which NG will use instead.

Quoteadditionaly, to download and install MinGW :
http://www.mojolabs.nz/posts.php?topic=105834
https://www.syntaxbomb.com/index.php/topic,36.0.html
Yes, either of these guides should keep you right. The most used version is 5.1.0 but it's possible to install later versions.

Brucey

Quote from: LT on March 16, 2018, 20:06:12
So, iOS has been removed and is no longer part of the roadmap?

It has? Why am I always the last to find stuff out ?

LT


RemiD

Ok thanks for the clarifications.

Maybe somebody (not me i am not familiar enough with this) should copy / update the guides which are on "mojolabs.nz", and post them on this forum, so that we are sure that they stay accessible ?

markcwm

Sorry my mistake, iOS is not in my IDE (1.44 beta ng) and neither is MacOS, I ran bmk help and they are both there.

meems

regret i have to put a downer but I can only report what I've found so far: NG is still a work in progress, and from my point of view this significantly retards it as a dev tool for games.
It compiles slower than legacy. It has bugs that still need ironing, too many for me to work over, so I've shifted back to using legacy for now.

However, legacy is pretty much 100% portable to NG. So I'm poised to move back to NG when its more stable. Some users already find NG stable enough. For me, I'm trying a few new abstract and complex ideas that I'm figuring out as I go along so I've got enough on my plate with learning Bmax. With NG throwing up its own problems as well, its a bit much for me.
I guess the users that are managing with NG are those with completed Bmax projects that they want ported to other platforms so can concentrate on NG's teething issues.

therevills

Quote from: meems on March 20, 2018, 21:04:45It has bugs that still need ironing, too many for me to work over, so I've shifted back to using legacy for now.

What bugs? Have you raised any GitHub issues so that Brucey can fix them?