Difference between revisions of "CodingProjects"

From Sirikata Wiki
Jump to navigation Jump to search
m (Reverted edits by Joyce (Talk) to last version by Henrik Bennetsen)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
==UI System==
 +
 +
We went with the long thinking strategy of using the new SDL-1.3 which has very good internationalization support...but we're finding everything else is just raw and roughcut.
 +
If we have someone interested inUI and camera support, probably the first thing to do is fix all those input bugs...
 +
 +
if the person is skilled one method for doing that could be sitting down with SDL-1.3 and fixing them
 +
if the person is less skilled another method would be to actually take the latest version of OIS
 +
and write a simple wrapper that made it look like the subset of SDL-1.3 that we used.
 +
 +
==Content Distribution==
 +
 
Integrate current CDN (folder libcore/src/transfer) with S3 storage service
 
Integrate current CDN (folder libcore/src/transfer) with S3 storage service
  
'''Database backend''':
+
==Database backend==
  
 
writing a standalone database that respects the interface we have designed (or options to change the interface if something could be improved)
 
writing a standalone database that respects the interface we have designed (or options to change the interface if something could be improved)
 
Integrating database with libcore/src/transfer system
 
Integrating database with libcore/src/transfer system
  
'''Proximity management''':
+
==Proximity management==
  
 
Ask us to give you the interface and example code for proximity management and the current n^2 code. Make it more efficient by distributing it across computers and/or making it efficient with better single-computer algorithms
 
Ask us to give you the interface and example code for proximity management and the current n^2 code. Make it more efficient by distributing it across computers and/or making it efficient with better single-computer algorithms
  
'''Location subscription services''':
+
==Location subscription services==
  
 
Once two objects are proximate, the moving object may want to broadcast its updates---so a simple server to connect providers up with listeners is needed
 
Once two objects are proximate, the moving object may want to broadcast its updates---so a simple server to connect providers up with listeners is needed
  
'''Object Placement''':
+
==Object Placement==
  
 
The object placement system is a great place to get started with the graphics engine.
 
The object placement system is a great place to get started with the graphics engine.
Line 24: Line 35:
 
So I believe the way this would work is you'd query the Ogre SceneManager for intersections, that would give you back the ogre objects '''named''' by the Graphics::Entity's UUIDs (a bunch of ProxyListeners mapped in the OgreSystem)--and that then has a shared_ptr back to the ProxyObject which you could tell how to move...  then once it has moved, it will update all of its listeners in the graphics (and eventually physics) systems---as well as update the serverside object.
 
So I believe the way this would work is you'd query the Ogre SceneManager for intersections, that would give you back the ogre objects '''named''' by the Graphics::Entity's UUIDs (a bunch of ProxyListeners mapped in the OgreSystem)--and that then has a shared_ptr back to the ProxyObject which you could tell how to move...  then once it has moved, it will update all of its listeners in the graphics (and eventually physics) systems---as well as update the serverside object.
  
'''Webpage''':
+
==Embedded browser==
  
 
Download the osm_sirikata Integrate the WebView class with the Listener interface and have a ProxyWebView type of object that exposes a provider for the necessary listener so that we can have remote objects initiate webpage changes and updates. Also this can involve working with Adam from Texas as he integrates chromium
 
Download the osm_sirikata Integrate the WebView class with the Listener interface and have a ProxyWebView type of object that exposes a provider for the necessary listener so that we can have remote objects initiate webpage changes and updates. Also this can involve working with Adam from Texas as he integrates chromium
  
'''Terrain''':
+
There's another bitesized project for someone less familiar with C++ but more familiar with scripting languages (specifically javascript):
 +
we're going to need to communicate with javascript on the browser.  Right now our language of choice is protocol buffers.
 +
Someone could write a protocol buffers decoder in javascript itself--we have many of the pieces but they need to be put together
 +
 
 +
==Terrain==
  
Download the ClipmapTerrain from the ogreaddons and improve it (fixing up the lighting and any performance problems, integrating it with the sirikata code, adding material editing abilities and the ability to poke holes in the ground and make room for caves to be placed as meshes
+
We are interested in integrating [http://www.ogre3d.org/forums/viewtopic.php?f=11&t=50674&sid=c393d296604a60e33582d8947891f850 the new terrain system] being developed by Sinbad creator of Ogre
  
''Or'': Download the DynamicTerrain and improve it (making it multiresolution, and cutting out a square hole in the middle of each, integrating it with the sirikata code, adding material editing abilities and the ability to poke holes in the ground and make room for caves to be placed as meshes)
+
==Shadows==
  
'''Shadows''':
 
 
Enable shadows in ogre and make a simple test scene that shows it off
 
Enable shadows in ogre and make a simple test scene that shows it off

Latest revision as of 22:04, 10 August 2010

UI System

We went with the long thinking strategy of using the new SDL-1.3 which has very good internationalization support...but we're finding everything else is just raw and roughcut. If we have someone interested inUI and camera support, probably the first thing to do is fix all those input bugs...

if the person is skilled one method for doing that could be sitting down with SDL-1.3 and fixing them if the person is less skilled another method would be to actually take the latest version of OIS and write a simple wrapper that made it look like the subset of SDL-1.3 that we used.

Content Distribution

Integrate current CDN (folder libcore/src/transfer) with S3 storage service

Database backend

writing a standalone database that respects the interface we have designed (or options to change the interface if something could be improved) Integrating database with libcore/src/transfer system

Proximity management

Ask us to give you the interface and example code for proximity management and the current n^2 code. Make it more efficient by distributing it across computers and/or making it efficient with better single-computer algorithms

Location subscription services

Once two objects are proximate, the moving object may want to broadcast its updates---so a simple server to connect providers up with listeners is needed

Object Placement

The object placement system is a great place to get started with the graphics engine. The best place to start is simple camera and mouse motion control using the mouse input device. Keep in mind multiselect and have lists of selected items rather than a pointer to one.

The place to start is to make a native C++ SelectionManager class in the liboh/plugins/ogre folder that deals with tracking the active set of selected ProxyObjects. Then a number of controllers can handle what do with mouse events (clicking, dragging, moving) would be ideal..and then they would in turn tell the ProxyObjects what to do. So I believe the way this would work is you'd query the Ogre SceneManager for intersections, that would give you back the ogre objects named by the Graphics::Entity's UUIDs (a bunch of ProxyListeners mapped in the OgreSystem)--and that then has a shared_ptr back to the ProxyObject which you could tell how to move... then once it has moved, it will update all of its listeners in the graphics (and eventually physics) systems---as well as update the serverside object.

Embedded browser

Download the osm_sirikata Integrate the WebView class with the Listener interface and have a ProxyWebView type of object that exposes a provider for the necessary listener so that we can have remote objects initiate webpage changes and updates. Also this can involve working with Adam from Texas as he integrates chromium

There's another bitesized project for someone less familiar with C++ but more familiar with scripting languages (specifically javascript): we're going to need to communicate with javascript on the browser. Right now our language of choice is protocol buffers. Someone could write a protocol buffers decoder in javascript itself--we have many of the pieces but they need to be put together

Terrain

We are interested in integrating the new terrain system being developed by Sinbad creator of Ogre

Shadows

Enable shadows in ogre and make a simple test scene that shows it off