Name: Denis Glebov
e-mail/jabber: dionis.mgn@gmail.com
Forum nick: dionis_mgn
Project proposal:
Abstract:
OGRE has advanced resourse system. OGRE can load resourses from script files, for comfortable work with it. But, this function is not core functionality of a rendering system. Therefore, it should be took out into plugin and improve it’s functionality by realising saving of text scripts in binary format for speeding up follow loads.
Script serialization has already been implemented in this plugin: http://www.ogre3d.org/forums/viewtopic.php?f=11&t=62487 . But loading of a scripts is still in core.
Successfull solution should meet following conditions:
- Serializing of compiled scripts into binary files.
- Do not change interfaces, if it is possible.
- Easy to use: It should be as easy as just include it in the plugins.cfg to get it worked.
- Easy future maintaining
- Do not require original textual scripts
There are two approaches:
- To save real-time representation of resource.
- To save textual representation of recource.
The problem is reduced to serialize parsed tokens. So, it is necessary to have two types of parsers: binary (ScriptSerializer) and textual(ScriptParser).
Serialization
Currently, there are many serialization libraries. But most of them too complex. Because task serialization token is fairly trivial, serialization is implemented using OGRE::Serializer. This class provides the necessary functionality. Thus, will not require any dependencies.
Other
Loading of the scripts must be in plugin. So, ResourceGroupManager must delegate initializeResourceGroup and initializeAllResourceGroups methods to some other class (a instance of which is located in a plugin). It will "RecourceGroupInitializer" interface. Script Loading Plugin will add a instance of this interface to ResourceGroupManager at startup. It also makes it easier to create custom Initializer (for example, loading of resources via network).
Some sequence diagram:
Legend:
White - user code
Yellow - OGRE classes
Orange - OGRE classes with a modified interface
Green - TODO classes
Schedule:
Before May 16
- Study documentation
- Designing solution
- Isolation of script loader to the plugin
- Writing overlay translator
Testing/bug fixing. ( I have my exams at this time. So, developing won't be very active)
Week 9-10 (Jule 1 - Jule 17) 3-4 hours per day [mid. term evaluation]
- Refactoring of CoreDumped's plugin
- Integrating binary serializer with textual one
- Testing
- Editing of the documentation if necessary
- Editing some wiki articles
- Testing
- Bug fixing
I often use OGRE in my activity. I’m interesting in game developing and other multimedia applications. Unfortunatly I don’t have enough knowledge and experience in 3D/rendering , but I want to help to the OGRE, because it shows me all advantages of object-oriented programming and has had a big part in my professional evolution. Also, progress of OGRE helps to my future projects =). That’s why I want to solve this task: it’s not difficult, doesn’t require knowledge of 3D-rendering, but at the same time, successfull solution of this task can make OGRE better.