Game Design, Programming and running a one-man games business…

Challenges and Mods and Expansions

One of the arguments against expansion packs for games is that they ‘split the community’ It’s a real fear, and it’s one that Company Of Heroes solved cunningly by patching the content for everyone, but only letting purchasers play with those units. That might work for GSB, allowing people to fight against enemy fleets from another race, but not be that race themselves, but that is a bit of a major project for another day maybe :D

When preparing the way for the games expansion pack, I’ve put a lot of time into making it as flexible as possible, in the hope that players will be able to add content and mini expansions of their own. Everyone has their own ideas on what spaceships look best etc, and I’d love to make modding GSB really easy. To that end, the expansion has been a great ‘test case’ in that it forces me to make add-on content easy and modular.

One of the things involved was support for multiple distinct directory structures for add-ons, which is already done. The second big issue was challenges. People with the new fleet will be able to upload challenges, but obviously people without it can’t play them. A method was needed to tag challenges with the names of the installed expansions (or mods) and let the client check them against what is installed locally. This has all been in for ages, its just been dormant. Now, there is finally a UI for it on the challenge screen (in the next patch). Here it is:


Basically the game lists a checkbox for each installed mod or expansion pack, and defaults to them all being on. Any challenge you submit is tagged with them all, unless you untag them on submission. This way, unfortunately you can tag them wrong, and upload a challenge which will crash if the player doesn’t have the data, but you would have to deliberately do that. What it does allow you to do is to still issue ‘basic game’ challenges, as well as ones with new content. More importantly (and the reason its not an automated file compare thing), is the ability for anyone to create a mod, give it a user-friendly name, and upload challenges with it in, which will flag up a notice explaining what’s missing for people who attempt it.

I’ve probably explained it really badly. In any case, that screenshot is of my test case with 3 packages installed locally. Thoughts?


10 thoughts on Challenges and Mods and Expansions

  1. I wouldn’t trust the modder to tick the right things. Not that I think they would be vicious, but just to reduce the number of things they have to worry about. In most cases, if they post the mod, someone is going to tell them they missed something rather quickly, but I would think you’d be able to scan the mod for resources used, then automatically tick the ones that use it. If you want to get fancy, give a list of which expansion things are used so they can decide if they made a horrible mistake.

    I’m interesting the “Tentacles Expansion Pack” though. :)

  2. I considered that, but if you do file scanning that assumes that modders have only added files, rather than changed them. I’d like to support mods where people have actually changed stuff too.
    I’m sure in 99% of cases it wont be a problem, and its better than the current ‘good luck’ style system :D

  3. Generally you have to code on the assumption that user input is stupid, malicious, or both ;)

  4. Thats true, but GSB is different. The very worst case here is that things work exactly as they are now. What this will do is in cases where someone buys an expansion or installs a mod and then submits a challenge to ‘All’ containing new content, and where someone without that content downloads and runs it, the game will not crash but explain what happened.
    Granted, in a perfect world the game would know exactly what CRC of what file applied to what mod and auto-tick those boxes behind the scenes etc, but that’s a ton of work for a very small number of cases.

    Anyway, I’m patching today, lets see what people think. It will be a while until there is an expansion or mods that use it anyway :D

  5. I too think automatic is the way to go, at least for packages that are required to prevent game crashes. Here’s how it can be done:

    When each module, hull, map, sound effect, graphical element or whatever is loaded from its data file, the internal data structure should be given a tag that identifies what package it came from. If the module is altered or replaced by a later one, the tag would change. When a challenge is posted, it should check the tags used on the scenario and ships and require all the packages they come from. Other packages that are installed can be optional.

  6. It needs to be automatic, and “crash” cannot be a possible failure mode. You’re setting yourself up for pain.

    And if you’re designing the game itself to be moddable, you really desperately need some kind of CRC or signature system to prevent those same crashes.

  7. What you call “one that Company Of Heroes solved cunningly by patching the content for everyone”, I call “a 1.9GB patch before I can play, for changes I can’t even see”. Please don’t do that! :)

Comments are currently closed.