One hundred years ago, human race almost extinguished. Since that time, only a few survivors remains and fight for their lives. You are on of them.
Find ressources, items, allies and exploit the powers of the Umbra to survive. But be careful, you are their prey...

Umbra is RPG / Hack & Slash game based on CryEngine3, in a horror fantasy world.

Game Features :

  • Based on state-of-the-art CryENGINE 3 technology
  • Solo and multiplayer game supported
  • Free character development - No class limitation
  • Survival gameplay - look for all help you can to fight aggressive and powerfull AI
  • Create your own weapons, armors and spells
  • Bound powerfull spirits to your weapons and make them evolve
  • Real time Time of Day and weather effects affecting gameplay
  • Fight in mutliple locations, from dark swamp to frozen moutains
  • Oppressing environment and ambiance
  • Mature story and quests

If you are interested in our project, contact us.

Image RSS Feed Latest Screens
Devblog : Medium size level generated Devblog : Generated level - no stairs Devblog : small level generated
Blog RSS Feed Report abuse Latest News: Devblog : Randomly generated level - Part II

0 comments by UmbraGame on Dec 22nd, 2014

In the previous article, we described the "default" parameter of each level we are going to create with the level generator.

Level Elements

A level is populated with various pieces we call "Level Element".
Level Element have been defined in the following list, each of the type has its own particularity and purpose in the level creation:

  • Entrance: That's where the player will start
  • Rooms: The important place of the level, where the main enemies and treasure will be found.
  • Corridor: Each art of the level that is supposed to connect room to each other. Generally less important than room.
  • Stairs: Similar to corridor, but these element are supposed to change the verticality of the level. We divided this type in two, for reason described below
    • Stairs up
    • Stairs down
  • Exit: The end of the level, allowing player to move to another level or ending the current scenario.

To make things easier, we decided to have a virtual 2D array of various size to manage the placement of our Level Elements.
Each of our Level Element will take a certain size in the 2D grid.
We first wanted to place each Level Elements according to their Bounding Box, but it ends up that using a 3D grid was pretty much exactly the same in the end.We then define what the important parameters our Level Element will have are.

  • Name: Always unique
  • Type: Entrance, Room, Corridor, ect...
  • FilePath: The default associated ground geometry. See below why.
  • XSize and YSize: For Level Element placement, described before.
  • Level: Each room have a level, according to its importance. Is it a dangerous room full of treasure or a simple one? Also, we may want to spawn important room later, when the player will be more powerful.
  • Prefab: Prefabs are an interesting feature of CryEngine, allowing to load at runtime any collection of geometry or entity. Each Element may have one or several different prefabs, and are selected according to their Frequency parameter.
  • Frequency: How often is that Element supposed to appear in the level ?
  • CountMax: Useful to make sure that a room will not appear too many time in a level, or to make sure it will be a unique room (boss, large treasure...)
  • NoSpawnBeforeXElements: This Element is not supposed to spawn before X other element in the level. I will make sure that some important Eement will never be too close to the entrance.
  • NoSpawnBeforeXElementOfSameType: Same as before, but only considering the sametype of the current Element.
  • IsStairUp/IsStairDown: For non-Stairs Element, we have this parameter telling us if the Element is making the level climb up or down. It will allow us to select or discard the Element if we want our Level to never go up or down.

Placement in the Level

The easiest and most effective way to create our level generator is to use a 2D grid. This grid will ease the placement of each element in the level, but may be problematic since element in a grid are quads - we pretty much want to manage any kind of shape for our Level Elements.
To fix that problem, our Element will not use the size of their actual BBox in the grid, but a virtual value given in their parameter file. Again, we could fix that problem by using oriented bounding boxes, but the result will be the same and managing a 2D grid is much simpler.

Before explaining how our path are generated, we will explain how an Element is placed in the level and how we connect Element to each other.
The base geometry of our Level Element is the ground. On each geometry, we add several dummies (called Helper in CryEngine) in order to mark entrance and exit points. This is done in 3DStudio, because we want the modeler to control the placement of the dummies.
According to the position and the orientation of the helpers, we will connect an Element with another one. The following picture shows various example of Level Element placement (Basic Geometries)


