Approaching Galavant's Two-Year Dev Anniversary
Galavant's GitHub repository was created October 17, 2015. This means the two-year development anniversary is coming up.
I find the fact that I've been working on Galavant for two years both upsetting and acceptable. It is upsetting to me because it doesn't seem like I've come very far. It is acceptable because of my approach to working on it. I have only worked on Galavant when I have wanted to, which means long stretches of time occasionally pass before I feel compelled to pick up where I left off. The advantage of this approach is that it makes it harder to get burned out by a project. The large disadvantage is the slow rate of progress if you don't often want to work on the project.
My sporadic development approach
I am a professional software engineer by day. Work takes a lot out of me. I rate my own comfort and relaxation as more important than a strict development schedule.
To give you an idea where I'm at:
- PLog had to be discarded due to memory allocation fighting with the Unreal Engine setup. I ended up writing my own C-style string only Logger with feature parity in a couple hours. This proved to me that PLog was way more complicated than it ought to be (update: I ended up throwing out PLog. It's ridiculously overengineered)
- Agents have gotten to the point that they can get hungry, set a goal to find some food, formulate a plan to find food, follow the plan to the food, pick up the food, and eat the food. This is the core of Galavant's AI design. By piling up needs, resources, and actions, emergent behaviors will result in agents having diverse and hopefully interesting interactions with each other, the world, and the player
- Combat has begun development. I haven't thought much about what I wanted from the combat system in Galavant. I know for certain that I want it to be relatively fast-paced, unforgiving, and more on the realistic side than the game-y side (i.e. you get hit in the head with a sword, you're dead). Chivalry has been a big source of inspiration for me recently. The current state of combat is that the player can use an attack, animations are played, and different CombatActions can be created, but they don't actually do anything yet
- I've added a simple procedural world system and Actor/Entity LOD management. This is the structure which the infinite world will be built upon
- The Entity Component System has gotten several small revisions. I've been refining and refactoring it to minimalize boilerplate
The big target I'm after now is getting Combat stood up. Agents, needs, inventory, items, equipment, and numerous other systems will all be involved in getting it ready. I'm going to hold off on world generation, building, and such in favor of working on fundamental gameplay interactions (like combat, needs, and managing inventory).
My goal is to turn this tech demo into a game that can be played. Here's to another two years!