Jump to content

  • Log In with Google      Sign In   
  • Create Account

Optimization in Games


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
15 replies to this topic

#1 Tutorial Doctor   Members   -  Reputation: 1685

Like
0Likes
Like

Posted 04 March 2014 - 11:31 AM

One of my favorite sub-subjects of a Calculus course I took once was "Optimization."

 

What it basically means is to "use the least amount of resources to get the largest outcome."

 

Ever since, I have learned how to do things the hard way to gain experience, and then I optimize. In other words, I break things down to the most basic components and then I optimize from there. 

 

Here is my philosophy on drawing shapes:

 

"A square is a circle with 4 sides. An equilateral triangle is a circle with 3 sides. An octagon is a circle with 8 sides."

 

Some of my favorite shapes are the tetrahedron, the icosahedron and the octahedron. I love Geodesic domes.  

 

I see a lot of optimization in games. Modelers optimize their models, and programmers optimize their code. Producers optimize their resources. The financial team optimizes their spending. 

 

It is in our nature to optimize, because we live in a world where resources can be scarce. 

 

Question: What are some techniques you use to optimize, whether it be your models or your code or your game budget? I could use some tips in all areas. 

 

The reason I posted this in game design, because I am talking about the design of the game from programming to modeling. For instance, you don't make a sphere that has a million polygons, you make an octahedron, subdivide it once and adjust the smoothing groups. 


They call me the Tutorial Doctor.


Sponsor:

#2 C0lumbo   Crossbones+   -  Reputation: 2497

Like
4Likes
Like

Posted 04 March 2014 - 12:02 PM

Most important thing when doing optimisation is to take the time to measure accurately. Makes me so annoyed when people optimise without measuring first, so they have no idea if the optimisation has a real world effect.

 

I'm coming from an engineering perspective, but the same would apply to any other form of optimisation. Harder perhaps with game design, and although analytics help, you have to be particularly careful when interpreting your measurements.



#3 Stainless   Members   -  Reputation: 1069

Like
5Likes
Like

Posted 04 March 2014 - 12:50 PM

Optimisation is one of those things that you have to be careful with, what do you mean by optimisation?

 

Taking an existing algorithm and spending months optimising is usually a waste of time.

 

More often than not changing the algorithm ends up with a much bigger effect on the overall efficiency.

 

On some hardware you find that just throwing vast numbers of triangles at it is faster than using a load of clever triangle reduction techniques.

 

It's the split between the speed of the cpu and the speed of the gpu.

 

Sadly no body can just say "this technique is the fastest", what people can say is "this is the fastest way of doing X when you are running on Y with a Z gpu"

 

Having said that, things like view frustum culling are generally "a good thing"



#4 ActiveUnique   Members   -  Reputation: 853

Like
0Likes
Like

Posted 04 March 2014 - 01:33 PM

I'd never intentionally include anything that won't be useful during the actual development, but it's not always avoidable and it's a total waste.

 

Everything devised during the initial design stage ends up getting done, or halfway done. Things get thrown out and you find what the best parts were and it's revised.

 

A pre-development step is time consuming, it would include all research you should ever need to create the prototype design. The purpose is to establish goals and avoid a bloated initial design, fewer ideas are thrown out (this could be anywhere between one and a zillion ideas).

 

Although I presented the steps backwards from problem to solution, this is loosely related to the Systems Development Life Cycle, which some programmers might know about:  Planning, analysis, design, implementation, maintenance, and this repeats.

 

A bad practice is to jump right to the design step, and then go back to analysis and planning, only to redesign.


I've read about the idea guy. It's a serious misnomer. You really want to avoid the lazy team.


#5 Tom Sloper   Moderators   -  Reputation: 10159

Like
5Likes
Like

Posted 04 March 2014 - 01:36 PM


What are some techniques you use to optimize, whether it be your models or your code or your game budget? I could use some tips in all areas.
The reason I posted this in game design, because I am talking about the design of the game from programming to modeling. For instance, you don't make a sphere that has a million polygons, you make an octahedron, subdivide it once and adjust the smoothing groups.

 

Optimization of models is an art question (not a game design question).

Optimization of code is a programming question (not a game design question).

Optimization of budget is a business question (not a game design question).

 

It sounds like you're mainly interested in optimizing models.


-- Tom Sloper
Sloperama Productions
Making games fun and getting them done.
www.sloperama.com

Please do not PM me. My email address is easy to find, but note that I do not give private advice.

#6 jefferytitan   Crossbones+   -  Reputation: 2242

Like
4Likes
Like

Posted 04 March 2014 - 05:28 PM

I'm not sure if this is the right place for this thread, but anyway...

 

I try to balance between two perspectives:

  • Don't optimise too early, you just make complex code that may have bugs and not improve performance.
  • Don't do things the stupidest way possible just to fulfil the above.

So for example, I will tend to use standard techniques like object pooling by default because it usually yields a benefit, but I keep in mind that on the odd occasion it could hurt performance by using too much memory on low performance devices.



