I am not a developer, I am at best a very amateur programmer in MOO and C#. That being said, I intend to write this as a gamer, not a developer.
Many games are hitting the scene nowadays that are written in BGT. Some are good, a few are great, but most of them are utter garbage. BGT has become synonymous with buggy in my mind, not because the language itself is buggy (though it may very well be), but because the games that are being produced in the language are. This leads me to not wish to play games that have been written in BGT, and I tend to shy away from them. TO make it clear, this has nothing to do with Windows defender, and Microsoft Security Essentials flagging them as viruses, but simply due to the low quality of the games.
BGT is fairly easy to get started with, and the manual is written in such a way that anyone should be able to ease into the process. I tend to think its too easy, and I’ll tell you why. Sometimes the learning curve for a thing can be a natural barrier for some people who really shouldn’t be doing the activity. Consider an extremely clumsy, accident-prone person getting into woodworking. This probably isn’t the best idea, since woodworking involves, at the very least, heavy and sharp tools, and depending on what you’re doing, power tools. Should someone who is clumsy and accident-prone be working with saws, hammers, and so forth? I see this as a perfect analogy for describing that people feel that they can do this coding thing, and they can, at a basic level, because the manual is well-written. If you are not talented enough, don’t have the drive to succeed, and don’t have a thirst for knowledge and learning, you probably will not make a good developer. Programming is more than writing lines of code, its about conceptualizing what it is that you wish to do, and making it happen. It’s about seeing relationships where others see nothing, and its precise, and exacting; because a computer can only do what you tell it to, exactly what you tell it to do, and nothing else. Computers are dumb, good programmers just make you think they’re smart.
With anyone being able to attain some basic knowledge of how to code in the language, they then feel they should be progressing. They get to a point where they can do some things, and not others, so they seek to expand their knowledge by using classes from somewhere else. Classes are very powerful, because they’re an include away. This means that you can put them inside your project, add one line at the top of your script, and now all the functionality of that class is available to be called upon by your script, or other scripts in your project. There are classes for generating menus, for handling inventory, for making weapons, making enemies and on and on. Classes are powerful, because you can implement the class without much effort, but what do you learn by doing this? Not much of anything, since the code isn’t really yours. I won’t go into code theft in this section, but note that I assume that classes that are being used are freely available for the sake of this post, and not leaked source code that has been misappropriated by other developers.
Now you have a game that uses many different classes, none of which are yours. You modify the parameters the constructor of the class takes, or modify the constructor itself, and think you coded your own game. Nota bene – A constructor is what takes the info that a new object that is an instance of the class will be initialized to when the object is created, for instance, how much health an enemy will have, etc.
I wonder then, how it is possible for someone who uses external classes and so forth to really know and understand the code. The answer is, unless they take the time to become intimately familiar with its inner workings and study it, they won’t. They’ll just get the end result, it works, and that’s good enough. It’s not good enough though, because modifying the code without really knowing what’s going on leads to bugs. Bugs the end-user hopes the developer can fix, but who knows if they really can.
BGT is limited and out of date>
While I don’t exactly know how far out of date BGT actually is, I think the latest version is somewhere around the 2010 mark. Do feel free to correct this in the comments if you know for sure. BGT is also limited in that it cannot print text, or show graphics of any kind on screen. With the exception of a little window that all BGT games show at the top left of the screen, which is a requirement for the game to be able to take keyboard focus, that’s all you get. So, while other communities are striving for inclusivity, BGT is exclusive, and probably will remain exclusive to the blind, or at least, the blind and visually impaired who use screen readers. BGT has very limited library support, so, if you wanted to use a library that offers spacialization, something BGT doesn’t do, you may or may not be able to load it. a library object, abbreviated here as lib, really only has two calls, lib.load and lib.call, that latter will let you call a method or function from inside the library. So, if you need to do anything that’s external to BGT, good luck getting it to work.
Expanding your horizons
Not all, but certainly a lot of people who use BGT never go anywhere else in their programming lives. They never use other languages. They feel comfortable with BGT, and they don’t want to take on learning a whole new language. This means they are constrained to the limits of what BGT can do, which is very good and powerful for smaller games, but quickly, you run out of head room when you want to create something larger. If a developer has ideas for a larger project, they might not be able to pull it off with BGT, seeing as how some type of HRTF, or other sound spacializer is almost a given in any top quality audio game, this presents an issue.
BGT can be very powerful in the right hands
I never say anything about people who use BGT who already know how to code, such as Liam Erven @LiamErven on Twitter. Mainly because he’d probably kill me, but aside from that, because he knows what he’s doing, and thus, can make a game that is very high quality and bug free with BGT. This is because he developed good coding practices with his other titles he released through L-Works, and they don’t suffer from the same types of issues other games do. Even people who use BGT primarily, but actually know how to code, I don’t have a problem, do I wish they would use another language, so that they could offer more features, sure, but its not really an issue.
I don’t have NSDS
What’s NSDS? Nerd with short dick syndrome. Someone who thinks they know everything about their particular field, such as developers with god complexes who think and act like their dick is 20 inches long. I don’t care what language someone uses because I don’t like the way that language handles this situation particularly well. I care because I genuinely think that continued use of BGT is stifling the production of better games for all of us, and I don’t want to see this trend continue, or worsen. I want to see developers improve, so their games improve. I want to see games that are intriguing, not the same concept just done slightly differently, and clones, and clones of clones, we’re flooded with that trash right now and I want it to stop. I don’t care about BGT games that are buggy as fuck and just about useless. I understand that people go through learning stages. I also think that people want instant gratification, for their peers to pat them on the back, as it were, and say how good they did, so these developers release a game way ahead of when it should be released, and its riddled with bugs.
I’m not saying every game needs to be AAA quality. I’m also not saying every game cannot be of the same genre, or type that we already have. But, if you’re going to make another side scroller (a style of game we have quite a lot of) do something to make that side scroller unlike any other side scroller out there. Mold it into a different shape, make it your own. Also, a lot of the FPS games in BGT use the same rotational package. The last time I found a bug in this package, it may have since been corrected, but essentially the bug is that there is a 360, and a 0, you can’t have both, 360 and 0 are the same thing, 360 is just theoretical, just as in that we don’t write time as in 3:60 PM. We write 3:59 and when the next minute ticks over, it becomes 4:00. In this manner, 360 degrees will become 0 degrees.
Developers should be working together, to that end, perhaps if someone has a question about the way some particular aspect of a class works, they could try to contact the author about it. Study and learn it, rather than just using it.
One aspect I use to help me learn coding is to give myself a project that’s beyond my abilities, but not so far beyond that I don’t have a hope of completing it. I might know how to do bits and pieces of it, but other parts will require work. Investigation on how to do it, reading documentation, maybe asking for help if needed. I give myself a problem I should be able to solve with some effort.
This should be obvious, but its not. Don’t steal code, or other assets such as sounds from other developers. This does nothing but poisons the well we all collectively drink from. Meaning that developers who have had code stolen from them, sounds used without their permission and so on, are going to be less motivated to work on games for the community, because they feel under appreciated. Besides which, you may have burned a bridge if you did this. Maybe you might have been able to get permission, or if not, maybe that developer would be willing to help you get something similar going, you don’t know until you ask, and if you take without asking, your game is not worth playing, and you are not worth supporting as a developer.
Don’t release your game if some levels, or some parts of it are done, or at the very least, offer it as a beta, an alpha, or a concept or tech demo. You should test your game thoroughly, debug it, and offer alpha testing, probably closed testing. Don’t just give alpha spots to friends, try to make sure the people you allow to test your game have a diverse group of hardware, so there is more of an idea on how your game will run on both low end, and modern systems. When you release the full version of your game, it should be polished, and relatively bug free. Relatively meaning that no software is 100% bug free.
Keep learning and evaluating
Ask yourself if another language, or another library out there that won’t work with BGT will allow you to take advantage of more advanced and powerful features. If so, perhaps investigate working in that language. Even if you are content to work in BGT, learn it inside and out, everything it can do, and take advantage of that knowledge when you write your games.
I didn’t write this to shit on BGT, I wrote this to express my concerns about the state of games that use it. I also didn’t write this trying to tell people to use such and such a language. I can only hope it reaches someone, or a few people and hits home, makes them stop and think. A lot of game developers are teens and due to that fact, take the shortest way around something, but taking shortcuts, or cutting corners almost never works, consider what you’re doing, and what the cost, or sacrifice is for your actions. Consider that the more BGT grows out of date, the more of a gap there will be between what it can do, and what other programming languages, and by association, the libraries they allow you to use can do.