Anyone who has developed an audiogame in the last few years will surely have heard of The Blastbay Game Toolkit (BGT). In Blastbay Games’s own words, “BGT is a toolkit that allows you to create your own audio games from the ground up using a simple scripting language coupled together with a powerful game engine”.
BGT has been used in the creation of a huge number of games since it’s release. Many people have learned it as their first programming language and, in the last couple of years, it has seen a few quite interesting external libraries.
In the last couple of years, though, we have also seen a lot of unjustified bashing of BGT. Many people have started to simply talk about how “bad” BGT is with no reason or rime. I myself do think that developers should move on from BGT and, in an attempt to appease those who rightfully ignore the people who cannot justify their complaints, I will try to point out a few of the aspects that, in my opinion, make BGT worthy of disappearing off of the current audiogame market.
Possibly the most important issue of BGT, and the most ironic, is it’s extremely rudimentary audio system. For years now we have had technologies that allow us to implement environmental effects and 3D audio into programs on any platform. Of course, different platforms have different ways to handle this. In the case of BGT, though, this fact is negligible and poses the big question: WHY, oh, why does an engine made specifically for the purpose of making sound-based games and only sound-based games, the main focus of which should most logically be offering decent sound support, have the feature set of… I was about to say a sound card of the early 2000s, but in fact, HRTF technology was unveiled in the 90s!
I think it is quite ironic that this fact still remains true and nothing has been done about it even in the latest free update. This, in my opinion, is the biggest reason why BGT is not a suitable game development platform in 2018.
Built-in Feature Set
BGT is being marketed as a simple way to create games and learn programming. A lot of the built-in modules, though, do not have much to do with the creation of games, and the amount of built-in helper modules is quite disappointing. The so called “sound-pool”, which wraps simple stereo positioning of audio elements based on a coordinate system, is extremely basic. While having helper modules is most definitely not required, it is something you would expect from a product which has such a specific purpose.
BGT was created, as they say, “by the blind and for the blind”. It has one very specific purpose: the creation of games with audio and only audio elements. This instantly reduces the possibility of an expansion of the BGT community.
A very important part of a programming language is the community it builds around it. Programmers should aim to help fellow programmers and should be able to use as many resources as they can find. I can almost safely say that any current programmer does not hesitate to check Stack Overflow whenever a seemingly unsurpassable challenge or a simple doubt arises in their coding sessions.
While BGT’s community has shown to be helpful at times and certain programmers provide packs of libraries and utility functions for the masses, it is also incredibly small and limited. The use of a mainstream language eliminates a lot of these issues.
Closely related to my previous point is the fact that BGT was pretty much discontinued and abandoned by Blastbay. The previously quite expensive program was released for free a bit more than a year ago and there seem to be no plans for improvement. And yet, it is still being used extensively for many new audiogame releases. I don’t think this requires further explanation.
Ever since the first version, BGT has had warnings in its documentation about the lacking support for dynamic link libraries. For example, to my knowledge, there is still no support for C structures. This limits BGT developers quite a lot and, given the limited built-in feature set I mentioned earlier, this is a real problem and causes frustration while promoting dirty ways to achieve goals. There are huge amounts of readily-available libraries on the Internet to achieve many useful purposes, and BGT simply does not allow the average programmer to dive right in and use them, which is definitely what something aimed at simple game creation should try to do.
There has been a lot of talking about this specific topic on forums every single time a BGT-powered game gets released. Many people use devices other than Windows computers, and BGT is only able to compile for that specific platform. While some games can be adapted for other platforms, such as through the use of Wine, this is not an ideal approach, especially now that mobile platforms are rising in popularity.
- No actual built-in dictionary/hash table/map datatype (no, BGT’s dictionary is not how things work)
- Unnecessarily confusing compilation errors, especially for new programmers
- Insufficient facilities for game debugging
- Executable size (the smallest possible executable seems to go over 800kb and include part of the original source inside)
Sure, alright, complain all you want. So what can we use?
There are definitely many options to switch to, but I definitely know which one I will support.
- Audio System: Any modern web browser has support for WebAudio, which instantly gives developers the possibility to use modern technologies such as HRTF and environmental effects quite easily, especially with the help of wrapper libraries.
- Extendability: A huge amount of external libraries are available on NPM. Node.JS and Electron can easily integrate external libraries into any application.
- And… More!
As always, thank you so much for reading!