The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

BlitzBasic - a cross platform Basic (?) - for serious apps?

I've occassioned run across BlitzPlus, Blitz3D (I have no idea what the difference is) on the web, which is some kind of compiled Basic for creating games (and I understand can call C++ modules).  I've never taken a serious interest in it, being it's marketed for programming games, and I don't program games

Anyway I ran across it yet again in another web link, and I noticed on their site they seem to have a new product "BlitzMax" which is available for Windows, Mac, Linux

And if you scroll down, see this "MaxGUI" which says "Add a graphical user interface to your BlitzMax creations (BlitzMax package required)"

Has anybody used any of this stuff?

Is this BlitzMax/MaxGUI stuff actually cross platform - in the sense the same source code, without rewrites/changes (perhaps with a few of whatever their equivalent of IFDEFs are) can made to work on multiple platforms? Does it use native widgets?

Is it any use for serious apps?

So (perhaps with some added C modules for whatever's missing) could this be the cross-platform tool that some of us having been looking for.
S Tanna
Tuesday, January 03, 2006
We all wish for better things but they come at a premium.
At first sight it may seem great, scratch the surface and you'll find - requires OpenGL or DirectX support.
In short, it's not a tool for normal programmers like us, atleast till M$FT fancies that UI libraries should be supported by all graphics cards for some weird reason.

Let's not overcomplicate the problem at hand - we need a decent UI library that's cross platform; 3D graphics in desktop applications is not what we want. To count on our users to tolerate the sluggishness of the application because of futuristic 3D support is like the marketing manager at Intel trying to sell you a 3rd PC.
Vineet Reynolds Send private email
Tuesday, January 03, 2006
I'm not reading that the same as you:

It says: "OpenGL support recommended; DirectX7 or greater recommended".  But I'm assuming that means if you want to write a Game, you'd probably want one of those features in your video setup.

But I don't see anything that says DirectX/OpenGL is required for the MaxGUI part - which is presumably what you'd use for a serious app (?)
S Tanna
Tuesday, January 03, 2006
I've got far more problems to grapple with.
Poor UI response lags [by operating the software on a bare bones PC] are in my list of defective quality procedures adopted. Even if I have to achieve cross platform compliance, I'll stick to something that doesnt make the user irritated.
I remember the day when I had to twiddle around with mouse sensitivity settings because some genius thought it was fun to move the mouse like rowing an oarboat through chewing gum.

And if 41% of "windows look and feel" apps use Swing ahead of WinForms, there must be some reason for it.
As some wiseman put it:"My customers are not your guinea pigs."
Vineet Reynolds Send private email
Tuesday, January 03, 2006
I really couldn't care less about Swing vs WinForms, and don't see how that's relevant to this topic.

As far as the Blitz stuff is concerned, I'm interested because I got the impression from their site, that it was truly native widgets on each platform.
S Tanna
Tuesday, January 03, 2006
If they were native widgets, then why do they recommend OpenGL and DirectX ?
BTW Native widgets sit at the graphics device interface level not at the driver level.
Anyhow I cant bother explaining that. All I can say is no one bothers explaining why 1 km = 1000 metres
Vineet Reynolds Send private email
Tuesday, January 03, 2006
I don't think the whole thing sits on top of DirectX or OpenGL

My understanding is that Blitz is a programming language, primarily intended for writing games.  But among the things in can do are write 2D games (presumably using DirectX), 3D games (presumably using OpenGL), and write other types of apps, including GUI and even text-only apps, which I can't see why GUI/text would need DirectX or OpenGL.

The fact they say DirectX/OpenGL is recommended (but *not* required) - strongly suggests it is possible to write Blitz apps that do not use DirectX/OpenGL.
S Tanna
Tuesday, January 03, 2006
Let me help you out.  I purchased BlitzPlus a while back.  It can be used to create a number of great apps.  You can use all the OpenGL / DirectX stuff for creating pretty awesome games, but you don't have to.

I don't have Max, so I'm not sure about that UI.  However, in Plus, you can create a regular Windows program that compiles to a simple EXE.  It is capable of all the regular stuff right out of the box.  Buttons, list boxes, file access, forms, menus, yada yada.

I think the 3D version comes with some nice networking functions for quick and easy server/client programming, but I'd have to check again.

Also, one of the samples applications is a UI design tool, or Windows APP GUI IDE tool that creates BlitzPlus code.

It's inexpensive, and you can create Windows Apps that don't appear to require any kind of graphics library to be pre-installed.

However, if you want a powerful, inexpensive, easy, fun, intuitive basic programming language go with PureBasic all the way.
Ben Mc Send private email
Tuesday, January 03, 2006
PureBasic is portable and after you purchase, you can download the compiler for all the different platforms.
Ben Mc Send private email
Tuesday, January 03, 2006
I develop quite a bit in BlitzMax, and I thought I'd add my 2 cents...

MaxGUI is entirely independent of DirectX or OpenGL, unless you explicitly create a surface for this purpose (if you want to create a canvas that takes advantage of realtime rotation, scaling and other 3d hardware suited tasks). It also uses native gadgets on each platform.

My 40,000 line game required the following tweaks to compile on my newly purchased Mac Mini:

1) I used "\" in the paths, which need to be converted to "/". Change:

Path = Path.Replace( "\", "/" )

2) My highscore file format is binary, and I didn't explicitly load it as little endian so when it loaded on the Mac highscores from the PC, it stalled. Change:

HighScoreFile = ReadFile( "littleendian::media\data\highscores.dat" )

