[WF-General] GSoC 2010 --- Automatic adjustment of graphical detail based on framerate

Erik Hjortsberg erik.hjortsberg at gmail.com
Sat Mar 27 14:19:50 PDT 2010

Hi, there current exists a system whereby the materials used in the 
world can change "schemes". The current schemes are "low", "medium" and 
"high". The schemes mainly determines how much shader effects should be 
used by the materials (normal mapping, specular and shadows), and also 
determines how the terrain is rendered.
However, this is just one of many factors affecting the frame rate. Some 
of the other things which affects it are:
* texture sizes
* view distance
* mesh vertex counts
* use of imposters
* batched geometry

View distance in turn can then be further refined to deal with the 
terrain or specific objects.

Work on this task will therefore touch on many different parts of the 
engine. There are three major subtasks basically:
* Create a framework which reacts to the fps and performs actions.
* Identify the actions possible to take to bring up the framerate, and 
write code for altering the needed values.
* Tweak, tweak, tweak until we know what values needs to be changed at 
certain times.

There's no silver bullet either. A scene with huge number of entities of 
the same type would benefit from imposters, whereas a scene with a huge 
number of entities of different types wouldn't (as the texture memory 
needed for the imposters might require thrashing).

The level adjustment should also be smooth, so there's no lock ups when 
adjusting something (within bounds; changing material scheme will make 
it stagger a little, which is why there needs to be functionality in 
place to make sure that only happens when absolutely needed).
This will require some rewriting of parts of the system.

Except for C++ you will probably also need to do a little shader 
programming in glsl.
For the gui Lua is used, but depending on time restraints C++ can also 
be used.

The idea is that it shouldn't be necessary for the user to manually 
alter the graphics settings once this system is in place. But as the 
second task is to write code which can alter the values used for 
affecting the fps it should be possible for any hard core user to 
disable the system and alter the values manually.

It will span from the fixed function pipeline all the way up to advanced 
shaders. Ogre however requires OpenGL 2.0+ hardware.

Ogre already has a system for distance LOD, but this project would then 
almost sure involve a part where the settings for those distances are 


2010-03-25 23:54, Kyle Messner skrev:
> Hello WorldForge!
> Let me cut to the chase by stating I am very much interested in 
> contributing to this open source project. Computer gaming has been a 
> passion of mind for a very long time, they're what led me to pursue a 
> degree in computer science in the first place! Currently I'm finishing 
> up my sophomore year attempting to get a bachelor's degree in Computer 
> Science (plan to move on to my master's after). I have moderate skill 
> with C++, though most of my programming experience lies with Visual 
> Basic, Visual C#, and Java (also had 5 semesters of Pascal in High 
> School). This would be my first endeavor at contributing to an 
> open-source project, but one I meet with much enthusiasm. An 
> open-source MMO engine is something I've been dreaming of since I was 
> in High School, and I'm quite excited to see a project is already 
> underway.
> So, what specifically would I like to contribute to the project this 
> summer? I'd like to implement a system that dynamically changes the 
> graphical detail to maintain a consistently smooth frame rate. There 
> is very little else that irritates a gamer more than to have spotty 
> frame rates while playing, and any way to minimize this lag is going 
> to make the game feel a lot more polished in the long run. I very much 
> look forward to becoming familiar with all the various systems that 
> exist within ember, as I would probably use this game engine for any 
> MMOs I'd plan to develop anyway. This project is something I'm 
> interested in contributing long after the summer is over, and I think 
> this would be a great way to get me started with WorldForge. I 
> couldn't ask for a better job over the summer :)
> I haven't had much chance to actually look at the source itself yet. I 
> noticed in the discussion it stated that systems exist to manually 
> adjust detail already, does this mean the code that needs to be 
> developed will focus mainly on deciding how to use these systems based 
> on the frame rate? Or will it likely include major rewriting of those 
> detail-modifying systems? Will this detail adjusting system likely 
> replace the use of manual "graphics settings" or will it just be an 
> additional feature? Will it span from reverting detail back to 
> doom-like (ha, an exaggeration) graphics to full power or will it 
> mostly be minor tweaking? Are there any other languages besides C++ 
> that may benefit me with this project? Would this project include 
> adjusting LODs based on factors such as distance and focus on the screen?
> Sorry for all the questions, just curious!
> Fritz
> _______________________________________________
> General mailing list
> General at mail.worldforge.org
> http://mail.worldforge.org/lists/listinfo/general
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.worldforge.org/pipermail/general/attachments/20100327/87e7617a/attachment-0001.html>

More information about the General mailing list