Braldahim, Jeu Web Libre

Posté par  . Modéré par patrick_g.
Étiquettes :
14
24
août
2010
Jeu
Braldahim est un jeu web et comme beaucoup de jeu web il est développé en PHP. C'est un jeu multi-joueurs permettant d'incarner un Semi-Homme, se jouant avec 12 points d'action par jour à l'aide d'un navigateur web.

Braldahim reprend des notions bien connues : runes et mots runiques, quêtes et donjons, métiers, compétences, gredins et redresseurs, monstres, agriculture et d'autres moins connues comme les matchs de Soule et autres festivités autour de quelques bonnes bières.
En moyenne, le jeu prend 5 minutes par jour et bien plus si vous souhaitez vous investir.

Bon, nous n'allons pas trop faire de pub ici, ce n'est pas forcément l'objectif, mais nous allons parler du développement du jeu et de la philosophie libre qui tourne autour... L'idée initiale, celle qui date de décembre 2005, avait pour objectif de développer un framework de jeux web libre qui pourrait être utilisé par d'autres jeux. Bon, à vrai dire, cette idée a été rapidement transformée pour développer un jeu, mais un jeu où le code source sera libre.

Un petit tour de PHP, un petit tour de Struts, un petit tour de GWT et l'on revient sur PHP et son fraîchement sorti ZendFramework (à l'époque) pour la vraie mise en place du "socle technique".

Le jeu, ainsi que le site web, le site des scripts publics sont sous licence GPL. Quelques dessinateurs se sont également investis dans le jeu et proposant même leur création sous licence CreativeCommons CC-BY-SA.

Après une année de développements, une candidature a été proposée à JeuxWeb.org pour l'hébergement, candidature acceptée (merci à eux !). L'année suivante fut l'objet d'une ouverture en Bêta Privée puis une seconde en Bêta Publique. Le jeu n'a finalement été ouvert qu'au mois de mai 2010.

Bref, durant ces quelques années de développement, n'ont été utilisés que des logiciels libres pour développer un jeu libre où quiconque peut jouer sans devoir payer pour avoir du gameplay en plus. Ceci démontre également qu'il est possible de développer un jeu avec un code source libre sans forcément rendre publiques des informations au joueur, argument principal des jeux qui ne sont pas opensource à la base ou encore sans que les joueurs puissent "tricher" en voyant le code source. Les informations cachées sont simplement en base de données (mysql)...

Peut-être allez vous nous rejoindre en tant que joueur et si l'envie de développer des outils pour Braldahim, des API sont en place pour vous faire votre propre interface de jeu (http://sp.braldahim.com ).

À noter également une interface mobile en place (http://mobile.braldahim.com / http://iphone.braldahim.com ). Cette interface est full web, développée en quelques heures seulement, grâce au moteur d'affichage très flexible. Pour les web développeurs curieux, vous pouvez regarder les échanges avec le serveur avec firebug pour mieux comprendre le "moteur d'affichage", basé sur Prototype.js et plus vulgairement ajax.

Quelques chiffres pour finir :
  • 150.000 lignes de code
  • plus de 240 tables en base pour le jeu
  • plus de 150 évolutions en un an et 250 corrections "d'anomalies" en Bêta.
et quelques logiciels libres utilisés :
  • Apache & Lighttpd (pour Redmine), mysql
  • Redmine pour le bugtrack
  • Mediawiki pour les règles
  • SVN, enfin google code pour le dépôt SVN
  • Serveur debian et un tas de logiciel de monitoring
  • etc...
Bon jeu !

Aller plus loin

  • # Chouette, un jeu libre avec des graphismes et une interface soignée

    Posté par  . Évalué à 6.

    La première chose qui me frappe quand je parcours le site, c'est le soin des détails. Les graphismes sont sympas, et plus généralement le contenu autour du jeu est agréable : le style d'écriture vaguement vieillot est cohérent, etc.

    Un jeu libre, qui a l'air sympa, et qui soigne ces choses là, bravo !

    Un détail : sur le site, l'aspect libre du jeu, bien que présent (si on clique sur "Le Projet", on a un historique remplit des détails techniques sans grand intérêt, la présentation de l'équipe (bien), et en tout petit un lien vers le code source), n'est vraiment pas mis en avant. C'est un choix comme un autre, mais ça me fait penser que vous n'encouragez pas trop la participation de la communauté.
    J'imagine que c'est surtout un truc développé en petit groupe, et que les joueurs eux-mêmes ne participent pas directement au développement (et n'ont pas forcément conscience de cette possibilité). C'est compréhensible, car entretenir un développement ouvert (et pas seulement un résultat ouvert) demande du travail en plus, et on peut préférer se concentrer sur d'autres choses, mais c'est peut-être un peu dommage.
    • [^] # Re: Chouette, un jeu libre avec des graphismes et une interface soignée

      Posté par  . Évalué à 1.

      Effectivement, le côté libre n'est pas mis en avant de manière flagrante. Nous ne souhaitons pas le mettre en avant complètement (genre sur la page d'accueil) histoire de ne pas troubler les joueurs ne connaissant pas forcément le libre.

      Par contre, les règles sont en cours de ré-écriture sous forme de livre (ex, le livre du Débutant : http://regles.braldahim.com/wiki/Livre_I_-_Guide_du_D%C3%A9b(...) , un livre "Outils et Développement" sera créé, il contiendra ces pages là :

      - http://regles.braldahim.com/wiki/D%C3%A9veloppement
      - http://regles.braldahim.com/wiki/Environnement_de_D%C3%A9vel(...)

      Cette dernière page a été mise à jour l'année dernière et c'est vrai qu'elle pourrait être remise d'actualité. Il est vrai également qu'avoir une équipe de dev plus importante n'aurait sans doute pas servi à grand chose durant les mois de développement, derrière les aspects techniques du jeu, il y a tout l'aspect règles de jeu à mettre en place. Et croyez moi, c'est presque tout aussi prenant d'imaginer pour une nouvelle compétence l'évolution du jeu sur plusieurs années et les comportements des joueurs que de développer cette compétence dans le jeu. Cela demande aussi beaucoup de discussions entre l'équipe pour être d'accord sur les évolutions à mettre en place et qui restent relativement "cachées" (souvent sur svn avant le vrai déploiement) pour faire des "surprises" aux joueurs.

      Il y a eu tout de même quelques contributions externes (algorithmes essentiellement) que l'on intègre sous forme de patch et quelques personnes ayant installé Braldahim chez eux pour voir comment ça fonctionnait, mais sans allez plus loin que ça j'imagine.

      Le côté qui peine le plus est sans doute le côté "graphique", nous sommes toujours preneurs d'images et d'idées pour rendre le jeu encore plus convivial graphiquement.
      • [^] # Re: Chouette, un jeu libre avec des graphismes et une interface soignée

        Posté par  . Évalué à 1.

        Je suis en train de m'inscrire pour tester :)
        Mais j'ai de suite été étonné de la présence de nombreux "faux lien" : des balises <a> avec un onclick à la place du href... (Par exemple, dès la page d'inscription : http://jeu.braldahim.com/inscription/ajouter où en plus il y a du texte avec un style le faisant ressembler à un lien sans en être, et inversement). Je peux comprendre que vous ne vouliez pas perdre les utilisateurs débutants et que vous préfériez que la page s'ouvre en popup/onglet, mais dans ce cas il vaut mieux mettre quand même le href et juste rajouter le JS ou l'HTML (target="_blank", les pages ne sont déjà pas valides et c'est de toute façon un attribut qui est sur le retour) qui va s'ouvrir le lien par défaut en popup.
  • # Et on peut lire le code source !

    Posté par  . Évalué à 3.

    Comme on peut lire le code source, je suis allé jeter un œil.

    D'habitude, je suis effaré par le code source des applications utilisant PHP. Ce qui me gêne en priorité c'est l'absence totale de gestion responsable du flot de contrôle et des effets de bord : chaque page initialise tout ce qui bouge comme si elle était la seule sur terre, et quand on veut de la modularité on fout un "include" et on prie pour que la page incluse ne fasse pas tout péter parce que les paramètres de session ne lui plaisent pas.


    Dans votre projet, le flot de contrôle (l'ordre des actions quand on demande une page) est caché par l'utilisation de Zend (je ne connais pas le framework, donc pour moi tout est caché au milieu d'une myriade de MVC, middleware, dynamic class loading, etc. etc.), par contre le découpage du code en parties indépendantes est assez raisonnable, avec l'utilisation de POO en grande quantité. Je trouve toujours curieux de voir des classes qui mélangent logique de jeu (règle, etc.) et une fonction "render" qui fait des regexp replace pour supprimer les espaces inutiles, mais c'est un choix comme un autre.
    Bref, je trouve l'organisation globale du code plutôt bien.


    Par contre, dans les détails, le code est par endroit un peu bof. Une fois qu'on retire tout le boilerplate lié à l'utilisation des templates, la récupération des données dans la base, etc., il y a des passages franchement pas terribles comme (dans library/Bral/Cueillir.php) :

    for ($i=1; $i<=4; $i++) {
            $tab[$i]["estVide"] = true;
            $tab[$i]["quantite"] = 0;
            $tab[$i]["id_fk"] = -1;
            $cueillette[$i]["quantite"] = 0;
            $cueillette[$i]["id_fk"] = -1;
            $cueillette[$i]["id_type_plante"] = $plante["id_fk_type_plante"];
            if ($i == 1 && $plante["partie_1_plante"] > 0) {
                    $tab[$i]["id_fk"] = $plante["id_fk_partie_1"];
                    $tab[$i]["quantite"] = $plante["partie_1_plante"];
                    $tab[$i]["estVide"] = false;
                    $cueillette[$i]["id_fk"] = $plante["id_fk_partie_1"];
                    $cueillette[$i]["nom_partie"] = $plante["nom_partie_1"];
            }
            if ($i == 2 && $plante["partie_2_plante"] > 0) {
                    $tab[$i]["id_fk"] = $plante["id_fk_partie_2"];
                    $tab[$i]["quantite"] = $plante["partie_2_plante"];
                    $tab[$i]["estVide"] = false;
                    $cueillette[$i]["id_fk"] = $plante["id_fk_partie_2"];
                    $cueillette[$i]["nom_partie"] = $plante["nom_partie_2"];
            }
            if ($i == 3 && $plante["partie_3_plante"] > 0) {
                    $tab[$i]["id_fk"] = $plante["id_fk_partie_3"];
                    $tab[$i]["quantite"] = $plante["partie_3_plante"];
                    $tab[$i]["estVide"] = false;
                    $cueillette[$i]["id_fk"] = $plante["id_fk_partie_3"];
                    $cueillette[$i]["nom_partie"] = $plante["nom_partie_3"];
            }
            if ($i == 4 && $plante["partie_4_plante"] > 0) {
                    $tab[$i]["id_fk"] = $plante["id_fk_partie_4"];
                    $tab[$i]["quantite"] = $plante["partie_4_plante"];
                    $tab[$i]["estVide"] = false;
                    $cueillette[$i]["id_fk"] = $plante["id_fk_partie_4"];
                    $cueillette[$i]["nom_partie"] = $plante["nom_partie_4"];
            }
    }



    Attention, je voudrais pas qu'on interprète mal ma remarque : je trouve le code dans l'ensemble plutôt correct, mieux que la moyenne de ce qu'on trouve en PHP sur le net. C'est juste qu'il est franchement améliorable par endroits, et comme je suis tout content que le code soit disponible en ligne je m'empresse de trouver un truc à commenter en espérant qu'il soit amélioré un jour.
  • # Si je comprend bien...

    Posté par  . Évalué à 2.

    C'est un framework qui peut etre adapté à d'autres jeux, c'est ça?

    Moi je cherche à faire la chose suivante:
    Quand j'etais lycéèn je jouais avec des amis à Warhammer, le jeu de rôle. J'aimerais bien en refaire, mais sans réunir tout le monde (trop compliqué, je suis vieux maintenant). Et je reflechissais à la possibilité de faire un site qui permettrait de jouer à un JDR. Le maître posterait les données du jeu (description du lieu, tout ça...) et les joueurs décideraient collectivement quoi faire. A chaque décision individuelle les autres joueurs seraient avertis (par mail ou sur le site), et quand tout le monde est d'accord, le MJ décide de la suite, ou organise un combat,...

    Est-ce que le framework sur lequel Braldahim est basé pourrait convenir?
    • [^] # Re: Si je comprend bien...

      Posté par  . Évalué à 2.

      Braldahim, enfin son code source, peut très bien être utilisé pour un autre jeu. Même si l'idée initiale était de faire un framework, nous nous en sommes bien détachés pour se focaliser sur le gameplay du jeu.

      Ceci dit, faire un jeu commence d'abord par des idées de règles, d'ambiance et d'interface de jeu. Ensuite et seulement si l'interface de jeu de Braldahim, enfin au niveau technique, te convient, tu pourras l'adapter pour un autre jeu.
      Et quand je dis l'interface au niveau technique, c'est les communications ajax avec le serveur et la méthode de mise à jour du rendu HTML côté client.

      Voici une image décrivant brièvement le fonctionnement des échanges : http://img801.imageshack.us/img801/935/ajaxs.png
  • # Un jeu libre! (et pas seulement un moteur...)

    Posté par  (site web personnel) . Évalué à 3.

    Ca fait plaisir de voir de beaux graphismes en libre, c'est rare (souvent, les beaux graphismes sont non libres, seul le moteur est libre, ce qui empêche de diffuser le jeu en libre)

    Par contre :
    Quelques dessinateurs se sont également investis dans le jeu et proposant même leur création sous licence GPL CreativeCommons.

    Ne veut rien dire, soit on fait de la GPL, soit du CreativeCommonsb (on peut faire les deux si on a envie, mais c'est un "et" qu'il faut mettre entre les deux mots), et il faut indiquer quelle CreativeCommons car certaines (les plus répandues) sont non libres. http://www.braldahim.com/sources est plus précis : CC-BY-SA (donc libre!). Un modo pour corriger le dépêche?
    • [^] # Re: Un jeu libre! (et pas seulement un moteur...)

      Posté par  (site web personnel) . Évalué à 3.

      C'est corrigé.
      • [^] # Re: Un jeu libre! (et pas seulement un moteur...)

        Posté par  (site web personnel) . Évalué à 2.

        D'autres corrections (j'en laisse passer plein, mais au moins celles-ci me paraissent nécessaires) :

        >> Bon, à vrai dire, cette idée a été rapidement transformée pour développer un jeu, mais un jeu où le code source sera libre.

        Bon, à vrai dire, cette idée a été rapidement transformée en le développement d'un jeu, mais un jeu dont le code source serait libre.

        >> Quelques dessinateurs se sont également investis dans le jeu et proposant même leur création sous licence CreativeCommons CC-BY-SA.

        « leurs créations. » À moins que tous travaillèrent sur la même seule et unique création.

        >> Après une année de développements,

        « développement » au singulier, très certainement.

        >> Le jeu n'a finalement été ouvert qu'au mois de mai 2010.

        Le jeu n'a finalement été officiellement accessible au public qu'au mois de mai 2010.

        >> pour développer un jeu libre où quiconque peut jouer sans devoir payer pour avoir du gameplay en plus.

        pour développer un jeu libre auquel quiconque peut jouer sans devoir payer pour avoir du gameplay supplémentaire.

        >> il est possible de développer un jeu avec un code source libre

        il est possible de développer un jeu dont le code source est libre

        >> pas opensource à la base ou encore

        pas opensource, ou encore
        (car s'il ne l'est pas à la base mais le devient après, l'argument (que je ne comprend pas) ne tient plus la route. Et la virgule est nécessaire.)

        >> Les informations cachées sont simplement en base de données (mysql)...

        simplement stockées dans une base de données mysql.

        >> Peut-être allez vous nous rejoindre en tant que joueur et si l'envie de développer des outils pour Braldahim, des API sont en place pour vous faire votre propre interface de jeu (http://sp.braldahim.com ).

        (La phrase n'a aucun sens ! Il manque une virgule et surtout des verbes !)
        Peut-être allez vous nous rejoindre en tant que joueur, et si l'envie de développer des outils pour Braldahim vous prend, des API sont en place pour que vous puissiez vous faire votre propre interface de jeu (http://sp.braldahim.com )


        >> Cette interface est full web, développée

        Cette interface full web fut développée

        >> Pour les web développeurs

        Pour les développeurs web

        >> ajax

        Ajax
  • # linuxfrisation

    Posté par  . Évalué à 2.

    Le nombre de Braldûns est passé de 218 à 280 ce matin ! (D'ailleurs le message de confirmation tarde à arriver.)

    C'est vrai que ça a l'air mignon. Je connais pas beaucoup ces jeux, mais les principes, les compétences, la charte, m'ont l'air pas mal calqués sur MountyHall.
  • # Compte créé mais pas d'email de validation envoyé

    Posté par  (site web personnel) . Évalué à 1.

    Perso j'ai créé mon compte (Toxophilus) mais je n'ai pas reçu d'email de confirmation/validation.

    J'ai pensé à une double erreur de saisie de mon adresse email mais si j'essaye de me logguer on me dit que le compte est inactif alors qu'un test avec une adresse bidon m'indique que le compte n'existe pas.....

    W8&C

    Alexandre COLLIGNON

    • [^] # Re: Compte créé mais pas d'email de validation envoyé

      Posté par  . Évalué à 2.

      Il y a visiblement quelques mails de validation qui ne sont pas arrivés à destination.
      Pour l'instant, ce problème n'est pas encore résolu... mais c'est maintenant surveillé de près.

      Un mail "manuel" vient d'être envoyé pour valider l'inscription.
  • # Problème de rendu

    Posté par  . Évalué à 3.

    Bravo pour ce jeu. J'ai crée un compte pour tester et j'ai un soucis :
    http://arnor.eu/fichiers/braldahim.png

    J'ai une taille minimale de police fixée à 28, parce que je suis à 2 mètres de mon écran. Je sais pas si c'est possible de faire quelque chose, mais en tout cas pour moi c'est injouable (je peux pas cliquer sur Vue par exemple).
    • [^] # Re: Problème de rendu

      Posté par  . Évalué à 2.

      Tu utilises quelle résolution ?
      • [^] # Re: Problème de rendu

        Posté par  . Évalué à 2.

        J'ai un écran de 20 pouces, je suis en 1680x1050. Comme je suis loin de l'écran j'ai mis font.minimum-size.x-western à 28 dans le about:config de firefox. J'aurais pu monter le zoom général à la place, mais l'idée c'est d'éviter au maximum le scroll horizontal, très peu pratique.
        • [^] # Re: Problème de rendu

          Posté par  . Évalué à 2.

          Ok merci. Nous allons voir comment l'on peut arranger cela.
          • [^] # Re: Problème de rendu

            Posté par  . Évalué à 1.

            Quelques corrections css sont en place, c'est mieux maintenant ?
            • [^] # Re: Problème de rendu

              Posté par  . Évalué à 2.

              Yep c'est beaucoup mieux, je peux jouer avec firefox :) J'avais lancé avec chrome en attendant, mais du coup je me tapais le scroll horizontal.

              J'ai un peu exploré, le concept est sympa. J'ai pas mal parcouru la doc, mais pas encore assez apparement car il me reste à comprendre pourquoi j'ai récupéré que 6 PA en 48h.

              En tout cas, bravo et merci pour ce jeu, tout ça a l'air très prometteur.
  • # Bravo !

    Posté par  (site web personnel) . Évalué à 1.

    Excellent ! Je me suis inscrit en début de semaine dernière. La petite Elêsya est née :-). J’ai jeté un œil au code, mais tout étant basé sur Zend, j’ai pas compris grand chose :D (faut dire que je n’y ai passé que cinq minutes ^^)

    Bravo en tout cas, ça a du être un sacré boulot.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.