[Warning: This post will probably read grumpy. I spent 6hrs today just trying to get a tooltip (an already built system) to display for a new spell (also a seemingly already built system). ]
This week I worked on adding the resource/event detection spells as previously discussed. Specifically, the heat detection spell.
It is hard.
Why so hard?
First, I had 4 programmers working on the codebase, so it’s been years since I had to touch these parts of the game myself.
Second, the last major feature we did was an overhaul of combat. That ended up overhauling how spells are defined: instead of being code centric, they are now data driven by JSON to the Nth degree. Two programmers over engineered the solution by miles to allow game designers to do really complex things without “needing programmers”. But the system is so complicated, even at the time we were making it, no one really wanted to touch it. It was hard to tell if this was just being unfamiliar with a new system, or if it just needed a GUI tool to allow creating data in a human friendly way.
Example: These 600 lines of JSON spread across 2 files in a specially named folder define the Fire Light spell, allowing the caster to add the Light buff to themselves. It used to be 3 lines of code in C#. I wish I was kidding.
Further to this, the new system was totally focused on Combat casting. So, besides the ability to cast a Light buff in the dungeon, it didn’t consider anything to do with world casting.
Well now I’m the only one working on it. I have an overengineered system I can’t make heads or tails of and no GUI tool.
This sounds like I’m blaming the previous crew on the codebase, but I’m not. As the leader, I am in charge, it’s my responsibility. The signs were there and I ignored it, because I was busy with other matters.
Leadership is a constant battle of deciding what to focus on and what to ignore. There is not unlimited time. I should have reigned people in and didn’t. This is not unique to me or this project, I’m sure you can think of a work situation where a leader should have stepped in and sorted things out, but didn’t.
To be super clear before you keep reading: I miss my team. They were great. I hope to work with them again.
But there are some advantages of being a solo dev. Call it trying to find the silver lining, or the opportunity, in the situation:
1. No meetings. Ever.
I admit, today, it would have been nice to bounce some ideas off someone. But with no team, 100% of my time is focused on the game instead of meetings clarifying or arguing over things.
2. Singular Vision
I previously wrote about competing voices in our heads, but there are also competing voices on a team.
I try to listen to everyone, evaluate what they are saying more than who is saying it, and make good and informed decisions from there. But as well intentioned and helpful as people are trying to be, they have not played what I’ve played (none of them played Ultima 6, Darklands, ADOM, or goldbox rpgs) or read what I’ve read that inspired this from the first place (D&D and Pathfinder core rule books, Dragonlance, and Ptolus).
I can build what I want and what you the fans want.
I don’t miss the arguments Archmage Rises isn’t fun because it doesn’t play like Hades.
It shouldn’t play like Hades.
3. Confidence
When they were redoing combat, I told them at most there will be 30 combat spells. What’d they do? Create a system for months that easily scales to 1,000+ JSON spells. It’s like turning an aircraft carrier to try and maneuver here.
Did they not believe me? “Oh he says 30, but he’ll change his mind, I’ll make sure it’s super flexible.”
Did they just get caught up in the task and succumb to internal design creep, “Ooh! If I do X, Y, Z, it’ll be even cooler and more extensible. I’ll do that!”
Fear? “If I don’t do this really elaborate and super modular people will think less of me, or we’ll be forced to do it again.”
They could have coded up the spells we needed in half the time, and we’d have a simple system to extend from. That’s what they started from, and now I’m forced to making a simple spells system for world spells completely separate from this combat system.
As the creator I know what is important and what isn’t. I find confidence is what makes me effective as a senior developer – I don’t waste cycles second guessing things. I build just what is needed, no more. Until more is required. Thank you Kent Beck of Extreme Programming for opening my eyes to YAGNI “You Aren’t Gonna Need It!” early in my career.
Final Thoughts
Just because I’m identifying advantages of being a solo dev doesn’t mean I don’t want to expand back to a team. I do. But for now, I’m trying to enjoy the journey for what it is: heads down, building what I want. That’s what got me into game dev in the first place and where this project came from.