Category Archives: Uncategorized

Mike’s Dry and Boring CryEngine Technical Level Setup Document

Not a very exciting blog this time. When working on games in CryEngine (or other similar engines) it might be useful to lay out some standards for level entities and scripts. This is based on years of experience working in CryEngine, but is probably woefully out of date by now.

Hopefully you find it useful, even just to see how professional levels are organized!

Layers

Levels are split up into sections known as “Action Bubbles”.

  • An action bubble is an area within the map that has clearly defined boundaries.

Areas that connect action bubbles are “Transitions”.

  • These can also sometimes be referred to as “Gates” or “Valves” and have technical considerations for the loading/streaming of action bubbles.

Any assets that are not specific to an Action Bubble are placed on a “Global” layer.

  • Global layers contain level-wide assets such as skyboxes, ambient sounds or global logic.

Layer Naming and Categories

  • ABX = The parent of all the layers that make up an Action Bubble (AB).
    • ABX_AI – All AI related assets are placed within this layer. This includes actors, AI vehicles, waves entities, territory entities, tag points involved in pathing, navmesh markup, smart objects and any areas or triggers related to AI setup.
    • ABX_Dressing – Art layer. All objects used to dress the action bubble are placed here. Physics objects, decals, small objects etc
    • ABX_Gameplay – All assets that the player can interact with inside the action bubble should be placed in this layer. Player vehicles, switches, triggers, interactive doors, items, pickups, collectibles, ammo etc
    • ABX_Geometry – All static geometry that relates to this action bubble is placed in this layer. Brushes, geom entities, large physics objects etc. This is primarily an “Art” layer.
    • ABX_Lighting – All lighting related assets placed here. Lights, environment probes, physics objects with lights attached etc
    • ABX_Logic – Contains the Flowgraph Containers used to script the level. Can be used to store debug assets during level creation.
    • ABX_Particles – Contains all particles used in the action bubble.
    • ABX_Sound – Contains all the sound information for the action bubble.
  • Global_Background = The parent layer for all the background assets in the level
    • Geometry – Any objects that make up the background scene go here.
    • Skybox – If the skybox is made up of more assets than the environment tab (e.g. hand placed nebula) these assets go here.
    • Developers can add any additional layers here that are requires for the background of the level that need to be split out.
  • Global_Lighting = All global lighting assets are placed here.
  • Global_Logic = Flowgraph containers and logic (triggers etc) that are used for the whole level go here.
  • Global_Sound = Any level-wide sounds go here. E.g. Ambient tracks, ambient sound effects for outdoors etc.

Layer Properties

  • Most layers require specific settings to comply with the standard working practises of CryEngine.

  • Visible – Does the same thing as the layer hide/show icon.
  • External – This is what generates the .lyr allowing for each layer to be tracked by version control individually. Without this checked, the layer still exists but only as part of the cry file. It is standard practise that ALL layers are external to allow for multiple designers to work on a single level.
  • Export To Game – Required if the layer should be exported. Examples of layers that shouldn’t be exported are: Debug layers, layers that contain concept art references, temporary geometry layers.
  • Brushes Have Physics – Brushes within a layer with this disabled will not have physics. This is good for distance background objects to save on performance.

Logic

