Thursday, August 28, 2014

Knowing is Half the Battle

One of the many challenges with game development is that you don’t always know what game you're making until you're halfway through. Sure you have an idea what you're going for, but once you start bumping up against technical and logical restraints, or just learning that your core experience isn't what you had hoped, plans start to change. Unfortunately, some of the foundation you've built is now obsolete or poorly suited to the new task. This is why a lot of game series don't get really great until a sequel or two; by that time around, devs have a much better idea what their systems need to do.

We're experiencing this phenomenon with Hellenica in a few ways, one of which is the problem of party knowledge influencing branching dialogue.

When we first started writing dialogue variants for specific paths the player had taken, we simply checked which social hub the player had visited at a specific level. The writer would know what story events had happened in that path and edit the dialogue accordingly. While this was effective, it began to get complicated when multiple paths would converge into similar dialogue.

With rumors, the complexity got worse. Not only would we need to account for multiple paths that could lead to the same dialogue, we would need to do so across the whole range of locations the rumor could occur in.

Our solution to this is to use what we're calling "knowledge details" to track important story information the party has learned and branching dialogue options off of these variables. It doesn't matter on which path the party learned the true nature of the mysterious shipments arriving in Sparta, if that variable is set, they know about it and will comment appropriately. This frees us from the need to track a web of paths as mentioned above. Unfortunately, over half the game has been written and implemented, so we're only retroactively using knowledge variables when it's critical. And even there, I'm scared I'll forget that some bit of knowledge should have been set in a social hub I implemented months ago, and a branch won’t play properly...

Ah, the joys of game development.

No comments:

Post a Comment