Bar teaching, the last two weeks have been entirely focused on Next Game, so I’ve managed to get quite a lot done.
Character movement is essentially ‘finished’. It’s pretty nippy — Quake 1 fast, in fact — but it feels nice and responsive, at least to me… Rocket Jumps will be featuring heavily, so spending the time to play around with this in order to get height and distance nailed, was essential. Changes from here-on will most likely be tiny number tweaks, so I’m at the point now where I feel safe to begin white-boxing levels.
The player’s inventory management is also working. You can cycle through weapons, pick up armour and health, as well as take damage. Armour modifiers still need to be added, but I know exactly how these will operate.
UE’s weapon and projectile systems took me a while to figure out, but I do now have 3 basic types that should cover most things:
- Projectile based: rocket launcher / nail gun, stuff like that.
- Instant shot: Pistols
- Instant multi-shot: Shotguns.
Weapons have individual fire rates, can spawn splash damage areas and their damage can attenuate over distance. The only thing missing that you might expect — especially if you play something like COD — is projectile penetration. I’m toying with the idea of adding this, but right now my guess is that it’ll be pretty useless within the sort of levels that I intend to create.
None of the weapons have been properly setup atm, as that’s something I’ll do once some NPCs are in. I need moving targets to shoot at!
I’ve also had a crash course in the localisation system, configuring animation blueprints, playing audio and have dipped my toe into Cascade again.
For the most part the last two weeks have been really productive, but I’ve been badly burned by a couple of things. One of the worst was discovering that UE4 types get garbage-collected quite aggressively. If, say, you have a TArray of elements but don’t add the UPROPERTY() macro above their definition, then at some point they’ll disappear from under you. It took me a few hours to work out exactly what was causing the crash and why, as it was appearing fairly randomly — and taking the editor out with it — but like everything, it’s completely obvious once you spot it.
I’ve also learned the hard way that Play In Editor — PIE — masks a certain type of class initialisation bug. Stupidly, I had a set of FText variables defined outside the class (they were static char arrays at first) which compiled perfectly fine, and even ran in the editor, but cooked builds would immediately crash. It took me a couple of hours to realise that it wasn’t my Anti Virus, or some auto-build failure, but UE4 barfing when trying to initialise the variable before the engine had started up. This was happening before the splash screen was appearing, so I wasn’t even getting a log to help… Again, totally obvious once you spot it.
I probably lost a day bug hunting this stuff, so I’m a little behind where I wanted to be this week — ammo pickups are half done, and weapon pickups haven’t been started — but I’m basically at the point where I can play around with some look and feel tests, and maybe start white-boxing some spaces to run around in. I’m also growing in confidence with the engine and my ability to at least fix my own fuck-ups, so it’s probably a net win…
I’ve added a little video to my You Tube channel, for those who want a quick peek. It should go without saying that none of the assets in this are final, or even likely to appear in-game. It’s made up of bits and bobs from Lumo and UE4’s example assets, that I’ve thrown together to get the code working.
Although I did lose a good chunk of time over Xmas playing with the lighting and post, just to see how it worked ;D