In strategy games such as Civilization, where the player can save and load at approximately any time, why should the player ever accept even the most minor of setbacks? In a fundamentally single-player experience, is it really even a problem? The player has bought the game, why shouldn't they be able to enjoy it the way they want to? If they get the most enjoyment from a game where they are always triumphant, isn't that enough?
Sometimes yes, entertainment is enough, but we need to keep in mind the experience we've helped create. When the player constantly saves and reloads, they've changed the fundamental character of the game. Instead of reacting to and influencing a dynamic world, they're playing through a series of fixed challenges with checkpoints. These kinds of games are common in other genres such as single player first person shooters and can be quite a bit of fun, but it means that the player has effectively genre shifted the game to something we haven't prepared for in our design.
How then, should we adapt? We could restrict how our players play the game, either by changing how the save/load system works, or some other tweak. Or we could try to actively encourage the player to roll with the setbacks and try to overcome the new situation. Two recent games have done a good job with the latter: Crusader Kings II from Paradox, and XCOM: Enemy Unknown from Firaxis.
In Crusader Kings II, there are always more plans to make, and wars of annihilation are rare compared with Civilization. So the failure of one plan, or the loss of one war, is not the catastrophe that they are in Civilization. Additionally, when a character dies unexpectedly the player is immediately given control of the heir, who is full of untapped potential, encouraging the player to keep playing the current game. Combined, these features make CK II a game where players can feel quite comfortable playing the ball as it lies.
XCOM accomplishes a similar effect by making soldiers expendable and by doling out goodies after every mission. Sure you could reload and replay the mission, but perhaps you'll get a different amount of rewards, or maybe one of the survivors won't level-up this time. Additionally, beyond the expendability of the soldiers themselves, the game will periodically reward you with the opportunity to gain experienced soldiers to help out a campaign which has lost one too many veterans. The end result, is that even total party kills are recoverable on the normal and easy difficulties, so players are encouraged to keep playing through adversity. Additionally, XCOM has an iron man mode where saving is restricted and achievements tied to that mode for bragging rights. XCOM tells you explicitly how you're meant to play it, and then presents a structure where it's entirely feasible to do so.
Using the examples of CK II and XCOM, we can see that it is quite possible to encourage players to not genre shift the game out of its design space but it is something we need to actively pursue. We need to offer players gameplay reasons to play on through adversity, rather than stacking all the incentives in favor of save/reload (lose nothing, gain everything).
Tuesday, December 11, 2012
Tuesday, December 4, 2012
EitB Dev Journal - Nox Noctis Crash Fix
I finally found some time to take a look at the Nox Noctis crash, and I think I've fixed it. You should be able to replace your CVGameCore.dll in your /Mods/Erebus in the Balance/Assets folder with the one linked in this post below.
New CVGameCore.dll
The cause and fix itself are somewhat embarrassing I was treating the unit array of a player as always having valid units in it. This is not true, and so building/capture Noctis would result in the game trying to pull the attributes of a unit that did not exist, causing a crash. The fix then, was to check and skip each Null section of the array.
New CVGameCore.dll
The cause and fix itself are somewhat embarrassing I was treating the unit array of a player as always having valid units in it. This is not true, and so building/capture Noctis would result in the game trying to pull the attributes of a unit that did not exist, causing a crash. The fix then, was to check and skip each Null section of the array.
Subscribe to:
Posts (Atom)