Something a lot of programmers hear, especially from beginners who want to get into the field, is “what [thing] do you use?”. Over the past few years my tool set has pretty much crystalized, and unless I need to learn something else for work, I’ll be using what I’m using for the foreseeable future. So what is it? I’ll tell you.
Games
My runner game was made in GameMaker (AKA GameMaker Studio 2). The game I’m currently working on is too. In my opinion, it’s the best 2D game-making IDE in the world, by a long shot. I first got turned onto it when Undertale came out, which as you may or may not know was absurdly popular. I figured I’d give it a shot, and the rest is history. I really can’t recommend GameMaker enough if you want to make a 2D game. If you want to make a 3D game, though, don’t bother. It’s technically capable of it, yes, but GameMaker can make 3D games the same way a spoon can be used as a substitute for a shovel. Don’t do it. Use Unity instead.
Previously I’ve used Construct 2, which is quite similar but much simpler, and Allegro, a C++ library. Trying to make a game using raw C++ is about as fun and easy as it sounds.
Apps
For cross-platform apps, I use Flutter. It’s a framework made by Google. I have no idea why it’s not more popular than it is. It’s extremely powerful yet relatively simple, and it makes creating apps for all major platforms simultaneously a breeze. The only “downside” is that it uses a unique programming language called Dart, so you’ll be learning a new language. However, Dart is so similar to existing C-like languages that if you know one, you aren’t really going to be learning a whole lot.
In the past I’ve tried numerous frameworks and didn’t really love any of them. JavaFX is an absolute slog, although it’s extremely easy to understand. XAML-based frameworks like Xamarin result in confusing spaghetti code that often exhibits undefined or contradictory behavior unless you just code-behind everything, which defeats the purpose. Flutter brings together the best of both.
For console apps, I actually use Dart for the most part. Whereas using Flutter makes you a framework hipster, using Dart outside of Flutter just makes you weird. But I don’t care. Dart is fantastic. It’s not a language you’re going to get a job using though. Nobody wants an application made in Dart. I don’t know why. As far as I’m concerned, it’s got most the good of any modern high level language without most of the bad. It’s a jack of all trades language; it’s not quite as fast as Java, but it takes significantly less memory. It’s not as efficient as C++, but it’s much faster to deploy.
I also, like any programmer under the age of 70, dabble in Python when it makes sense. If I need to slap together a glorified batch file in as little time as possible, I turn to Python. Because after all, it’s a scripting language. It’s great for scripting.
IDEs
GameMaker’s IDE aside, I almost exclusively use JetBrains IDEA. I see no real reason to use anything else, no matter the language. If you want to make a native Android app then Android Studio is probably a better option, but the two are so similar I don’t really see the point. Also, who makes native apps any more? It’s all cross-platform frameworks these days, and IDEA handles cross-platform like a champ.
There is one obvious exception to my “always use IDEA all the time” philosophy: C#. For C#, I use Visual Studio like everyone else. The two were literally made for one another. JetBrains makes a product called Rider which handles C#, but I didn’t like it. Not that I love Visual Studio, which is a bloated mess that gets a sadistic thrill out of devouring your entire hard drive, but I like it enough.
Leave a comment