POST MORTEM: MANDATE OF HEAVEN

Introduction

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 First-Person Shooter that distinguishes itself from others thanks to its large open environments and high quality, interactive vegetation. Here are some of the points a Crysis level should accomodate:

  • 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.

  • Upgrades: 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.

Goals

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.

Chinese setting

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 hands at 3D Studio Max.


              

Varied decors:

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.

Free-roaming:

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.

Encourage exploration:

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 attachements 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.

No vehicles:

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 fanbase (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.

Layout

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 pavillons (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 prefered 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.

Scripting

Having used the Max Payne engine for years, I was familiar with scripting but not so much with advanced AI like featured in Crysis. 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-endedness 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: Things that went wrong

The main problem I had, and which kept nagging me for a long time, was I thought due to an unstability of the Flowgraph scripting system. For instance, when destroying an AA gun, the related objective wouldn't get triggered as completed, which would make it impossible to complete the secondary mission. It was quite hard to reproduce but would happen once in a while. I experimented with different ways to make it work, like add an event listener on the death of the character inside the AA gun, or checking the health of the same character every 2 seconds see if it equals to zero. Nothing seemed to fully get rid of the problem, it didn't seem logical since I had every kind of safeties to prevent it and it kept happening. I eventually released the mod without fixing it because I just couldn't find its source.

It hit me one night a couple of weeks later. See, the flowgraph I had created wasn't the problem, but the entity to which I had attached that flowgraph. I was used to the FSM scripting of Max Payne and didn't stop to think whether the flowgraph attached to an entity disappeared when that entity was destroyed or died. In Max Payne, it was necessary to send instructions from a dead character, for instance to record its death, so that had never occured to me that this would be different in flowgraph. I could have slapped myself for not figuring it out from the beginning. That was the only possible explanation to the illogical behavior of my script.

I believe exactly what was happening was this: in most cases, the AA gun would be destroyed and the flowgraph would be executed before it was removed, but if your computer lagged at that moment because of the explosion effect for instance, the contrary would happen and that message would never get sent. I spent hours trying to get rid of the problem, designing safeties and fixes which wouldn't do anything because they got removed with the rest of the flowgraph, when all I had to do was attach the script to a dummy entity.

And it explained a lot of other little glitches that weren't obviously noticeable. For instance, most of the time the script that controlled a group of enemies would be attached to the leader of that group, so killing the leader would result in disabling its flowgraph, so the other guys wouldn't follow the script anymore. That could have been a cool feature, removing the head so the body goes loose, but most of the time it just resulted in less interesting encounters.

So eventually I released a small update which, additionaly to improving the performances a bit at the beginning of the level (I had a bit too many lights going on there at once, visible from a bit too far), fixed all these little issues. All I did was copy-paste each flowgraph onto dummy triggers and tah-dah!

 

Like I said above, I also had issues with the flying vehicles: they wouldn't land properly, either falling into the ground or hovering at 1cm above it for minutes before finally switching to the landed state. I initially had some in 4 instances (they would come as a reward when the player accomplished secondary objectives) but had to get rid of them all for they were too unstable.

After all the changes it underwent, the remaining bossfight is too classic to be really interesting: it's just a powerful guy surrounded by weak minions. I had ideas to make it more original, but none of them ended up working well, either because they were buggy or simply not fun. Here's the flowgraph behind that bossfight:

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 mortar is fakely 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.

Example: Checkpoints

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. I guess when they get sucked in the game, they forget about saving altogether. So it was my role to make it all work smoothly.

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.

Models

I already mentionned 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 Sandbox2 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, and export them into 3D Studio Max and start modelling. Since the dimensions would be kept intact, the models fit perfectly their surroundings.

Modelling:
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.

Texturing:
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.

Detail:
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.

Vegetation:
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 mandatory that I would create them so I managed without.

Lighting:
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.

Reference

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.

Conclusion

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.

It's inevitable, one cannot in this day and age create something close enough to give the same feeling, but I just wish I could have come closer to it, 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!

 

Nota Bene

The name Mandate of Heaven is a traditional Chinese philosophical concept concerning the legitimacy of rulers. It postulates that Heaven would bless the authority of a just ruler, but would be displeased with a despotic ruler and would withdraw its mandate, leading to the overthrow of that ruler. The Mandate of Heaven would then transfer to those who would rule best.