Mandate of Heaven is a singleplayer level for Crysis that I developed over the course of a year in 2009/2010. This was my first open-ended level, as well as first nature setting. In this article, I’ll describe this project’s goals and attempts, explain my decisions, and consider its successes and failures.
Crysis is a FPS that distinguished itself from competitors thanks to its large open, high-fidelity natural environments, including interactive vegetation. Here are some of the points a Crysis level should accommodate:
- Powers: The player character wears a “nanosuit” that grants him powers, though only one can be active at once: maximum power (jump high/hit hard), maximum speed (run fast), maximum armor (take a lot of damage), and cloak (become invisible). These powers highly influence the design of a level, since players are able to climb onto almost anything, run away or into a battle easily and travel large environments quickly, survive big falls or explosions, and sneak past enemies or into encampments.
- Styles: Typically, there are 4 ways to approach an encounter: stealth (using the cloaking ability), close-combat (melee, shotgun), ranged-combat (sniper), classic (medium distance to enemies, using rifles), or any combination of the above (sneaking into an enemy camp then attacking them in close-combat). A Crysis level should allow players to use any of these styles at will, at least for most encounters.
- Weapon components: Players can customize their weapons with all kinds of attachments that they either get on startup or pick up (flashlight, silencer, grenade launcher, sniper scope, etc.) Once acquired, these stay in the inventory even when dropping weapons onto which they are equipped. One should dispense these items progressively.
- Setting: The original game is set on a tropical island invaded by Korean military forces. The vegetation that comes with the game (palm trees, jungle bushes and ferns, etc.) kind of limit custom levels to similar environments, even though with some ingenuity modders have managed to step away from the tropical setting altogether.
- Vehicles: Players and AI both can drive vehicles such as cars, tanks, or helicopters. This allows skipping great lengths of jogging around, and most come with powerful mounted weapons.
If you’ve read this article I wrote halfway through the development, you’ll have a fairly good idea of what my goals were, but let me sum them up here quick anyway.
Ever since I visited China (if staying there two weeks and only traveling to two cities can be called visiting such a massive country), I’ve been fascinated by its architecture, culture, diversity, etc. I also think that for all its potential, it’s a part of the world that’s rarely depicted in games.
So when considering a location for my next project, China immediately came to mind. It meant that I’d have to create a lot of new content, because however Crysis takes place on a Chinese island, very little of china’s culture is actually illustrated, but one of my career-driven goals was to try my hand at modeling a bit more.
Next was the problem of choosing exactly what aspect of China I’d be depicting. I soon realized that finding good reference online was also pretty hard so I’d have to rely mostly on the pictures I took there. Well, a good part of these pictures were taken in either temples, small city alleys or parks, so I went for the one that would allow me the most freedom and variety: a public park. This also defined the CryEngine as the best choice to create this level, because of the vegetation involved.
What’s so interesting about such parks is that the buildings and structures they contain aren’t necessarily designed for functionality, but rather for their looks, location, originality, etc. It gave me a good amount of freedom in designing structures that would be fun to navigate.
Experimenting with free-roaming, I decided to go for a “cone-shaped” playable area, meaning that the player starts on a linear path and the level widens progressively, giving him more freedom and options. The player isn’t asked to pick a path at a fork; he naturally travels the environment as he pleases.
The problem with this design was that because there’s a minimap and a HUD radar showing the location of the objectives, most players would be tempted to use the straightest way through the level and never explore the rest of it, so I had to look for ways of distracting them from doing so.
I love it when games find interesting ways to reward exploration. Sadly Crysis has little to offer in terms of reward. To bait the player, I only had advanced weapons (heavy machinegun, gauss gun, rocket launcher, etc.) that would break the balance, weapon attachments (but there’s not that many of them and most can be found on enemies’ weapons), and ammunition.
In the original game the player starts with a Scar rifle that’s very effective but soon runs out of ammo. I came to the conclusion that most players would be interested in refilling their Scar ammo from time to time, and so that’s what I used to reward exploration. I placed small caves around the park and placed the rifle, ammo and a few attachments in all of them.
To further encourage exploration, I designed buildings that are visible from very far, so as to tempt the player to take a detour to visit them. I also added a secondary objective of destroying 3 anti-aircraft guns in order to call an airstrike on the boss’s hideout. Of course, these cannons are far apart and placed in areas the player wouldn’t need to visit otherwise.
Besides the fact that cars are rare within public parks, including vehicles had big consequences. Traveling by car allows players to go much faster than on foot, and so the level would have had to be very large and feature roads and wide empty areas. And in this case, larger also meant less detail, because one has to keep in mind the hours of work involved in fleshing out 10 kilometers square of terrain, and the effect on performance as well. I would also have had to find ways of preventing the player to speed through the level in a car and avoiding every encounter, using road blocks, mine fields, etc. which would have made the matter even worse. So I decided to do without vehicles, and keep my level more reasonably sized.
Focus on gameplay
In my Max Payne 2 projects, I always put some work on fleshing out the story and characters to some extent, but I made the choice not to make such efforts with this one, and so for multiple reasons. I didn’t want to depend on voice-actors, writers, animators or modelers, didn’t want this to grow out of hand, and also figured the Crysis fan-base (my target audience) wouldn’t be looking for it so much. I was moving from Max Payne 2 to Crysis, and had to embrace the strengths of Crysis instead of trying to apply those of MP2 onto it.
Of course, being a level designer and not an environment artist, my priority was set on fun gameplay and originality, but I’ll come to that later.
So with all these goals in mind, I imagined the level layout. It’s something like this, although this version is quite simplified and doesn’t show all shortcuts, obstacles, or relief:
While it barely looks like a cone anymore, it’s got the same attributes as that of my cone-shaped concept: it starts off linear and grows larger and more complex progressively.
The pavilions (red dots) and buildings (tower, corridor, etc.) are spread all around the level in order to attract the player toward areas he wouldn’t have visited otherwise.
To complete the secondary objective, destroying the 3 anti-aircraft guns (yellow dots), players have to travel a large part of the level, and always face multiple options to get from one to the next.
Detailing every part of the layout and every decision that needed to be taken would be too lengthy, so let’s just consider a few:
Example: Alternate path to the temple
As you can see, there are two ways of climbing up to the Temple to confront the boss: one is along the coast, passing by the Terrace and climbing along the cliff; the other is finding the entrance to Cave #1, then crossing the Graveyard and Cave #2 to get out right in front of the temple.
This raised an issue though: players are supposed to look for caves because they contain items, so chances are they would spot the exit of Cave #2 when climbing from the Terrace up to the Temple, and decide to explore it.
I didn’t want to put players in the situation in which they’d have to choose to either backtrack through Cave #1 and #2, or travel the path up to the Temple once more. So I edited the shape of Cave #2 to act as a one-way fall: players coming from the Graveyard would be able to go through, but not if they came from the Temple. I still placed an ammo stash near the exit of Cave #2 to stay coherent with the other caves.
Example: Monks’ Temple
Here you can see an early prototype of the Monks Temple area (first encounter with enemies.) It was initially designed to be visited alone, and it was possible to sneak between enemy patrols. It has evolved, and now the player attacks the temple along with U.S. marines, so the stealth option has been rendered obsolete.
Along the way, I had set a VTOL to fly in and land on the rice fields (top-right on the shot) to drop some more marines who would attack the garden and circle around the buildings on the path to the right. It flew above the player on his way in, and contributed to giving a sense of epicness to the scene.
However, I had to scrap it considering how buggy the flying vehicles turned out to be. It would work fine 90% of the time but once in a while, the VTOL would sink into the ground and get stuck. Unable to find a safe fix, I had to forget about using flying vehicles altogether.
This is what the final version of the yard looks like. You can see that a bunch of stairs have been added: before one had to circle around the yard to get to the enemies. It turned out to be confusing because players didn’t manage to get close to the enemies before they got killed by the marines. Now, as the player enters the yard, he spots his enemies straight forward and still has the option to circle around the yard to stay behind cover.
Example: Evacuation zone
The small area at the back of the temple where the bossfight takes place went through many changes. At first, the player had to follow the boss who ran away towards an helicopter, get slowed down by angry bodyguards, and have to blow the chopper before it leaved the area. The problem with this idea was that players would rush up to the landing pad to grab the rocket launcher and shoot the chopper, and in doing so they’d leave a few bodyguards behind. These guards would keep shooting and either kill or disorientate the player while he’d be taking that ultimate shot.
Next, it was to become a foggy garden and filled with sacred stone pillars. The boss would turn invisible (cloak mode) and walk through the fog, charging and punching the player from time to time, and the player would have to rely on the moving fog particles to spot him. This was dropped early into prototyping because the cloak effect was too visible, rendering it boringly easy.
In the end I went back to the initial idea, except the player only gets to go there after he’s killed the boss: an ally VTOL lands and waits for him to evacuate. It’s not an ideal solution, I would have preferred something more climatic than that, but there were many other instances of things I had to cut out because they simply couldn’t be done or didn’t play as well as expected. I still tried to give that final area a special aspect (red foliage, falling leaves, orange fog) as a sort of balance against the absence of interesting scripting.
Having used the Max Payne engine for years, I was familiar with scripting but not so much with advanced AI like featured inCrysis. I mean, in Max Payne 2, I would have to trigger almost every action and dialogue of a given enemy (except for the basic stuff) but as a consequence I had much control over their actions. With Crysis, controlling a character is much more tricky because the AI is designed to take care of everything.
Of course, that’s a requirement for such open environments, because most encounters can happen in all kinds of ways, whereas the “corridor shooter” style of Max Payne usually limited the possibilities to one approach. I soon realized it would be much trickier to make any of the encounters unique, and that I would have to trust the fun into the AI’s hands.
That’s how I came up with “Zones of Fun”: complex areas where enemies would tend to be present in numbers. Instead of acting upon the AI, I designed zones in which it could strive to create interesting gameplay. And to make sure the player would end up in these zones, I added them around the most visible buildings, those that are supposed to attract players.
Another good thing about these zones is that since that’s where most enemies are concentrated, the space between them is pretty empty. It results in a more paced level than if I had just filled it with enemies, and lets the player consider how he’s going to attack a given location peacefully rather than continuously fighting.
Then all I had to do was place the right amount of enemies, assign them patrol paths or idle actions, and enable them on time: not too soon so they don’t get alerted by firefights far away, not too late so the player can’t see them spawn. It was tricky in some places, again because of the open-ended factor and the fact that the player may travel the level in any direction, visit these locations in any order and jump onto anything, but worked pretty well in the end. One thing that helped was not to provide the Sniper Scope item at all, to avoid players being able to inspect the surroundings of a building prior getting close enough to trigger the guards to spawn.
The test results were very useful. For instance, one of the testers recorded himself playing and commented his experience as it went. I was clearly able to realize what was fun, what wasn’t, what was clear or too cryptic, where the player would get lost, etc. I also realized that checkpoints were mandatory, and that the radar was more important than I thought, for people wouldn’t check their map and rely only on the arrows shown on the radar to know which direction to follow.
Example: Mortars in the forest
Another issue with these AI-lead combats was that they would all feel somewhat the same. I needed to add some variety in the encounters. I didn’t have so many options when it came to it: all of the solutions would have to affect an area, not just any given direction. In Max Payne 2, I would be able to script some interesting stuff because I knew where the player was coming from, here it was much trickier to design something that’d work in every case. Putting the forest under mortar fire was one of these attempts.
Mortars are a bit like snipers: they aren’t much fun when they hit you and you die instantly. I buy into the idea that “a god-like player should be able to play through and finish any game, on the first try, without dying.” (Scott Miller – The God Concept)
That meant that these mortars should never hit the player directly and kill him, but fall close enough to scare him and change his state of mind from “I’m safe” into “I may die any moment, I need to get out of here!” One of my goals with this whole idea was that since the forest was the shortest way to the objective, a majority of people would take this path. Using harmless mortars would either scare them toward another path, or simply excite them a bit.
If the terrain had been flat, I could have just scripted explosions to happen around the player, but since there’s hills, structures and trees all around, I had to rely on an uglier solution. Without getting into too much details, what I did was to place 24 locations where a mortar can fall. Everytime a fake mortar is fired, one of these points is selected on the basis that it’s not too close to the player (more than 10 meters) but not too far either (less than 40 meters). This ensured that the mortars would keep falling around the player but wouldn’t hurt him. Of course I also added a few patrols in there to spice it up (because being excited by the mortars but nothing else happening would have served no purpose), and the actual mortar shooters who can be killed to put an end to the event.
In such an open level, it’s hard to know when to save the game. After all, even if the player is in a patrol-free zone, he may have enemies following him and be right in the middle of a battle. He may not approach a given point from the angle you think he will, and miss all the saves.
I thought that Quicksaving came in handy in a game like Crysis, but apparently not that many players think of it (at least out of those who’ve tested the level) because most of them reported having to replay long sections after dying. So I had to retro-fit autosaves in the level.
To do so, I took a sheet of paper and listed all the points where an autosave would be helpful and what conditions would be required for each one to happen. I then listed all the tokens I would need to manage these saves, such as “all enemies from the terrace are dead” or “the AA gun near the tower has been destroyed” or “the player just reached the tower area”. I also wrote down which saves were redundant, for instance, if save #13 happened, it would be useless to trigger save #14 because they are linked to areas very close to each other, and vice versa, but since I can’t be sure the player will pass through #13 AND #14, I still need both.
Then it was only a matter of creating the triggers, counters and tokens and linking them to set up each save.
I already mentioned that visuals weren’t my priority, but that doesn’t mean I don’t care about them either. After having worked on a game like Max Payne 2 for years, the fresh air brought by Crysis‘ landscapes and details was quite exciting indeed.
My goal was to create structures that fit the Chinese style and make for interesting zones of fun, even if that meant adding unnecessary complexity to these buildings. I also wanted to tackle this on my own, as even though relying on modelers and other artists would have made the result much more appealing, it would also have taken much time to assemble and manage a team.
The workflow proved to be very efficient: experimenting was very easy, I would just have to create a few solid shapes where my models would be, export them and use them as base to start modelling. Since the dimensions would be kept intact, the models fit perfectly their surroundings.
My modelling skills are still pretty basic, but I was able to create a lot of these simple models in a reasonable amount of time, and fill my level with Chinese structures. The trickiest part was texturing these models: I had plenty of reference for doing so, but since my models were so much simpler than the real buildings, and since my texturing skills are limited, it proved pretty hard to achieve. The result is not always convincing, but my goal was achieved: it looks Chinese enough to distinguish itself from other Crysis levels.
I realized a tad late that the number of terrain textures was limited to 14. It doesn’t tell you that, it only starts behaving strangely after you reached the limit. I had two options: repaint most of the terrain, which would take days, or do with the 14 textures I had so far. I went for the latter, and as a result, it sometimes feels a bit too even, too repetitive, and I wish I could have added variation in some areas.
Like I said, if I chose to stick to a reasonably-sized level, it’s because I wanted to be able to detail it. Most of the development time was spent placing objects and vegetation to support the premise. I wanted to make it feel like a real park, and parks usually are tidy and controlled, that’s why there are some areas like the Flower Park, where human’s influence over nature is clear.
I regret not having access to a more Chinese kind of vegetation, such as bamboo, weeping willows, etc. Combined with the looks of the buildings, it would have made the setting perfectly clear. But it wasn’t absolutely necessary (and my art skills were outmatched in that regard) so I managed without.
At first, the level was planned to be played during the first minutes of morning daylight, so I created it with that in mind. But testers soon pointed out that it made the level too dark overall and too monotonous, so I had the sun rise higher. Problem is, it didn’t look as good because all the colors were selected with the early morning lighting in mind. I should have worked with a standard midday light and then experimented with the Time of Day.
One of the testers, an environment artist, commented in depth on the aspect and lighting of certain areas, and even provided me with comparisons between the actual state and what he would suggest. That was very useful and heavily influenced the final product.
Almost all reference came from personal photographs, although not necessarily from China: I also used some shots of London parks, and from my brother’s trip to Bali.
A friend, Sayantan “Satan” Biswas, proposed to help so I had him create the tower model and textures, which is a good thing because it’s such a massive and central building that it has to look good and detailed not to disappoint. I also used a few models from a free Chinese decoration package made by another modder, namely the entrance gate, the roofs on the temple, and the shrines.
Completing this level brought mitigated feelings: of course I’m glad I managed to accomplish all this, but at the same time, I would have liked to spend much more time on it to tweak it, improve it. Not really because it needs to be, but rather because I don’t think I really reached my ultimate goal with this project, which was to properly illustrate China into a game. To me, it still looks too Crysis-ish, and while it conveys the Chinese setting alright, it still doesn’t feel like China. I just wish I could have come closer to that goal, by use of custom vegetation, more detailed models, by working with environment artists, etc.
On the positive side though, this was quite an undertaking and I’m proud I saw it to the end. I learned a whole lot about open-ended level design, about modelling, texturing, about recent engines and their workflow, etc. In the end, it was a great experience, that’s only tarnished by this feeling of not having been far enough, not having exploited the theme well enough. Oh well, maybe next time!