#7 jbadams   Senior Staff   -  Reputation: 19366

Like
6Likes
Like

Posted 04 March 2014 - 08:56 PM


Here is my philosophy on drawing shapes:
 
"A square is a circle with 4 sides. An equilateral triangle is a circle with 3 sides. An octagon is a circle with 8 sides."

I see your line of thought, but that doesn't really seem like a useful philosophy; it essentially reduces all symmetrical 2d polygons to "a circle with n sides", whilst leaving you still needing to know the more traditional descriptions to actually draw any shapes.  What benefit is there to thinking about an octagon as a circle with 8 sides?

 


What are some techniques you use to optimize, whether it be your models or your code or your game budget? I could use some tips in all areas. 

You would probably get better responses by investigating these things separately rather than trying to get everything at once.  Whilst these do all fall under the same general topic of "optimisation" they're questions for completely different disciplines, and at times may even have conflicting responses based on the goals of each discipline.

 

 

I do have some generally applicable thoughts though:

  • Optimisations should be specific, and take into account the needs of a particular project.  A AAA console game will have very different goals to an indie PC title, and both of those will have different needs to mobile titles.  Optimisations are often a trade-off, so you need to know what is important for the project you're working on and which areas can safely be compromised to improve those critical areas.
  • If you already know that one approach should be more optimal than another and is applicable to the situation you should take it up front, but otherwise the first priority should be making things correct, and then optimising (whilst maintaining correctness) if necessary.
  • Optimisations should be based on real measurements, not guesswork or superstition.  Experimentation is fine if needed, but you should always measure the results to the best of your ability, and never just make assumptions about performance.

 

Hope that helps. smile.png



#8 Tutorial Doctor   Members   -  Reputation: 1685

Like
-1Likes
Like

Posted 04 March 2014 - 10:54 PM


What benefit is there to thinking about an octagon as a circle with 8 sides?

 

It matters more when thinking about optimization. If I wanted to give something the appearance of a sphere, but the sphere were somewhere in the background, and I really didn't need it to be high-poly, I could take an octahedron and subdivide it once and change the smoothing groups. This saves memory when rendering. There are a lot of things one could do in post-processing as well. 

 

I see a lot of optimization in level design. I think GTA is the best example of optimization in ever aspect of the design of the game. I have also seen optimization in the programming of the game assets. 

 

I think both the programming and artistic side both go into the design of the game, so that is why I posted here. The programmers are trying to keep things running smoothly and quickly, but if they are trying to make up memory lost because someone wanted to put a million-poly sphere in the background that is hardly noticeable, then that would be a bad thing. 

 

Say for instance the level designer keeps subdividing a sphere over and over til the point that when you run the game, it crashes automatically from the high poly count. So first one might assume there is a problem in the code, but further investigation would reveal that high poly sphere. I think the design of the code should match the design of the game

 

I have to see both sides at the same time, because right now, I am doing the modeling, UV-unwrapping, texturing, rigging, animation, programming, etc myself. My code style will change based on what I am creating. So optimization and a speedy workflow are important to me, and at least for me, they go hand in hand. 

 

BTW, good advice, and it does help! Thanks. 


They call me the Tutorial Doctor.


#9 Aardvajk   Crossbones+   -  Reputation: 6212

Like
6Likes
Like

Posted 05 March 2014 - 02:19 AM


Say for instance the level designer keeps subdividing a sphere over and over til the point that when you run the game, it crashes automatically from the high poly count. So first one might assume there is a problem in the code, but further investigation would reveal that high poly sphere

 

This is rather divorced from reality. Artists are normally given budgets of polycounts and this would be inspected long before the resource was imported into the game. Also a professional game isn't going to mysteriously crash because a model has too many polys. Its going to stop with an error.

 

This question is so vague and full of buzzwords that lack context that it is impossible to answer meaningfully.

 

An attempt in what seems to be the context though: programmers can get an idea of what their budget is for polys rendered per scene. They feed that information to artists who try to work within the bounds set by the guys who understand the engine. If assets come out with too high complexity they are simplified.


Edited by Aardvajk, 05 March 2014 - 02:21 AM.


#10 frob   Moderators   -  Reputation: 22731

Like
11Likes
Like

Posted 05 March 2014 - 02:24 AM

I see a lot of optimization in level design. I think GTA is the best example of optimization in ever aspect of the design of the game. I have also seen optimization in the programming of the game assets.

 
You keep using that word....
 
It reminds me of a friend of mine who is convinced SEO is the be-all of getting traffic to her site, rather than things like actual content. She talks on and on about search engine optimization, she is a retired journalist with decades of experience, and keeps exhausting her old contacts asking them how they get more search engine hits, how they can rank higher, is convinced other sites are against her, and is willing to do everything except create content.
 
This sounds like what you are saying. Optimization is everything in games. Optimize your stuff because it is good for the environment, improves your vision, and women find it attractive---even if you are a woman.
 