Flowgraph Containers

  • All scripting for the level is contained in Flowgraph Containers. While any entity can contain flowgraph, it is standard working practise to ONLY use the FlowgraphEntity as a container to write flowgraph in.

  • It is good working practise to place all flowgraph containers at a point of the map that is easy to remember for good organisation.


 Flowgraph Container Naming and Categories

  • Remember: Containers are placed within the Logic Layer for their respective action bubble (or the global logic layer for the global flowgraph containers).
  • Each container is prefixed with a corresponding number [Action Bubble][Type]. This allows us to order each action bubble folder in the same manner.
  • ABX_Logic = The parent folder for all Flograph Containers for a specific action bubble.
    • X0_DEBUG_FG – All debug logic for this action bubble is written in this container. This includes logic to “skip” parts of the level logic for testing, as well as any functions to enable god mode, spawn weapons or vehicles or anything else the designer needs to debug their level.
    • X1_Gameplay_FG – All gameplay logic for this action bubble goes in here. Gameplay logic is any player related script. (E.g. player triggers, health, ammo, weapons, unlocks etc).
    • X2_AI_FG – All AI related flowgraph goes in here.
    • X3_Objectives_FG – All mission objective related flowgraph goes here. This is solely the logic required for the player to accomplish. The actual mission objective nodes will be covered later.
    • X4_Dialogue_FG – All dialogue scripting goes in here. This includes cooperative AI conversations or player choice conversations.
    • X5_Cinematics_FG – All cinematic related logic goes here. E.g. Trackview triggers, animation nodes, cinematic player controllers.
  • Global_Logic = The parent folder for all global flowgraph logic. As well as per action bubble logic, we will require global tracking data for the entire level that is not explusive to a single event or area.
    • Global_Debug_Logic_FG – Any debug logic that the designer wants to access for the entire duration of the level. E.g. “God mode”, “beam to location”, “toggle gravity”.
    • Global_Gameplay_Logic – Player related data that you want to track for the whole level goes here. E.g. “Player At” systems are a way to detect where the player is in the level, which is useful for optimisation or streaming.
    • Global_Objectives_Logic_FG – This is where the actual MissionObjective data is tracked. It is useful to contain all the actual objectives in a single container to more easily visualise the mission objectives.
    • The conditions which actually trigger the objectives are still contained on a per-action bubble basis within the X3_Objectives_FG container.

Flowgraph Standards

Flowgraph Layout

  • Flowgraph pages are massive! Due to this fact, there is no reason to squash your flowgraph together. Spreading out your flowgraph nodes makes it easier to read and debug (during debugging, flownodes will grow in size as variables are printed in them, which occasionally leads to overlapping).

  • Make sure nodes are spread out and use comments as often as possible.
    • Tip: Good comments explain WHY you are doing something, not WHAT. An observer can already see WHAT is being done by reading the flowgraph, but the WHY may be ambiguous.
  • Always use comment boxes to organise your scripting and make it easier to read.
  • The “fill” option that is on by default just makes flowgraph harder to read. It is best to turn this off unless you have deprecated flowgraph (see below).
    • Try and colour code your comment boxes to make them easier to navigate.
    • g.
      • Orange – Debug
      • White – Standard
      • Red – Hack
      • Blue – Prototype
      • Purple – Dialogue
      • Grey + Filled – Deprecated but not deleted

Game Tokens

Game Tokens allow designers to store variables and pass them between containers. They are incredibly powerful tools that make scripting cleaner and optimised when used correctly.

Guidelines For Usage

GameTokens should be used to optimise scripts and pass variables between containers. They can be used to store “states” that designers may need to reference throughout the level such as objectives, conversation choices or pickups the player has found.

The strongest example of GameToken usage is found in the objectives system. By setting a gametoken to “true” each time an objective is complete, we can then use those same gametokens in all of our containers to trigger new logic.

Naming

 

  • GameTokens can get confusing and mixed up quickly, so it is important to clearly label your tokens and organise them.
  • TurnedOn = true/false (Boolean)
  • [Action Bubble]_[Purpose].[State] = true
    • In this example we can see what the gametoken is being used for based on its convention. It stores the “state” of a switch that controls gravity in the level. The switch is located in the first action bubble, AB1.
  • Gametokens are similar to flowgraph containers in that they should be organised between action bubbles, or in the global variables list.
  • Gametokens can be created in the single level library OR we can create new libraries. It is sometimes cleaner to create a new library for each action bubble instead of piling all your gametokens in a single library (“Level”).

Objectives

Each mission in the campaign will provide a number of objectives for the player.

Setting these up requires a MissionObjective entity to be placed at the destination of the objective. This also acts as the in-world marker position for the HUD icon.

Naming

  • MissionObjective entities are frequent throughout the level, and must be named properly so they are easy to manage.
    • AB1_GetToTheChopper_MissionObjective
      • This tells the developer that the mission objective “Get To The Chopper” is in action bubble 1.
      • It may seem easier to NUMBER mission objectives, however this is not good for iterative design. When you need to add a new objective in between Mission 1 and Mission 2, you throw off your whole system For that reason, using unique names is better, and more explanatory.

Debug

Tags

Tags are created in the level by pressing CTRL+F1/2/3/…

This stores a coordinate in the tags.xml file attached to the level.

You can press SHIFT+ the corresponding F key to jump to that coordinate at any time in the editor.

Per-Level Debug Script

It will be necessary for every level to have a fast debug jump through the level.

This must be set up by the designer so that pressing F2 (spawn) will jump the player character to the next objective and cleanly complete all the previous logic. Since the logic for each level is unique, it will be down to the designer to set this up on a per-level basis.

Blogtober

Blocktober

I thought it was finally time to write up a quick blog post summarizing the amazing response #Blocktober received last October. Hopefully this also serves as a nice way to remind people to start collecting up stuff they want to share this year!

We got some awesome coverage of the work on display from news sites and it spawned a lot of discussion on level design forums like MapCore.

Gamasutra

“Ever wondered how level designers plan out vast, sweeping levels without getting lost in a labyrinth of their own making? Well, thanks to the Blocktober hashtag, all your dreams are about to come true. “

Polygon

“This is a stage of development we’re not often able to see”

Gamesradar

“Naughty Dog starts #blocktober by showing off Uncharted’s bones, more devs join in”

Mashable

“Game developers on Twitter are sharing what their games looked like mid-development”

Waypoint

“Game Designers Are Sharing Naked, Unfinished Levels for “Blocktober””

80.lv

“Level Designers Reveal Early Stages in “Blocktober” Hashtag”

Our own David Shaver even took Blocktober to GDC this year…

Personally, I loved seeing everyones work whether it was professional or personal, recent or past, veteran or hobbyist. It was all really inspiring and I hope the exposure helped everyone improve their skills and maybe grow a bit more appreciation for the art of level design.

After talking with many developers it seemed that getting exposure on the working practices of level designers was hard to come by. There is such a broad spectrum of what is considered “level design” and every studio has a different way of operating, but if Blocktober showed me anything it’s that the core fundamentals of what is expected from level designers seems to be consistent.

That being, that while blockouts form much of the basis of our output, level designers are also expected to be the glue between all departments in a studio (if you’re a one person team you are also the glue between you and…you). Someone recently described level designers to me as the stewards of the game. When you own a level, no matter how it is represented, you don’t just own the geometry but you have to consider every single element that goes into it. While Blocktober was able to showcase the enormous talent of level designers and their ability to create spaces, the elements we see in screenshots only show a small portion of the discipline. This is why I think it’s so important to gain visibility on work that isn’t just of artistic merit, but also displays clear intent and function for a huge range of games. The level of skill on display in the work people shared with this daft wee hashtag was phenomenal and they showed that it takes a great amount of experience to be able to focus on the elements that are truly important to your game while also creating spaces that covey your intent.

This is also why I enjoyed seeing blockouts for past works. I know there was some expectation that people should tackle #Blocktober like #Inktober (by attempting a blockout a day (I tried myself, it’s tough!)) but I think what we gained from seeing blockouts of works we have experience playing is of enormous value. As I said, the artistic side of blockouts is only a small part of the whole picture and so being able to see early blockouts for games like DmC, Gears of War 4, Titanfall, Deepest Ocean, Q.U.B.E. 2 and everything in between, knowing how they feel to play, is a fantastic source of knowledge.

I do want to give a shout out to Jasper Oprel (@jasperoprel) for actually completing one blockout a day and then combining all that work into a dungeon you can explore here…http://oprel.work/games/templo/

The response to Blocktober was immense and I’ve had the enormous privilege of seeing level designers light up when discussing it and looking forward to it continuing. Thanks to everyone who contributed and made that possible, it’s truly amazing and I hope people engage with it again this year.

Originally I was going to do a “my favourite posts” blog, but I think there were too many to be able to do that. So instead I’ll just sign off by saying remember to follow @BlocktoberLD for all the #Blocktober tagged goods and get prepping for October 2018!

Cheers.

#Blocktober

Much like community initiatives like #Inktober the goal is to improve your skills and share images of your level blockouts. This is a stage of level design that few people get to see and it would be great to get more people aware of what goes in to level building, warts and all!

I’ll be archiving as many #Blocktober tweets as I can at https://twitter.com/BlocktoberLD

Share images of your blockouts with #Blocktober

Cheers,

– Mike

GDC Europe 2016

fb

Unfortunately I managed to completely miss posting any content in July, but for a very good reason. I have been busy putting together my talk for this years GDC event in Cologne!

I will be giving a talk titled: Creating Conflict: Combat Design for AAA Action Games along with two very talented designers: Pete Ellis from Guerrilla Games and Sam Howels from Deep Silver’s Dambusters Studios.

You can catch the talk at 2:30pm on Monday the 15th of August at the GDC event (or later on the vault).

Hopefully I’ll have more content for the blog soon!

Cheers

Creating Conflict: Combat Design for AAA Action Games

Michael Barclay  |  Lead Level Designer, Cloud Imperium Games | Speaker
Sam Howels  |  Principal Designer, Deep Silver Dambuster Studios | Speaker
Pete Ellis  |  Level Designer, Guerrilla Cambridge | Speaker
Location:  Congress Saal 2, 4th Level
Date:  Monday, August 15
Time:  14:30 – 15:30
Format: Lecture
Track: Design
Pass Type: All Access Pass, Student Pass Get your pass now!
Vault Recording: Video
Audience Level: All

Back to The Witcher

I finally have managed to find the appropriate amount of time to get stuck in to The Witcher 3.

header

While I have managed to rattle through Dragon Age: Inquisition, clocking in an obscene amount of hours, I found I couldn’t get any momentum with The Witcher. With RPGs of such immensity, when you don’t get any flow you will put it down one afternoon and not revisit it for weeks.

I bought in early but found its control scheme wasn’t to my liking. It reminded me of trying to navigate through doors in Red Dead Redemption, clunky and unresponsive. I don’t have some kind of deep rooted aversion to floaty controls but I found it quite frustrating.

I also found I would constantly snag on the (albeit beautiful) scenery and watch Geralt start-stop-start-stop before getting a run on again. This was particularly bad while riding his horse (Roach).

I’d heard a patch introduced a new control scheme and tried again. Using mouse and keyboard I still found it a bit of a chore to control, but then I switched entirely to gamepad.

Now I’m in.

kxnz8yzofzcd4abeeqma

I’m thoroughly enjoying the design of the overworld. I am a “Hooverer” in RPGS, by which I mean I try and hoover all content in an area before moving on to the next. Something I loved in Skyrim was the gentle encouragement to stray from the critical path by small quests, distant landmarks and the sound of dragons. The world of The Witcher is so beautifully crafted that i am finding it just as exciting to wander off to side-quests and events as it is to complete the expertly written story missions.

This helps give rise to the best kind of game stories. Just as you are fulfilling the main objectives laid out by the game, an intriguing event pulls you off to one side. “I’ll just check this out then get back to it” you think. Suddenly, hours later, you’ve gone off on a completely separate adventure that seems to have sprouted organically amoungst the scripted paths the developers laid out.

Looking forward to more.

Also, I’ve been complimenting my dive into The Witcher with a great fantasy novel I highly recommend: Patrick Rothfuss’ The Kingkiller Chronicle: The Name of the Wind.

Viva La Ludo Locomotion

maxresdefaultI really like trains. Not in a parka-wearing, notebook-wielding kind of way, but in a “this is the best way to travel, specifically if I have to travel between Dundee and Manchester” kind of way. You see some excellent scenery and fascinating people. I once sat adjacent to a gentleman on a train travelling from Stockport to Edinburgh who had booked a table seat so he could watch Rab C. Nesbitt VHS taps on the Combo-TV/VCR he had brought with him. Even the tinny sounds of Gregor Fisher bellowing through the carriage couldn’t dampen my mood on a train. It helps that the UK countryside is a marvelous source of inspiration, if you get a chance to actually see it through the rain and fog and trips to the small kiosk next to the toilets for a £5 bag of crisps.

Clearly level designers love trains as well, because they just keep showing up in games! And when they do, a twinge of excitement usually follows from yours-truly.

To that end here’s a list of my favorite train-based levels and some designery notes about them to keep it all above board and pretend I didn’t just want list some levels with trains in them like an absolute nerdling. I just hope I can get to the end of the list without running out of STEAM!

a9330e6a-a5e3-4c2a-a7a7-36324e5cfc4d-1020x612

Steam, like a steam train. Choo choo!

Uncharted 2 – LocomotionUncharted-2-train

