ROADMAP

Path: ROADMAP
Last Update: Sun May 18 00:12:44 -0400 2008

ROADMAP

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

2.4.0 (next minor release)

Release focus: Events.

  • New EventHook class, has 3 parts: owner, trigger, and action.
    • New trigger classes, e.g. KeyPressedTrigger (matches key presses)
    • New action classes, e.g. MethodAction (calls a method on owner)
  • New EventHandler class
    • Holds many EventHook instances, feeds the event to each matching hook.
  • New HasEventHandler mixin, can embed in sprite, etc. classes for easy event handling and hook creation.
  • New Events module, with a suite of new and revised event classes.
    • Eliminate integer constants in favor of symbols
      • Keyboard keys are symbols (e.g. :up, :a, :space)
      • Mouse buttons are symbols (e.g. :mouse_left, :mouse_wheel_up)
    • Nicer, more natural naming scheme
      • Drop the word "Event" from the class names.
      • "Down" and "Up" (e.g. in KeyDownEvent) become "Pressed" and "Released" (e.g. KeyPressed).
      • MouseMotionEvent becomes MouseMoved.
      • Other miscellaneous changes.
    • Better unicode / international keyboard support
      • KeyPress#string gives a UTF8 bytestring with the glyph that was generated by the keypress (useful for text input in GUIs).
  • Old versions of the event classes stay the same, but are deprecated.

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

Focus: Time

  • New Events::Tick 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: 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?

[Validate]