“BlitzMax Is Not a Real Coding Language, Only C++ Is Fast Enough”

I saw this comment that trashed BlitzMax for being a sucky language and that Real Game Developers use C++. I first deleted the comment, but then thought to write about this. It makes a relatively interesting topic me thinks.

So, is BlitzMax a “Real Coding Language”?

Short answer:
[insert Cartman laughter here]

Long answer:
Yeah right.

Or who cares.

The person who posted the comment mentioned that BlitzMax isn’t “fast enough” and that only C++ can be fast enough. There’s some truth in that statement. Very little, but some truth. Yes, it is possible that C++ stuff might produce a few milliseconds faster stuff than some other code (not sure if this is true, but for the sake of argument, let’s think it’s true).

Now, this has close to zero relevance to game development.

Perhaps, if you are doing some sort of fancy NASA calculation system to launch a new rocket to Mars, then you might use C++ to program the rockety stuff. Maybe. I don’t know.

And I don’t care.

Since what I care is stuff like this: example number uno, game made using Blitz. Eschalon is a totally cool RPG that probably sells like ice cream in the desert. And here’s example number 2 – another Bmax made game that climbed to the BFG top lists (which means it sold like ice water in the desert – a loads).

And that’s what matters.

The people who think that BlitzMax (Or GameMaker or pretty much any tool) is not a “real language” can go argue about that in the Gathering of Elite C++ Developers and laugh together. Meanwhile, those “puny developer” dudes are doing games 72 times faster and eating caviar while coding new expansions.

Close the worst thing that a developer can do is:

  1. Start learning C++
  2. Start doing a “game engine” for his new C++ powered game
  3. Do everything from scratch using C++, since “it’s a huge timesaver after getting the engine done – after that ‘making the game is simple'”
  4. Rinse and repeat for 11 years calling himself “pro for being a Real game developer”

Oh dear.

P.S. With that being said, there ARE fine opportunities on C++ side as well. If you use frameworks and engines and libraries and shit and don’t do everything by yourself. You can be a C++ coder and actually get games done. But that doesn’t mean C++ would somehow be superior to other languages/tools. For me, C++ was bit like eating nails and BlitzMax like drinking ice water in the desert. I’m choosing the ice water. It suits me much better and doesn’t make my stomach hurt.

