Trying to do Too Much?

Okay.

Here’s a scene I’m making in 3DS Max. As you might guess, the scene is getting to big for my processor to handle. In order to get around the scene, I either have to use the wireframe mode, or import all my elements into a new file as seperate Xrefs, which is tedious.

My Question- I want to create an FPS that has at least a dozen of these domes, plus a city block of normal buildings. (The top of the dome has been cut away to show the interior). I’m creating all sort of objects to go inside them, but this particular dome is supposed to be a sort of barracks. I thought because of the open spaces between the bunks it would be fun for sniping. (For reference, each of the blue boxes is exactly 12x12x12 feet.)

Is It Too Much to drop into Unity? I’m not asking if I should use another engine… just asking if I should scale back my project…

Thanks ahead of time to anybody that responds!!!

You didn’t attach anything to your post (yet), but I can tell you that if your modeler is crapping itself trying to render the scene then yes, obviously it’s too much for a real-time project.

You want to look into how low-poly modeling works in the context of real-time games. You need to use low-poly models and add surface detail with normal maps, not geometry. You also (probably) want to import whatever these objects are as individual objects, not as a huge scene, or you won’t benefit from culling or sharing of materials.

edit: as an example of what I mean, if you have subdivided spheres in your scene that are 10k polygons, you want to drop down a few subd levels until they’re about 1k and provide the illusion of a smooth sphere with a normal map or smoothing levels on the material. Aim for environmental models like buildings, trees, and large rocks being around 1k polygons max, maybe 2k for a complex building. If the building has an interior then you’ll just have to use your best judgement. Do not use more than one or two materials on each. Aim to share materials where possible. Keep things like building interiors as a separate model to the exterior, so it can be culled away when the player can only see the outside. If you have thing like tables or stairs inside, split them all into unique objects for importing, so you can re-use them.

edit2: I viewed the source of this page and saw that you tried to link to images on Deviant Art. That won’t work, and you’ll have to link to the containing page instead. Personally, I avoid Deviant Art due to it being infested with furries and talentless children, but then I’m a miserable old cynic.

Thanks, xomg!

If you right click on the picture icon and select Open Image In New Tab, they’ll pop up. (I suppose they have to be smaller to appear in-post. The resolutions are at least 1080x740…)

What you said makes good sense. I suppose the highest poly count comes from having so many beds. I could collapse a lot of the geometry, but I’m freaking myself out over the complex wrapping job ahead of me. Thank god for texporter.

Just off-hand- does the built-in first person controller automatically handle stairs, or will I need to script that? Can’t seem to find it in any of the tutorials or posts I’ve seen. Again, Thanks ahead of time!

Not necessarily; you don’t have to try rendering it all at once. e.g. you can use occlusion culling or other techniques.

–Eric

Yeah, UVs are the most miserable part of modeling in my opinion. Obviously in this case you’ll just need to UV one bed (or whatever) and re-use the model and texture, not unwrap all of them, but you’ll still have a lot of work ahead of you.

Yes, the character controller will handle stairs and you can adjust the step height, and there’s big improvements in the controllers and motors in Unity 3. However, what I would probably do is replace the collider on the stairs with a simple slope/ramp instead, just to simplify things. The collider for the objects doesn’t need to match the mesh exactly, although Unity can auto-generate a collider based on the mesh if you need it. Don’t do this for really complex models though, like a tree, when all you really need is a cylinder or box for the trunk.

He’s right, but this means that you’ll just have to try it for yourself to see how performance is. You can open up a stats window that’ll tell you how many triangles Unity has to render per frame, so maybe just try getting your scene into the engine and seeing what happens before worrying too much.

HAHAA! I totally agree with you about DeviantArt! I was saying to myself, if it doesn’t work, I’ll just tack them onto the back end of my website.

This also makes good sense.

The reason for asking is because at some point in time, I would like to build a dome “randomizer.” In other words, whenever you play the game, the domes will be different based on an expandable list of materials. Instead of a dome with stars inside, maybe a dome with projections of old movies. (The game is kinda weird…)

That’s a brilliant idea about the slope! Thanks for that bone; otherwise I would have killed myself trying to solve it “perfectly.” I mean honestly, how often do you pay attention to somebody’s feet in an FPS? It’s not like I’m making a feature film for Disney!

Okay… I’m going to get started with dumping stuff into Unity one at a time. If anybody else has two cents, they’d be greatly appreciated!

Once I get it to the browser-ready “Walkthrough” stage, I’ll tack it onto my website so everyone can see it, and hopefully, continue the feedback!

That’s probably not as complicated as it sounds, depending on how far you want to take this and how random it needs to be. A simple way to achieve it would be to have a bunch of prefabs for the interior of the dome, and pick a random one to instantiate for each dome. Taking it further, you could have several prefabs that contain placeholders for items instead of the actual model, then loop through each of the placeholders to insert a random object at that point. Depends entirely on how you see it working, but start simple at first and build on it.

One issue I see here is that the exterior of the dome is transparent, so you’re going to have to render the entire interior of each even when the player is outside it, as well as the exterior world when the player is inside a dome. That kind of limits the culling you can do without using some kind of fancy Level of Detail system for the interior or faking the view of the interior with a cubemap or something from the outside.

And yes, you do have a massive number of beds in that screenshot. You want to focus on keeping items like that as simple as possible and perhaps combining them into one mesh inside Unity (google for examples of this trick) for performance reasons. That might not be possible if you’re aiming for random interiors, unless you do the combining at runtime.

Yeah, if I have to have more detail than wireframe, I often put on my Smooth Higthlights, Edged faces, Flat, and toggle the O button.
Once you start dropping lights into a scene, Flat definitely saves some computations, and the O button helps moving through the viewport a lot quicker.

The domes will have covers- I just rendered them without to show the interiors. Some of the domes have big windows up front, but most do not.

I am looking forward to dumping the “terrain” I made in 3DS Max, and I’m going to recreate a better terrain in Unity’s editor.

I think for this project you should definately use Occlusion Culling (Not exclusively, use the other techniques described here as well). If you do not have a Pro License of unity you should check out M2H’s occlusion culling, it works great.

M2H Culling:
http://forum.unity3d.com/threads/52130-M2HCulling-Optimize-your-game-culling-system-for-Unity

And direct to the PDF:
http://m2h.nl/files/Unity_occlusion_system_by_M2H.pdf

good thread.
answers alot of my questions regarding performance.
thx.