Blitz3d Engine

1 view
Skip to first unread message

Samantha Figueredo

unread,
Aug 5, 2024, 12:20:17 PM8/5/24
to nondichamwhist
BlitzBASIC is the programming language dialect of the first Blitz compilers, devised by New Zealand-based developer Mark Sibly. Being derived from BASIC, Blitz syntax was designed to be easy to pick up for beginners first learning to program. The languages are game-programming oriented but are often found general purpose enough to be used for most types of application. The Blitz language evolved as new products were released, with recent incarnations offering support for more advanced programming techniques such as object-orientation and multithreading. This led to the languages losing their BASIC moniker in later years.[1]

The first iteration of the Blitz language was created for the Amiga platform and published by the Australian firm Memory and Storage Technology. Returning to New Zealand, Blitz BASIC 2 was published several years later (around 1993 according this press release [2]) by Acid Software (a local Amiga game publisher). Since then, Blitz compilers have been released on several platforms. Following the demise of the Amiga as a commercially viable platform, the Blitz BASIC 2 source code was released to the Amiga community. Development continues to this day under the name AmiBlitz.[3]


Idigicon published BlitzBasic for Microsoft Windows in October 2000. The language included a built-in API for performing basic 2D graphics and audio operations. Following the release of Blitz3D, BlitzBasic is often synonymously referred to as Blitz2D.


Recognition of BlitzBasic increased when a limited range of "free" versions were distributed in popular UK computer magazines such as PC Format. This resulted in a legal dispute between the developer and publisher which was eventually resolved amicably.


In February 2003, Blitz Research Ltd. released BlitzPlus also for Microsoft Windows. It lacked the 3D engine of Blitz3D, but did bring new features to the 2D side of the language by implementing limited Microsoft Windows control support for creating native GUIs. Backwards compatibility of the 2D engine was also extended, allowing compiled BlitzPlus games and applications to run on systems that might only have DirectX 1.


The first BlitzMax compiler was released in December 2004 for Mac OS X. This made it the first Blitz dialect that could be compiled on *nix platforms. Compilers for Microsoft Windows and Linux were subsequently released in May 2005. BlitzMax brought the largest change of language structure to the modern range of Blitz products by extending the type system to include object-oriented concepts and modifying the graphics API to better suit OpenGL. BlitzMax was also the first of the Blitz languages to represent strings internally using UCS-2, allowing native-support for string literals composed of non-ASCII characters.


BlitzMax's platform-agnostic command-set allows developers to compile and run source code on multiple platforms. However the official compiler and build chain will only generate binaries for the platform that it is executing on. Unofficially, users have been able to get Linux and Mac OS X to cross-compile to the Windows platform.


BlitzMax is also the first modular version of the Blitz languages, improving the extensibility of the command-set. In addition, all of the standard modules shipped with the compiler are open-source and so can be tweaked and recompiled by the programmer if necessary. The official BlitzMax cross-platform GUI module (known as MaxGUI) allows developers to write GUI interfaces for their applications on Linux (FLTK), Mac (Cocoa) and Windows. Various user-contributed modules extend the use of the language by wrapping such libraries as wxWidgets, Cairo, and Fontconfig as well as a selection of database modules. There are also a selection of third-party 3D modules available namely MiniB3D[4] - an open-source OpenGL engine which can be compiled and used on all three of BlitzMax's supported platforms.


In October 2007, BlitzMax 1.26 was released which included the addition of a reflection module.[5] BlitzMax 1.32 shipped new threading and Lua scripting modules and most of the standard library functions have been updated so that they are unicode friendly.[6]


Blitz3D SDK is a 3D graphics engine based on the engine in Blitz3D. It was marketed for use with C++, C#, BlitzMax, and PureBasic, however it could also be used with other languages that follow compatible calling conventions.


In 2008, the source code to Max3D - a C++-based cross-platform 3D engine - was released under a BSD license. This engine focused on OpenGL but had an abstract backend for other graphics drivers (such as DirectX) and made use of several open-source libraries, namely Assimp, Boost, and ODE.


Despite the excitement in the Blitz community of Max3D being the eagerly awaited successor to Blitz3D, interest and support died off soon after the source code was released and eventually development came to a halt. There is no indication that Blitz Research will pick up the project again.


