Skip to main content

Optimization Tip #1 - Windows As Textures

A lot of games back before the super consoles of PS3 or the XBox 360, companies had to go to extra lengths to save on faces to boost the performance. Technology throughout the past 10 years has grown tremendously advanced for such a short period of time. We are though, still not to the point of having the ability to run the graphics of a PS3's prestige on an everyday tablet and not have major issues. All developers have to optimize their games of course, especially those who are developing for android or IOS. One way everyone has seen is UV mapping entire buildings with a texture. Doors and windows are flat and look like some one cut pictures out of a magazine and glued them on a cardboard box as part of an art project.

Now I'm not denouncing the method, its actually kind of crazy to think of trying to model a building in crazy detail. A lot of what makes a realistic looking model is the detail of the texture, instead of the complexity of the it's mesh. Big games like Call of Duty: MW3 still have not so complex buildings but still apply very detailed textures to make them realistic. This is a great way to make a computationally cheap building, especially one to put in the distance as something to glance over, or at least not to have too much attention on. Of course sometimes you just need low poly buildings because your selected platform does not have the kind of power to process today's graphics. I would like to give you a comparison on how much just changing windows to textures on a building can combat lag in your game.

Now I'm not a what you could call a true 3D modeler. I use a program called Google sketch-up to model buildings. I can not animate, rig, or even UV map textures. Nor does it include any of the editing tools blender contains. The program is as simple as Microsoft paint, but it is a 3D modeling software and has vertices and faces like any other model.




This building has a total of  2,133 faces taking up 641 KB of space on my computer. When nine instances of the model was placed alone in a scene on Unity, the scene contained a total of 77.3k vertices.

Now this building has had it's windows mesh altered and have had a texture applied to compensate for the changes. I simply took a screen shot of a window in orthographic view of the model, brought it into paint to crop, and then just applied to the model. The model has been reduced to 449 faces! The model also now takes up only 279 KB of memory. Part of the reason for such a drastic change is due to the windows being curved at the top, accounting for more faces than a regular straight line would of used.Now when nine instances where placed under the same conditions as the other model had, the scene now only contained a total of 13.6 k vertices.

Comments

Popular posts from this blog

How To Import and Use Fonts

-Made by Chrome Fx Films

To use different fonts in your game, your going to have to acquire some fonts. You can go somewhere like 1001 free fonts and download ones you like and want to use.

When you download the file, you'll need to extract the file if its in  a .zip

The text file should have the extension .ttf. If you text files have a FFIL extension, simply rename the font file (yourname.ttf).
Drag the text file into unity to import. By default the Character variable should be labeled Dynamic.

The Dynamic setting means  that Unity won't pre-generate the texture, so if you look at your material containing your font, It probably will be blank. (read more here)
Now your over all objective should be getting your font to look like this (unless you prefer dynamic):
Where the characters of the font are not jumbled up and visible.
Now usually all you have to do to achieve this is change the Character variable from Dynamic to Unicode.
and that should work.
Now what some people over…

Handling Music and Sound Effects In Your Games

Initiative  While developing Treva's Adventure I had to figure out a way to handle multiple music tracks and sound effects in a clean manner or suffer horribly.  What was going to help me achieve a simple solution was taking all the different sounds and centralizing them in a single class in order to black box them.  Any other code trying to play a sound wouldn't even know the sound file's name.  All code trying to play a music track would reference a enum that defines all the track names.
Defining The Class Creating The Enum When I first started defining types in my enumeration,  I was naming the types to be exactly like the file name.  For a scary sound effect I had found a file named "ghost breath".  So around my code would be scattered lines like SoundManager.Play(SoundEffectType.GhostBreath);  This was fine until I found a sound that better fit the situation it was being used in,  and decided to use "ghost breath" for a different situation like a …

Don't Destroy On Load..

So if you want to keep an object or script that keeps up variables (or for any other reason) when you go from scene to scene, you need to attach a don't destroy on load static function, which goes something like this:

function Awake () {
    DontDestroyOnLoad (transform.gameObject);
}

The Awake function is call only once, when all the objects in the scene have been created. Read more about it here.

DontDestroyOnLoad has what ever is in the ( ) to not be destroyed when creating a new scene.

(transform.gameObject) is what will not be destroyed when the new scene is loaded, in this case, it will be the game object and all it's children the script is attached to.