Introduction

Cette documentation est assez courte, mais étant donné que cette extension n'est qu'une simple encapsulation des classes C++ de SFML, il est conseillé de se baser sur la documentation SFML pour obtenir plus de détails sur les classes et les fonctions. Cette documentation a simplement pour but de détailler les classes et fonctions qui sont présentes dans l'extension RubySFML, ainsi que de décrire les changements qui ont été effectués durant la traduction C++ vers Ruby.

Etant donné que Ruby ne supporte pas les threads et possède ses propres classes pour le réseau, seules certaines classes des modules système, fenêtrage, graphisme et audio sont exposées. Pour la plupart des classes, les seuls changements effectués ont été de faire débuter les noms des fonctions par une minuscule. Pour les classes possédant des accesseurs simples, ceux-ci ont souvent été abandonnés pour utiliser une syntaxe plus simple (par exemple sprite.left = ...). Quelques fonctions to_i, to_f et to_s ont étalement été ajoutées là où cela semblait pertinent. Enfin, un itérateur "each" a été ajouté à VideoMode.

En plus des classes C++ exposées, deux classes utiles ont également été ajoutées à RubySFML.rb, l'une pour afficher des sprites à base de tuiles, et l'autre pour gérer les sprites utilisant des calculs de vitesse / acceleration (respectivement TSprite et VSprite).

Astuces pour les utilisateurs Windows

Pour les utilisateurs Windows, nous regrettons de ne pas pouvoir être compatibles avec l'installeur "one-click", mais celui-ci est compilé avec Visual Studio 6.0, qui est ridiculeusement vieux et incompatible avec les bibliothèques SFML. Il existe une version gratuite de Visual Studio 2005, et les sources de Ruby compilent parfaitement avec celle-ci, on ne peut donc trouver aucune bonne excuse à l'installeur pour toujours utiliser Visual C++ 6.0.

La bonne nouvelle est que vous pouvez distribuer vos applications dans une archive qui se suffit à elle-même, en incluant les répertoires "bin" et "lib" qui sont inclus dans la version Windows de cette extension. Ajoutez un installeur simple qui crée une icône du menu démarrer exécutant "%install_path%\bin\ruby.exe %install_path%\my_game.rb", et tout sera parfait. Oh, encore une chose, OpenAL doit être installé pour exécuter les programmes utilisant RubySFML. Heureusement, il s'agit d'un installeur extrêmement petit et simple, et vous pourrez sans problème le fournir dans vos installations ou donner un lien pour le télécharger. Tout ceci évite à vos utilisateurs d'avoir à télécharger / exécuter l'installeur "one-click", installer toutes les extensions nécessaires, s'occuper des problèmes de compatibilité, etc. Il est probable que très peu d'utilisateurs Windows utilisent vos applications si vous ne leur fournissez pas tout ce dont ils ont besoin, c'est donc probablement mieux de cette manière.

Note : cette compilation perso de Ruby ne contient pas gems et zlib (qui est recquis par gems), mais aucune autre extension n'est installée. N'hésitez pas à installer n'importe quelle autre gems / extension dont vous auriez besoin (les gems mswin32 compilés avec Visual Studio 6.0 ne fonctionneront probablement pas). Gardez en tête que beaucoup de gems ont une documentation conséquente, des exemples et des répertoires de test. Supprimer ces répertoires innutiles, ainsi que le répertoire cache des gems, peut réduire de manière significative la taille des fichiers que vous distribuez.

Exemple de code RubySFML

# On inclut l'extension RubySFML
require "RubySFML"
include SFML

# On crée la fenêtre principale
mode = VideoMode.new 800, 600, 32
window = RenderWindow.new mode, "RubySFML Test", false

# On charge un sprite à afficher
image = Image.new "cute_image.jpg"
sprite = Sprite.new image
 
# On crée une chaîne graphique à afficher
text = Text.new "Hello SFML", "arial.ttf", 50
 
# On charge une musique et on commence à la jouer
music = Music.new "nice_music.ogg"
music.play
 
# On démarre la boucle principale
running = true
while running
	while event = window.getEvent
		running = false if event.type == Event::Close
	end
 
	# On dessine le sprite, le texte, puis on met à jour la fenêtre
	window.draw sprite
	window.draw text
	window.display
end

Modules RubySFML

Classes RubySFML

Fonctions RubySFML (par module / classe)


SFML


SFML::Clock


SFML::Color


SFML::Drawable


SFML::Event

Pour tous les types d'évènements
Pour les évènements de type Event::TextEntered
Pour les évènements de type Event::KeyPressed et Event::KeyReleased
Pour les évènements de type souris et joystick
Pour les évènements de type Event::Resize

SFML::FloatRect


SFML::Image


SFML::Input


SFML::IntRect


SFML::Music


SFML::PostFX


SFML::RenderWindow


SFML::Sound


SFML::SoundBuffer


SFML::SoundBufferRecorder


SFML::Sprite


SFML::Text


SFML::VideoMode


SFML::View


SFML::Window