BlitzPlus was released as open-source on 28 April 2014 under the zlib license on GitHub.[7][8] Blitz3D followed soon after and was released as Open Source on 3 August 2014.[9][10] BlitzMax was later released as Open Source on 21 September 2015.[11]


Blitz Basic 2.1 was well received by Amiga magazines. CU Amiga highlighted its ability to create AmigaOS compliant applications and games (unlike AMOS Basic)[12] and Amiga Shopper called it a powerful programming language.[13]


In 2011, BRL released a new cross-platform programming language called Monkey and its first official module called Mojo. Monkey has a similar syntax to BlitzMax, but instead of compiling direct to assembly code, it translates Monkey source files directly into source code for a chosen language, framework or platform e.g. Windows, Mac OS X, iOS, Android, HTML5, and Adobe Flash.


Woah, there are updates to Blitz3D? In 2024? And here I was about to tell myself to move on to another language. I mean, I echo the sentiments that it'd be one of my fondest dreams for Blitz3D to be fully modernized and with a few of the features you had in Monkey and such (like passable functions and references and whatnot) and IDE QoL updates, but the realistic part of me would be satisfied just from it being brought back to a functional state (putting a dagger in FMOD is a good chunk of the way there, but there's the dead network functions--yes, I used them--, some issues with the window not refreshing after it leaves the foreground until graphics are reset, and some weird performance issues with the IDE, though admittedly it's been a while since I checked for those and they might be addressed already). I wouldn't be surprised if there were huge improvements just from the recompile. I'll have to take it for a test drive.


I look forward to seeing what new life you can breathe into it with LibSGD. I think part of its success will depend on keeping things simple and in-line with basic language tradition, and having integrated documentation with examples like you did with Blitz3D. I'm sure it'd help non-programmers like myself if it was integrated into Blitz3D instead of having to deal with adding libraries and such; the nail-in-the-coffin on a number of my hobby projects has been that I couldn't get Blitz3D reconfigured correctly after a hard drive died. It's great to just be able to reinstall Blitz3D and have everything working again so vanilla is kinda my default these days, but maybe the zip download will change all that since I could just carry my favorite configuration around on a flash drive.


I know Blitz3D was made for games, and I did a bunch of that as a hobby, but it's also my go-to language for quickly pushing out little tools just to help me and my co-workers with repetitive tasks at the office. I'm not a programmer professionally, but Blitz3D is definitely part of my professional success. Opening Blitz3D is a dopamine rush, it's like getting my drug fix.


Wow! Amazing to hear Blitz3D is back!

One thing that I would really love is a very simple serial comms built directly into Blitz3D. With an interest in using Arduinos and python cards to control 3D environments such as movement and rotations my 3D projects, I had to resort to external programs get the initial serial data and then send that data to Blitz3D using text files! Would be great if serial comms was supported like in other basic languages, e.g. open comms, read incoming bytes, done! See my 3D scanner, 3D digitizer and 3D VR headset linked below that all use Blitz3D for the 3D visualisations!




I tried a few different B3D serial comms userlibs over the years always hoping to get one working, but to no avail. I don't know why they didn't work, but they were always blocked in some way! Other languages I use such as VB6, LibertyBasic, Just Basic, Free Basic, Python, Processing usually get me started, Their serial comms libraries don't get blocked, but I always want to use Blitz3D for the great 3D stuff! Creating intermediate serial comms 'drivers', that suck in the serial data from Adruinos, and output the data to files in RAM disks, to be read back into Blitz3D is a real pain and very slow! How I wish serial comms was built into B3D to help with this. I really feel that would help open up your userbase to others wanting that hardware capability too!




Hey Mark, great to see you working on this again! I used Blitz3D for years, and it basically provided the bridge into the programming world for me. Much of my current knowledge of programming is still based around the Basic concepts I learned back then.




I've been working on an LLVM based compiler for Blitz2D, Blitz3D and BlitzPlus for about two months now (in total), and it's finally reached the point where it can turn most BlitzBasic code into an Abstract Syntax Tree, and even can now provide exact positions for warnings and errors.


It's great to see you again Mark!

Thank you for providing us with one of the best 3D programming tools like Blitz3D, with which many of us have started in the world of programming and obtained really satisfactory results.

3a8082e126
Reply all
Reply to author
Forward
0 new messages