rubygame 2.3.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. data/CREDITS +60 -0
  2. data/LICENSE +504 -0
  3. data/NEWS +252 -0
  4. data/README +123 -0
  5. data/ROADMAP +109 -0
  6. data/Rakefile +440 -0
  7. data/doc/extended_readme.rdoc +49 -0
  8. data/doc/getting_started.rdoc +47 -0
  9. data/doc/macosx_install.rdoc +70 -0
  10. data/doc/windows_install.rdoc +123 -0
  11. data/ext/rubygame/rubygame_core.so +0 -0
  12. data/ext/rubygame/rubygame_event.c +644 -0
  13. data/ext/rubygame/rubygame_event.h +48 -0
  14. data/ext/rubygame/rubygame_event.obj +0 -0
  15. data/ext/rubygame/rubygame_gfx.c +942 -0
  16. data/ext/rubygame/rubygame_gfx.h +101 -0
  17. data/ext/rubygame/rubygame_gfx.obj +0 -0
  18. data/ext/rubygame/rubygame_gfx.so +0 -0
  19. data/ext/rubygame/rubygame_gl.c +154 -0
  20. data/ext/rubygame/rubygame_gl.h +32 -0
  21. data/ext/rubygame/rubygame_gl.obj +0 -0
  22. data/ext/rubygame/rubygame_image.c +252 -0
  23. data/ext/rubygame/rubygame_image.h +41 -0
  24. data/ext/rubygame/rubygame_image.obj +0 -0
  25. data/ext/rubygame/rubygame_image.so +0 -0
  26. data/ext/rubygame/rubygame_joystick.c +247 -0
  27. data/ext/rubygame/rubygame_joystick.h +41 -0
  28. data/ext/rubygame/rubygame_joystick.obj +0 -0
  29. data/ext/rubygame/rubygame_main.c +155 -0
  30. data/ext/rubygame/rubygame_main.h +36 -0
  31. data/ext/rubygame/rubygame_main.obj +0 -0
  32. data/ext/rubygame/rubygame_mixer.c +1024 -0
  33. data/ext/rubygame/rubygame_mixer.h +36 -0
  34. data/ext/rubygame/rubygame_mixer.obj +0 -0
  35. data/ext/rubygame/rubygame_mixer.so +0 -0
  36. data/ext/rubygame/rubygame_music.c +1017 -0
  37. data/ext/rubygame/rubygame_music.h +29 -0
  38. data/ext/rubygame/rubygame_music.obj +0 -0
  39. data/ext/rubygame/rubygame_screen.c +448 -0
  40. data/ext/rubygame/rubygame_screen.h +43 -0
  41. data/ext/rubygame/rubygame_screen.obj +0 -0
  42. data/ext/rubygame/rubygame_shared.c +272 -0
  43. data/ext/rubygame/rubygame_shared.h +68 -0
  44. data/ext/rubygame/rubygame_shared.obj +0 -0
  45. data/ext/rubygame/rubygame_sound.c +863 -0
  46. data/ext/rubygame/rubygame_sound.h +29 -0
  47. data/ext/rubygame/rubygame_sound.obj +0 -0
  48. data/ext/rubygame/rubygame_surface.c +1151 -0
  49. data/ext/rubygame/rubygame_surface.h +62 -0
  50. data/ext/rubygame/rubygame_surface.obj +0 -0
  51. data/ext/rubygame/rubygame_time.c +183 -0
  52. data/ext/rubygame/rubygame_time.h +32 -0
  53. data/ext/rubygame/rubygame_time.obj +0 -0
  54. data/ext/rubygame/rubygame_ttf.c +599 -0
  55. data/ext/rubygame/rubygame_ttf.h +69 -0
  56. data/ext/rubygame/rubygame_ttf.obj +0 -0
  57. data/ext/rubygame/rubygame_ttf.so +0 -0
  58. data/lib/rubygame.rb +41 -0
  59. data/lib/rubygame/clock.rb +128 -0
  60. data/lib/rubygame/color.rb +79 -0
  61. data/lib/rubygame/color/models/base.rb +111 -0
  62. data/lib/rubygame/color/models/hsl.rb +153 -0
  63. data/lib/rubygame/color/models/hsv.rb +149 -0
  64. data/lib/rubygame/color/models/rgb.rb +78 -0
  65. data/lib/rubygame/color/palettes/css.rb +49 -0
  66. data/lib/rubygame/color/palettes/palette.rb +100 -0
  67. data/lib/rubygame/color/palettes/x11.rb +177 -0
  68. data/lib/rubygame/constants.rb +238 -0
  69. data/lib/rubygame/event.rb +313 -0
  70. data/lib/rubygame/ftor.rb +370 -0
  71. data/lib/rubygame/hotspot.rb +265 -0
  72. data/lib/rubygame/keyconstants.rb +237 -0
  73. data/lib/rubygame/mediabag.rb +94 -0
  74. data/lib/rubygame/named_resource.rb +254 -0
  75. data/lib/rubygame/queue.rb +288 -0
  76. data/lib/rubygame/rect.rb +612 -0
  77. data/lib/rubygame/sfont.rb +223 -0
  78. data/lib/rubygame/sprite.rb +511 -0
  79. data/samples/FreeSans.ttf +0 -0
  80. data/samples/GPL.txt +340 -0
  81. data/samples/README +40 -0
  82. data/samples/chimp.bmp +0 -0
  83. data/samples/chimp.rb +302 -0
  84. data/samples/demo_gl.rb +151 -0
  85. data/samples/demo_gl_tex.rb +197 -0
  86. data/samples/demo_music.rb +77 -0
  87. data/samples/demo_rubygame.rb +296 -0
  88. data/samples/demo_sfont.rb +52 -0
  89. data/samples/demo_ttf.rb +193 -0
  90. data/samples/demo_utf8.rb +53 -0
  91. data/samples/fist.bmp +0 -0
  92. data/samples/load_and_blit.rb +22 -0
  93. data/samples/panda.png +0 -0
  94. data/samples/punch.wav +0 -0
  95. data/samples/ruby.png +0 -0
  96. data/samples/song.ogg +0 -0
  97. data/samples/term16.png +0 -0
  98. data/samples/whiff.wav +0 -0
  99. metadata +164 -0
