# ROADMAP

Path: | ROADMAP
Last Update: | Sun Dec 04 02:22:31 +0000 2011

# ROADMAP

This represents the direction Rubygame will be going in, but keep in mind that plans and details may change over time.

## 2.X (possible minor releases before 3.0)

### Focus: Surface & Rect

- Surface improvements
  - Make Surface instances copyable and marshalable
  - Support for palettes on 8-bit Surfaces
  - Export as OpenGL-ready 32bit pixel data.
  - To Fix: New Surfaces never have alpha channels
  - To Add: Surface#pixels= (set pixel data directly)
  - To Add: Surface.load_from_pixels (create from pixel data)
- Optimize Rect for speed

### Focus: Sprites

- New sprite system
  - New Sprite, Scene, and Camera classes.
  - More powerful and simpler to use.
  - Integration with the Chipmunk physics library?

## 3.0 (next major release)

- Backwards compatibility is broken:
  - Deprecated classes / methods retired:
    - Rubygame::Mixer module.
    - Rubygame::Mixer::Sample class. Use Rubygame::Sound.
    - Rubygame::Mixer::Music class. Use Rubygame::Music.
    - Rubygame::Surface.load_image method. Use Rubygame::Surface.load.
    - Rubygame::Ftor class. An alternative class will be provided.
    - Rubygame::MediaBag class. Use Surface#[], Sound#[], and Music#[].
  - Surface#get_at
  - Sprites::Group#collide_group
- Change Sprites::Group#collide_group to scrap the ‘killa/killb’ stuff, take a block instead.

## Possible future developments

- Switch from SDL_gfx to SPriG for graphics primitives.
  - SPriG provides more functionality and flexibility, and a more consistent interface.
  - How does speed compare?
  - Is it buggy?
- Alternative back-ends:
  - OpenGL (faster rendering, better Mac support)
  - Allegro?
- Polygon, circle, and other geometric primitives
  - Drawing, with styles?
  - OpenGL drawing?
  - Collision detection?
  - Physical shapes w/ Chipmunk?
  - Generate bounding Polygon from an image automatically?
- Path (Curve?) (graphs/plots for tracing position and other uses)
  - Can find the position N units along the path.
  - Can draw a line showing the path.
  - LinearPath (connect the dots, linear interpolation)
  - BezierPath (chain of continuous cubic Bézier curves)
  - CodePath (calculated from a code block)
- Effect (Action?)
  - "Attach" to an instance, does something over time.
  - E.g. moves a sprite from point A to point B over N seconds.
  - Many types of effects, easy to define custom ones.
  - Takes parameters: start/end time, others depending on effect.

[Validate]