That should give some idea of the portability! I haven't written anything big with the GUI system, but I'd imagine that would be similar. I'm on the beta testing team and saw the pain the author went through to make everything behave the same on all 3 platforms. MaxGUI was pretty much complete for months while these issues were hunted down!

Bad points would be the debugger, which is horrible compared to VS, and some OO stuff not quite there yet. It doesn't have delegates or operator/function overloading, for example. Its IDE is terrible as well.

Also, the libraries are often quite limited in behaviour. You get full source to them, though, and I haven't modified mine too much (mostly because of upgrading pain).

Also, if you've only checked out BlitzBasic, Blitz3D and BlitzPlus (2D, 2D/3D, 2D/GUI versions of the original Blitz language respectively), you should probably try out BlitzMax. It's a much more grown up language. IMHO, it's much more well thought out and powerful than PureBasic (though the same probably couldn't be said about the old Blitz language).
Michael Reitzenstein Send private email
Tuesday, January 03, 2006
I only have experience with BlitzPlus, and I still find that PureBasic is better for creating GUI Windows programs - non-game apps.

However, after checking out this thread, I spent a little time in BlitzPlus, and found it very easy to build a simple button / text box program.  I ran it on an OS that did not have OpenGL, and possibly and old DirectX, but I don't remember, and it seemed to run fine.

I would like to check out Max, it sounds interesting.  Does it have networking support other than putting a Browser in the program?
Ben Mc Send private email
Tuesday, January 03, 2006
It doesn't have anything fancy in the networking department, just raw TCP/UDP socket functions. It would be pretty much like working with winsock in C (or BlitzPlus come to think of it).
Michael Reitzenstein Send private email
Wednesday, January 04, 2006
Oh, another thing is it doesn't support threading. It will be implemented at one point... but it might be a major deal killer for anyone looking to create a GUI app.

And it doesn't have reflection, either.
Michael Reitzenstein Send private email
Wednesday, January 04, 2006
I have BlitzMax and MaxGUI.

MaxGui is just an extension that allows you to create an interface for your program.  For instance, imangine you are creating a simple modeller for a your company and decide to use BlitzMax as it is the fastest tool besides DarkBasicPro for writing OpenGL/DirectX apps.  Normally with BlitzMax you are stuck with a display.  With MaxGui you can create a full interface that looks like a Windows interface on Windows and a Mac one on the Mac, but here is the big problem.  It is entirely code based.  There is no form editor, etc.  You have to code everything from where to put the buttons etc by hand.  Now if you have coded Swing, you can probably guess, it isn't complicated, just time consuming.

Since BlitzMax is completely extensible, if you need say a threading model, you can code one in either C++, ObjectiveC or C, and BlitzMax can use it as a library.  It's how the OpenGL rendering is performed at the moment.
Gareth Lewis
Wednesday, January 04, 2006
There is freebasic with support for a lot of different graphics libraries on both linux and windows
Rob Conley
Wednesday, January 04, 2006
Google returned quite a few reviews of BlitzBasic.  Seems a big issue is XP themes.  Some of the controls don't do full support.

I don't know how much of that is Blitz fault, and how much is the Windows Theme system...
Eric D. Burdo Send private email
Wednesday, January 04, 2006
Have you checked out RealBasic?  It is cross-platform (win, osx, linux).  I find it quite able to create real applications, although the IDE is not as polished as VS. 

As an actual user, I can confirm:
* Its cross platform ability works well for windows and mac osx (same source code).  I haven't tested its output on linux.

* It creates a native .exe (no runtime engines, virtual machines, dlls, etc)

* In addition to a plethora of UI widgets, it has a very nice collection of networking controls/objects (if they are even important to you)
Cyrus Bernstead Send private email
Friday, January 06, 2006
BlitzMax's MaxGUI module uses native widgets on each platform. I run it on a Mac and there it uses a Cocoa driver to create widget, not OpenGL and naturally not DirectX/Direct3D. Hardware support for that is only required for game development.

Compared to REALBasic, BlitzMax wins when we look at the language: It uses a real OOP model, you work with the full source code (and not juse the one function that you clicked in the IDE) and it has a robust foundation with a cleaner and more mature dialect than REALBasic.

REALBasic, however, has the advantage of having a very sophisticated IDE and a huge amount of modules and objects that you can use for almost anything you would ever want to do. But the same advanced IDE is also the thing that will hold you back after a while: In REALBasic, you -never- see the full source code and pointing and clicking your way through your code quickly becomes confusing. From a stomache-feeling, I would say that REALBasic is only useful for small to medium sized project. Anything bigger cannot be handled very well with their approach to programming.

I personally believe that BlitzMax can be used for "serious" apps, although the developers officialy still claim that it is "not a multipurpose language, and designed only for game programming." But they made that statement before they released the MaxGUI module with which they have written their own IDE. The Source Code for the MaxIDE by the way is hosted on SourceForge. And if you can write an IDE for a programming language with BlitzMax, then you most certainly can write many other "serious apps" as well.

I am currently playing with a News Reader project, using the MaxGUI and Socket modules, and I still think it is doable and become hooked to the language. It is the Basic dialect that I always wanted to have: Clear and clean, powerful, platform independent, object-oriented and still fast although it has a Garbage Collection running in the background. If you must, you can even add C-Source Code to your project.

What more do you need?
Winfried Maus Send private email
Saturday, January 07, 2006
Oh, yes: Multi-Threading. I have to confess that this is something that I am really missing in BlitzMax. Some people already have written modules for this, but I hope that an official version will come out soon.
Winfried Maus Send private email
Saturday, January 07, 2006

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz