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)
- Backwards compatibility is broken:
- Deprecated classes / methods retired:
- Surface#get_at
- Sprites::Group#collide_group
- Change Sprites::Group#collide_group to scrap the ‘killa/killb’
stuff, take a block instead.
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?