I recently wrote a post on probabilities in the game “XCOM: Enemy Unknown”, in particular for the rapid fire ability. Lots of the discussion around the article (and XCOM in general) was about randomness, and pseudo-randomness. There’s an interesting post to be written about subjective observation of probability, but I’m interested in a practice known as save-scumming: repeatedly reloading the same saved game until you achieve your desired result (especially in a luck-based game). To do that, I first need to explain a bit about how randomness in games work.
I’m Soooo Random!
To implement a game like XCOM with a chance of a shot hitting, you can use a random number generator. If the shot has a 63% chance to hit, you generate a random number from 1-100, and if it’s less than or equal to 63, it’s a hit (this way, 63 of the 100 numbers will correspond to a hit). In the real world, you might roll a 100-sided die. But computers can’t roll actual dice, so they either need to use a hardware random number generator, e.g. measuring electrical noise inside the machine, or use a pseudo random-generator (PRNG). A PRNG has a current state from which it can generate the next “random” number. If you know the state, then by definition you can know the next number, but otherwise it appears random to you. For the purposes of games, a PRNG with unknown state is observably just as random as a hardware generator.
So then: implementing random shots is easy. Initialise your PRNG’s state using the time when the game starts, then when the user chooses to fire a shot, generate the next random number and decide whether the shot hits. But maybe the shot misses: the chance was 85% but you generated 93, meaning the shot misses. The player is annoyed: they wanted the shot to hit! So they have an idea: reload the game and try again. The PRNG state was altered by generating the number, so the next one is different: 41. A hit! The player is happy this time, and plays on. If they save before each shot, and are perseverant enough, they can now make any shot in the game a hit. It’s cheesy, but as players we’ve probably all done similar at some point. This technique is known as save-scumming.
So what can the designer do? I think the only perfect solution is to disbar reloading: the Ironman mode in XCOM has one save file per game, which is overwritten every time anything happens in the game. That’s probably the best solution, but it has downsides: accidental clicks in the game (I’m looking at you, XCOM’s wonky camera control) are permanent, corrupted save files are now hellish, and some players find Ironman too restrictive. In the rest of the post, I’ll explain alternate solutions.
Remember that the next random number is dependent solely on the PRNG state. The reload “exploit” works because the PRNG state is different every time the player reloads, so the shot result differs every time you reload. But it doesn’t have to: what if you save the PRNG state in the save file? That way, every time you reload and take the shot, the same next “random” number will be generated, meaning that reloading is futile. This is using the property of the PRNG in our favour: by taking advantage of the hidden determinism of the PRNG, we can make sure that a reload doesn’t affect the result of the shot. So that seems like a solution to save-scumming: save the PRNG state.
XCOM definitely saves the PRNG state. I have a save file in the first mission on impossible, with one soldier able to take a 45% shot — every time I reload it and fire that shot, it hits:
Unfortunately, our solution isn’t as sound as we would like. The PRNG state is saved in the save game file, and next time a random number is generated, it will be,say, 93, and after that will come 32. The player doesn’t know this explicitly, but they do have the ability to reload. Inevitably, the player notices that every time they load that same game, their 85% shot misses. So they reload the game, and try a shot with a different soldier, who has a 65% chance. The 93 is secretly generated: still a miss. Frustrated, the player tries the original 85% soldier again: this time, the 32 is generated — a hit! So the player gets the idea that the first shot they make seems destined to miss, but the second will hit. So they reload the game, take the first shot with a spare soldier who’s far away, then take the second shot with their most powerful soldier. So our supposed solution, saving the PRNG state, won’t completely protect against reloading.
XCOM has this problem. In my save game, I have two soldiers with 45% shots that always hit if I take that shot first. With my other two soldiers, I can move to take a 42%, a 55% or 60% shot that will also always hit. However, several 25% shots, a 32%, a 38% and a 40% shot always miss when taken as the first shot. Therefore, my next random number from the save game generator is either 41 or 42. Scientific save-scumming:
What can be done about the reload-and-try-someone-else problem? One solution that comes to mind is to individualise the odds. To avoid letting the order of attempted shots matter, at the start of each turn, you could secretly assign a random number to each soldier (for each type of shot). So the 85% soldier gets assigned 93 in secret, and no matter which order you make your moves, that soldier will always miss on an 85% chance. So the player loads up the game, tries the shot… and misses. They reload, miss, reload, miss, and pretty quickly they realise that this shot is literally destined to miss. So they don’t make that shot: they move the soldier into hiding and try a different shot with a different soldier. With a bit of patience, the player can know exactly which shots will hit and which won’t. This effectively removes all randomness from the game, and replaces it with a sort of deductive meta-game where the player has to figure out which shots hit, which miss, and plan accordingly. It might be sort of fun, but it’s not the game that the designer intended!
XCOM does not do this. If I shoot once or twice with other soldiers and then try my 45% shot (which always hits as the first shot), it misses. Also, it matters whether the first shot hits or misses: a hit presumably consumes two random numbers from the generator (one for hitting, one to decide whether it’s a critical hit), whereas a miss consumes one number (for hitting). If I make a hit with the first shot, the result of a given second shot is always the same — but it is different if I miss with the first shot.
Mitigating The Problem
I’m not sure the reload-and-try-someone-else problem can be completely solved (except by banning reloading) without another exploit popping up. Two mitigations spring to mind. One is to make reloading annoying enough that the player won’t do it so much (more splash screens! annoying voiceover every time!). Hmmm, not ideal.
The other mitigation is to individualise the random chance. Remember that our original algorithm was to generate a number and see if it’s less than or equal to our percentage probability. If you generate a 97 as the first number, then pretty much every shot will miss, and the player can easily detect this.
Instead, for each shot, you can decide a set of numbers (for the programmers: e.g. by hashing the player and turn number) that will count as a success. Let’s make this simpler and say each shot has a chance out of 10. So one shot might have a 4/10 chance. Instead of generating a number from 1-10 and seeing if it’s less than or equal to 4, pick 4 numbers out of 10 for that shot: say, 1, 6, 8, 9. If any of those come up, it’s a hit. Meanwhile, another shot with a 7/10 chance, will be a hit on 1, 2, 4, 5, 6, 9, 10. If the next number is an 8, the 4/10 shot will hit, but the 7/10 will miss. Thus from the player’s point of view, the order of shots can still affect which ones miss and which ones hit, but not quite as simply as before (i.e. the first shot can’t always be destined to hit or to miss). This would make save-scumming harder.
I’m fairly certain XCOM doesn’t do this, based on the analysis above. I have five shots above 42% which all hit when taken as the first shot, and about seven below 40% which always miss as the first shot — the chances of this being the case with the above mitigation would be incredibly slim.
So, save-scumming is a hard problem to fix, without Ironman. Even without reverse engineering the code or the save game file, we were able to work out what must be happening under the hood, and with unlimited reload, it’s possible to exploit this. But ultimately, players can do what they like with their single-player game — I grew up playing the original XCOM (well, TFTD) by borrowing someone else’s hack of ASCII-editing the save game file to give myself piles of money. Those were the days…
A follow-up post discusses people’s perception of probability, and what can be done about it.
Comments on: "Randomness vs Canniness, or Programmers vs Savescummers" (52)
^^ good stuff.
This was a really interesting analysis and academic exercise. That said, I think there is a limit to how far you can go to stop people who really want to exploit the game to achieve a better result at the expense of their fun…
The idea of fighting save scumming by making reloading flat-out annoying was actually implemented! Animal Crossing for DS has a character named Resetti that gives you a long, unskippable lecture, complete with forcing you to type in “I’m sorry”, when you reload.
Every time you load the game normally, it writes to storage saying that you have an active session. If you turn off the game without saving, then the next time you load, the game spots the active session that wasn’t closed and sends in Resetti. Sometimes this happens by accident, because your battery ran out or so forth, so the severity of Resetti’s lectures increases every time you see him.
Since Animal Crossing is a game entirely about finding random stuff, and because it’s not a skill-based game so Ironman mode isn’t appropriate, this seems like it just might be the optimal solution in this case.
Hah — love the idea of having to type in “I’m sorry”.
This is exactly why I stopped playing Animal Crossing – That bloody mole popping up every time my battery went flat.
Or you could discourage it with an added constant, contingent on the number of reloads in the past 24-ish hours… so for instance, if it’s your first load/ continue of the game you saved and quit last night, there’s no added ‘penalty’ score to the shot, so the algorithm [ “roll” + (n * 10)], for a roll of 40, would be [40 + (0*10)]. The first actual ‘reload’ would give you [40 + (1*10)] = 50, followed by 60, and so on, until after enough reloads they cannot hit, no matter who they switch to.
This way, a really horribly unlucky roll could be ‘passed’ to someone else, but if you try to continue doing it within the same day, you’ll either be screwing with your system clock to avoid penalties, or eventually finding that it’s impossible for any of your soldiers to hit anything (after 10 reloads).
More of an evil scheme to frustrate save scummers…
Hey, nice post, and nice blog as well!
Regarding save-scumming, I remember that Commandos 2 used a very interesting mechanic: when you finish a level, the amount o times that the game was reloaded is used when calculating you final score and rank.
This kind of mechanic is interesting, however it only discourages the behavior rather than solving the problem. In the end, the player is still capable of beating levels and progressing on the game by save-scumming, even if with a lower score or with less benefits, so this solution alone might not be enough.
Maybe it would be possible to achieve better results by mixing some of the solutions that you described with some other design elements like the one that I mentioned. Who knows, just some food for thought. 🙂
PS: I couldn’t find a RSS button, is there a way to subscribe to a RSS feed? Thanks!
For RSS: https://sinepost.wordpress.com/feed/ Interesting-sounding mechanic!
I had heard rumors that Firaxis included some code in Civ’s PRNG to mitigate perceived “streakiness” in the random numbers. I wonder if XCOM has the same?
Another mitigation method would be to use separate pRNG state variables for each of the squad members (and possibly enemies) in the mission. This would not be all that expensive as the state for a pRNG is not usually that large.
The effect of that would be similar to the “Individualised Odds” section, though if you found that a certain soldier was going to miss next, you’d need to “burn” that miss by firing a shot, then shooting again. But knowing that you would miss, you could withdraw before burning the miss. As you say: mitigation.
What if the state was set at the moment you click “fire” and was based off reading the computer’s internal clock, say, grabbing the seconds?
That would be equivalent to the initial state of the PRNG being set by the time: you could surely just reload and get a new state.
Why is “save-scumming” a problem for the designer? By that I mean, if we are talking about X-COM the game is fun, from a player perspective, with or without Iron Man. If a player wishes to do “save-scumming” then that is their choice. That does not effect another person’s game. It seems that “save-scumming” is not a problem at all, but a preference that effects only the players that prefer it.
Couldn’t agree more!
I don’t count ‘save-scrumming’ as a cheat. In fact I don’t think it makes sense to talk about cheating in a single-player mode at all (who would complain that you is cheating in your single player game? – it’s your choice).
To me, the solution seems to be to get rid of the random. Frozen synapse did this to great effect.
By the way, you can reload in ironman too, if you want something else to happen. Just close the game window in the task manager after alt-tabbing. The game only saves at the beginning of each turn so the thing you did in your current turn can be reversed.
Obviously I chose ironman not to do this but it’s great to cope with some horrible game bugs like being adjacent with an alien who is still in high cover (and you are flanked).
If someone chooses to use “save-scumming” in a singleplayer game, why should anyone else care?
How does that negatively affect anyone else, and who are they to deign to tell others how to play a singleplayer game?
Sure, it may make the game easier than intended, but we’re all individuals, and if someone decides to play in that manner (which some may argue undermines the fun of the game), then that is the choice they have made.
That’s an interesting question with a pretty subtle answer. I don’t think it’s about any harm it does to non-save-scummers by there being people who actually enjoy savescumming…to each his own. Unless there’s some sort of leaderboard involved, which obviously would lead to a race to the bottom.
I think it’s about the harm of the extra cognitive load for people who don’t want to savescum but realize that it’s an option and one that makes sense in terms of their “fiduciary duty” towards winning the game. But it’s obviously a cheat that makes most people feel lame as a game player. So if the designer can find a way to fix the game so that you don’t have that temptation dangling in your face and can focus on winning the way they intended, that seems like a good thing. That last solution, where you randomize the randomizers, is awfully clever.
I’m on, like, my 15th attempt to win Iroman style. And … cant. I always get to a point one mayor screw up kills all hope to win (try doing an abductor full of Elites and Sectopods with squaddies, have fun)
I’ve finished the game by savescumming, but Ironman, I cant. Which is … frustrating. Savescumming (even done at the level I do – start from save previous to mission), makes you feel that you havent mastered the game.
Having your whole set of Colonels and Majors die means your 15 h of work has been thrown down the toilet.
Is amazing how such a frustrating game (on Classic! I despair to think what Impossible is like!) keeps one hooked. Testimony that the game system is addictive 😛
If I were designing a modern game, I’d avoid allowing save-scumming specifically because if the game was meant to be beatable without save-scumming, then those people who save-scum would have the audacity to complain the game is too easy.
The wonders of modern Internet.
[…] Rapid Fire vs. tiro normal & Probabilidades em XCOM [Sinepost, em […]
Nice post. I’m a developer with UFO: Alien Invasion, an open-source game inspired by the original X-Com. Our mitigation strategy is rather severe: the player can’t save on the battlescape. It has worked well in the past and definitely adds the weight of caution in the battlescape which was so fun in the original. But as we build larger maps it’s becoming pretty taxing, especially when players have to spend a long time carefully hunting down that last annoying alien.
It’s a strange balance in game design. Players often want the very things which would make a game boring — a powerful weapon, the ability to take more soldiers, faster research. Games — at least, thinking-man’s strategy games — have this weird tension between success and failure. We need one to really enjoy or lament the other. If a player has no discipline, save-scumming can turn a fun game into a tedious exercise.
Isn’t it funny that games have to implement an Ironman mode? Surely, if a player wants he can play without reloading the game. But when I try to play the old X-Com without reloads, I occasionally break my own rules. We can’t help but undermine our own sense of achievement.
Yes — I think game design is a bit like plotting a story. Ultimately, what consumers think they want is to know what happens, to get to the end, to have everything resolve. But the job of the creator is to provide them with a good journey to the end, because that’s actually the interesting part. Players want to complete the game and get all the good weapons, but actually what makes the game good is all the content in the middle, and the curve that allows them to slowly get better equipment or new tools or new levels, etc. And I think there is some truth that a game designer should make save-scumming less effective, to save the player from their own temptation. If reloading is too easy, players will use that as an easy out against bad odds. If you want to make them press on, live with the consequences and have to recover the situation, you need to make some effort to actually make them live with the consequences, not just reload!
Problem is that in this game there are points where I dont see alternatives. I have a game that is just in the final step of winning… but I managed to kill all my colonels.
There is no way to win at that point. I cant take it, and go through a difficult but possible retraining process to get squads to the high levels again – there is no chance in hell for squaddies against the late game enemies. 1 squaddie or 2 in a mission, maybe, a roster of them? No way.
If I could spend 10 h more trying to recover, that would mean I would do it, but right now the only option is … to start another Ironman.
[…] on from recent posts on the “XCOM” game (here and here), I wanted to write about people’s perception of probability. A huge amount of posts on XCOM […]
Most games I’ve played use the universal memory option, including some of the greats (XCOM, Jagged Alliance 2, at least two of the Civilization series…).
An interesting version of the “annoying” option was the one taken in Fallout: New Vegas, where loading a game inside a casino gave a 1-minute cooldown on using any of the gambling tables. This was obviously to discourage the practice (common in pretty much any RPG title that involves a minigame that earns money … I’m looking at you KOTOR) of quicksaving after every game and reloading after losses.
Neil: I’ve had a lot of time to think about game design over the last few years and I’m in total agreement with you when you say the point of the game is to tell a good story – and that save-scumming interferes with it.
In a broad sense, you need to build failure into the game, not have failure be a stop-point where you go, well this game is shot, lets start another one. Guild Wars 2 gave us some hints on this, where failing a dynamic event didn’t bring the narrative to a stop, but set players on an alternate path. In fact I would deliberately fail a dynamic event just to see what happened next.
In the case of XCOM Ironman, for example, I never bring all my vetarans to a mission, because it’s simply too risky. In fact, soldiers get benched when they reach Colonel status, because they’re not gaining XP. I will have a roster of 15 soldiers total which I am training up, with multiple replacements for various roles. The entire point of Ironman I feel is to train up a large roster of soldiers that are “good enough” to do any mission, while retaining a “reserve elite team” of 6 Colonels which you will ultimately deploy for the end mission.
This is ultimately a much more realistic way to play the game than say, just having your starting 6 soldiers run every mission and save scumming so they never die throughout the campaign.
My solution to the XCOM “problem” would be to make Ironman the default mode, but make it so soldiers are a lot harder to kill completely. Instead of dying when their health depletes to zero, they get critically injured and then have to be in hospital for 2 months or something – effectively dead and need to be replaced, but psychologically more acceptable for the player. Same deal for country funding – they can withdraw from the XCOM project but you can continue to run missions for them and they might eventually return.
The other thing that needs to be fixed is the “losing point” of the game. There will be a point where the player realises that they’ve lost – but still need to slog out another 4 hours of gameplay before reaching the end of the game (which btw, I found the ending cutscene of XCOM much more satisfying than the winning cutscene). I’m willing to bet that many players have never even seen the losing cutscene in XCOM even though they have “lost” many games and restarted them.
This ultimately robs the gamer of the experience of winning – without seeing a losing ending, the winning ending is that much less satisfying.
The losing state of the game should be a lot closer to the point where “all is lost” so the player goes, heck, I’ve just lost this game, but I may as well play one more mission to go out in a blaze of glory, instead of going “ah well I’ll restart a new one, no point playing another 4 hours of what is probably a losing game”.
This is lesson well learnt from decades of Euro board games =p
Yes, I think you’re right that losing should be in-game somehow, not meta-game (by the player realising they must reload). Either that, or you sort of build in reloading as a game mechanic. In async multiplayer games like Hero Academy (or Frozen Synapse, to a lesser extent), you can repeatedly redo your turn until you’re happy with it, and then submit. One could imagine having an XCOM-like game where you can’t reload to an arbitrary point, but there is a “restart mission” button. But that would alter the dynamics of the game, of course.
Your point about comparing to board games is true — part of good game design, especially apparent in board games, is that the game should be over before the winner is obvious. Otherwise everyone immediately loses interest. Which means you either pace it right so that the game is close until the end, or you hide who is winning to some extent (Dominion does this somewhat). I hadn’t really thought about this in the context of single-player games, but you’re right — and no, I haven’t seen the XCOM losing screen, despite having started about 12 games and finished two!
Programmers and designers are always fixing problems, and they are fantastic at it, but the player is not a problem. At some point (and I think that point is reached when dealing with save-scummers) you just have to surrender to the player’s style. Reading this article convinced me that scumming is, in itself, almost a meta-game. It’s like trash-talking at basketball or farting while playing chess with someone: it’s a move that’s definitely not in the written rules, but it can give the one doing it an advantage by putting the other player off his game. Is it cheating? Well, a rule-writer (i.e., a programmer) might think so since his ego is in the mix. “What? My carefully crafted probability charts aren’t ‘fun’ enough for you?! Philistine!” But it doesn’t have to be that way.
Games with human opponents don’t need to make a lot of changes to compensate for “exploits” like the ones I mentioned. Coaches just train their players to shrug off the trash-talk, or use it to make themselves more focused on winning. Chess players either light a cigarette or breathe through their mouths and keep playing. I understand that in a video game the programmer can’t do that – the rules are all they have once the game is finished (barring patches, which we won’t go into here). But even if someone finds what you consider a loophole, aren’t they entitled to enjoy it – especially if it requires a bit of finesse to squeeze through?
I think having to find a firing order that makes the probabilities work out in your favor is just difficult enough to make save-scumming vs. Ironman a wash, as far as any measurable “fun” is concerned, with a slight advantage to scumming in my opinion. Even when I have to reload, THE GAME IS GOOD ENOUGH that I never feel like I gave myself a victory, just an edge. And you know what? The game is also good enough that sometimes, those Sectopods light a cigarette and burn my funk away. The rules are well-written enough that my edge can evaporate if I don’t actually have the skill to back it up. I’d just hate the rules if I were locked into some deterministic script, like an Ironman game. With the ability to “tweak” to probability engine through reloading, now I can respect them, too — and through them, the designers and programmers who wrote them. You can be loved and feared – you just need to be good enough to pull both off.
Can we also have an article on how to solve the Resource Allocation problem per completed mission state and maximize my chances of generating positive balance, garnering more support from nations (playing the satellite game, and not losing) and also allocating resources to the research dept, foundry, engineering and item production. While this will have many solutions, we can consider an idealized game state and produce this optimal allocation matrix from there?
I was thinking about this as I tried to save-scum–sort of. See, it’s kind of a spectrum, rather than binary options, you can go full Ironman, or save-scum individual shots, but you can ALSO do things in between. I reload a whole mission if I feel if simple mistakes I can learn from were the sole reason I got slaughtered. I also save if I’m about to try an aspect of the game I don’t fully understand (will this rocket shot actually do anything, or destroy cover? etc). I imposed these rules on myself largely because I save-scummed more than I’d like to admit in my one complete playthrough of the original (I got hooked late, and took my sweet time learning).
What I noticed when I reloaded anything in the new game was what you pointed out: the PRND was always making me miss or hit the same shots if I shot in the same order. What’s interesting is this was not in the original (unless anyone can prove otherwise?). I distinctly remember taking a shot, screwing up on the turn (often a misclick…even worse problem in that game), the reloading to take the same shot…and having it end differently.
Anyway, I think the level of save-scumming should be up to the player. However, generating better random numbers is always a good goal for programmers, so that should be the emphasis rather than Ironman, which I’d be more inclined to try if I wasn’t so worried about misclicks that weren’t intentional decisions.
Well, thanks for the insight into (pseudo) random numbers!
The problem with this game and Ironman, is the bugs. I’ve had 4 full squads die in an ironman game, due to the bug where cyberdiscs fly through walls/ceiling (no holes, I checked). I had 12 restarts on Ironman, all of them wasted on bugs. The game is simply not stable enough yet, to tackle Ironman without insane luck. On Classic, one bug can destroy the game, literally putting you in a state where you can’t win, because you’re sending unranked rookies out to insane missions.
About save-scumming, well, nobody can tell what goes on behind closed doors.
However, the ability to cheat death in games, has a great impact on the game design. As a designer, you’re practically barred from making any one thing dependent on the death of a character (say, in a RPG) and, in my opinion, the narrative suffers. A lot of people want the min/max experience. Everything has to go off perfectly! Losing a high-ranked squad member in XCOM is a good example. Everybody reloads.
To me, the save-scumming is like reading a book written in pencil, and sold with a complimentary eraser. Just erase the parts you don’t like, and put in your own, full well knowing that shit really didn’t go down like that, in the first reading. To me, it destroys the experience.
You see this behavior in other games, like Blood Bowl, where people will intentionally disconnect from a game if some of their good players die or are injured. They’re save-scumming multiplayer though. Infinitely more abhorrent.
I can’t help but wonder, though, if these people have been “potty-trained” to save-scum, by poor single-player game design. They may even have come to expect time and space, in games, to bend to their will, even in multiplayer. They will think it’s natural, to impose their own ruleset on a multiplayer setting.
So, yes, this may be a bit of an overanalysis, but I do think that the practice of save-scumming is detrimental to game design, as well as overall morality. That said, I don’t have a magic wand. I don’t have the solution to end all save-scumming. As discussed in other comments on this thread, there is no simple way of avoiding it. Seriously determined people will even circumvent design solutions by going straight into the code. Not much to be done, except live by a few simple rules:
If you suck, you suck.
Deal with it.
Don’t cheat. 🙂
Not everybody reloads ) I beat the original Enemy Unknown on Classic and Impossible with Ironman, and thankfully, never got game-breaking bugs. Did the same with Enemy Within. The beauty of the XCOM is that it’s very much “losable”, but apart from really freak occurences, you can always win, or recoup losses. Yeah, I had a 80% squad wipe with Colonels. I wasn’t even furious, I was ashamed. And this is what no other game had made me to feel. But I pulled through and trained new Colonels. In EW, I accidentally entered base defence with people w\o armor and starter weapons. Like, several almost-end-game aliens vs. people with powder rifles at a time. I pulled through and haven’t lost a man, even the security guards (which is luck, of course, but a hell of an effort too).
Save-scumming is important for games, because any gamer always perceives possibilities in the game like possibilites in life. The penalty is less, but the consideration is always there. If a responsible, risky, thrilling, tragic route exists, many will take it up, for the excitement it will bring. Stakes are as much an element of wildly successful game-design as transparency or immersiveness. Don’t blame the players.
Just two thoughts:
1) Pointless discussion about reload-penalties, a matter of taste and playstyle, no benefit for the game in enforcing this on others.
2) From a developers point of view the pRNG system obvisiously used by XCom is the compromise you need: deterministic enough to keep the game debugable, amd renadom enough to make an exiting game (btw maybe THE strategy title of the last two decades).
Ok, as simple as that : each character and badies have a different PRNG for each action they can make depending when the player decides to input his action. You will need to use the internal hardware clock to generate these PRNG at all time (why not use GPS location or IP adress…). I reload my save state, let’s say, at 9:33, depending the first statement, the numbers will always be different if I reload my game 15 seconds later or a minute later. I could use random number to be either % or the “1, 6, 8, 9, 4 out of 10”. I hope that would help to partialy solved the savescummers issue.
Ah, but that ends up at the first problem: if I miss, I just reload, get a new PRNG, and change the result. That actually makes save-scumming more effective, because I’m quite likely to alter the result just by reloading.
I get around this problem by playing on easy to curb frustration.
Sometimes though, random unfair enemy shots completely destroy me which is why i save at the start of every mission.
In a single player game, why is “save scumming” (I hate this term) a problem? If you purchase a single player game, why should a consumer be punished for playing how they like?
Does it affect your ego that other people may get the same achievements as you?
I do not see why “save scumming” is a “problem” that needs to be “fixed” in the first place. So what if the player doesn’t “play the game the developer intended”? None of us do, the whole point of games as an artform is that the player is the last missing piece of the work. Everyone experiences games differently and are looking to get a different experiences out of it.
Seeing as it is inherently a SP “problem” I would argue that it should be up to every player on their own how they want to play a game. If someone does not find amusement in failing something they had already taken every possible precaution to succeed in due to RNG then why should someone declare that they are NOT allowed to try again?
What does it matter to you how someone else plays a game? I say let the savescummers and everyone else play however they please. There’s no harm comming to people who like the ironman challange from those who want to retry every once in a while or even keep reloading over and over and over in frustration untill everything works out perfectly.
All you’re achieving by looking at this as a problem in the first place is limiting your game’s appeal to a narrower selection of players without providing anything beneficial to your core audience.
In my opinion.
I long suspected the Firaxis Civ series used a corrupt rng. The old Microprose titles also. Thanks for giving it a name – pseudo rng.
This whole “savescumming vs AI program cheats” controversy sounds like an extension of Mrs. Grundy determining what I and my wife will be doing in our home. Think of those so-inclined game designers as Mrs. Grundys standing guard while one plays a game and one can see how thoroughly perverted such a game design philosophy is. When one is talking about a single player game, the idea of controlling how people play the game is totally absurd. I can see it in competition gaming, but this isn’t about that at all. It’s about lazy programers and the cheap companies who hire them and reinforce their lazy (but very cost saving) programing ineptitude.
Most people reload saves to offset defective program design and programing. When the program appears unfair to the player, they reload. When the player makes a mistake because some part of the game was unclear, corrupt or clunky, they reload. When the game presents the player with an absurd occurrence, especially if similar obviously weighted occurrences happened before, they reload. It is a way to get around poorly done game design and programing and retake some control of their game play they feel was otherwise stolen from them.
Spend the time on making the game mechanics believable, clearly understood and transparently fair. And get to bugs out before releasing the game to the paying public. And most people wont feel an inclination to reload and will enjoy the game a whole lot more.
Frayed Knights: The Skull of S’makh-Daon dealt with the save-scumming problem with a carrot instead of a stick: As things happen in the game (including “bad things,” like a character being incapacitated), points are earned in the form of “Drama Stars” which allow actions independent of the character that affect the game, including restoring incapacitated characters, all but guaranteeing success on one’s next action, healing the entire party, and so forth.
The trick is that the drama points are reset to zero if you reload a saved game unless it’s a quit-and-save point.
Of course, this system can be gamed as well, but the point was to balance the game equally for those who save-scummed as for those who did not, by giving the latter some of the advantages of the former “legitimately.” And since the consequences of ‘bad luck’ or poor choices were almost always recoverable (or minor enough in the grand scheme of things), players were encouraged to ‘play through’ setbacks.
It worked really, really well by most reports.
It’s funny the writer says Ironman mitigates save scumming, but not by a whole lot, since, so long as you go back to your main home screen (ie: Xbox button to dashboard, PSN button to Home, close client on PC) before the Aliens’ turn end, you can still scum, although you have to sit through the opening logos.
The best way to reduce role of save scumming is eliminate the main cause of it. What is the cause in this game? It is availability to lose all in game progress due to one unlucky choise in streaks or player mistake during combat. I think the best method to resolve this problem give player ability recruiting soldiers in each class with maximum level wich player access for this class during current game.
I don’t think games should be random, instead of a aiming mechanic they should have done a mechanic where an easier shot meant doing more damage instead of a better chance to hit. for example hitting a target in full cover does 1 damage, partial cover 2, no cover does 3. of course that would be modified by the weapon you’re using.
Surely, you haven’t shot much in your life =) missing is incredibly easy, even for professionals. In stressful situations, people have unloaded full magazines at point-blank range without hitting. Moreover, in actual 20-21th century wars, small arms served mainly as a deterrent, to keep the enemy pinned for artillery or assault, expending thousands of rounds without hurting a fly. The ability to hit an opponent with reliable certainty is an art, and subject to myriad conditions.
What I would do is keep a global PRNG seed, initialized to the system time when a new game is started, and then modify that seed by a unique action ID anytime a random event occurs. For instance, when a soldier takes a shot, a unique soldier number and a unique action number for the type of shot are combined with the global seed, then that new seed is used to generate the random number. This would maintain determinism, so that if a game is loaded and EXACTLY the same operations are performed then you’ll get the same results, but any change in the order of actions would cause unpredictable outcomes for future actions. So a player could reload and try different tactics as much as they want, even keeping the same set of “opening” moves and getting the same results (which can be nice if the game crashed), but they would never be able to notice a usable pattern of guaranteed successes to plan future actions. You would never know whether something will succeed until you actually try that precise sequence of actions.
Hi, Excellent article! Excellent comments discussion as well.
As an X-COM Ironman fanatic, I’ll be the one to disagree with comments from people who say that save-scumming is a result of bad design by the devs (see mark eisen and others). I also disagree on the idea that Ironman as an option is an artificial construct that doesn’t make sense because people should just refrain from reloading if they so desire.
This is because of one good reason: emotions. People have mentioned being attached to their characters. While true to some extent, I think people are more attached to their game. All gamers seem to have a compulsion to build the “perfect” game; just look at all the character build guides/walkthroughs in wikis and forums for all games all over the internet.
When, for example, I lose many high-rank squadmates in a single mission, but win it anyway, I tend to lose track of the big picture in my mind; I’m frustrated at my loss, and that leads me to try and convince myself that my already unlikely chances of victory have been voided. At those times, the emotional component of the loss can make me want to reload even though I wanted to do a “no-load” game from the start. Ironman forces you to take a moment to cool off because you don’t have that option. At those times, the true beauty of X-COM starts to unfold: you have to choose from a sub-optimal array of decisions to right your sinking ship. Strategic choices you didn’t consider before start to be appealing as stop-gaps. Resources you previously “wasted” on contingencies and back-up plans start to pay off in a big way. The game’s carefully balanced trade-off system plays out in all its gritty beauty.
Face it: a perfect game in X-COM is BORING. Yeah you got plasma weapons for your 6-colonel squad at month 2, congratulations. Then what? You spend hours playing out pre-determined victories with your overpowered squad (The strategic end-game in a perfect game is pretty unchallenging). Then you win the game. Woohoo? There’s no depth to a perfect game; just shiny numbers on the final scorecard, which disappears the next time you boot up the game.
On Ironman, when your B-Team of psionic colonels finally boards the temple ship after a few months of setbacks, they can say “This is for wiping out our friends, you assholes!”. At that point, the victory is much more sweeter than any scoreboard can make it look like. I actually take pride in the length of my memorial wall at the end of each game as a testament to my grit and creative problem-solving in the face of despair. The stories that emerged from those events last long after I stop playing. (I still remember the time where my highest-ranked Assault had to make a mad dash to the skyranger, forced to leave his panicking allies behind to be blasted to bits by the airstrike at the end of the Site Recon mission, while the rest of the squad was zombified and closing in on them. That Assault endend up being the Volunteer who got me the 5-medal achievement in the end).
As has been said, victory and defeat; you have to experience one to make the other feel real.
To those who say the end-game is unwinnable if you get your colonel squad wiped, I say you’re Doing Ironman Wrong. There are 3 important components to getting back on your feet after a serious squad-wipe: Sacrifices, Mitigation and and Contingencies. You have to wrap your mindset around those three things if you want to survive Ironman. Here’s how:
Sacrifices: Sometimes after a loss you have to endure short-term or future strategic setbacks for long-term tactical goals (such as selling important alien materials to fully equip your squad of rookies to give them a chance to level up), or medium-term tactical setbacks for medium-term strategic boosts (such as sacrificing a soldier to ensure victory in a mission that will give you the engineers you need to build your next satellite uplink and prevent countries from leaving next month). Skipping some abduction missions altogether and eating the panic increase to wait for your wounded soldiers to recover to ensure minimal losses in the next mission.
Mitigation: This means allocating resources early to create a buffer for later setbacks. For example: Using easy missions levelling up 2-3 rookies instead of getting a full Colonel squad out faster, Developing and upgrading SHIVS even though you don’t use them yet, buying the Rapid Recovery officer perk early, etc.
Contingencies: This means using previously suboptimal choices to recover from setbacks quickly enough at a low enough risk to continue playing. This often involves a mix of the other two components. For exemple, after a total wipe with no other ranked troops, it’s time to buy 3-4 SHIVs and use them carefully to protect your rookies and set up kills for them in the next few missions. If you still have a Major, you can try to gather enough money to immediately buy the New Guy upgrade right before hiring new soldiers. You can go out to missions, rack up a few kills for your rookies and double back to the Skyranger for extraction when you meet a Sectopod.
As someone has said before me, good tactics always trump experience in X-COM combat. I have yet to abandon any of my Ironman games, and all of them have been at Classic difficulty.
Good post, Kb 🙂
I think I lost 98 soldiers during my Ironman Classic play through, but it’s the one I remember. They were expendable resources. Remember, we’re Commanders. Don’t get attached to individuals 😉
On a related note, you may enjoy Blood Bowl multiplayer, KB. You seem to have the balls for perma death and hard decisions 🙂
I’ll check Blood Bowl out, thanks. I’m a fan of WH40k, not so of WFB, but after reading what you wrote about it, I have to admit I’m curious.
As a side-note, I don’t like the perma death option in every videogame; I don’t do hardcore in Diablo for example. Reflex-based gameplay+insta-death+perma-death is a recipe for meaningless frustration. In turn-based games, you have just your poor planning to blame (as long as you take your finger off the trigger to prevent misclicks!)
And yeah, in the end, a soldier and its experience is a resource just like the other. Number of soldier in barracks is money + time (3 days). Experience for soldiers is time (number of missions) + risk (to get kills and complete missions). Converting (or sacrificing) one kind of limited resource for another while maximizing your gains is what X-COM’s strategic layer is all about.
To come back to somewhat on-topic, hit percentage is also a resource you can trade for risk, time (number of turns, number of actions) or movement.
I’ve done Impossible Ironman on vanilla, and I distinctly remember that I’ve lost just a few experienced guys and gals – of course, mostly on a supply barge mission, bleeding out and desperate; even the base defense miraculously went without KIAs. Together with early game losses, it amounted to about 10-15 KIA and not one abandoned mission, so it’s possible to play ironman as you would a normal game, greedy and completionist =). The hard, cold proof there is Beaglerush who does Impossible Ironman both in vanilla AND Long War with nary an abandoned mission and losses in the single digits.
Of course, I’m no Beagle and I’ve never finished Long war properly on Classic even (too long), though I got thrice as much fun as the vanilla out of these unfinished runs.
Save scumming must be made unnecessary, root of the evil here is a binary system that gives you all or nothing on attack. Seeing as we use shotguns and burst fire almost every time, this would be solved by calculating a hit chance for each projectile individually, instead of for whole burst at once. So firing a shotgun at 95% chance would always give you a solid impact even if one or two pellets do miss, same with the burst fire.