This Deepvelopment Monthly post will cover my work on Deep throughout June 2015.
I’m really sick right now, so you’ll have to excuse me if I’m a little less thorough than I have been in past months. Sorry!
Thin Platforms -Glitch
First of all, in April’s post, there’s a video where you can see that some of the health that came out of the defeated enemy actually falls through the thin platforms. Whoops it definitely wasn’t meant to do that!! Anyhow I fixed that one this month.
New Customization! -Content
This is a big one! A little while ago the arrow keys on my keyboard broke so I couldn’t test Deep properly. My quick fix was to change the game’s controls to let you use the numpad for movement, and that obviously worked fine, but the real solution to these kinds of problems has been implemented this month:
Yep, that’s a menu for Custom Keybindings!! You can now set the controls of Deep to whatever you feel like. The menu design here isn’t quite finished yet, but it works! The little letter key icons on the HUD will change appropriately too, and even the robot’s in-game dialogue to explain the controls will update itself to use the keyboard key you’ve selected.
Boss #2! -Content
So I promised to never spoil game content in Deepvelopment Monthly, so I can’t talk too much about this, but it deserved a mention since it took up quite a bit of time this month! The second boss is well on the way to being what I consider ‘complete’, and I have a tonne of fun playing against it. The aesthetics and polish aren’t quite at the level of Bandit yet so we’re not all the way there, but it’s fully functional. I will say that this boss is very jungle-themed, but maybe not in the way you expect!
…And back to Boss #1 -Visual
In the last update I mentioned that Bandit would be a very dynamic fight, involving the changing of the arena mid-match! I don’t want to go into too much detail about how this comes into play, but I finished polishing the visual effect for how that looks, and I’m really happy with how it turned out, so here’s a .gif!
Lag Reduction -Programming
One of the best things about coding a game’s engine from the ground up in a language like C++ is that you’re entirely aware of everything your program is doing. There aren’t any mysterious processes running in the background or function calls you use without really understanding them. This means that when your game starts experiencing slowdown, it’s much less of an ordeal to track down what’s causing it and find a faster way of performing whatever task is at fault. In Deep, when I want to perform some kind of action on any entity, the game has to figure out where in the big list of entities it is. Since my entity list is generated dynamically as the game runs, it’s in no particular order, and I can’t just always assume that the Player entity for example is the first item on the list, or that the Boss is the second or anything like that. I use a system called Tagging, wherein every entity has a unique ID Tag number that I can keep track of separately. To find an entity on the list, I just have to write code that performs a scan through the list until it gets to an entity that has the ID Tag I’m looking for! But if I’m having to do this multiple times every single frame, it can be pretty slow. So this month I spent a bit of time streamlining the process. In this new system, there’s a special check value that recognises if the list has been reordered in some way since the last scan. If it hasn’t, the scan just jumps straight to where it last found the Tag for that particular entity! It’s only a minor time saver for each individual scan through the list, but it certainly adds up when there are a lot of enemies, projectiles and other fun stuff going on on the screen.