Advertisement

Open world game design in Unity

Started by July 12, 2014 05:02 PM
5 comments, last by Tom Sloper 10 years, 6 months ago

The game I am working on consists of just one quest, but the world required to tell the story well is huge and open like say in Fallout (so is the gameplay). It consists of three large cities having a lot of buildings with beautiful architecture (a lot of details - that is vertices). So I need to make a world in which a player can walk from one city to another (they are quite far from each other) through the forrest (and the forrest itself is also complex graphics element). At the moment I am finished with the story, the mechanics, 3d models and animations. I have chosen to use Unity 3d to implement the game.

I have never been working on a project like this and I need some advice. How to start building such world in game engine? Should I assume that game engine solves such problems internally (using occlusion culling, optimal collision detection etc) and create this huge map with all buildings and details or I rather should use things like portals (create detailed scenes locally) or other solutions. If the second case - what solutions are best in your opinion?

Thanks for any suggestions

Misery

This is hard to answer without knowing your specifics. And you can't really give specifics because you do not know. When you get here, it is time to create some tests that exercise your system. How many polygons can your code and the engine handle? How big it too big? Is there anyway to make it bigger?

If you make some tests that stress the system, you'll be able to experiment and will discover some new questions.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

Advertisement

One of the problem I see with an open world without "zone" is that if there is AI in your game (I assume there is) they will consume a lot. Even if you don't see them, they will have to move in order to stay coherent and not just freeze when out of sight.

So, as Glass_Knife said you'll have to test it out. I guess you could try to create your zone approximatively, without details but with about the same number of vertices, this should allow you to stress the system. And same with the IA, make some IA that think something stressing.

I never tried myslef so I'm not sure if this would be effective.


the world required to tell the story well is huge and open like say in Fallout

I will assume you mean Fallout 3 (and assumptions always end up biting my behind), so I'd like to point out how small and constricted that world actually is. First, even Megaton is its own loaded level, as is the interior of every building and metro. All of the DLC loads completely separate environments as well. Additionally, if you go up high on practically any building or mountain, you can see the whole map (excluding console versions). It is not big at all in the Daggerfall/Morrowind sense (those games were GIANT). Second, walking is not gameplay. Never rely on holding down "W" as your primary mechanic.

So, unless you are telling a story about hiking, I'd consider "huge" and "open" to actually become obstacles to your game and story. Fallout 3 wasn't tiny (relatively speaking) because Bethesda couldn't manage to stream bigger levels. It was smaller and focused and packed with gameplay. Don't let this idea of "hugeness" ruin your game and story. Because walking is boring (see Dear Esther).


Should I assume that game engine solves such problems internally (using occlusion culling, optimal collision detection etc)

No, you shouldn't. I spend a considerable amount of time baking my occlusion culling and navigation meshes (features I'm not sure are available in Unity's free version). The settings will need tweaked and the only way to really do it is trail and error (at least until you get your own baseline settings). You'll have to code your own method for streaming "terrains" in Unity, which, while not impossible, is time consuming.

You'll also need to manage your own LoD settings to get the true benefits of these optimizations. I've made many large environments in Unity and the biggest issue is memory problems in the Unity editor itself (c'mon 64-bit! I need you!).


I have never been working on a project like this and I need some advice.

The best piece of advice I can give is to work on a smaller project. Really. I'm making an environment (UnityPro using it's built in terrain controls -- you can see screens on my dev journal) that is only roughly four square kilometers -- and only one kilometer is navigable -- and I'm struggling to complete it all by the end of the summer.

Prototype a smaller game using your existing mechanisms and art assets. Prove your concept and practice a bit.

ETA: My Dev Journal with Screenshot http://www.gamedev.net/blog/1880/entry-2259820-creating-a-halloween-environment/

Indie games are what indie movies were in the early 90s -- half-baked, poorly executed wastes of time that will quickly fall out of fashion. Now go make Minecraft with wizards and watch the dozen or so remakes of Reservior Dogs.

@GoCatGo thank you very much. That was actually an answer that cleared everything to me at the moment. As you suggested I will start with "smaller" approach.

You are very welcome -- hit me up if you have any Unity-specific terrain questions. I've likely hit all of the problems you will encounter and would be happy to pass along all that I've learned.

In fact, here is another piece of advice (Unity specific): Nail down your event handling/notifications code EARLIER rather than LATER.

Indie games are what indie movies were in the early 90s -- half-baked, poorly executed wastes of time that will quickly fall out of fashion. Now go make Minecraft with wizards and watch the dozen or so remakes of Reservior Dogs.

Advertisement

How to start building such world in game engine? S


This is not a game design question, so I'm moving this.

-- Tom Sloper -- sloperama.com

This topic is closed to new replies.

Advertisement