Trials, turmoils and AngelScript

Developing a game is the dream of a lot of gamers and enthusiasts. Myself included. Something you don’t really expect is exactly how much work it is. And it very much is work. Now, if you’re a tech nerd like I am then it is very much enjoyable work. I get to experiment with all kinds of neat new things which is very satisfying for my ADHD brain. If I don’t want to mess with programming one day then I might look into texturing or 3D design the next. Or, in the case of Unreal Engine, mess around with cool new features that might have dropped with the latest engine versions. Then there are some days where I just don’t want to do anything, and I’ll really beat myself up for it because it makes me feel like I’m falling behind. It’s important to find a healthy balance between work and life though. This studio and our project are very much in the “Passionate Hobby” category currently. We don’t have any funding and we all have jobs outside of what were making here. So I also work a day job, then come home and work on this studio or project.

It’s fun, I’m passionate about it but I also don’t want to burn myself out. I love this, I love my team and even if we don’t go anywhere or have success with our projects it’s already been such an incredible experience. So to anyone out there trying to follow a similar path, don’t be afraid to take a break. Your mental health is just as important (if not moreso) than your projects. I bring this up because this has been a constant battle for me. There are days or even weeks where I’m extremely hyper focused, spending nearly all of my free time in the evenings and weekends either developing the game or building the studio, while at the same time neglecting myself. Some of my team members have actually expressed concern over the amount of time I’ve put in, so I’m making an effort to do more, but also do less. You know?

You probably aren’t reading this to have a mental health pep-talk from a random internet stranger, so lets talk technologies. Unreal Engine is a super cool, super complicated game engine with cutting edge features. This is good and bad for various reasons I won’t get into right now, but the main thing I want to focus on is the programming aspect today. Programming in Unreal comes in 2 officially supported flavors: C++ and Blueprint Scripting, but are both vastly different from one another. I have a bit of a C# background and have always preferred written programming languages over visual (node-based) scripting, so naturally I was drawn more towards C++. However I’ve also had to learn blueprint scripting due to something called Iteration time. If you don’t know what that is, it’s basically how fast you write new lines of code and see that code come to life in the engine. With blueprint it’s super quick, you string some spaghetti together and hit save, then BAM! It’s right there. With C++ it’s a little different, you write your code or functions, hit save and then… nothing happens. This is because you also have to recompile your code to see it in the editor. But, for that to happen you first have to close the editor (Unreal engine) build/compile your project in an IDE (a code editor) which the amount of time it takes varies depending on how big your project is and how many changes you’ve made. Once the build is finished then you can re-open your project to see the changes take effect.

An Example of Blueprint Visual Scripting in Unreal Engine

This only sounds like a minor inconvenience right? Well, in most cases it is. But sometimes you get build times of 10 seconds, 30 seconds or more. Doing this repeatedly every time you add some new code can really put dent in your productivity. When you’re writing code, you aren’t writing hundreds of lines of code at a time (most of the time). You are usually writing a few lines, maybe a few functions or new classes, but you almost always start small and expand upon it. So when you start writing something new for your game, it’s likely not a lot and you need to test the logic you’ve written many times. This is why build times can become an issue, 10 seconds may not sound like a lot, but you can’t really do anything else that’s productive while you wait for your programs to compile. And again, I’m naturally drawn to written programming languages over visual scripting.

An example of C++ programming in Unreal Engine

This brings me to something new (to me) that I recently discovered: AngelScript. AngelScript is a written language with all the benefits of the iteration times that you get from Blueprint Scripting, without being a visual node-based language. It looks very similar to the C++ code I screenshotted above, while being a bit more simplified. This change is not about how the code is written (though that part of the workflow does help to speed things up as well), it’s about the instantaneous changes being made in-engine after hitting save. The Unreal Engine version of Angelscript is developed by the guys over at Hazelight who’ve made some really cool games like Split Fiction and It Takes Two, so they know their stuff. In order to get AngelScript up and running I have to install a fork of Unreal Engine that they’ve integrated with the scripting language, which means it’s not really an official build of Unreal Engine. That of course has some caveats, it’s not integrated with the Epic Games launcher and if anything breaks I can’t really rely on Epic Games to support me. So I’m going to take it slow with this build, I have been playing with AngelScript to see how good it is, it really is a game-changer like a lot of people online have mentioned.

I’m not a professional engineer so I can’t really wrap my head around the sorcery they’ve pulled off to make AngelScript work as well as it does in UE, but so far I haven’t encountered any issues. It’s a little bit of a different workflow for installing plugins and assets, but it’s not really difficult. Honestly, new technologies that I can experiment with like this really pump me up, so I’m looking forward to using this in my Unreal Engine workflow for the forseeable future. And if for any reason Hazelight stops developing their fork of the engine, well… Maybe Unreal 6 and Verse will be worth looking forward to. But for now AngelScript is working with the current latest version of Unreal (5.6), so I don’t see this being a problem anytime soon. Additionally, People still develop games with UE4, which is also still a really good looking engine… so if I needed to sit on whatever the last valid version of UE’s Angelscript build was for awhile maybe it won’t be that big of a problem for a few years.

Stay tuned for more brain drops.

Next
Next

Hello