GTA is the best example of optimization in ever aspect of the design of the game
....
I have also seen optimization in the programming of the game assets. 
...
if they are trying to make up memory lost because someone wanted to put a million-poly sphere in the background that is hardly noticeable, then that would be a bad thing. 
...
Say for instance the level designer keeps subdividing a sphere over and over til the point that when you run the game, it crashes automatically from the high poly count.
...
So optimization and a speedy workflow are important to me, and at least for me, they go hand in hand.

As a professional developer who has been responsible for performance concerns (aka "optimization") for multiple shipped titles, I read those lines and cannot fathom what you are talking about.

Usually developers (programmers, artists, or anyone else) start with an actual concern. Typically that concern is performance. So you use tools to properly measure what is going on. Based on those actual measurements you come up with a plan to improve the performance. Maybe that plan is to reduce the polygon count. Maybe that plan is to reduce memory usage. Maybe that plan is to restructure memory layouts for cache benefits. Maybe that plan is to eliminate redundancies. Maybe that plan is to reduce the frequency of work, or to partition the work into smaller sections and work on them over time, or do something else entirely. Then when you make the changes, you measure again to ensure the plan was successful.

Your use of optimize, well, it reminds me of the 1990's TV ad "tighten up the graphics on level 3," as the players have game controllers in their hands playing the game. They are real words and understandable statements, but they make no sense.


Check out my book, Game Development with Unity, aimed at beginners who want to build fun games fast.

Also check out my personal website at bryanwagstaff.com, where I write about assorted stuff.


#11 Aardvajk   Crossbones+   -  Reputation: 6212

Like
3Likes
Like

Posted 05 March 2014 - 06:14 AM

I've noticed if you go on gamer forums (not something I normally do I hasten to add, but did recently due to some problems with a game) that the latest technical sounding term they are all using is optimised.

 

"This game is badly optimised - it runs slow on my system"

"Why do I need to upgrade my graphics card - can't the studio just optimise better"

 

And so on. Much as frob says, its become misunderstood as some kind of panacea among people without any actual technical understanding and they think it is a "thing". Suspect this is the case in this thread as well.



#12 Tutorial Doctor   Members   -  Reputation: 1685

Like
0Likes
Like

Posted 05 March 2014 - 09:37 AM

Someone just made a post about how to make a character rig with only 5 bones. They also use the optimize word in it. This is the type of stuff I am thinking about, but not just in the rigging area:

http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/5-bone-fully-rigged-humanoid-character-r3583

Yes frob, those "plans to reduce..." Are all under the umbrella of optimization- getting the most something.

Those are the plans I am talking about, like in the post above. The article talks about optimizing a rig. I have seen some pretty complicated rigs, usually for main characters, but for NPCs, you don't need so many bones. They use LOD for character modeling. Low poly for things in the background.

They call me the Tutorial Doctor.


#13 Aardvajk   Crossbones+   -  Reputation: 6212

Like
3Likes
Like

Posted 05 March 2014 - 12:41 PM

That article uses the word "optimise" in context. The context of how to reduce the bone count on a rig.

The question "what sort of methods do you use to reduce a rig bone count" is meaningful. It doesn't even need the word optimise.

The question "what sort of techniques do you use to optimise games" is not.

Citing articles that use the word "optimise" does not strengthen the meaningfulness of this question I am afraid. If you are interested in specific contexts then specific questions will get a far better response.

#14 Nightgaunt   Members   -  Reputation: 262

Like
0Likes
Like

Posted 05 March 2014 - 01:11 PM

Funny you should mention optimization, I recently saw a talk by Doris Chen from MSDN on optimizing code. Here are the slides:

 

http://www.slideshare.net/slideshow/embed_code/27262164#

 

A couple of things of note:

1. This is JavaScript-specific (but it would be interesting if someone knowledgeable in many coding languages could chime in on how much might apply to others).

2. This specifically optimizes speed and processor use/battery life. File-size was not tested.

3. As mentioned, this is specifically coding optimization, and not design optimization.

4. FYI in case anyone was wondering why the heck Microsoft cares about JavaScript, apparently the code is easily portable to Windows 8 apps (almost a straight copy/paste).


Edited by Nightgaunt, 05 March 2014 - 01:12 PM.


#15 frob   Moderators   -  Reputation: 22731

Like
3Likes
Like

Posted 05 March 2014 - 02:56 PM

(image needed)  Optimize ALL THE THINGS!


Check out my book, Game Development with Unity, aimed at beginners who want to build fun games fast.

Also check out my personal website at bryanwagstaff.com, where I write about assorted stuff.


#16 Lactose!   GDNet+   -  Reputation: 3822

Like
2Likes
Like

Posted 05 March 2014 - 03:02 PM

(image needed)  Optimize ALL THE THINGS!

http://i.imgur.com/dhgPcDO.jpg

Here you go, good sir.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS