Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Journal : Mon premier jeu libre: OpenAlchemist (0.2)

Posté par Keph (page perso, ) le 25 août 2006
Bonjour à tous.

Aujourd'hui, je viens vous présenter mon premier jeu libre: OpenAlchemist. Il s'agit du clone d'un jeu flash disponible sur le site Natural Chimie [1]. Le principe est simple : des pièces de différentes couleurs vous sont proposées à la manière d'un tetris. A vous de les faire tomber de façon intelligente sachant que 3 pièces d'une même couleur, quand elles se touchent, se transforment en une pièce du niveau supérieur. C'est le principe de l'alchimie.

Voici le site officiel du jeu:
http://openalchemist.sourceforge.net/index.html

et ici des screenshots sur le site jeuxlibres.net:
http://jeuxlibres.net/showgame/open_alchemist.html

OpenAlchemist est développé activement depuis 3 mois, bien que les travaux aient commencé il y a un an. Ce programme s'appuie sur le framework Clanlib que je trouve excellent : il permet l'affichage avec SDL ou OpenGL (au choix), gère le son, propose des commandes portables ou l'excellent système de Ressources qui permet de séparer le code et les ressources (sprites, sons, fontes, variables stockants l'emplacement des sprites, etc...), un peu à la manière de xHTML/CSS. Le programme est ainsi complètement skinnable, bien que cette fonctionnalité ne soit pas encore documentée.

Le programme compile très bien avec Ubuntu Dapper Drake et son GCC 4.0.3. Pour le moment, un simple Makefile s'appuyant sur pkg-config est disponible. J'envisage d'utiliser Scons par la suite, mais je ne parviens pas encore à faire précisément ce que je veux. Il est nécéssaire d'avoir Clanlib 0.8 [2].

Nous cherchons donc à obtenir des remarques, conseils, suggestions pour améliorer le bouzin. Un contributeur de site ubuntu-fr s'est proposé pour faire des paquets ubuntu (peut-être aussi debian) et l'ancienne version est déjà disponible sur son dépôt [3]. Je suppose qu'il est actuellement en vacances car je n'ai pas de nouvelles de sa part et donc il n'y a pas de paquet pour la dernière version (0.2). Nous cherchons également des mainteneurs pour les autres distributions. Si le coeur vous en dit...

Quand le jeu est compilé, sachez que l'options --sdl utilise SDL pour le rendu, et l'option --opengl utilise donc OpenGL. SDL est utilisé par défaut.

Bonne soirée (moi, je la passe loin du PC, donc je ne reposterai pas avant samedi).

Keph


Notes:
[1] : Natural Chimie: http://www.naturalchimie.com/
[2] : Clanlib 0.8 : http://www.clanlib.org/
[3] : Dépôt ubuntu : http://mrpouit.free.fr/blog/2006/07/09/25-openalchemist

> Lire le journal (58 commentaires, moyenne: 1,9).  

Vous avez demandé le commentaire #748376.

Pour les laptops

Posté par Maxime (Jabber id, ) le 29/08/2006 à 07:03. (lien). Évalué à 4.

Si vous tenez à votre autonomie et n'appreciez pas trop la méthode bourrin qui consiste en une boucle infinie...
Il vous suffit de reperer cette boucle : void Game::main_loop() dans game.cpp
Vous y rajoutez dans le while(!end) un petit : CL_System::sleep(30);
Le 30 est à ajuster selon votre ordi, moi j'ai mis 30, ca me permet de jouer correctement et avec une utilisation CPU vraiment raisonnable...

Bon, là c'est qu'une solution de dépannage... Je n'ai jamais utilisé clanlib de ma vie, j'ai juste vu dans la doc CL_System::sleep() alors j'ai testé...

D'ailleur, qu'est-ce qu'elle a de bien cette lib ? la doc est minable (meme pas de description pour les fonctions, juste un listing... Et vu les déboirs de wormux...

  • [^]Re: Pour les laptops

    Posté par Keph (page perso, ) le 29/08/2006 à 16:57. (lien). Évalué à 1.

    http://www.clanlib.org/docs.html
    La doc ne me semble pas si mauvaise que ca.

    Je n'ai pas eu de déboires avec cette lib, elle me fait plutôt gagner du temps. Il y a tout un tas de choses que je n'ai pas à coder : la gestion des fontes, des sprites, du XML, des sons, des zip et j'en passe. Ca me convient.

    Quant au sleep(), je compte m'y ateler bientôt. Le problème c'est que je ne sais pas encore dans quelle mesure il faut ralentir le programme. Tu as choisi 30ms, mais ce n'est peut-être pas le choix optimal.

    • [^]Re: Pour les laptops

      Posté par Maxime (Jabber id, ) le 29/08/2006 à 17:50. (lien). Évalué à 2.

      Non, 30ms c'est vraiment du sur mesure. J'aurai aimé pouvoir coder un meilleur truc mais là sans connaitre cette lib...
      En plus je suis occupé à coder sur un autre projet donc bon...

      Bonne continuation.

      PS: pour la doc, meme l'API Gtk est mieux documentée...

      • [^]Re: Pour les laptops

        Posté par Maxime (Jabber id, ) le 29/08/2006 à 17:54. (lien). Évalué à 3.

        arf je suis un boulet (j'avais fais une nuit blanche en fait...)
        au lieu du sleep il suffit de mettre :
        fps_getter.set_fps_limit(30);

        • [^]Re: Pour les laptops

          Posté par Keph (page perso, ) le 29/08/2006 à 18:19. (lien). Évalué à 1.

          Pour mon écran 85Hz, 30 FPS c'est vraiment trop peu. J'ai de bons résultats en mettant 5ms dans la fonction keep_alive() (méthode main dans la classe game) mais je n'ai pas de portable pour essayer...

          Je ne sais pas vraiment comment configurer tout ca. Je pense à mettre des options -maxfps=30 ou -minperf, quelque-chose dans ce genre là...

          • [^]Re: Pour les laptops

            Posté par Maxime (Jabber id, ) le 29/08/2006 à 19:05. (lien). Évalué à 3.

            Je pense aussi que rajouter un paramettre --maxfps est une bonne idée.
            Là j'ai mis 30 mais c'est presque un minimum.
            Je te conseil de tester sur plusieurs types d'ordis (fixe avec lcd, avec cathodique, et portable) et de puissance differentes.

            Si tu as besoin que je te teste certaines fonctionnalités, n'hésite surtout pas.
            Tu peux me contacter par mail ou IM (jabber) sur maxime81 chez gmail.com

            • [^]Re: Pour les laptops

              Posté par Keph (page perso, ) le 30/08/2006 à 20:11. (lien). Évalué à 1.

              Merci pour ta proposition. J'ai ajouté une option --maxfps à la version SVN.