extended_readme.rdoc

Path: doc/extended_readme.rdoc
Last Update: Tue Jun 17 20:23:04 +0000 2008

Extended README

(Stuff that didn‘t make it into the main README file.)

Internal structure of Rubygame

Rubygame‘s core is a low-level extension written in C; it provides a basic interface to SDL and its companion libraries. Building upon that is a ruby library which implements high-level concepts like game objects, event management, etc.

Rubygame is modular, meaning you can pick and choose which parts to use. For example, if you don‘t need TrueType font support, SDL_ttf is not required to compile Rubygame. It is possible for a game to detect at run-time which features are present, and behave accordingly (for example, the game might disable certain optional features).

Rubygame is multi-tiered, meaning you can access Rubygame‘s functionality on a number of levels, each level being built on the level below it. Each higher level is closer to a complete game, but is also less flexible. The idea here is that developers will use the higher levels most of the time, but be free to hack lower levels when they need to do something special.

About the version number

The version number of Rubygame has a strict meaning, to help you decide whether the new version might break your application. The version number has 3 parts: the major version number, the minor version number, and the patch number. For the example of Rubygame 2.0.0:

    2   .   0   .   0
  MAJOR . MINOR . PATCH

When a new release of Rubygame is made, one of the version numbers will go up, and the numbers that come after it will be reset to 0. Which number will go up depends on how much the Rubygame API changed:

  • MAJOR: API has changed, and old apps must be updated. An example of this is when a class has been significantly changed, or a method has renamed/moved to another module and the old name is removed.
  • MINOR: API has changed, but old apps will still work. An example of this is when a new feature has been added, or a method has been renamed but the old name is still supported.
  • PATCH: API has not changed at all. An example of this is when a bug has been fixed, or existing code has been improved beneath the surface.

[Validate]