Right lets get this out the way because it’s the first thing people think of now when they think about train levels, which, if you’re like me, is at least twice a day. This level floored me when I first played it and it set the (level crossing) bar for all future locomotive-based adventures.

Naughty Dog described this level as a “fully traversable set-piece” and had to develop new technology (the Dynamic Object Traversal System) to pull it off. They essentially produced a level within a level, where the player is traversing across a train as it speeds through the Nepalese mountains.

Like all the best levels, the result is a an experience that holistically fuses everything exciting about video-games: technology, story, agency and to top it all off it was beautiful to look at.

Level Design Notes

This level is not just a cool set piece but it is a great example, probably the clearest example, of Naughty Dogs design sensibilities (at least, at the time). The physical space the train inhabits represents a linear timeline of progression and pacing which we can observe when considering the layout of the vehicle alone. What the movement of the vehicle brings to the level, beyond simply looking and feeling epic, is that the “fall to death” areas (that are usually vast distances in the rest of the game) are now much shorter (falling off the train kills you). The result is a level that pushes the player to utilize Drake’s traversal set to progress over a tighter area, with hazards that can actually kill the player. This pushes the tension of the level up incredibly high. To add to that, the technology allows the train to bend and sway, moving the jump destinations around, making progress feel tense and dangerous.

Crysis: Warhead – From Hell’s Heart

Train_loading

I’m a bit biased here because of my history working at Crytek on the Crysis games, but this level, designed by Zoltán Katona, is just the ticket. Much like the Uncharted 2 example above, the scenario leverages the best principles of the game it lives in. In the case of Crysis, that comes in the form of nanosuit abilities such as super-jumping and super speed as well as the sandbox level design philosophy Crysis is famous for.

Level Design Notes

The player can board and disembark the train whenever they want using the super-jump, they can run off to get up close and personal with enemies in the distance then use super speed to catch up with the train again and they can utilize many of the sandbox options Crysis offers. For example, the train is armed to the teeth with mounted weapons and, again like Uncharted, physically moves through the game world. The result is a moving unit of destruction with the player as the conductor. A real joy to play.

Red Dead Redemption

One of my favourite games of all time, as a huge fan of westerns this game just runs through the list of western fantasies we’re all familiar with in a giant seamless open world. It feels like a cheat to call the entire open world a “train level”, but it is a level and it does have a train moving through it so you can fulfill all your fantasies of train robbing and executing bandits by hog tying them and laying them on the tracks. I want to give a special mention to one particular mission however…

Rdr_american_imperialism

Red Dead Redemption: Undead Nightmare – American Imperialism

  • Cowboys? Check
  • Zombies? Check
  • A motherflippin’ TRAIN? Check!

Level Design Notes

Like Crysis: Warhead, you’re escorting the train through the wilderness fighting off enemies. Unlike Crysis, however, those enemies are zombies and they arrive in hordes! This insane mashup is just a brilliant slice of fun that really utilizes Rockstars open world systems, great arsenal of western weaponry and plain fun mission design. While you can jump on and off moving locomotives in the open world at any time, this mission makes it the focus and keeps you engaged.

Timesplitters: Future Perfect – The Khallos Express

TS3-screen06

More bias, there’s a reason I wanted to work for Free Radical and that was down to the awesome TimeSplitters series. Future Perfect is often overlooked due to the milestone achievement that was Timesplitters 2, but my memories of the third installment are just as fond, late nights playing split screen on the Gamecube with friends.

Oh yeah and Future Perfect HAS A TRAIN LEVEL which makes it THE BEST TIMESPLITTERS, END-OF.

Level Design Notes

This level excels in continually keeping up the excitement. It starts off with some stealth, moves into tight corridor shooting, out into the open for some frantic action and follows with multiple setpieces including a chopper, wormholes, a SECOND train, puzzles and a jetpack flying boss fight. The levels tempo is set by the great music track which follows the action brilliantly.

This level also includes the remote control cat “Strudel”, which is worth mentioning just for sheer novelty alone.

Realistically Textured

Realistically textured and all

Gears of War – Train Wreck

On paper, there’s nothing that a train brings to Gears of War other than sheer novelty. In practice, it just works. The momentum of the rhody run coupled with a level that is itself charging through the environment adds a satisfying level of empowerment to the already JUICED Gears of War protagonists.

