Last Update: Fri Oct 24 19:42:51 -0500 2008


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

2.X.0 (possible minor releases before 3.0.0)

Focus: Clock

  • New Events::ClockTicked class with lots of information
    • Time since last frame, in both seconds and milliseconds
    • Current time
    • Current framerate
  • New clock class
    • Based on Ruby‘s timer (allows multi-threading)
    • Better framerate calculation algorithm
    • tick returns an instance of Events::Tick

Focus: Surface & Rect

  • Surface improvements
    • Make Surface instances copyable and marshalable
    • Support for palettes on 8-bit Surfaces
    • To Fix: New Surfaces never have alpha channels
    • To Fix: Surface#set_at doesn‘t respect alpha
    • To Add: Surface#pixels= (set pixel data directly)
    • To Add: Surface.load_from_pixels (create from pixel data)
  • Rewrite Rect class in C 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.0 (next major release)

On the horizon…

  • 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.
  • C equivalent of Rect.new_from_object (see rect.rb)
    • Screen#update (cannot pass object with rect attribute)
    • Screen#update_rects (same as above)
    • Why not just call the ruby function from within C?