<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,80 @@
 = NEWS
 
+== Rubygame 2.6.0
+
+Release focus: Ported to FFI.
+
+=== FFI
+
+Rubygame is now pure Ruby, with no compiled C code. Instead, it uses
+Ruby-FFI (or compatible FFI implementations) to directly access SDL
+and related libraries. That means:
+
+- It is much easier to install. You can install it directly from
+  RubyGems (`gem install rubygame`) on any operating system, and you
+  don't need a C compiler or SDL headers.
+
+- It is now possible to use Rubygame on JRuby, and possibly on
+  Rubinius.
+
+- Rubygame will be slightly slower than before. But, the hard work is
+  still being done by SDL, so the speed decrease is only minor. The
+  increased portability and ease of future development greatly
+  outweighs the small speed loss.
+
+Despite the major architectural change, Rubygame 2.6 API is meant to
+be backwards compatible with Rubygame 2.5 and earlier. If you find an
+API incompatibility, you should report it as a bug.
+
+However, there are a few minor incompatibilities that are already known,
+and most likely cannot or will not be fixed:
+
+- Surface#flip now needs SDL_gfx to run. Before, it needed only plain
+  SDL, but the code for it was too slow when reimplemented in Ruby.
+
+- Rubygame::VERSIONS[:sdl_gfx] now reports [0,0,0] when SDL_gfx is
+  available, instead of its real version number. SDL_gfx does not
+  currently provide any way to detect its version number at run time.
+  (VERSIONS still reports nil when SDL_gfx is not available, the same
+  as in 2.5 and earlier.)
+
+=== Fixes
+
+- Fixed: Surface#set_at() now correctly sets the pixel's opacity for
+  Surfaces with an alpha channel. If no opacity is given for the new
+  color (i.e. only RGB), the pixel will be fully opaque.
+
+  - Note: Due to a long-standing bug, Surface.new cannot create a
+    Surface with an alpha channel. Use Surface#to_display_alpha to
+    create an alpha-channeled copy of the Surface, or load an image
+    file that has an alpha channel already.
+
+=== Other Changes
+
+- Rubygame now automatically initializes itself when loaded and cleans
+  itself up at exit. So, you no longer need to call Rubygame.init or
+  Rubygame.quit in your code (but it won't hurt if you do).
+
+- Added: New sample application, a basic image viewer.
+  See samples/image_viewer.rb.
+
+- Added: Documentation listing every keyboard symbol used by Rubygame.
+  See doc/keyboard_symbols.rdoc.
+
+- Added: Guide to setting custom load parts for SDL libraries.
+  See doc/custom_sdl_load_paths.rdoc.
+
+- Surface#alpha= is now a true alias for Surface#set_alpha. It was a
+  separate method before. It can still be used in the same way as
+  before.
+
+- Surface#colorkey= is now a true alias for Surface#set_colorkey. It
+  was a separate method before. It can still be used in the same way
+  as before.
+
+
+
+
 == Rubygame 2.5.3
 
 Release focus: Bug fixes.</diff>
      <filename>NEWS</filename>
    </modified>
    <modified>
      <diff>@@ -2,126 +2,81 @@
 
  == What is Rubygame?
 
- Rubygame is a cross-platform game-development extension and library for Ruby,
- inspired by Pygame. The purpose of Rubygame is to empower game developers by
- providing them with powerful and flexible high-level concepts. Instead of
- worrying about low-level technical details, you can focus your energy on
- more interesting things (like making a fun game).
-
- Rubygame's core is written in C to bind low-level SDL functions into Ruby.
- On top of that is a pure Ruby library for higher-level behavior like
- event and game object management.
+ Rubygame is a cross-platform game-development library for Ruby,
+ inspired by Pygame. Rubygame strives to empower game developers by
+ providing them with powerful and flexible mid-to-high level tools.
+ Instead of worrying about low-level technical details, you can focus
+ your energy on more interesting things (like making a fun game).
 
  === Relevant Links
  1. Rubygame: http://rubygame.org
  2. Ruby: http://www.ruby-lang.org
  3. Pygame: http://www.pygame.org
- 4. SDL: http://www.libsdl.org
+
 
  == Requirements
 
- You will definitely need these software packages to compile Rubygame:
+ You will definitely need these software packages to use Rubygame:
 
- * ruby        &gt;= 1.8 
- * SDL         &gt;= 1.2.7
- * rake        &gt;= 0.7.0    (for build/install system)
+ * Ruby          &gt;= 1.8 
+ * Ruby-SDL-FFI  &gt;= 0.1
+ * SDL           &gt;= 1.2.7   (1.2.14 on MacOS X 10.6)
+ * (MacOS X only): RSDL  ( http://github.com/knu/rsdl )
 
  It's highly recommended that you have these packages as well, or some
  cool features won't be available!
 
- * SDL_gfx     &gt;= 2.0.10
+ * SDL_gfx     &gt;= 2.0.13
  * SDL_image   &gt;= 1.2.3
  * SDL_mixer   &gt;= 1.2.7
  * SDL_ttf     &gt;= 2.0.6
 
- (If you don't have some of those, you have to disable those features
- by passing some flags to the build process. See &quot;Advanced Install&quot;, below.)
-
- If you are compiling source on a binary-based Linux ditribution,
- you will also need the &quot;dev&quot; packages of ruby, SDL, SDL_gfx, SDL_image,
- SDL_mixer, and SDL_ttf. (Really, you just need the header files.)
-
- And of course, if you are compiling the source, you will need a C compiler!
- These versions of gcc worked fine when I tried them; other compilers might
- work too:
-
- * gcc 3.3, 3.4, 4.0, 4.1
-
 
  == Install
 
  === Basic Install
 
- Extract the archive and enter its top directory.
- Then run ($ indicates as user, # as root):
-
-  $ rake build
-  # rake install
-
- === Advanced Install
+ The simplest way to install is with RubyGems:
 
- The build and install tasks can be configured by providing certain commands
- to rake:
+  $ sudo gem install rubygame
 
- no-sdl-gfx::    do not build modules which depend on SDL_gfx
- no-sdl-image::  do not build modules which depend on SDL_image
- no-sdl-mixer::  do not build modules which depend on SDL_mixer
- no-sdl-ttf::    do not build modules which depend on SDL_ttf
- no-opengl::     do not build modules which depend on OpenGL
+ Another way is to install directly from the source:
 
- no-sdl-config:: do not guess compiler/linker flags using `sdl-config'
+  $ sudo rake install
 
- debug::         build modules with debbugging flags enabled
- universal::     on MacOS X, try to compile for both PPC and Intel
- verbose::       display the build commands as they are run
+ Or generate and install a gem from the source:
 
- Additionally, the build process respects certain environmental variables.
- In particular, CFLAGS and LDFLAGS are important for users compiling with
- the no-sdl-config command.
-
- CC::            C compiler command
- CFLAGS::        flags passed to the C compiler
- LDSHARED::      linker command
- LDFLAGS::       flags passed to the linker
- RUBYARCHDIR::   where to install platform-specific compiled extensions
- RUBYLIBDIR::    where to install platform-independent interpreted libs
-
- IMPORTANT: if you are missing any optional SDL_* libraries, you must specify
- &quot;no-*&quot; flags for those libraries. For example, if you don't have SDL_gfx:
-
-  $ rake no-sdl-gfx build
-
- If you don't disable the features, the compile will probably fail when it
- looks for the headers and libraries. (The build system is not smart enough to
- automatically disable missing features.)
+  $ rake gem
+  $ sudo gem install pkg/rubygame-*.gem
 
  === Generating documentation
 
  You can generate documentation for Rubygame's API by running:
 
-  # rake rdoc
+  $ rake rdoc
 
  Documentation will be generated as HTML in the 'html' directory.
  Open 'html/index.html' in a web browser to get started.
 
+
  == Usage
  
  See the documentation (online at http://docs.rubygame.org, or
  generated locally with the 'rake rdoc' command). 
 
  We also recommend that you take a peek at the demo applications in
- the 'samples' directory, especially demo_rubygame.rb and chimp.rb.
+ the 'samples' directory, especially image_viewer.rb,
+ demo_rubygame.rb, and chimp.rb.
+
 
  == License
 
  Rubygame is distributed under the terms of the GNU Lesser GPL.
  See LICENSE for more details.
 
- The contents of the file 'Rakefile' is licensed under the terms of the
- MIT license. See that file for more details.
-
- Some of the sample files are distributed under licenses other than the
- GNU Lesser GPL. See 'samples/README' and 'samples/GPL' for more details.
+ Some of the sample files are distributed under licenses other than
+ the GNU Lesser GPL. See 'samples/README' and 'samples/GPL' for more
+ details.
 
 
  John Croisant (jacius at gmail.com)</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -1,22 +1,22 @@
 = ROADMAP
 
 This represents the direction Rubygame will be going in, but
-keep in mind that specific details may change over time.
+keep in mind that plans and details may change over time.
 
 
-== 2.X.0 (_possible_ minor releases before 3.0.0)
+== 2.X (_possible_ minor releases before 3.0)
 
 === Focus: Surface &amp; Rect
 
 - Surface improvements
   - Make Surface instances copyable and marshalable
   - Support for palettes on 8-bit Surfaces
+  - Export as OpenGL-ready 32bit pixel data.
   - 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
+- Optimize Rect for speed
 
 
 === Focus: Sprites
@@ -24,18 +24,20 @@ keep in mind that specific details may change over time.
 - New sprite system
   - New Sprite, Scene, and Camera classes.
   - More powerful and simpler to use.
-  - Integration with the Chipmunk physics library.
+  - Integration with the Chipmunk physics library?
 
 
 
-== 3.0.0 (next major release)
+== 3.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.
+    - Rubygame::Surface.load_image method. Use Rubygame::Surface.load.
+    - Rubygame::Ftor class. An alternative class will be provided.
+    - Rubygame::MediaBag class. Use Surface#[], Sound#[], and Music#[].
   - Surface#get_at
   - Sprites::Group#collide_group
 
@@ -44,7 +46,17 @@ keep in mind that specific details may change over time.
 
 
 
-== On the horizon...
+== Possible future developments
+
+- Switch from SDL_gfx to SPriG for graphics primitives.
+  - SPriG provides more functionality and flexibility, and a more
+    consistent interface.
+  - How does speed compare?
+  - Is it buggy?
+
+- Alternative back-ends:
+  - OpenGL (faster rendering, better Mac support)
+  - Allegro?
 
 - Polygon, circle, and other geometric primitives
   - Drawing, with styles?
@@ -65,8 +77,3 @@ keep in mind that specific details may change 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?</diff>
      <filename>ROADMAP</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>73cef80adec52b9b5627a780b3e907c93763cc44</id>
    </parent>
  </parents>
  <author>
    <name>John Croisant</name>
    <email>jacius@gmail.com</email>
  </author>
  <url>http://github.com/jacius/rubygame/commit/1cc1440656aaf5369d777e4f2f553368c9a7cff6</url>
  <id>1cc1440656aaf5369d777e4f2f553368c9a7cff6</id>
  <committed-date>2009-10-23T20:46:41-07:00</committed-date>
  <authored-date>2009-10-23T20:44:52-07:00</authored-date>
  <message>Updated README, NEWS, and ROADMAP.</message>
  <tree>7eeb776228aaa5ac3fdeecb2e15ff576aff4f658</tree>
  <committer>
    <name>John Croisant</name>
    <email>jacius@gmail.com</email>
  </committer>
</commit>
