Open World games?

Started by
10 comments, last by bartm4n 8 years, 10 months ago

Recent months ago, i started a topic about open world games in Unity. Well this may be a bit more different but its somewhat similar to it. Recently i heard a rumor that Rockstar Games are planning whole United States as a map for GTA 6. So yea i was wondering that it might not be possible. Because of the draw calls and tris. And i still doubt something like Occlusion Culling(a feature of Unity engine). l guess RAGE engine was used to create GTA series , i haven't seen the game engine and its features but still i have this doubt , is it really possible?

Advertisement
Of course it's possible, it depends how you approach it.

If I was going to do this I would separate cities and require long distance transport to travel between maps. For example a train or plane trip costing some dollars.

If you think about it, this is the only sensible way to do it as distances between cities would be so huge you'd never be able to find other players in multiplayer and travel would become a boring chore without some form of fast travel.

I'd be surprised to see it done any other way...

Using a height map of the US, it is possible to generate all of the topography of the US.

From that point the developers could use a road / rail maps of the US to generate roads / rail lines, US census data to 'populate' each town, and implement procedurally generated buildings in all of the towns and cities.

Seasonal "climate maps" could be used to generate each "biome" type, while "botanical survey maps" could be used to generate the plant life.

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

Using a height map of the US, it is possible to generate all of the topography of the US.
From that point the developers could use a road / rail maps of the US to generate roads / rail lines, US census data to 'populate' each town, and implement procedurally generated buildings in all of the towns and cities.
Seasonal "climate maps" could be used to generate each "biome" type, while "botanical survey maps" could be used to generate the plant life.


Technically yes, but would it be fun? Imagine the mission:

"Freddie in NY wants you to assassinate Mike in LA. Drive there and complete the mission. You're currently in NY."

Yeah but no. A realistic representation of the US would take real world days to travel across, or real world hours to catch a plane across. Plus how do you matchmake games across such a wide area?
It's hard enough finding players in some other open world games as it is and in GTA online all the players just cluster around the city, shooting at each other while the countryside is a ghost town with the occasional plane here and there... Too much open space would be wasted space.
It's very possible. There was a game that did pretty much just that. It was a trucker simulation.

Also... Unity is currently not in the best shape for any decent Open World Development without some major hacks. Not impossible. Just stupidly inconvient. If you want, you COULD try talking to the makers of shelter. They used Unity.

But I highly doubt that ALL areas of the USA will be accessible. Probably catch a plane, and go to major cities. But not GO ACROSS THE COUNTRY SIDE.


Because of the draw calls and tris. And i still doubt something like Occlusion Culling(a feature of Unity engine).

Why wouldn't they do like every other open world game and break the map into zones that can be "streamed" on demand well before the player can see anything in the zone?


Unity is currently not in the best shape for any decent Open World Development without some major hacks

I am curious about this. From your experience, can you speak to the limitations of Unity 5 with regard to open world style games?

If you're dealing with a game world the size of the USA you better be prepared to handle positions relative to some nearby, local origin. Otherwise your physics and rendering will break down as soon as you get a few hundred km away from the origin, due to precision loss in your floats. As far as I can tell, this is possible to work around in Unity.

The other thing is asset streaming. You need to be able to continuously asynchronously load and unload assets as you move around the game world. From a cursory internet search it seems that Unity does not support this sort of streaming too well but that some changes to this are planned for Unity 5.

Edit: I didn't realize Unity 5 is already out. You might want to look into whether they added this support of not.


Unity is currently not in the best shape for any decent Open World Development without some major hacks

I am curious about this. From your experience, can you speak to the limitations of Unity 5 with regard to open world style games?

As I've said, it's not impossible to do in Unity. It's just a common misconception to people that Unity is the end all of options for a game engine. Unity was origionally designed for use in mobile game development. And it's still mostly optimized just for that, even though it can produce games for other platforms. Unity in my experience... is just a poorly made game engine when you compare it to Unreal, and CryEngine. Both capable of releasing to the same platforms as Unity. What just makes Unity popular, is that C# is easy.

What Unity is, is it's just a skeleton that you build upon. This isn't all too bad. But the source is not exposed to you. And it has the strangest method of handling scripts. The scripts are required to have a position in the world to be processed. Instead of being able to just plug the thing into the main loop or something.

That being said, the tools suffer greatly.

So... to get the overworld part of it, you need to have a decent understanding of Unity's file architecture, and also how open world paging works. Unity includes functions that helps you out with just that.

But the major problem in Open World dev for unity comes in the friggen Level editor. Without some major hacks and plugins, the Level Editor is unable to load up more than one scene at the same time. And automatically swap them out as needed. Why is this bad? You can't have the entire world for the game loaded at once, you will run out of memory, so you page it in your editor just like you would in the game. Obviously this is a problem.


The second option is to have the entire overworld in one file. But when unity reads it's scene files, it loads EVERYTHING in at once.

What to take away? You need to jump through some serious hoops for any large game made in Unity.

Tangletail - I wasn't attacking you friend, I was just legitimately curious what the limitations were in your opinion smile.png I certainly don't want to start an engine vs engine battle, since everyone has their bias and opinion on this and ultimately it just really doesn't matter.


Unity was origionally designed for use in mobile game development. And it's still mostly optimized just for that, even though it can produce games for other platforms. Unity in my experience... is just a poorly made game engine when you compare it to Unreal, and CryEngine. Both capable of releasing to the same platforms as Unity. What just makes Unity popular, is that C# is easy.

I will call you out on this though: Unreal and CryEngine were both originally developed and optimized for first person shooters - so what? I'm also not sure that I would call C# easy per se, but then again everything is easy when compared to assembly.


And it has the strangest method of handling scripts. The scripts are required to have a position in the world to be processed. Instead of being able to just plug the thing into the main loop or something.


But the major problem in Open World dev for unity comes in the friggen Level editor

Completely agree with you on both of these points.

They promised native multi-scene editing in Unity 5, but it did not make it into the first or second major Unity 5 releases.

I am really not sure why the engine requires a transform for anything that derives from MonoBehaviour. It seems like they should have written something like ScriptBehaviour to account for GameObjects that won't have a physical presence in the game world. This is most likely the result of a design oversight early in development. Although, aside from being awkward it doesn't really hurt anything.


The other thing is asset streaming. You need to be able to continuously asynchronously load and unload assets as you move around the game world. From a cursory internet search it seems that Unity does not support this sort of streaming too well but that some changes to this are planned for Unity 5.

This is completely possible, and actually was possible in Unity 4 if you had a pro license (though it was kind of ugly and had its hiccups). http://docs.unity3d.com/ScriptReference/Application.LoadLevelAsync.html and http://docs.unity3d.com/ScriptReference/Application.LoadLevelAdditiveAsync.html

This topic is closed to new replies.

Advertisement