I’m a step closer to branching into <._FLANK/>, with external data loading almost ready.
While I’m pretty beat from horseback riding yesterday, I do have enough energy to put some recent ideas down and continue brainstorming. So, this post is going to be about prototyping and the role <._FLANK/> is going to play in the larger development of Marpeg as a game and Colivien as an engine.
A Word On Protoyping
Prototyping in game development is a bit different than in engineering terms. When we talk about prototyping in games, it’s more of a trial-and-error method of seeing what works well and what doesn’t. Alpha and Beta development is more analogous to engineering prototypes. Onward!
I’ve come up with a couple small ideas during downtime that I’d like to play with. I know a lot of young, budding developers will keep their ideas to themselves because they’re worried someone will steal them. There’s an article on this that I encourage everyone to read, but for now suffice to say that I don’t care to share because these ideas can only improve text-based games anyways. If someone ‘steals’ the idea or feature, then so be it. Spreading it around can only make the genre better-equipped to tell stories in an interesting way.
The first is to put the player in a non-hero role or to take that hero role somewhere it doesn’t usually tread. Companions and followers in most games are often watered down, underwhelming and boring to interact with. Instances of even half-decent buddy AI are few and far between, but there are examples to draw from.
One half of the buddy AI issue is the sole reason that <._FLANK/> has four characters, but only three of them are playable. The fourth character is the main character. He’s the best overall of the team and is calling the shots. If the player tries to push against his orders too much, he’ll question their loyalty and will become hesitant to assign them more important tasks. This may be an unorthodox arrangement for the player, but I feel like it could lead to some very cool experiences. For <._FLANK/>, this isn’t an optional set up. However, Marpeg will not often force the player to be stuck where they don’t want to be. For roleplayers, this could be a fun exciting feature though.
The other half of this dichotomy is to put the player into a lead position, but to do a better job than is standard. Similar to Last of Us, the player may come into the position of having to watch over a weaker or less capable character as well. There are plenty of instances in which this has gone horribly wrong.
One scene in Sniper Elite V2 comes to mind in which the player is presented with a character he must save from execution, which alone was a new challenge in the game. Once freed, the character even remembers to grab a gun before taking cover. As the character moves through the buildings and down the street to safety, the player is presented with a line of fire that the ally rarely, if at all, obstructs accidentally. At one point, while I was reloading, a couple of enemy troops rushed into a room the buddy AI was moving through. I thought the AI would crap out on me, but he actually killed them both pretty effectively and without it looking stilted in the way a scripted kill would have.
I also played with a mod for Skyrim that added a lot of interest to the followers. Of course, having 5 buddies along meant I’d crank the difficulty up to Master to keep it challenging, but it was one of the coolest things to have a few projectiles whiz by and kill an enemy as I was rushing ahead or to be volleying at larger enemies. The mod even rewarded the player for having effective allies by dealing out ‘Synergy Points’ when an ally fought, allowing my character to progress even when his buddies were snagging a lot of the kills.
Real Time Decision Making
One of my biggest pet peeves in text-based games is how everything comes to a stand still when you aren’t doing anything. Now, not everyone types at sixty words per minute zero errors, so I’d have to make a way for the game to calibrate to each player’s typing skill. Regardless, the method is to have characters act upon environment stimuli in real time. If the player moves into a room and then stops doing anything, an enemy in the room might get the drop on them.
Because the game messages are already very concise and relay only the necessary details to the player up front, that shouldn’t cause issues. However, typing is another thing. The commands may be short, but I still planned tweaks in case a bit more time was needed, such as halving the speed at which the other actors make decisions while the player is typing, along with considerations for any exploits in that system.
To enhance the feel of the game worlds and experiences made with Colivien, I wanted to experiment with subtle, background ambiance as well. Just because a game lacks visual interface doesn’t mean it shouldn’t include some ambient sound or subtle background music. Use of sound like this with no visuals can have a more powerful impact alone, given the correct sounds are used with good judgement on the situation.
Better Tracking of Character Relationships
In order to fulfill the goal of having deep, rich character interaction, I’ll need a method of tracking each character in the game and how they feel about every other character they meet. My initial instinct was to organize it similarly to how a physics simulation is modeled.
I’ll use the image below to extrapolate. Each dot is a single character, containing data on personality, strengths, weaknesses and such. Each line is a stored relationship. It contains more detailed information on how each character feels about another. Each character stores a different map of lines than the other. So, one Farmer Erin might be rather unhappy with Farmer Fran right now, but Fran might not even know that something is amiss between the two.
The filled polygon represents of group of characters who are associated with one-another.
The brighter lines in the center show the leader of each groups’ relationships with each other, giving a baseline representation of each groups’ feelings.
This can become as detailed and complex as I want to go with it, depending on how in-depth it needs to be to deliver the desired experience. I’m not going to map every characters’ secret crush if it won’t effect gameplay, but I’d rather go too far now than not far enough.
For example, I could keep track of each and every character’s relationship with each and every other character, but that feels almost too much for now. I could drop characters into an ‘Ungrouped’ pool that does do just that and then move them into the smaller groups as needed, to keep things tidy.
That’s all for now. What do you think? Should I experiment with these unorthodox features in a text-based game or just stick with what’s already proven?