It’s been a pretty okay week. I fixed a bunch of bugs in the entity system, particularly in saving/loading data, and I decided after much deliberation that ‘EntityPrototype’ wasn’t actually a very accurate class name so I refactored everything to rename that to ‘EntityTemplate’, which is a much more apt analogy I think. I made it so entity animations can be manipulated in terms of coloration, size, and rotation, I made it so player attack entities properly sync up to the player’s movement, cleaned up animation files for easier reading and editing – some changes and improvements, but largely a lot of housekeeping.
One big open question I’m still kind of sitting on is how I want to handle enemy death animations and other things that happen after they are reduced to 0 health. Do I want them to create another entity which plays the animation? Do I want them to go into a state of hibernation while the animation plays? What about for the player’s reaction to damage/failure? I’ll need to figure all this stuff out before I can make enemies suitable for the release version of the game, which is still obviously a long ways off but which I definitely need to start thinking about seriously when working on the code base.
Anyway, I decided to set all of that aside to work on a controller input system. This is one feature I definitely want to have working, and it will make it feel a lot more like a game just having this system up and running. The main issue is that there’s just no unified input system, and it’s barely worth it to get it running for just the controllers I happen to have, so I’ve been putting a lot of work in the last few days trying to devise some sort of way to unify all of my game inputs. Towards this end, I’ve created a VirtualController system: These are abstracted virtual inputs, which may have an actual physical controller behind them but can also be used for keyboard or mouse inputs. They should be able to handle any controller layout, with the caveat that that layout will need to be hand-coded into a file beforehand. I may make a small tool to do this for different controllers and send that out as a survey if necessary, since I don’t know of any kind of centralized database of different controller layouts and how they map to the logical inputs. Regardless, I should have it up and running for at least my own personal use within the next day or two, and I can expand it from there.
This last point doesn’t have anything to do with EverEnding’s progress exactly, but over the last few days I’ve started watching Handmade Hero and it’s done wonders for my motivation. Handmade Hero is an ongoing livestream and series of videos where a veteran game programmer builds a complete video game, running from low level C code, and streams its development. Though I’m familiar with a lot of the principles, I still feel like I’m learning a lot about where the metal meets the rubber, and it helps me get my energy and focus up to work on my own project. I highly recommend checking it out if you have any interest in games programming, though I’d recommend at least an entry-level programming background.
I’m hoping to have controller support and attack registration completed by next week, and a good handle on the aforementioned problem of entity death/animation/respawning/et cetera. Not sure what I’ll tackle after that, but I have a few days to figure it out.