public
Description: Flexible cross-platform game programming library for Ruby
Homepage: http://rubygame.org
Clone URL: git://github.com/jacius/rubygame.git
rubygame / ROADMAP
100644 110 lines (75 sloc) 3.432 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
= 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:
    - Rubygame::Mixer module.
    - Rubygame::Mixer::Sample class. Use Rubygame::Sound.
    - Rubygame::Mixer::Music class. Use Rubygame::Music.
    - Rubygame::Surface.load_image method. User Rubygame::Surface.load.
  - 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?