data/NEWS ADDED
@@ -0,0 +1,252 @@
1
+ = NEWS
2
+
3
+ == Rubygame 2.3.0
4
+
5
+ Release focus: Media resources.
6
+
7
+ === Features
8
+
9
+ - Add: Rubygame::NamedResource mixin module
10
+ - Provides per-class resource repository and on-demand auto-loading
11
+ behavior.
12
+
13
+ - Add: Rubygame::Music class.
14
+ - Intended as a full replacement for Rubygame::Mixer::Music.
15
+ - Includes NamedResources mixin.
16
+ - NOTE: Requires SDL_mixer support.
17
+
18
+ - Add: Rubygame::Sound class.
19
+ - Intended as a full replacement for Rubygame::Mixer::Sample.
20
+ - Includes NamedResources mixin.
21
+ - NOTE: Requires SDL_mixer support.
22
+
23
+ - Update: Rubygame::Surface class.
24
+ - Includes NamedResources mixin.
25
+ - Add: Surface.load_from_string (NOTE: Requires SDL_image support.)
26
+
27
+ === Fixes
28
+
29
+ - ColorBase had been accidently placed in the top level namespace in
30
+ Rubygame 2.2.0. It is now correctly placed in the Rubygame::Color
31
+ module.
32
+
33
+ === Other Stuff
34
+
35
+ - Deprecation (will be removed in Rubygame 3.0):
36
+ - Rubygame::Mixer module and methods are deprecated.
37
+ - Rubygame::Mixer::Music class is deprecated.
38
+ Use Rubygame::Music class instead.
39
+ - Rubygame::Mixer::Sample class is deprecated.
40
+ Use Rubygame::Sound class instead.
41
+ - Rubygame::Surface.load_image is deprecated.
42
+ Use Rubygame::Surface.load instead.
43
+
44
+ - NOTE: Run ruby with -w flag or set $_v = true to enable run-time
45
+ deprecation warnings.
46
+
47
+
48
+
49
+
50
+ == Rubygame 2.2.0
51
+
52
+ Release focus: Colors.
53
+
54
+ === Features
55
+
56
+ - Add: Rubygame::Color module
57
+ - ColorRGB, ColorHSV, and ColorHSL classes.
58
+ - X11 and CSS palettes of pre-defined colors.
59
+ - Surface methods can accept ColorRGB etc. for colors.
60
+ - Automatic lookup of color names when a string or symbol
61
+ is passed for a color to Surface methods.
62
+ - Add: Surface#set_at().
63
+
64
+ - Add: Screen#icon=().
65
+
66
+ === Bug Fixes
67
+
68
+ - Fix: Surface#draw_arc was incorrectly documented as Surface#draw_pie
69
+
70
+ === Improvements
71
+
72
+ - Rect#collide_rect? is now faster.
73
+ - Sprites::Group#collide_group can take a block; arguments are deprecated.
74
+
75
+ === Other Stuff
76
+
77
+ - Build system correctly recompiles if source has changed.
78
+ - Build system option syntax has changed. See the README: Advanced Install.
79
+ - Build system will correctly exit with an error status if it can't compile;
80
+ fixes Rubygems trying to install even when compile failed.
81
+
82
+ === Acknowledgements
83
+
84
+ - Michael Swiger (mokkan) for Screen#icon=.
85
+ - ippa for optimizing Rect#collide_rect?.
86
+
87
+
88
+
89
+
90
+ == Rubygame 2.1.0
91
+
92
+ === Features
93
+
94
+ - Add: Mixer::Music module.
95
+ - Add: Mixer.driver_name method.
96
+ - Add: Depth sorting for sprites.
97
+ - Add: Sprite#undraw.
98
+ - Add: TTF#size_utf8 and TTF#size_unicode.
99
+ - Add: Rubygame.key_name.
100
+
101
+ === Bug Fixes
102
+
103
+ - Fix: Bug with dirty rectangles in UpdateGroup.
104
+ - Fix: Incorrect docs for joy-hat direction value.
105
+ - Fix: Segfaults when Joysticks are garbage-collected after Rubygame has quit.
106
+ - Fix: Segfaults when using Surface#convert, #to_display, or #to_display_alpha
107
+ when no video mode has been set.
108
+ - Fix: Surface#get_at returning [0,0,0,0] when it shouldn't.
109
+ - Fix: Sprites::Group#collide_group behaving incorrectly (again).
110
+ - Fix: Build system doesn't correctly handle quoted spaces in --cflags/--lflags.
111
+ (NOTE: Use CFLAGS/LDFLAGS environment variables now, instead.)
112
+
113
+ === Known Issues
114
+
115
+ - Build system won't detect changed source files and recompile as necessary;
116
+ you must "rake clobber build" after a change.
117
+
118
+ === Other Stuff
119
+
120
+ - Added argument checks to several Rect methods.
121
+ - Surfaces can be created with no Screen mode set.
122
+ - Mixer.open_audio has default values.
123
+ - TTF style getting/setting refactored under the hood.
124
+ - Added demo_music.rb and a sample song.ogg to try out music.
125
+
126
+ === Acknowledgements
127
+
128
+ - Johan Berntsson for adding Mixer::Music.
129
+ - Daniel Neis Araujo for adding Sprite#undraw.
130
+ - Roger Ostrander (denor) for and bug fixes and adding Rubygame.key_name.
131
+ - Bjorn De Meyer (beoran) for numerous patches and improvements.
132
+
133
+
134
+
135
+
136
+ == Rubygame 2.0.1
137
+
138
+ === Bug Fixes
139
+
140
+ - Fix: Segfaults in several C methods when passed an unexpected argument type.
141
+ - Fix: Segfaults in Screen#update and Screen#update_rects when the Rect(s)
142
+ extended out of the Screen bounds.
143
+ - Fix: Ftor#magnitude= behaving incorrectly.
144
+ - Fix: Rect#clip! behaving incorrectly.
145
+ - Fix: Sprites::Group#collide_group behaving incorrectly.
146
+ - Fix: Surface#savebmp wanting too many arguments.
147
+
148
+ === Other Stuff
149
+
150
+ - Argument handling for C methods is now more robust under the hood.
151
+ - C methods which expect Array arguments will now also work with objects
152
+ that can be converted to an Array (with #to_ary), such as Ftor.
153
+
154
+
155
+
156
+
157
+ == Rubygame 2.0.0:
158
+
159
+ *NOTICE*: version 2.0.0 is not totally backward-compatible with 1.1.0.
160
+ You may have to update existing applications to the new syntax.
161
+ (Hence the major version number going up.)
162
+
163
+ === API Changes
164
+
165
+ ==== Basic audio playback with SDL_mixer
166
+
167
+ - Add: Rubygame::Mixer module (basic SDL_mixer audio playback).
168
+ - Add: Rubygame::Mixer::Sample class (load audio samples).
169
+
170
+ ==== Event management system revamped
171
+
172
+ - Add: Rubygame.fetch_sdl_events()
173
+ - Add: Rubygame::EventQueue class.
174
+ - Add: Rubygame::MailQueue mixin.
175
+ - Retire: Rubygame::Queue class.
176
+
177
+ ==== Surface swallows Draw, Transform, and Image methods
178
+
179
+ - Updated: Rubygame::Surface class
180
+ - Add: Surface.load_image() (migrated from Image).
181
+ - Add: ##savebmp (migrated from Image).
182
+ - Add: ##draw_* (migrated from Draw).
183
+ - Add: ##rotozoom, ##zoom (migrated from Transform).
184
+ - Add: ##zoom_to method.
185
+
186
+ - Retire: Draw module (methods merged into Surface).
187
+ - Retire: Transform module (methods merged into Surface).
188
+ - Retire: Image module (methods merged into Surface).
189
+
190
+ ==== Clock class improved
191
+
192
+ - Updated: Rubygame::Clock class
193
+ - Clock is now directly under Rubygame (not Rubygame::Time).
194
+ - Clock.new() takes no arguments, but yields self if a block is given.
195
+ - framerate limiting with ##tick is now much more accurate.
196
+ - Add: Clock.runtime(), Clock.wait(), Clock.delay() (migrated from Time)
197
+ - Rename: ##fps to ##framerate.
198
+ - Rename: ##desired_fps to ##target_framerate.
199
+ - Rename: ##desired_mspf to ##target_frametime.
200
+ - Rename: ##time to ##lifetime.
201
+
202
+ - Retire: Time module (methods merged into Clock).
203
+
204
+ ==== Experimental classes/modules
205
+
206
+ - Add: Rubygame::MediaBag class.
207
+ - Add: Rubygame::Ftor class.
208
+ - Add: Rubygame::Hotspot mixin.
209
+ - Change: Rubygame::SFont class must be explicitly imported
210
+ (require 'rubygame/sfont').
211
+
212
+ ==== New system for version and capability detection
213
+
214
+ - Rubygame::VERSIONS: a hash table with the version numbers of rubygame,
215
+ SDL, and any SDL_* libraries that were compiled in.
216
+ - Methods which are not supported will no be defined in the namespace;
217
+ formerly, they would be defined but nonfunctional (issued a warning and
218
+ returned nil).
219
+
220
+ ==== Miscellaneous other changes and additions
221
+
222
+ - Add: Rubygame.quit (cleanly exit SDL; resets resolution after fullscreen).
223
+
224
+ - Updated: Rubygame::Surface class
225
+ - Argument list for Surface.new() has changed.
226
+ - Add: ##clip and ##clip=.
227
+ - Add: ##convert, ##to_display, and ##to_display_alpha.
228
+
229
+ - Updated: Rubygame::Screen class
230
+ - Rename: Screen.set_mode() to Screen.new().
231
+ - Add: Screen.set_mode() and Screen.instance() (aliases for Screen.new()).
232
+ - Add: ##title, ##title= (replaces ##caption and ##set_caption)
233
+
234
+ - Updated: Rubygame::TTF class
235
+ - Add: ##render_utf8 and ##render_unicode methods.
236
+ - Add: ##size_text method.
237
+
238
+ === Bug Fixes
239
+
240
+ - Fix several erroneous Rect methods.
241
+ - Fix "bignum out of range of unsigned long (RangeError)" when using
242
+ Rubygame::FULLSCREEN.
243
+
244
+ === Other Stuff
245
+
246
+ - New build/install system with Rake.
247
+ - Split the monolithic rubygame extension into modules:
248
+ rubygame_core:: main SDL interface.
249
+ rubygame_gfx:: SDL_gfx interface.
250
+ rubygame_image:: SDL_image interface.
251
+ rubygame_mixer:: SDL_mixer interface.
252
+ rubygame_ttf:: SDL_ttf interface.
data/README ADDED
@@ -0,0 +1,123 @@
1
+ = Rubygame README
2
+
3
+ == What is Rubygame?
4
+
5
+ Rubygame is a cross-platform game-development extension and library for Ruby,
6
+ inspired by Pygame. The purpose of Rubygame is to empower game developers by
7
+ providing them with powerful and flexible high-level concepts. Instead of
8
+ worrying about low-level technical details, you can focus your energy on
9
+ more interesting things (like making a fun game).
10
+
11
+ Rubygame's core is written in C to bind low-level SDL functions into Ruby.
12
+ On top of that is a pure Ruby library for higher-level behavior like
13
+ event and game object management.
14
+
15
+ === Relevant Links
16
+ 1. Rubygame: http://rubygame.sourceforge.net
17
+ 2. Ruby: http://www.ruby-lang.org
18
+ 3. Pygame: http://www.pygame.org
19
+ 4. SDL: http://www.libsdl.org
20
+
21
+ == Requirements
22
+
23
+ You will definitely need these software packages to compile Rubygame:
24
+
25
+ * ruby >= 1.8
26
+ * SDL >= 1.2.7
27
+ * rake >= 0.7.0 (for build/install system)
28
+
29
+ It's highly recommended that you have these packages as well, or some
30
+ cool features won't be available!
31
+
32
+ * SDL_gfx >= 2.0.10
33
+ * SDL_image >= 1.2.3
34
+ * SDL_mixer >= 1.2.7
35
+ * SDL_ttf >= 2.0.6
36
+
37
+ (If you don't have some of those, you have to disable those features
38
+ by passing some flags to the build process. See "Advanced Install", below.)
39
+
40
+ If you are compiling source on a binary-based Linux ditribution,
41
+ you will also need the "dev" packages of ruby, SDL, SDL_gfx, SDL_image,
42
+ SDL_mixer, and SDL_ttf. (Really, you just need the header files.)
43
+
44
+ And of course, if you are compiling the source, you will need a C compiler!
45
+ These versions of gcc worked fine when I tried them; other compilers might
46
+ work too:
47
+
48
+ * gcc 3.3, 3.4, 4.0, 4.1
49
+
50
+
51
+ == Install
52
+
53
+ === Basic Install
54
+
55
+ Extract the archive and enter its top directory.
56
+ Then run ($ indicates as user, # as root):
57
+
58
+ $ rake build
59
+ # rake install
60
+
61
+ === Advanced Install
62
+
63
+ The build and install tasks can be configured by providing certain commands
64
+ to rake:
65
+
66
+ no-sdl-gfx:: do not build modules which depend on SDL_gfx
67
+ no-sdl-image:: do not build modules which depend on SDL_image
68
+ no-sdl-mixer:: do not build modules which depend on SDL_mixer
69
+ no-sdl-ttf:: do not build modules which depend on SDL_ttf
70
+ no-opengl:: do not build modules which depend on OpenGL
71
+
72
+ no-sdl-config:: do not guess compiler/linker flags using `sdl-config'
73
+
74
+ debug:: build modules with debbugging flags enabled
75
+ universal:: on MacOS X, try to compile for both PPC and Intel
76
+ verbose:: display the build commands as they are run
77
+
78
+ Additionally, the build process respects certain environmental variables.
79
+ In particular, CFLAGS and LDFLAGS are important for users compiling with
80
+ the no-sdl-config command.
81
+
82
+ CC:: C compiler command
83
+ CFLAGS:: flags passed to the C compiler
84
+ LDSHARED:: linker command
85
+ LDFLAGS:: flags passed to the linker
86
+ RUBYARCHDIR:: where to install platform-specific compiled extensions
87
+ RUBYLIBDIR:: where to install platform-independent interpreted libs
88
+
89
+ IMPORTANT: if you are missing any optional SDL_* libraries, you must specify
90
+ "no-*" flags for those libraries. For example, if you don't have SDL_gfx:
91
+
92
+ $ rake no-sdl-gfx build
93
+
94
+ If you don't disable the features, the compile will probably fail when it
95
+ looks for the headers and libraries. (The build system is not smart enough to
96
+ automatically disable missing features.)
97
+
98
+ === Generating documentation
99
+
100
+ You can generate documentation for Rubygame's API by running:
101
+
102
+ # rake rdoc
103
+
104
+ Documentation will be generated as HTML in the 'html' directory.
105
+ Open 'html/index.html' in a web browser to get started.
106
+
107
+ == Usage
108
+
109
+ See the documentation (online at http://rubygame.sourceforge.net, or
110
+ generated locally with the 'rake rdoc' command).
111
+
112
+ We also recommend that you take a peek at the demo applications in
113
+ the 'samples' directory, especially chimp.rb.
114
+
115
+ == License
116
+
117
+ Rubygame is distributed under the terms of the GNU Lesser GPL.
118
+ See LICENSE for more details.
119
+
120
+ Some of the sample files are distributed under licenses other than the
121
+ GNU Lesser GPL. See 'samples/README' and 'samples/GPL' for more details.
122
+
123
+ John Croisant (jacius at users.sourceforge.net)
data/ROADMAP ADDED
@@ -0,0 +1,109 @@
1
+ = ROADMAP
2
+
3
+ This represents the direction Rubygame will be going in, but
4
+ keep in mind that specific details may change over time.
5
+
6
+
7
+ == 2.4.0 (next minor release)
8
+
9
+ Release focus: Events.
10
+
11
+ - New EventHook class, has 3 parts: owner, trigger, and action.
12
+ - New trigger classes, e.g. KeyPressedTrigger (matches key presses)
13
+ - New action classes, e.g. MethodAction (calls a method on owner)
14
+
15
+ - New EventHandler class
16
+ - Holds many EventHook instances, feeds the event to each
17
+ matching hook.
18
+
19
+ - New HasEventHandler mixin, can embed in sprite, etc. classes
20
+ for easy event handling and hook creation.
21
+
22
+ - New Events module, with a suite of new and revised event classes.
23
+
24
+ - Eliminate integer constants in favor of symbols
25
+ - Keyboard keys are symbols (e.g. :up, :a, :space)
26
+ - Mouse buttons are symbols (e.g. :mouse_left, :mouse_wheel_up)
27
+
28
+ - Nicer, more natural naming scheme
29
+ - Drop the word "Event" from the class names.
30
+ - "Down" and "Up" (e.g. in KeyDownEvent) become "Pressed"
31
+ and "Released" (e.g. KeyPressed).
32
+ - MouseMotionEvent becomes MouseMoved.
33
+ - Other miscellaneous changes.
34
+
35
+ - Better unicode / international keyboard support
36
+ - KeyPress#string gives a UTF8 bytestring with the glyph that was
37
+ generated by the keypress (useful for text input in GUIs).
38
+
39
+ - Old versions of the event classes stay the same, but are deprecated.
40
+
41
+
42
+
43
+ == 2.X.0 (_possible_ minor releases before 3.0.0)
44
+
45
+ === Focus: Time
46
+
47
+ - New Events::Tick class with lots of information
48
+ - Time since last frame, in both seconds and milliseconds.
49
+ - Current time
50
+ - Current framerate
51
+
52
+ - New clock class
53
+ - Based on Ruby's timer (allows multi-threading).
54
+ - Better framerate calculation algorithm
55
+ - #tick returns an instance of Events::Tick.
56
+
57
+ === Focus: Sprites
58
+
59
+ - New sprite system
60
+ - New Sprite, Scene, and Camera classes.
61
+ - More powerful and simpler to use.
62
+ - Integration with the Chipmunk physics library.
63
+
64
+
65
+
66
+ == 3.0.0 (next major release)
67
+
68
+ - Backwards compatibility is broken:
69
+ - Deprecated classes / methods retired:
70
+ - Rubygame::Mixer module.
71
+ - Rubygame::Mixer::Sample class. Use Rubygame::Sound.
72
+ - Rubygame::Mixer::Music class. Use Rubygame::Music.
73
+ - Rubygame::Surface.load_image method. User Rubygame::Surface.load.
74
+ - Surface#get_at
75
+ - Sprites::Group#collide_group
76
+
77
+ - Change Sprites::Group#collide_group to scrap the 'killa/killb' stuff,
78
+ take a block instead.
79
+
80
+
81
+
82
+ == On the horizon...
83
+
84
+ - Polygon, circle, and other geometric primitives
85
+ - Drawing, with styles?
86
+ - OpenGL drawing?
87
+ - Collision detection?
88
+ - Physical shapes w/ Chipmunk?
89
+ - Generate bounding Polygon from an image automatically?
90
+
91
+ - Path (Curve?) (graphs/plots for tracing position and other uses)
92
+ - Can find the position N units along the path.
93
+ - Can draw a line showing the path.
94
+ - LinearPath (connect the dots, linear interpolation)
95
+ - BezierPath (chain of continuous cubic Bézier curves)
96
+ - CodePath (calculated from a code block)
97
+
98
+ - Effect (Action?)
99
+ - "Attach" to an instance, does something over time.
100
+ - E.g. moves a sprite from point A to point B over N seconds.
101
+ - Many types of effects, easy to define custom ones.
102
+ - Takes parameters: start/end time, others depending on effect.
103
+
104
+ - C equivalent of Rect.new_from_object (see rect.rb)
105
+ - Screen#update (cannot pass object with rect attribute)
106
+ - Screen#update_rects (same as above)
107
+ - Why not just call the ruby function from within C?
108
+
109
+