At first it seems like standard Gears of War fare, cover shooting as you make your way up the train carriages.

And then they throw this hackit bastard at you…

Hiya pal

Hiya pal

And suddenly it becomes clear why the level designer put you on a train.

This is a brilliant example of how Epic took the established mechanics of the Berserker boss fight and married them up with an environment that enhances the tension of the encounter. Ultimately it’s a simple one, but it’s a great twist to kick off the level.

The mechanics of Gears work wonderfully on all sections of the level. The trope of the chopper enemy is replaced with the, suitably Gears, “Reaver”. These come in waves and add an element of verticality to the action.

reaver

 

After some open-air shooting the level progresses into the tight corridors of the carriages. Here the level designer chooses to throw lambent at the player, enemies that are very dangerous in close quarters. The mechanics of Gears put to great use once again. Suddenly the momentum from earlier is put into question as the player cautiously approaches new carriages and unseen corners in a tight space such as a train this raises the tension even higher.

3

Special mention here to ending the game ON the train with the final boss fight. If you thought it was odd that the Berserker was thrown at the player at the start of the level, this is why. The boss uses all the previous mechanics of the level, so it turns out the level was a great way to make sure the player had a paced progression through the core features that would make up the finale.

222

 

End of the Line

Something inherent in all the levels mentioned that permeates through each experience is the concept of a “destination”. The idea that all this momentum is destined to end, one way or another, creates a sense of urgency in these levels. It adds a concept of a timer to the players experience often without literally showing a countdown. I believe this diegetic form of a timer – the physical passing of the environment – is an incredibly strong and implicit way to raise the tension in a game and can be used for a spike in pacing and tempo.

It also helps that trains are awesome.Timetrain

An honorable mention at the end here for Resistance 3 – The Train to New York.

This level uniquely utilizes the concept of a hold out and a moving level to create fantastic set pieces. Backtracking to defend different sections of the train and the deterioration of cover keep it feeling fast, frantic and fun.

Playing Games as a Level Designer

Originally I was going to call this “why Hearthstone is my favourite game right now”. Reason being, I can play Hearthstone without eventually falling in to one of the many patterns that turns playing games into a long analysis of how the game was built. Here are some examples of routines I go through when playing a game.

The Notebook

I sit with a notebook when I play. If the game is a benchmark title or one that I think I’ll enjoy I usually reserve the notebook for a second playthrough and try and experience the game as the designer intended first time round (that is, not stopping to take notes every 2 minutes). When I’m taking notes it’s usually about the structure of a level, particular mechanics I felt were integrated well, or just interesting locations and their position in the game. Most of all I like to analyze the pacing of levels I feel flow really well. Here’s an example of some old notes about The Last of Us: Hydroelectric Dam. (Warning, illegible writing but these notes are just for me so I’m not worried about presentation!).

IMG_5522

Exploring

Wolfenstein: The New Order is one of my most played games of 2014. The level design of each chapter is superb and there are often multiple paths and routes through a level which are intricately detailed in Id Tech 5. When I played through Wolfenstein: The New Order my game experience went something like:

  1. Stealth everywhere as much as I can exploring the level.
  2. Kill everyone. Everyone.
  3. Spend 20 minutes exploring the environments taking screenshots.

Capture3

It’s not uncommon for me to hear an NPC shouting “hey let’s go!”, “hey we should go this way!” as I run around a level I just cleared of enemies.

Rebuilding

Finally, if I play an encounter or a scenario I enjoyed for any reason, I’ll try and rebuild it to help analyze how the architecture supported the gameplay. This lets me see the level from perspectives not possible in the game, getting a sense of how each corner works. It’s helpful as well to improve basic blockout skills, using a pre-existing level as a sort of “concept art” to practise building. Here’s a room from that Dam again:

Capture

Super quick like a speed painting but useful for analyzing a simple combat space.

Here’s another of my favourite encounters in the same game, the Pittsburgh Book Store which I tried to reassemble in Maya.Capture4

Context

Finally, I just want to note that while I love breaking down other games and trying to see how they tick, I believe a level designer (and game developers on the whole) cannot get by simply playing games.  Analysis such as this is only a very small way in which you can improve and finding time for other pursuits is critical to become a better level designer.