Difference between revisions of "Roadmap"

From Sirikata Wiki
Jump to navigation Jump to search
(→‎Objects: added Object persistance)
(Filter out a bunch of tasks we've finished since this list was last updated)
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
''This is very incomplete at current but should give you a sense of ongoing work''  
+
''This is the roadmap and brainstorm for development''
  
We are working to get a compiled version of Sirikata made available for 7/22/09
+
==Assigned Tasks==
 +
* B scripter GUI (improvements to interface)
 +
* B/E V8 closures (fix storage of functions in v8 to save closure as well as function text)
 +
* E/J CDN support for music (serve music files as well as meshes)
  
==version 0.01==
+
==Ideas==
*Anticipated release date: 7/22/09
 
  
General:
+
===Deployment===
*<strike>save scene</strike>
+
* Backups of OH data
*<strike>Tested and distributable on Windows</strike>
 
**<strike>Include a readme that states requirements for successful install (installed programs etc.)</strike>
 
*Produce Screenshots
 
*Determine which features from our design sketches and ideas are most likely doable for our current deadline
 
*Rank features weighted by what's easiest and which are most important to needs of the Augmented Museum
 
  
Objects:
+
===Demo World===
*<strike>import</strike>
+
* Repository for world-specific scripts (avatar script, anything we expect to be in there by default).
*<strike>drag/drop on Windows</strike>
+
* Build a nice demo scene, large enough to require some exploration to see it all.
*<strike>key/text input on other platforms</strike>
+
* Scripts for building into package (i.e. all the data required to support [[Sirikata URIs]]
*<strike>local upload</strike>
+
* Get a few good, tested avatars on the CDN and get the default demo avatar to use these simple animations well
*<strike>placement and scaling w mouse</strike>
 
*<strike>orientation</strike>
 
*<strike>delete</strike>
 
*<strike>decent lights in scene.txt</strike>
 
*<strike>object properties (for now, physics properties: collision, dynamics, hull type)</strike>
 
  
Scenes:
+
===System Features===
*<strike>Scene.csv format (Dan Miller)</strike>
+
* Space
**<strike>Convert from scene.txt</strike>
+
** Physics improvements -- get avatars on terrain working well
 +
** Generate collision event messages for objects, maybe based on subscription request
  
==Features for a later deadline==
+
* CDN
*Undo/Redo
+
** Expose progressive meshes
*Tweak performance
 
  
====Objects====
+
* OH
*Object Placement, Orientation and Scaling
+
** Progressive mesh loading
**text tweaking (scene.txt - key to reload scene file)[dbm: all that is left to do is reload scene.csv]
+
** Improve Emerson storage -- make it much easier to interface and get a persistent object
**Gizmo
+
** Improve object manipulation interface (could be in deployment specific code, i.e. under Demo World)
*improve object selection
+
** Object migration between OHs
*Add grouping
+
** Fix closures/provide full snapshotting (timers/register handlers/etc)
*Hide/Unhide
+
** libmesh filters should not strip animations (eg. check if joints before collapsing two vertices).
*Shift Cons? (not sure what this is)
+
** Playing multiple animations at once (blend/interpolation)
*Object persistance
+
** Exposing physics collisions to Emerson.
 +
** Fix Gui isolation
 +
** Better OH connection failure handling
 +
** Reduce Emerson memory usage
  
Import/Export:
+
===Documentation===
*CDN Upload
+
* Storage tutorial
**Download small mipmaps
+
* Sandbox tutorial
**Mesh LODs
+
* Getting started with demo, maybe just update getting started for users since a lot of steps can be avoided when someone provides the configuration for you.
*Name Cache Export
+
* Simple demo videos showing how to join and interact with the world/other users.
  
MiTo Specific Object requests:
+
==Long-term Goals & Research==
+
* Add audio support (purely OH-based to support, e.g. simple sound effects and local voice chat, then consider adding mixing support to the space server).
*Looped animation of translation
+
* Load balancing objects across object hosts
*rotating infinitely in a single direction
+
* Distributed physics -- extend physics to work with objects including boundaries
*rotate 1 direction then return to origin loop repetition infinitely (like a hammer swing)
+
* Mesh/object aggregation
*Scatter
+
* Multicast
*select a series of objects and have them scatter from a central axis/point (explode effect)
+
* New transport abstractions targeted at VWs (e.g. last reliable)
*Cell or Bounding Box of a mesh coordinates and player coordinates sent out to OSC
 
 
 
====Lights====
 
*Bulb Mesh
 
*placement
 
**Gizmo
 
*direction (kind of like rotation, but it would be much more intuitive to have them 'point' at a 3D location, perhaps using a selected object?
 
*attributes (directional, specular, ambient?? whatever)
 
*Light trigger (off/on)
 
 
 
====Scenes====
 
*Reload scenes
 
*Open new scene (without restarting)
 
 
 
====Scripting====
 
 
 
*Low level scripting language implementation
 
*High level scripting language implementation
 
 
 
*Trigger Actions
 
**Expose Attachments
 
**Control lights
 
**Trigger Events/Physics
 
**Trigger UI
 
**Change materials
 
 
 
*Scripting client UI elements
 
 
 
====UI====
 
 
 
*UI Javascript hooks
 
*UI for:
 
**light interface
 
**objects
 
 
 
====Embedded Browser====
 
*Browser controls objects
 
*Keyboard input
 
*Window Management Browser
 
*Resize windows
 
*Crosspatform Flash
 
*UI
 
**Browser bar
 
**Tab/Window Management
 
 
 
====Physics====
 
 
 
*Place objects on walls (physical sampling)
 
*Gravity Gun
 
*Collision detection
 
**Deliver physics events to scripts
 
***Event queue dispatch handling
 
****Deliver proximity events
 
 
 
====Networking====
 
 
 
*CDN System
 
*World hopping/teleporting
 
*Multiuser
 
*Communication limiting under load
 
*Scalable introduction
 
*Persistence service
 
*Rebaancing Cseq
 
*Osey?? (spelled right?)
 
 
 
 
 
====Misc====
 
''things I wasn't sure where to put''
 
 
 
*Select objects to pull up information about them
 
*Default script/Basic Object properties
 
*Context position of objects
 
*Dynamic code loading
 
*Shift Cons? (not sure what this is)
 
 
 
==physics features==
 
 
 
===collision callbacks===
 
[per IRC discussion 7/17/09, dbm, drh]
 
*object names (new property)
 
*object collision mask (used to group collisions)
 
*(new!) object 'interest' mask -- tell if an object wants to receive collision messages
 
*use SpaceServiceObjectID in ObjectReference.hpp
 
*for now, properties specified in scene.csv -- may change later (as persistence comes online)
 
*keep track of collision pairs
 
*any time the situation changes, send a message
 
*example: "obj1 --> obj2: start collision"; "obj3 --> obj4: end collision"
 

Latest revision as of 22:47, 2 June 2012

This is the roadmap and brainstorm for development

Assigned Tasks

  • B scripter GUI (improvements to interface)
  • B/E V8 closures (fix storage of functions in v8 to save closure as well as function text)
  • E/J CDN support for music (serve music files as well as meshes)

Ideas

Deployment

  • Backups of OH data

Demo World

  • Repository for world-specific scripts (avatar script, anything we expect to be in there by default).
  • Build a nice demo scene, large enough to require some exploration to see it all.
  • Scripts for building into package (i.e. all the data required to support Sirikata URIs
  • Get a few good, tested avatars on the CDN and get the default demo avatar to use these simple animations well

System Features

  • Space
    • Physics improvements -- get avatars on terrain working well
    • Generate collision event messages for objects, maybe based on subscription request
  • CDN
    • Expose progressive meshes
  • OH
    • Progressive mesh loading
    • Improve Emerson storage -- make it much easier to interface and get a persistent object
    • Improve object manipulation interface (could be in deployment specific code, i.e. under Demo World)
    • Object migration between OHs
    • Fix closures/provide full snapshotting (timers/register handlers/etc)
    • libmesh filters should not strip animations (eg. check if joints before collapsing two vertices).
    • Playing multiple animations at once (blend/interpolation)
    • Exposing physics collisions to Emerson.
    • Fix Gui isolation
    • Better OH connection failure handling
    • Reduce Emerson memory usage

Documentation

  • Storage tutorial
  • Sandbox tutorial
  • Getting started with demo, maybe just update getting started for users since a lot of steps can be avoided when someone provides the configuration for you.
  • Simple demo videos showing how to join and interact with the world/other users.

Long-term Goals & Research

  • Add audio support (purely OH-based to support, e.g. simple sound effects and local voice chat, then consider adding mixing support to the space server).
  • Load balancing objects across object hosts
  • Distributed physics -- extend physics to work with objects including boundaries
  • Mesh/object aggregation
  • Multicast
  • New transport abstractions targeted at VWs (e.g. last reliable)