It’s amazing really how much of a rabbit hole coding can be on occasion. You write a thing, you have an idea for how it could be better, and that needs you to write another thing, which opens up another door, which ends up with you writing a cultural sensitivity handler to support the crafting of shoes.

Let’s roll that back to examine the chain of events, because I think it’s quite instructional in how game development can so suddenly and violently explode in scope.

I was writing our schematics generators – they’re coming along pretty nicely. At the moment we have 1,000 schematics that will be generated by a run of the initial config data. By the time we patch, I would expect it to be about double that. As part of the generation, I was thinking about how to best handle ‘ornamentation’ on equipment. For example, I want it so that if someone makes a helmet they can choose if they want it plain or if they want it with dragon wings on the side or a skull motif or whatever. That’s something the system already does, so it didn’t need any extra coding. However, I was mulling over the best choice of skills to use – as you probably noticed, many schematics have a blend of skills – you need to know how to fight with sharp weapons to make a good knife, for example. It struck me how there was no skill that was really appropriate for someone who wanted to make things that were purely ornamental. As I discussed in the last post, I’m not a great fan of adding in skills that have no real in-game utility just for flavour, but I had a thought about how I could bridge the gap through the use of an ‘aesthetics’ skill.

So I started work on a simple new system that I was thinking of as ‘art appreciation’. We’d put in place works of art, sculptures, paintings and so on and we’d let people ‘appreciate’ them for a TM chance, a little XP boost, a resolve boost, and occasionally an ‘inspiration’ boost. The latter was already added in line with the last post on the topic of consuming schematics, so it seemed like a nice way to double down on that system to give it a bit more flexibility. I wrote an inherit for works of art, and made it so that a work of art could be made up of several interesting parts that you could appreciate because I was thinking down the line to when we allowed for craftable paintings and the like[1]. And that made me think ‘So, how would I differentiate between multiple parts of a work of art’, and then I thought ‘Well, each part could give a different TM chance’. That needs each part to have its own distinct profile though, and I was at the same time mulling over the idea of a distinct set of cultural skills. And then it struck me how to add in the skills and still make them meaningful:

1) Some schematics would require a certain level of cultural knowledge to make. You can’t make a Katana unless you’ve got a fair grounding in the culture of the area. I didn’t want this to be too restrictive, so I used a standard geographical cultural grouping and added in six cultural groups.

2) The art system by itself wouldn’t really give enough reason to pursue the skills, and their use in crafting would likely be too situational to warrant an investment of effort into building up them up.

3) But, hang on, don’t we already have a place in the game where cultural sensitivity might be an issue? As in, don’t we have masses of NPCs all with their own nationalities?

And there came the flash as to how to make these new skills both useful in crafting and worth developing for their own purposes – by incorporating them into the attitude system that we already have. We’ve had a ‘greet’ command since the very early days of Epitaph, but all it’s done is have the NPC spit out a little bit of conversation. Now though, it’s going to be a ‘free’ way of getting an immediate attitude boost through your command of the relevant cultural skill. No need to bribe, or threaten, or charm if you don’t want to – large enough levels of cultural sensitivity will mean you get those as passive benefits. Not to the same extent, but all it’ll take is a greeting. As you know, attitude has a reasonably meaty impact on how NPCs deal with you – it reduces cost of training, improves the cost of doing business, and a few other things. It’s a meaningful system in other words, and makes the skills genuinely useful in the game too, but not so useful that the obsolete they existing attitude adjustment commands. And coming full circle, it then means that I can have schematics that need you to be experts in African culture to craft, which in turn permits a greater degree of specialisation in what people can meaningfully create.

I didn’t realise I was going to do any of this when I sat down to start coding today, but games are notorious for the ease at which feature creep can take hold. For those unfamiliar with the term, it’s the generalised impulse to keep adding new things to a piece of software without being mindful of the additional cost and complexity. All software suffers from this to a certain extent – that dreaded ‘wouldn’t it be cool if our software did this…’ suggestion. For some systems, it’s a minor danger – it’s unlikely when writing a warehouse management system, for example, that people will be incredibly enthused by a suggested new feature. Games though are creative, and it’s fun to work on them. ‘Wouldn’t it be cool if our game did this…’ is a warning klaxon for game developers, because it almost certainly *would* be cool. For a hobbyist game like Epitaph of which I have no expectation of ever making a penny of income, the only thing that matters in the end is that we enjoy developing. ‘Wouldn’t it be cool’ genuinely can be reason enough to do something, which means that feature creep is an issue that is constantly showing its fangs.

Still, I’m pleased with how this has come together, unexpected as it is. It’s not a gratuitous ‘implement for the sake of implementing’, but a coherent way of addressing an issue that I had been mulling over. It’ll need a fair bit of stitching to incorporate it properly into the game. For example, players will now need to start with a certain amount of cultural skill based on their nationality, and that’ll need to be honoured for players who have already selected a nationality before it became an issue. That’s either something to handle via a login update, or perhaps allowing people to reset their nationality because it meant something different when they chose it. That’s all up in the air – I’m as surprised as anyone that the system was coded today. I think we get a lot out of it though and I have ideas for how it could further support other parts of the game.

But that’s why cultural sensitivity is going to be important when you’re crafting a pair of shoes.

[1] Because that’s coming at some point.