Handling an open world

Started by
18 comments, last by Infinisearch 8 years, 5 months ago


Something like unreal engine 4 would do the job well as it already has industry proven LOD

I have no real experience with unreal engine 4 so I was wondering exactly what you mean by this? Does UE4 use some sort of dynamic LOD or is it still static but the method used to select LOD level is "robust"?

Well, I am sure most proven engines would work. I point this out because selecting something premade simply means that a lot of edge cases that can go wrong have already been found and fixed, and all the development is done for you. When you're dealing with something as large and complex as an open world game, IMHO you need as much of a leg-up as you can get your hands on as producing the content and populating the game world will be challenge enough!

I speak from experience as I am currently making an open world game myself and I knew from the start that it would be content that I would need to concentrate on. Without content an open world game is just an empty wilderness for the player to get bored in :)

Advertisement

Thanks for all this interesting stuff. Yeah, spacial partitioning was a thing I learned a time ago. Just forget about it, but ya, that will be definitely a thing I will implement.

Moewover I will definitely look up software occlusion culling and predicate rendering. Thanks for that. smile.png

I would recommend using a premade engine for something like an open world game.

Something like unreal engine 4 would do the job well as it already has industry proven LOD, frustrum culling, level streaming and open world systems built in (see their kite demo).

You could spend years writing all this yourself, and if you just want to get on writing the game and know the functionality needed works fine, going the premade route is a good idea.

If you do want to do it all yourself, good luck because creating it and making sure it scales well could take you a long time...

Good luck!

Mhmm... yeah, that's true. I can definitely use an premade engine. But what should I, as a programmer, learn, when I'm letting all the stuff done by the Unreal Engine which other programmer wrote. And where does these programmer have their knowledge from? rolleyes.gif Another engine maybe? Maybe from Unity3D? tongue.png

The knowledge within the big engines is built up over many decades of big AAA game releases. Unreal engine has lineage going back before 1998, and others back even further. Unity is a relative newcomer on the scene compared to a lot of engines - not to bash it's achievements because it is a very powerful and newbie friendly engine, whereas others such as UE4 can appear a bit unfriendly to the newcomer.

Try a few engines out and see which you like best smile.png

Bear in mind that cryengine and ue4 have open world facilities out of the box whereas for a lot of the functionality in unity you need to spend some cold hard cash in their asset store for plugins and addons (e.g. foliage instancing, terrain editing within the editor, possibly asset streaming etc). YMMV...

Yeah, I know that.

Sorry, if my message wasn't as clear as I thought.

What I really wanted to say by that, was that I'm interested in learning the "background programming": how an engine would handle it, how far it can be handled, where pros/cons are, where performance critical sections are, how to achieve stable performance, etc.

I already played around with Unity and Unreal. And I just don't want to click a game together. smile.png (I know, you can code your own stuff, due to the fact, that I prefer C++ style over C#, I would stick to UE instead of Unity smile.png)

For me, it feels like a WYSIWYG Website Editor, just for Games. But I want to code it. I want to code something, that I'm proud off and not something, where some other devs can be proud of their engine, that she could handle it. wink.png

Back to topic:

Is it useful to use a "scene format" (XML or something like that) instead of hardcode positions in the mehs vertices?

My thoughts were, that when the meshs vertex positions are hard coded (offsetted in Blender), it could be bad due to floating point errors.

Is it something to worry about? Or should I make something like a world editor, where I can move objects around and save it to a file like a "world description"?


Bear in mind that cryengine and ue4 have open world facilities out of the box whereas for a lot of the functionality in unity you need to spend some cold hard cash in their asset store for plugins and addons (e.g. foliage instancing, terrain editing within the editor, possibly asset streaming etc). YMMV...

Wasn't Unity5 relaeased recently and the engine with all features made "free"? Do you know if some of that stuff is included now or still through the asset store?


Thanks for all this interesting stuff. Yeah, spacial partitioning was a thing I learned a time ago. Just forget about it, but ya, that will be definitely a thing I will implement.
Moewover I will definitely look up software occlusion culling and predicate rendering. Thanks for that.

You're welcome, I also forgot to post this presentation for the occlusion culling system in Assassin's Creed Unity and the newest Trials. Go to the last presentation (gpu driven renderiing pipelines) here: http://advances.realtimerendering.com/s2015/index.html

edit - oh and I know of predicate rendering from DX, I don't know if opengl has an equivalent.

-potential energy is easily made kinetic-

Wasn't Unity5 relaeased recently and the engine with all features made "free"?


Yes however the add ons I refer to are third party so the unity developers have no obligation or way to make them free... :(

To OP here is something on software occlusion culling

https://software.intel.com/en-us/blogs/2013/09/06/software-occlusion-culling-update-2

edit - here is the original article

https://software.intel.com/en-us/articles/software-occlusion-culling

https://software.intel.com/en-us/blogs/2013/03/22/software-occlusion-culling-update


Is it useful to use a "scene format" (XML or something like that) instead of hardcode positions in the mehs vertices?
My thoughts were, that when the meshs vertex positions are hard coded (offsetted in Blender), it could be bad due to floating point errors.
Is it something to worry about? Or should I make something like a world editor, where I can move objects around and save it to a file like a "world description"?

When you say hardcode the positions of the vertices do you mean that your map is not "instances" of a mesh? I don't know what "offsetted" in relation to blender means.

Off hand the only thing I can think of with floating point errors are T-junctions in regards to rendering and in regards to multiplayer networking code.

-potential energy is easily made kinetic-

Hi,

Sorry for late answering, university eats all of my sparetime. :D

Here's an example of what I mean:

I want to have a Quadtree for the map, so I can easy traverse it and calculate collisions and other things.
That would be no problem, if I would have an idea for how I can positioning an object like a building on the map/on that grid -> quadtree.

you may want to consider data structures tailored to each task, such as 2d collision maps for movement physics, and some other structure such as an indexed renedrables list for a terrain chunk.

they idea is you store the same data two different ways for two different types of lookups, so both lookups run fast.

Norm Barrows

Rockland Software Productions

"Building PC games since 1989"

rocklandsoftware.net

PLAY CAVEMAN NOW!

http://rocklandsoftware.net/beta.php


Here's an example of what I mean:

Are you talking to me? If so I still don't know exactly what you mean by this:


Is it useful to use a "scene format" (XML or something like that) instead of hardcode positions in the mehs vertices?
My thoughts were, that when the meshs vertex positions are hard coded (offsetted in Blender), it could be bad due to floating point errors.

BTW besides reducing the number of triangles you try to render, you should also look into techniques to reduce draw calls like instancing, merge instancing and in the paper I linked above on gpu driven pipelines.

-potential energy is easily made kinetic-

This topic is closed to new replies.

Advertisement