Juuso Hietalahti


  1. I wrote a program completely in X86 machine code using FASM, people always asume its the fastest possible, its not ! why would it be, Blitz Max generates X86 machine code too !, you hit ‘run’ it generates X86 source code and this is assembled with FASM, when you compile C+ it is also converted to X86, so all three examples are X86 so how can one be faster than the other…. ie to say Blitz Max is slower is simply to say Blitz Max generates poorer quality X86 !

  2. That doesn’t make sense. By that logic, all compilers of all languages produce executable code that runs at exactly the same speed.
    Of course, this is not true. If you implement the same algorithm in several different languages, the compiled C++ version will most likely be significantly faster than the BlitzMax version.

    I say this and I am not a fan of C++.

    That said, though, the performance difference between low-level languages like C and interpreted/JITted implementations of higher level languages like Lua and Javascript is getting smaller, and the noticeable impact on a modern computer is becoming very small indeed.

    Given the pain involved in producing a complicated game world in C++ compared to a decent, expressive language with garbage collection, is it really so rational to endure that pain just to get an extra 10 or 20% FPS in the end?

  3. No C++ cannot be faster than BlitzMax as they both produce X-86 machine code, once compiled you are running X-86 in both cases. I say this and im not a fan of Blitz Max.


    Mind blown.

  5. You know what…..
    Last year i was at EA games. They where busy with a game. Can’t tell the name(Cause i did not remember it). But they testing a lot of things for the program. Using a lot of free programming tools and editing 3D tools.
    Using Blender3D, Blitzmax,GNU C++ and Visual basic the free version. All of that to test the game. On my question of the use of that. The awnser was straith simple. The blender is a fast and easy program to make fast low poly 3D, Blitzmax was used for programming the game enigine. And because blitzmax is not system depended. So when they had an idea they test is on different machines. To see how it work. GNU C++ is used to bring the code from blitzmax. So other machine can programmed to.

    The nce part is that is all is working fine and the code that is written is working perfectly they don’t change it. But compile it to make it a bin file.
    If for some reason the test is good but timing is a problem then the more expencive stuff is comming. Good programmers tools.
    And even than it can happend that is gives not the timing they want.

    In a last resource they grab also back on Assemble programming. Cause ther they can make the code in a way they want it.

    So to make the argument bigger. I know for sure that EA-Games also use the so called lesser tools.

    The differend with the guys who are working there is easy. Like me i do programming in BlitzMAx and i like it. For me its the fasted way to get things done. For them its like writting a basic source code, only its C++. The knoulleged they have is bigger than we have.

    And they have a acces to libs we are dreaming of. A lot of code is premade there because a lot of games can use the same gameengine.

    To make a overall conclusion.
    That what make you easy to work with you use. If that is C++ its yours. If you like to work in a basic programme its also yours.

    A soon as the compiler done his work finaly the speed of the code is the same. only the way the compiler made it, is the speed of the game.

  6. Always depends on your project. BlitxMax is good for small 2D game projects. Using C++ for that purpose is overkill.

  7. “in a real games company” :D

    Which company is more real – the one that makes a game that is played by over 50 million customers or the one that is played by 10 millions? Angry Birds vs top selling console games.

    There’s no such thing like “real games company”… we all create games, though for different audiences.

    @Juuso: Funny to read it after over 6 months, but it looks like BFG is taking a step back from Facebook and social games (last Casual Connect Kiev presentation by Paul Thelen).

  8. When the C++ Priests come with they mass libs and stuff, you can just answer that you can use all that libs with blitzmax aswell, so all c++ got left as difference to blitz is the very ugly syntax

  9. @yeueye: that’s cool to hear. I’m one of those chaps who just cannot understand all the c++ pointer-whatnot fancy stuff. The stuff that real programmers use. Therefore I use blitzmax, which is blizing fun & cool and all… and gets the job done.

    Cool that you like it.

  10. Just wanted to let you know I tried Blitz because of this post.

    Long time C/C++ developer here. 22 years or so with C, 10 years assembly and pascal before that. I am just absolutely blown away by Blitz’s ease of use. My main reason for trying it was because of portability but it has all the features I need.

  11. The old C++ is better than any language argument. Simple answer,

    No C is not better than any other language out there. C++ is the fastest, (well assembly is but you’ll pull your hair out fixing bugs before your first animation is properly programmed).

    But most of you are right, if your working for a large Game company you’re going to have to know it.

    But then again the game company will have their own Game engines,sound effects generators and art libraries so most of the hard code is waiting there for you to tap into.

    But if your a lone wolf programmer looking to write a Castlevania like game,some cool looking dare I say it Star Raiders clone (ol’ skool), or the next Zuma ripoff then Blitzmax, Purebasic, or even Blitz basic 3D and Dark Basic pro will allow you to quickly finish a game that in C++ , on your own, will take months if not years.

    And lastly, most of the guys programming alone that I know, that brag about using C++, haven’t even gotten past the demo screen phase of their games (with simple sound effect maybe). C++ is a powerful language, but its also a beast to work in alone. But if taming beasts is fun for you, go for it.

  12. I think the emphasis seems to be moving towards multi-platform/social gaming and it’s the middle ware that enables the flexibility to develope once and support multiple platforms.

    BlitzMax is a great language.

    But with free middleware/development tools like Unity and others that allow quick development, cross platform capabilities and a choice of scripting languages, game development is changing rapidly.

    In the end it should be a case of choosing the right tool for the right job, admittebly something that will only come with experience or in my case depend on budget ;o)!

  13. any game programming is like sex though; we all have the same tools, the difference is how we use them.

    A better determining factor might be to start at the top and work your way down. (no not about sex, but games).

    In other words what’s your “final vision”. If you’re aiming to make a game on the iPhone, your language is already chosen.

    (No I’m no fanboi, just making an example).

    The hundreds of libraries and toolkits available is a fantastic thing for game development but also can be the biggest road to your ruin. Many a day has been lost in my lifetime of “tech jumping” as my brain convinces me that there was a secret language out there that would make all my dreams come true if only I gave it a chance..

    Damn…it really IS like sex!

  14. @Jamie Woodhouse: C# (XNA) is required for XBLIG but C++ is required for XBLA.

    BlitzMax is built on C++. It’s an easy to use OO Basic that is also capable of lot of advanced stuff. It handles the low level stuff for you via its C++ foundation, probably in a better way than most people could code it themselves in C++ anyway. It’s very fast because everything is compiled using GCC but it’s good for rapid game development due to the easy to use language, comprehensive game related functions, and garbage collection amongst other things. Currently it’s only 2D unless you plug in a 3rd party 3D module which is why it’s mainly used for casual and Indie games.

  15. Having said all of that, to state that blitzmax is not a real coding language or that indie games aren’t real games is of course not true. There’s nothing wrong with either.

  16. It all boils down to the right tool for the right job. If the game you are creating will not tax the hardware a lot you can use a tool such as blitzmax which is easier to use and will allow you to reach your goals faster. However if you create a game with demanding graphics or a lot of AI, you want the most performance out of the hardware you can get. In that case the overhead of something like blitzmax is too big, and you want the low-level control to optimize as much as you can, so C++ is a better choice.

    There’s nothing wrong with either, but to state that the higher performance is not needed for gamedev or that there is no difference between C++ and Blitzmax except for the developer, is simply not true. I always compare them to powertools. If you just want to hit a nail in your wall you use a hammer, but if you want to crack open the tarmac of a highway you’re gonna use something more powerful. It just depends on what you want to do and which tools are available.

    And of course experience with certain tools is a factor in that decision, but creating a AAA game with blitzmax is just as bad an idea as creating a simple webgame for your website with C++ or assembly.

  17. If BlitzMax is that cool, why didn’t they use it for Unreal 3? Or Quake 4? Or Starcraft 2? Or Age of empires 3?
    I agree that it’s a good tool for rapid prototyping and for indie/low profile games, but in a real games company you need to go big. You need to go C/C++. When I’m at a job interview, no one asks if I know BlitzMax, Ogre, FPSCreator or any other engine/tool. They ask if I know C++ and/or Java. Sorry, this is the real world. You can argue as much as you want, but tools come and go. C++ stays. I could bet that BlitzBasic is coded in C++ :)
    I’ve programmed games for phones as low as 128×128 screen size and 150 kb game package size, but also for iPhone, Nintendo DS, Nintendo Wii, Sony PS3 and Microsoft XBox, everything in C++ (except small phones that use Java) so I think I know stuff. But I might be wrong…

  18. The language does not matter. The programmer does.

    And everybody knows that The Real Men use lisp :-)

  19. I thought C# was a requirement for XBox development, and developers need to port their C++ code to C#, to get anything working on that platform? Isn’t that the case?

  20. Yeh, it’s better to use Assembly programs. Those are faster than dealing with slow objects.


  21. Uh huh.. and c++ only frameworks like Popcap and Playground are for casual development.

    I think they got under your skin and now you’re seemingly just as bad as they are. Lastly, languages are tools and are all used at different situations. Your Bmax won’t solve everything bud.

  22. Nitpick – NASA still use assembly programs that haven’t been updated since the ’70s, not C++

    Wish I could find the article for you; it was really interesting.

  23. @Ruben: I’m not (100%) implying that, read the fine print (last paragraph, in italics). ;)

    And your points have the flip side (like my points too):

    1. Much more spam too
    2. Who needs many more, when you have all the available you need?
    3. Yeh, and again learning curve goes mountain climbing…
    4. iPhone app companies don’t (necessarily) use it, BFG doesn’t care if you use C++ (and yes, they hired the guy who happened to do that top selling game btw). In fact, BFG are moving more to social gaming platforms (which means AJAX/PHP/SQL skills come handy). C++ is indeed used a lot, but the world is moving at great pace so today’s standard doesn’t necessarily isn’t tomorrow’s standard.
    5. I’m so happy I’ve never heard about this ;)

    With this being said… I do agree that C++ has good points. If you plan to be a programmer, then there’s (at least has been so far) many opportunities for good C++ knowledge. But… if we are talking about doing your game development rather than career options… then C++ is merely a one tool in the box. It has advantages, and disadvantages – and whether they provide disadvantages or advantages often depends on what you want. (For example, you said C++ can combine OpenGL stuff, which to me sounds like a fairly lot of learning (I’d just rather let the bmax worry about those)). And you mention that C++ has things like Ogre and… well, that’s true. It’s also true that some of these most popular libraries end up being wrapped to bmax (like Ogre, RakNet and so on).

    C++ indeed has tons of options, but there’s also things that make it complex and increase the learning curve.

    What I’m interested is a compact tool that can get things done. Unity and Shiva look excellent for this (3D), and so far I’ve liked playing around with bmax. C++ isn’t my choice. For some others, it might work.

  24. ;-)

    Here’s another BMax game that has more going on special effects-wise and easily maintains 60FPS (much more with VSYNC off, like 1000+FPS), and it got even higher in the BFG chart at a time when it was ruled by HOGs: http://www.bigfishgames.com/download-games/4677/unwell-mel/index.html

    Agree that BMax rocks. C++ is off course fine if you have a really decent game library and can focus on just making the game. However, I prefer C#, it practically writes itself. Was having a chat with a well known XBLA dev the other day who prototypes in C# (for speed of dev) and converts to C++ for release on XBox because although C# is fine on PC it’s totally slow on XBox.

  25. They’re just different tools, one might be right for a certain job, and another might be better for a different job. And at the end of the day, it really doesn’t matter how you make it as long as you’re making it. I use C++ for all my in-depth coding/systems because I’m interested in in-depth system architecture. You use them for different reasons, whether personal or technical… just don’t judge others based on what they use to make things; instead take that time to judge what they make, and it can work both ways. Judge what is made not how they made it.

  26. Here’s a few advantages I see on C++ for game development:

    1 – Much more source code available to look for examples
    2 – Many more 3rd party libraries / engines you can use
    3 – Portability. C++ is available on basically every platform you care to think of developing a game on. Combine it with stuff like SDL or OpenGL and you’re good to go anywhere.
    4 – It’s the game industry standard (just in case you need a job as a game programmer).
    5 – Google Native Client ;)

    And you seem to be implying that coding in C++ means you’re doing everything from scratch. That’s simply false. It’s an option, and it has advantages and disadvantages.

  27. Whenever people say C++ is faster I always ask them “Why is it faster?” if they can’t answer that, then they don’t know what they are talking about anyway.

  28. The most important is to use the programming language that you are the most comfortable with. Speaking about features, it should not limit yourself then.

    I’m a C++ coder, but I don’t think that using Blitzmax can limit yourself if you don’t target consoles like DS or PS3… and that’s the case for indie game dev (which is mainly for PC).

    In fact, the great advantage I see in C++ is the amount of libs available, free (Ogre, irrlicht, etc) or not (FMod, Blink, etc). Once you choose something else (like Blitmax, Unity, etc) you are stuck to the feature list of the tool. Some are extensible but in general it’s very tricky…
    But if you have everything required in Blitzmax, without the need to use something else, then it’s OK.

    Last but not least: if you intend to get a job in the game industry one day, C++ is nothing but mandatory.

  29. I wasn’t saying GM isn’t suited for games Paul Eres has two great games Imortal Defense and Saturated Dreamers http://studioeres.com/games/ which were both made in Game Maker. My main point with Game Maker being slow was that fairly simple things cause major slowdowns on older computers (such as having a lot of objects) however, someone who is very skilled in it can make it run fast through a bunch of tricks. However, my main point was that if you want to do 3D, GM is not a good tool for that.

    (Also, I secretly hate Game Maker slightly now because it saddens me to see what has become of it since YoYo Games got it…missing the good ol’ days of Game Maker 4.0 =( )

  30. My experience is, that vast majority of the C++ propagandists do not have any deeper experience with any other language… I think that speaks for itself.

    Btw. it makes me always laugh when I see the people who claim that doing that extra work (such as writing their own game engine from scratch, or writing the code in C++ and debugging all that pointer and allocation bugs) will save them time some day. But it’s nice, I love any competition that kills itself without any actions from my side :)

  31. Pathogen: Lylian sidescroller is being done using Multimedia Fusion (I think it’s quite similar to Game Maker), and it’s totally cool. I’ve seen people prototyping games really fast with Game Maker (much faster than with C++… ;) – games that look pretty darn nice. Check for example this tiny game: http://www.pixelprospector.com/2010/03/big-building-boom-blues/ (Was done using GM)

    Or take Adventure Game Studio… same story. Ben & Dan adventures for example are using it without any problems.

    Whether Game Maker is slower than C++ doesn’t really matter (that much)… if you can make games with Game Maker, that’s what matters. Okay, maybe it has more limitations but still… you can cope fine by doing certain type of games with it.

    “Making a game using GM” > “spending all your time preaching how BlitzMax is superb” ;)

  32. Nice post. I wrote up my take on the whole “real programmers use X” idea and linked back to your blog entry.

  33. iirc, BlitzBasic is compiled, so I would imagine the same for BlitzMax (but it as been years) so it really wouldn’t be that much slowers. The main advantage I see in C++ is the huge amount of libraries you have access to and the lower-level access if you need it. (But then again I haven’t even used BlitzMax myself, maybe its developer did a good job with low level stuff)

    However, Game Maker is a different story. It is horribly optimized and slow =P I used it for years, if you want to do advanced stuff in it expect major slowdowns just because it is interpreted.

    I think everyone goes through that “I need to do everything from scratch.” While it is a terrible way to make a game, I think that it is a good way to learn how things work.

    Regardless of anything, you should go with whatever you’re skilled with! Or switch to something else when you squeeze the engine dry. (Example: I switched from Game Maker because of the lack of good native 3d support, and the external add-ons for doing 3d had a lot to be desired. I was also finding I was programming large portions of things in C++ anyway and then using Game Maker as a weird presentation engine.)

  34. I always thought the answer to “is X a real programming language?” was quite simple. If it’s Turing complete, then yes. Otherwise no.

    Of course, that’s when I discover that the question is misphrased and is actually “is X a programming language that’s worthy of my L33t programming skillz?” :)

Comments are closed.