Prefab Association

As described before, prefab are an important feature of our Level Generator.
The idea is to create a simple ground first in order to assemble all our Level Elements, and then create all the component entity.
The following picture shows a basic ground on the right, and a Prefab associated to it on the left. For obvious reasons, we first create the shape of the level only with basic geometry, then add prefabs.


Also, since we manage any kind of entity in our Prefab, we can also use random content generator inside the prefab, in order to get even more variety - That's the way we also create furniture in the rooms, but that specific part will be described later.

That's it for today. I wanted to describe the generation process in this article, but it would result in a quite long article, so we will reveal it in our next post!

Media RSS Feed Latest Video
Post comment Comments  (0 - 10 of 16)
Dark_Ansem Aug 16 2014, 9:00am says:

too little info on his dammit!

+2 votes     reply to comment
eiri Dec 5 2014, 3:03pm replied:


+1 vote     reply to comment
((DarthRevan)) Jan 31 2013, 4:05pm says:

Look great, nice work!

+2 votes     reply to comment
Duruk Oct 23 2011, 4:27am says:

Very nice implementation of the CryENGINE. Really looks great.

+3 votes     reply to comment
pliskin.nh Oct 21 2011, 12:07pm says:

Umbra... Elder Scrolls inspired? Lol. Look at the title font!

+2 votes     reply to comment
Alex626 Mar 15 2012, 6:14am replied:

Also, Umbra is a name of the sword and a character in Elder Scrolls series.

+2 votes     reply to comment
Guest Jan 28 2013, 1:25pm replied:

The umbra (Latin for "shadow") is the innermost and darkest part of a shadow, where the light source is completely blocked by the occluding body. An observer in the umbra experiences a total eclipse.

+2 votes     reply to comment
Gandalf. Oct 18 2011, 1:06pm says:

Very nice

+2 votes     reply to comment
thunderising Oct 18 2011, 8:15am says:

looks amazing!

+2 votes     reply to comment
azultain Oct 17 2011, 10:49am says:

free or not free that is the question

+5 votes     reply to comment
Dearnike Jan 27 2013, 4:48am replied:

That is up to the devs.
But most of Indie CE3 games were free.

+1 vote     reply to comment
Post a Comment
click to sign in

You are not logged in, your comment will be anonymous unless you join the community today (totally free - or sign in with your social account on the right) which we encourage all contributors to do.

2000 characters limit; HTML formatting and smileys are not supported - text only

Developed By
Send Message
Official Page
Release Date
Coming Feb 2015
Game Watch
Track this game
Role Playing
Single & Multiplayer

Latest tweets from @umbragame

Umbra's Devblog : Randomly generated level - Part 2 #gamedev @cryengine #cryengine #indiegamedev

Dec 22 2014, 5:34pm

Umbra's Devblog : Randomly generated level - Part 1 #gamedev @cryengine #cryengine

Dec 14 2014, 6:06pm

Devblog is open ! #umbragame

Oct 8 2014, 6:35am

@RealtimeCevat Awesome news !

Mar 19 2014, 6:24pm

RT @adam_johnson_: #CRYENGINE #dropsthemic

Mar 19 2014, 6:19pm

RT @RealtimeCevat: Just announced CRYENGINE-as-a-Service for 9.90 USD/Euros per months.. All Indies Go Go!

Mar 19 2014, 6:18pm

Footage of Umbra featuring in Crytek's FreeSDK showreel at GDC 2014 !

Mar 19 2014, 1:06pm

Our new website is live !

Mar 17 2014, 7:57am

RT @RobertsSpaceInd: Get an early behind the scenes peek of the AI technology that will drive Star Citizen!

Mar 16 2014, 6:18pm

RT @KytheraAI: Yesterday was a pretty big day for us :-) Here's another using Kythera - the indie sandbox hack'n'slash @UmbraGame! T

Mar 13 2014, 8:36am

Embed Buttons

Promote Umbra on your homepage or blog by selecting a button and using the embed code provided (more).

925 of 26,447
Last Update
2 days ago
294 members