🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Help me (learn to) develop open environments

Started by
3 comments, last by JohnnyCode 7 years, 12 months ago

So I'm still new to game development but have come a long ways since I started. One thing I've been putting off while learning how to program is the creation of art assets of my games. I've attempted to create the outdoor environments but they always turn out not great. I've been making them in the style of early 3D no texture but vertex colored just so I can concentrate on the modeling aspect and putting everything together.

What are the methods used to create an outdoor scene? My game is going to be a bit like Everquest was in that the open world is split up into zones. So the zones are not huge but big enough so that it takes like ~3-5 minutes to get from one end to the next. The one I'm trying to make is a forest surrounded by natural barriers (mountains or cliffs) with a cave entrance that leads to another zone. I wanted a stream or water source of some kind in the area too.

How do I make convincing hills, streams, cliffs for a first person view?

One of the big questions I ask myself is how I can make a decent forest area. How many variations of trees should I have? When I add them in, should I just randomly rotate and scale them so that it looks semi realistic? I'm always trying to make trees in a way that it blocks out the sky, but that never really works out.

FYI, how I make the level goes like this:

I start out with a plane, subdivide it a couple of times and move vertex points around to try and make convincing land area. Not sure if I should be separating the planes for the mountains, forest floor, river, etc.

If you guys have any generic tips or links on how to make natural environments (like forests, deserts, mountain paths, rivers, etc) please share.

Thanks for taking the time to read my post!

Edit: Question, is there a conversion for size in Blender to meters? Maybe the problem is that I keep making the zones too small...

Advertisement
This is where having the proper tools can help immensely. Creating a natural environment purely by hand can be somewhat difficult. You can ease your task immensely by incorporating procedural methods into your pipeline. Procedural methods can provide a way to quickly fill in natural detail, giving you a base to work from, after which you use other editing tools to tweak the environment.

You didn't say what your development environment and/or engine was going to be. Typically, the engine will provide some sort of Terrain component to be used in-game, and that component will typically make use of a heightmap texture, or an image that represents elevation to be applied to the subdivided plane of the world. For example, if you are using Unity, the Unity engine provides a Terrain object that uses a heightmap, and an editor to create a heightmap.

If your terrain editing tool provides access to fractal noise methods, you can use those to create a terrain base. Then you can use brushes for height editing, smoothing, terrain painting, etc... in order to further refine the heightmap. The finished heightmap can be saved as an image file, and imported by the engine for use in the game world.

As far as adding things like forests, paths, rivers and so forth, then again you can be helped immensely by having the right tools. Forests can be added using procedural methods such as fractal scattering. A noise fractal is created that delineates continuous areas, and when combined with a slope or steepness map of the terrain (ie, a layer that indicates how steep the corresponding terrain is, in order to exclude trees from spawning on steep slopes) can be used to determine the probability of a tree spawning in a given location, and populate the map correspondingly.

For rivers and paths, it can be helpful to have access to some sort of spline tool. For an example of this, here are some shots of my own work-in-progress terrain editor:

http://i.imgur.com/KsEH8DB.png
http://i.imgur.com/gZDYo7J.jpg
http://i.imgur.com/xnjGP4t.jpg

The spline tool operates by allowing the user to set a series of waypoints, which are connected together using a spline curve. Then a filter is applied to the spline to perform a function such as, in this case, smoothing a road and painting the road with a different terrain. A similar filter is used to create river beds that carve through the terrain.

I'm using Godot right now it doesn't seem to have any built in terrain tools. But I think blender can use height maps and scatter random trees? (I'll have to look into my options)

I hear what you're saying though on using height maps for terrain generation, then going in and manually cutting out specific parts I'm looking for right? Terrain generators can't really do things like cliffs or multiple levels though right? If I made a cave system, I'd have to model something that sits on top of the terrain?

Yeah, the heightmap gives you a place to start. In Blender, you can subdivide a plane a number of times, then use the heightmap image with a Displacement modifier on the plane. After that, you'd snip out the parts you need to.

Note, though, that often times an engine's heightmap-based terrain offers optimizations, such as level of detail, that can be crucial in rendering large terrains, especially on older hardware. Implementing the terrain as a large, subdivided plane with a displace modifier doesn't have that advantage. However, most Terrain components don't really provide a way for cutting out holes for caves.

One trick that you can use (which, IIRC, World of Warcraft does) is to mark certain vertices in the heightmap as being a "hole", and having the terrain component not render those faces. See http://www.gamedev.net/topic/668575-newb-question-on-terrain-rendering/#entry5231587 and in particular check out those first couple of links. This would require a specially constructed Terrain component. Another idea is to use the stencil buffer to cause faces marked as holes to not be rendered. By using a technique like this, you can still take advantage of the level of detail that terrain components usually provide, but also cut out holes for caves. Note that you'll need to build geometry for the cave entrance to hide the hole, since it'll have regular, straight edges.

This is where having the proper tools can help immensely. Creating a natural environment purely by hand can be somewhat difficult. You can ease your task immensely by incorporating procedural methods into your pipeline. Procedural methods can provide a way to quickly fill in natural detail, giving you a base to work from, after which you use other editing tools to tweak the environment.

You didn't say what your development environment and/or engine was going to be. Typically, the engine will provide some sort of Terrain component to be used in-game, and that component will typically make use of a heightmap texture, or an image that represents elevation to be applied to the subdivided plane of the world. For example, if you are using Unity, the Unity engine provides a Terrain object that uses a heightmap, and an editor to create a heightmap.

If your terrain editing tool provides access to fractal noise methods, you can use those to create a terrain base. Then you can use brushes for height editing, smoothing, terrain painting, etc... in order to further refine the heightmap. The finished heightmap can be saved as an image file, and imported by the engine for use in the game world.

As far as adding things like forests, paths, rivers and so forth, then again you can be helped immensely by having the right tools. Forests can be added using procedural methods such as fractal scattering. A noise fractal is created that delineates continuous areas, and when combined with a slope or steepness map of the terrain (ie, a layer that indicates how steep the corresponding terrain is, in order to exclude trees from spawning on steep slopes) can be used to determine the probability of a tree spawning in a given location, and populate the map correspondingly.

For rivers and paths, it can be helpful to have access to some sort of spline tool. For an example of this, here are some shots of my own work-in-progress terrain editor:

http://i.imgur.com/KsEH8DB.png
http://i.imgur.com/gZDYo7J.jpg
http://i.imgur.com/xnjGP4t.jpg

The spline tool operates by allowing the user to set a series of waypoints, which are connected together using a spline curve. Then a filter is applied to the spline to perform a function such as, in this case, smoothing a road and painting the road with a different terrain. A similar filter is used to create river beds that carve through the terrain.

Amazing, as you for sure know, I would like to have appointed all those thrown mittens arround the place, this is such a topic ... :)

1-Procedural? (In my case big no)

2-Explicit? (BIG YES)

3-Established and created? (BIG BIG YES)

Was it the mitten of the player? Yes. Was it the option three? Yes (!!! AAA++ then)

This topic is closed to new replies.

Advertisement