Home Technical Talk

Open world engines

polycounter lvl 14
Offline / Send Message
NAIMA polycounter lvl 14
Hi all I woudl lik eto get some informations about openworld game engines and the size actually managed by them , the ones I know so far are the Bethesda engine and the Rage engine from Rockstar for RDR , according to the info I gound on the web here I made a small image comparison also putting the map heightmap of oblivion inworldmachine and Cryengine to see what is actually the visual feeling inside cryengine for a world of the dimensions of Oblivion , so in Skyrim or oblivion the world is 16 sq miles , almoust 4 x 4 kms and it feels enough big in game , but in cryengine the same map size feels like a fishtank , now why this feeling? I knw that walking around in Oblivion it soon ends by going from a side to a side in few ...

I of course played RDR and it feel enourmously bigger , as an estimate I thinkits actually the double of the size of Sandras GTA and Oblivion , so more or less a 8192 x 8192 map wich is the same of the crysis island , but crysis island is not explorable in all of the size , but just a small level portion , so is not an openworld , but RDR is and I suspect is even bigger than 8 x8 ... someone can give me more info ?
Woudl be possible to make a openworld with cryengine?
What would need for work as an openworld?
and what are the sizes actually ?

confrontoopenworld.jpg

Replies

  • mdeforge
    Options
    Offline / Send Message
    mdeforge polycounter lvl 14
    Disclaimer: I have not programmed a complete game engine or worked extensively with levels inside existing game engins, but I do have experience making a terrain engine with XNA.

    As far as the Oblivion vs Crysis map size goes, I'm going to take a guess and say that, per pixel in the height map, they are either using a different unit of measure, or a different size. A pixel on that map can be 10 meters x 10 meters OR it can could be 100 meters x 100 meters. It really depends on much you scale the height map.

    Just by looking at the oblivion map inside the cryengine, it look's like you're several times bigger than you should be. I bet if you shrunk your character down, it would look a lot more normal.

    Yes, you can make an open world in the CryEngine (See Crysis). You can make the maps any size you want. The great thing about using an existing engine that can handle those open worlds is that it's taking care of the scene for you. When I programmed my own terrain program, I had to create Octree's so that only the parts of the scene that were in front of my character were visible. It was a lot of work.

    Hopefully that helps?
    but crysis island is not explorable in all of the size

    Eh? Wait what? I remember being able to go anywhere on the island. Perhaps my memory deceives me?
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    The size in Oblivion is compared to a 16 sq miles ingame , in pixels is about 4288 x 4128 , the map of crysis is not openworld you can advance a level at time , and only a small portion of the map per time is explorable , RDR instead is totally openworld ... no idea of the size precisely tough ...
  • mdeforge
    Options
    Offline / Send Message
    mdeforge polycounter lvl 14
    The original Crysis is open world. You are talking about Crysis 2, which is indeed level based.

    [ame="http://www.youtube.com/watch?v=nluloXlnV2I&feature=related"]Crysis (PC) (EA) - YouTube[/ame]

    http://en.wikipedia.org/wiki/Crysis
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    no is not "open world " is largte environment but its not an open world where you can go anywhere for the whole lenght of the game its divided in levels , check the editor ...
  • ambershee
    Options
    Offline / Send Message
    ambershee polycounter lvl 17
    Given appropriate level streaming, you'll find many engines don't really have a fixed limit (at least not practically). CryEngine and UDK are two you can play with now. Whilst I cannot speak for CryEngine, you'll find that UDK has an upper limit coming into the hundreds of square kilometers at the default scale. With any reasonable leyout and management, the player would literally have to walk for days to reach the other side.
  • mdeforge
    Options
    Offline / Send Message
    mdeforge polycounter lvl 14
    What you're probably seeing in the editor is multiple height maps. That's perfectly acceptable. Open world is really a player term for not having to experience loading from zone to zone and being able to freely explore. Whatever the developer has to do in the background to do that is another story. With a map the size of Crysis and the amount of detail the terrain has, there is definitely multiple heightmaps side by side to make up a larger grid. Otherwise there would not be a ton of detail in the terrain because the resolution wouldn't be high enough to cover that scale.

    That probably explains why you're seeing what you're seeing. Get what I'm saying?

    EDIT: I don't know the inner workings of cry engine, but that is what I'm assuming you're seeing. I've never opened the cry engine.

    Perhaps you can get some info from Crytek's tech page: http://mycryengine.com/index.php?conid=2
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    nope its one heightmap it doesnt have lod system for heightmaps and no normal maps for distant terrain is one single terrain and each level has a portion of the terrain detailed when you change level you change zone of the map if you coudl go freely anywhere you would see , anyway just load a crysis editor level and you can see...
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    I know how cryengine is and is not an openworld , anyway anyone knows about RDR rage engine how that works and how big is it ? how manages the stuff ingame loading unloading portions of the map , lods or normal maps for distant terrain etc? How that should be managed in cryengine too to work like that?
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    back on topic does anyone knows?
  • cupsster
    Options
    Offline / Send Message
    cupsster polycounter lvl 11
    terain gets recalculate by player position by subdivision of heightmap and other factors that engine can process like custom nosie enhancements.
    maybe waht you are look more into is echnology of multiple taerrains objectstogether on the grid.. more like JQuerry brick function or you can make them all same size, same resolution and set them as neighbours so their shared edge tesselation wil match by heightmap, but this must be supported by engine of your choice.
    for loading and unloadin og object in general position sorting mechansims are essentials along with LOD..
    good practice is to update LODS in inrregular intervals so your screen is not busy whole at once.. hiding and unhiding of object based on frustrum culling and precalculated occlusion culling for static meshes.
    open worlds are real playground for your creative thinking.. also keep in mid that terrain can be visually designed in a way that by obfuscating vision range or views seems to be bigger.

    in your comparison, cruccial is to figure out original heightmap density and units of engine.. then you can proceed to calculate setttings as terain size and height for other engines.
    keep in mind to compare look and feel you mus make them look and feel similar so scale is very important.. i noticed that on cacti.. if you make trees larger or smaller your preception can be destorted by know fact that you think that you know how big that tree is (cause it is in general known object) so you derive distance from this improperly scaled "known" object.

    final note: does not count with that that all engines have same units setups..
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    My question is .... Is it possible to imPlement in cryengine something like you described in irder to be ab le to use it for an openworld game setting ?
  • Ace-Angel
    Options
    Offline / Send Message
    Ace-Angel polycounter lvl 12
    Did you try the CryForums for these questions? The peeps over there are much more active then the UDK forums, and usually have the solution to your questions (they're also fast by forum standards in answering questions).
  • NAIMA
    Options
    Offline / Send Message
    NAIMA polycounter lvl 14
    no are mostly modders and the devs there don't post much ...
  • commander_keen
    Options
    Offline / Send Message
    commander_keen polycounter lvl 18
    What makes an engine capable of "open world" levels is having a good LOD system, good streaming system (for everything), and most importantly it needs some way to avoid float accuracy errors.

    Object positions are generally stored in 3 float variables in games. The way floats (floating point variables) work is the bigger the number gets the less accurate the number gets on the right side of the point ("."). This means that as your environment gets bigger the positions of your objects begin to lose accuracy, and eventually may jerk around in strange ways, and eventually completely stop moving. At first person detail where 1 unit = 1 meter you probably want to keep the player (and anything requiring accurate physics updates) within 10,000 meters of the world origin.

    So when you want to make a game that requires larger levels you need to dynamically move the world around so that your camera and player are constantly within an acceptable range from the world origin. As you can imagine this complicates things terribly and makes adding new features to the engine much more complicated and time consuming, which is why its almost never done unless absolutely necessary.

    AFAIK Cryengine does this which means it should be possible to make very large environments with it, Unreal Engine does not do this, which is why it has a hard limit on the level size.


    Im not sure if anyone has used double accuracy variables (64 bit instead of 32 bit) throughout the entire engine to overcome this (or if its even possible considering graphics hardware), but maybe that is another option.
  • Ben Apuna
    Options
    Offline / Send Message
    Gamasutra - Visualizing Floats should help explain a bit more about the accuracy issue commander_keen is talking about if you are interested.
  • ArchieVision
    Options
    Offline / Send Message
    AFAIK Cryengine does this which means it should be possible to make very large environments with it, Unreal Engine does not do this, which is why it has a hard limit on the level size.


    Hello,

    That UDK Information is very inaccurate. You can do a totally open world that is 19 km x 19 km with the Landscape system. And that is just 1 landscape. And you can have multiple in a single level. Not to mention Level streaming. Landscape has a very good LOD system built into it. Also, There is no limit on level size. You can make a level as big as you want in UDK, just make sure your PC can handle the load in the Editor while developing it. That is the limit, Hardware while developing.

    I do not know much about Cry-Engine. But UDK, I do know this. It is all explained in the UDN.

    Thanks,

    Lee
  • commander_keen
    Options
    Offline / Send Message
    commander_keen polycounter lvl 18
    I just tested the latest UDK version. You are pretty much confined in a box between about -262140 and 262140 units. When you convert that to meters you get -5243 to 5243 which is an area of 10486x10486x10486 which is half of my suggested max origin distance.

    I say "pretty much confined" because you can apparently move objects further outside of this box, but your editor cameras are restricted to within the box making it more or less impossible to work out side of it, and even if you could you would soon run into the float accuracy errors I mentioned.
  • Justin Meisse
    Options
    Offline / Send Message
    Justin Meisse polycounter lvl 18
    Couldn't you just have multiple levels at the max size and use streaming to stitch them together? I don't know the technical side of it but from my MMO experience, the terrain isn't one solid terrain mesh but a series of small ones similar to how Source Engine handles terrain (i think).
  • cupsster
    Options
    Offline / Send Message
    cupsster polycounter lvl 11
    xxxxx
    xxoxx
    xxxxx

    x-terrain tile
    o-player

    simple concept.. streaming data as player goes around.. pooliung objects helps a lot with memory peaks at creating and destroing objects [tip: reuse not create and destroy unless engine is designed for that]..
    when player is too far away you can shift "centre of the world reference point" to engine origin without player knowing that and for instantianting use this offset vvector on anything.. be aware that if you using static meshes you can have serious penalty within engine for moving them.. (needs to be recalculated)
  • cupsster
    Options
    Offline / Send Message
    cupsster polycounter lvl 11
    wtf is with my english? :D i think i need to replace keyboard
Sign In or Register to comment.