Sign in to follow this  
Fixxer

Question about professional game graphics

Recommended Posts

For my game im making, ive already created a level editor in which you use imported pre-fabs and just drag and drop them. Then it saves the map file in its own special format and only my game can use them. But, what it does in the game is it just remembers the location of the objects in 3d space in the editor and then loads them there in the game, and then builds a textured matrix undermeath the objects. Do professional games do this? Or do they just use one big level model?

Share this post


Link to post
Share on other sites
It depends on the type of game. Most RTS-type games, space games, and so on have a "map" file like you describe that simply holds the locations of various objects and preconstructed elements. The actual 3D data and textures are loaded dynamically at run time and assembled into the final scene data. I'm personally not sure what the current standard procedure for an FPS-style engine is, but I imagine there's a combination of a large "level" mesh (or maybe many such meshes linked together) and smaller elements providing details and "prop" objects within the level itself.

Share this post


Link to post
Share on other sites
i remember some one saying that they use a giant model and then cut them into chunks and only render them when they are in the camera view.

Share this post


Link to post
Share on other sites
In general, broad terms, FPS engines use a collection of convex meshes known as "brushes", then there are Entities which may or may not contain brushes for non colliding detail, portal definition, decals, light positions and so on and on.

Share this post


Link to post
Share on other sites
well which do you think would yield the best results both graphics and or performance wise?

Using the matrix and loading the objects at run-time OR using just one giant model.

Share this post


Link to post
Share on other sites
I have a project that does pretty much the same thing as yours fixxer.
As ApochPiQ said, RTS games tend to have tile-based schemes like this. It's fast, makes creating an editor and format easy, and you can easily update your pre-fabs and make improvements all over your levels.

FPS's I've heard of do not do this simply because it would be boring. The pre-fab method lends itself very well to repeating level geometry. When you are walking around an environment you usually do not want to see much repetition. Moreso, creating pre-fabs that can link up in a non-orthagonal way and make a world with any sense of verticality would be difficult for most modelers.

so modern engines used for indoor fps's use static level geometry often in the form of a bsp tree. Any object that can move, think, or perform an action is treated as a seperate actor, entitiy, object, whatever you want to call them.

There is nothing wrong with your approach though. If you are making an rts, rpg, or outdoor fps (even an indoor one), you only suffer less flexibility when it comes to level design. Just remember that entertaining gameplay is pinnacle.

Share this post


Link to post
Share on other sites
It really depends on what sort of environment you have.

Like I said if it's a vast outdoor landscape with sparse, simple structures, then absolutely use a pre-fab based level paradigm to handle it.

Both methods afford different advantages and disadvantages. If your prefabs are organized on tiles, then occlusion is almost trivial, You will probably gain a simple speed bonus because you can organize the prefabs into lists or vbuffers just transform to the correct location, then push the polys with 1 call. Your pre-fabs will also probably have only 1 or two textures, so chances are you inherently gain the advantages of batching lots of triangles without texture state changes.

Now a full level model is more difficult. Occlusion is no longer trivial and would use portals, a potentially visible set, bsp's, or some combination or those and other algorithms. So this takes more time to get running, but allows for many optimizations.

The graphics and performance are kind of intertwined. You could usually balance performance by changing the graphical quality of one of the methods. But in the end, how the graphics look is mostly dependant on the quality of your geometry, textures, lighting/shadowing, post-process effects, etc.

Share this post


Link to post
Share on other sites
thanks for the input :-)

i am creating an fps game, but it is a more realistic war game so most fighting will be outdoors.

Share this post


Link to post
Share on other sites
Most fps games these days still use brushes to build up their geometry
they use preprocessing tools to convert these brushes into meshes, removing all the parts of the brushes which will always be invisible, stiching them together so you don't have any seems, and divide them into blocks so you don't have to render the entire level every frame, but only what is (very) roughly visible at every moment in the game.
Any modern fps game would also have props, like mentioned earlier, which are just additional meshes placed in the level to make things look nicer.

A lot of other games, and some fps games (killzone for example) simply have their levels made in maya or 3dsmax.
Apparently the artists prefer that because they only have to deal with one tool which gives them a lot of control over the mesh.

Personally i think it's better to make a rough level with brushes first, then make it look prettier with detail meshes, because then you can more easily make changes and tweaks to your gameplay.
In fact, in halflife2 they apparently first make their entire level roughly with untextured brushes, tweak the gameplay, and only then start adding the meshes to make things more beautifull.
I think that's probably the best way to do this.

Share this post


Link to post
Share on other sites
What I do is support both custom geometry and instanced prefabs.

You can load in prefabs, or create few simple mesh instances in the editor, like spheres, hemispheres, grids, etc.

Then move around the meshes, align them place them, and if you want, you can just save out the level like that, and when the engine loads the level, it will burn the static prefab meshes into world space, perform static lighting, break the world apart into smaller chunks for lightmaps, collision and culling.

Or, in the editor, you can 'burn in' some or all meshes into static geometry. This lets you individually manipulate the vertices & triangles, and perform deformation, extrusion, tex coord generation, subidivision, switch materials, etc.

You can also go back and save a selected set of triangles as a prefab mesh, to complete the cycle.

Now, I haven't made a bunch of levels with this yet, so I'm not sure how well this will work out in the end, but it seems like a good compromise - you can make levels that are just prefabs stuck together really quickly, or you can burn in some of the prefabs & customize them so they don't look all the same. Or, you can burn in all prefabs and make a completely custom level.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this