Caranille 1.0 RC 1

Posté par  . Édité par Nÿco, palm123, claudex, ZeroHeure, Xavier Teyssier, Benoît Sibaud et NeoX. Modéré par Nÿco. Licence CC By‑SA.
Étiquettes :
16
21
oct.
2015
Jeu

Après plus d'un an depuis la dernière dépêche sur Caranille, je tiens à vous parler de cette nouvelle version qui est une réécriture complète de l'application de création de MMORPG ou RPG en PHP. Pour rappel, un RPG est un Role Playing Game ou jeu de rôle, et un MMORPG est un Massively Multiplayer Online Role Playing Game ou un jeu de rôle en ligne massivement multijoueur.

Cette application est entièrement écrite en PHP5 et utilise MySQL comme base de données, ce qui permet au plus grand nombre de personnes de l'utiliser. Elle est disponible sous licence CC by-sa 4.0, Creative Commons Attribution Part à l'Identique.

Retours

Après avoir lu plusieurs commentaires d'utilisateurs, suggestions et critiques j'ai décidé de recommencer ce logiciel pour le rendre beaucoup plus lisible, propre et surtout pour l'optimiser. Le but premier est de mieux structurer le programme et de l'optimiser au maximum. Maintenant le HTML est séparé le plus possible du code PHP, tout comme le CSS, dans le but de le rendre plus modulaire. De plus chaque module dispose de son propre fichier de fonction SQL, ce qui permettra aux personnes souhaitant créer leur propre module de commencer avec de bonnes bases.

Nouveautés

Voici un aperçu des grosses nouveautés techniques :

  • Utilisation de PHP en Orienté Objet (de façon primitive avec des objets et des fonctions)
  • Réécriture des tables pour optimiser les requêtes SQL

Aperçu des nouveautés de l'application :

  • Les monstres ne dépendent plus d'une ville (un même monstre peut être dans plusieurs villes)
  • Les monstres pourront avoir un nombre illimité d'objets à faire gagner (en cours)
  • Modification de la base de données pour plus de possibilités
  • Chaque requête SQL se trouve dans un fichier dédié sous forme de fonction
  • Possibilité d'avoir plusieurs personnages par compte (en cours)
  • Séparation des modules (chaque page correspond à une action)
  • Traduction anglais/français de l'éditeur de MMORPG
  • Préparation à la sortie de PHP7

Contributions

De plus grâce à une personne bénévole qui se nomme TheNico et que je remercie énormément car il m'a aussi beaucoup aidé pour refaire plusieurs modules, Caranille possède maintenant une charte graphique qui lui est entièrement dédiée et qui utilise BootStrap.

La suite

La date de sortie de la version 1.0 Stable est prévue le 31/12/2015, l'outil est quasi terminé il reste juste une fonction ou deux à ajouter.

Pour l'avenir je compte ajouter les fonctionnalités suivantes (après la sortie de la version 1.0) :

  • Système de liste d'amis
  • Création d'une banque pour déposer de l'argent et gagner des intérêts
  • Possibilité de créer sa maison et de la personnaliser (un lit pour se reposer sans payer d'auberge, etc.)
  • Possibilité d'exercer un métier (le problème de cette fonctionnalité est que si une personne crée un MMORPG futuriste ce sera difficile de proposer le métier paysan)
  • Possibilité d'avoir un compagnon (animal) qui vous soutiendra en combat

Appel

C'est pour cela que j'en profite pour lancer un appel, toutes les personnes qui le souhaitent peuvent venir rejoindre l'aventure quel que soit son niveau.

Pour le développement j'utilise CODIAD pour pouvoir développer depuis un navigateur web partout où je suis.

Remerciements

Voici les remerciements :

  • Remerciement personnel à deux de mes anciens animaux morts il y a plus de 5 ans, à savoir Caramel et Vanille qui m'ont donné le nom pour ce jeu (Caranille)
  • Remerciement à TheNico qui m’a beaucoup aidé et surtout donné de bonnes idées pour certains modules
  • Remerciement à la communauté de LinuxFr.org et de Frog Creator ;)

Aller plus loin

  • # php et MMORPG?

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

    Il y as que moi que ca choque les mots php et MMO dans la même phrase?
    Beaucoup considére que une MMO c'est 100000 joueurs par node mini.
    Le jeu serai pas plutot un jeu multi joueur?

    Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

    • [^] # Re: php et MMORPG?

      Posté par  . Évalué à -8.

      php me choque tout court en 2015, alors qu'on a bien mieux depuis au moins 10 ans pour le Web côté serveur (Node.js, Ruby avec RoR, Python avec Django, …)

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

      • [^] # Re: php et MMORPG?

        Posté par  . Évalué à 5.

        Bonjour,

        Je suis tout à faire d'accord pour le côté PHP, mais bon vu que je cible des personnes qui n'utilisent que des hébergement mutualisé ça me laisse que très peu de marche de manœuvre.

        Ca n'en tiendrais qu'à moi ce serait peut être en Python avec Django (Que je trouve formidable)

        Pour le côté MMORPG c'est vraiment plus du pur RPG mais bon c'est juste car plusieurs personnes peuvent jouer en même temps

        • [^] # Re: php et MMORPG?

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

          Je te garantie que les performances de Python avec Django sont telement faible que c'est encore pire.

          La game boy noir et blanc + jeux = MMORPG?
          Multi-joueur < 5000, MMO > 100000.

          Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

          • [^] # Re: php et MMORPG?

            Posté par  . Évalué à 1.

            Je te garantie que les performances de Python avec Django sont telement faible que c'est encore pire.

            Python et le coût du fameux GIL.

            Avec Pypy, on arrive maintenant sur Django avec une exécution mesurée comme 20 fois plus rapide que CPython.
            On arrive a des performances très honnêtes.
            Mais tout comme les autres framework web cela n'en fait pas un outil pour faire un MMORPG.

        • [^] # Re: php et MMORPG?

          Posté par  . Évalué à 1.

          PHP, point de vue performances, vaut Python. Facebook tourne en PHP (un php optimisé : Hack plus exactement).

          Pour être MMO il faut juste pouvoir mettre en place une grosse structure, serveur de cache, serveur de cache MySQL, MySQL en Maitre/esclave, Serveur PHP en parallèle. Certes je ne pense pas que l’application soit prête pour cela mais là n'est pas la question, ce ne serais pas complexe en soit si le besoin s'en faisait sentir.

          Alors certes on peux écrire le programme en C++ pour l'optimiser et limiter le besoin de parallélisation…

          Mais si au lieu d'écrire en PHP pur, tu écris en Hack (langage Facebook), tu pourra le mettre dans la HackVM de Facebook et améliorer de manière significatives les performance tout en gardant la souplesse de PHP. La conversion de Hack vers PHP est très simple et peut-être scripté (suppression du typage…).

          • [^] # Re: php et MMORPG?

            Posté par  . Évalué à 2.

            D'ailleurs on peut remercier Facebook d'avoir pousser Zend à réagir et à sortir des équivalents encore plus rapides =P

          • [^] # Re: php et MMORPG?

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

            Titre de l'image

            Ce que tu dit implique une bonne scalabilité… mais je pense que même avec HHVM le coup de l'infra serai trop grands. Et rien que la visibilité des joueurs, …
            http://catchchallenger.first-world.info/wiki/Visibility_algorithm

            Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

            • [^] # Commentaire supprimé

              Posté par  . Évalué à -5.

              Ce commentaire a été supprimé par l’équipe de modération.

              • [^] # Re: php et MMORPG?

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

                Dans ce cas ont dit multi-joueur ;)
                C'est comme dire, je fabrique un avion, alors qu'en fait tu plie un avion en papier.
                Utiliser les bon terme ;) MMO

                Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

                • [^] # Commentaire supprimé

                  Posté par  . Évalué à -10.

                  Ce commentaire a été supprimé par l’équipe de modération.

      • [^] # Re: php et MMORPG?

        Posté par  . Évalué à 3.

        C'est un peu gratuit, comme remarque… Et on est même pas vendredi !
        À ce compte-là, Ruby On Rails ? Aha :-P
        Node.JS ? Du Javascript, bien mieux, vraiment ?

        Si c'est un problème de performances, PHP 7 sorti à la fin de l'année les double sur le papier.
        Et pour n'importe quelle application le nécessitant, OPCache est là. Direct et efficace.

        Pour les différents aspects un peu… "folkloriques" du langage, PHP n'est pas le pire dans le domaine même si effectivement il rappelle parfois les ténors du domaine des langages attardés (Javascript en étant le roi), soyons honnêtes.
        Ces deux-là partagent d'ailleurs une popularité accidentelle, historiquement. J'imagine que ça doit être lié.

        Disclaimer : fanatique de PHP.

    • [^] # Re: php et MMORPG?

      Posté par  . Évalué à 0.

      Il y as que moi que ca choque les mots php et MMO dans la même phrase?

      Ça aurait naturellement tendance à me gêner aussi, mais bon, je te parie qu'un code dans un langage réputé rapide (disons, le C, ou le C++, voire pourquoi pas l'ASM) peut être sacrément plus coûteux en ressources qu'un truc codé en PHP. Tout dépend du niveau du dev avec le langage en question en fait… Et, bien sûr, de l'astuce de celui qui a construit les structures sur lesquelles se base le moteur.

      Beaucoup considére que une MMO c'est 100000 joueurs par node mini.

      D'un autre côté, pour qu'une structure logicielle supporte un certain nombre de joueurs/instances/whatever, l'important n'est pas le langage, mais d'éviter les "magic values" dans le code. Tant qu'on évite les valeurs magiques, la contrainte viendra plus du matériel que du logiciel. Même si, bien sûr, utiliser des technologies économes (économes en quoi, d'ailleurs? temps CPU? volume mémoire? bande passante des I/Os? Et dans quelle mesure chaque, parce qu'on ne peux pas tout avoir…) permets d'économiser les ressources matérielles, je me souviens que des gens m'ont déjà dit que le client n'a qu'a racheter du matos… (ça m'avais choqué à l'époque, et l'idée me gonfle toujours autant, mais dans une certaine mesure ce n'est pas totalement faux…)

      Le jeu serai pas plutot un jeu multi joueur?

      Plus que le nombre de joueurs, je définirai un jeu massivement multi-joueurs par l'absence de fonctionnalités comparé à un jeu multi-joueur, parce qu'un jeu massivement multi-joueur n'a pour moi pas besoin d'IA: le côté massivement, quasi uniquement, multi-joueur implique que la plupart du temps de jeu sera dédié à des interactions inter-humains, alors qu'un jeu multi-joueurs se devra d'être capable de donner un vrai défi aux joueurs, et ne passera pas uniquement sur les compétences de l'équipe d'en face (si équipes il y à).

      Et puis de toute façon, de ce que j'ai compris de la dépêche, il ne s'agit pas d'un jeu, mais d'un générateur de jeux, c'est à dire d'un moteur de jeu… le genre de trucs qui n'ont, à mon avis, qu'un intérêt académique.
      Un jeu, c'est d'une part un moteur (M, MMO ou mono, RPG ou autre, peu importe) physique, couplé d'un moteur de rendu (pour le(s) joueur(s)), le tout lié par une technique quelconque (réseau, IPC, couplage hyper élevé…) combiné à un gameplay (difficile à définir, mais, en gros, l'âme du jeu, générée par les règles et les données, qu'elles soient graphiques, musicales ou même textuelles).
      C'est énormément plus de travail. Un moteur de jeu, ce n'est qu'un bloc de code pur. Un générateur de jeu, c'est un moteur de jeu avec une dénomination moins repoussante pour celui qui voudra éventuellement faire un "mod".

      • [^] # Re: php et MMORPG?

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

        C'est pas les performances que je critique, mais le fait que le php oblige de faire des requêtes http, pas de liaison full duplex permanente et déchargements/rechargement contant de variable et de données en base de données.
        Alors que en C,C++, tu chargement les données du serveur et du joueurs en mémoire pour travailler dessus.

        Qu'entends tu par "magic values"? un lien? Les algo permette de balancer mémoire vs cpu, … et le code C/C++ bien écrit permet d'avoir des performances similaire à l'assembleur. Mais la compétence du programmeur, et les algo sont primordial.
        Coté achat de matos: Loi de Wirth, je préfère gagner 100x en logiciel en optimisant pendant 1h que gagner 2x en payant 1500€. Faut aussi savoir analyser le besoin hardware.

        Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

        • [^] # Re: php et MMORPG?

          Posté par  . Évalué à 4. Dernière modification le 22 octobre 2015 à 23:17.

          TL;DR:

          fais moi donc un programme qui envoie "hello world" à un autre programme, en C ou en C++, qui compile sur n'importe quel système supporté par PHP, et sans utiliser de bibliothèque externe.

          Version complète:

          mais le fait que le php oblige de faire des requêtes http

          Si je ne m'abuse, le PHP était à l'origine une simple bibliothèque de fonctions pour le langage C, c'est d'ailleurs la raison qui fait qu'une bonne partie de la libC est accessible. Je me souviens avoir corrigé un problème de "magic values" (cf plus bas, en l'occurrence il s'agissait des param de connexion à des SGBDR) au taf en collant ces données dans un fichier externe, lu avec un bon vieux fscanf des familles (et sans me gêner quant à utiliser la capacité de scanf à utiliser les regex… c'était toujours plus maintenable que l'existant de toute façon).
          Donc je serais assez surpris que PHP ne permette pas d'établir de connexion réseau… Quoiqu'en fait non, parce si on se contente du langage et de sa bibliothèque standard, ni le C, ni le C++ ne peuvent actuellement le faire. Ils ne sont même pas capables, en standard, de faire une requête HTTP…
          Autrement dit, malgré que je trouve le PHP absolument crade (mais je n'ai peut-être jamais vu de bon code PHP, ceci expliquerais cela) il est manifeste que le PHP est plus puissant en terme réseau que le C ou le C++, si on se base sur le standard brut.

          Qu'entends tu par "magic values"?

          Valeurs codées en dur dans le code. Genre, coller la taille d'une zone mémoire à 0x1FFFF, en ne permettant pas de le changer à partir d'une option de compilation et/ou de configuration.

          et le code C/C++ bien écrit permet d'avoir des performances similaire à l'assembleur.

          Je le sais, mais c'est loin d'être trivial. Je suis dev C++ aussi, mais j'ai vu tellement de logiciels codés en C ou C++ comme des gorets que je me suis fait une raison: ce n'est pas le langage qui importe.

          Coté achat de matos: Loi de Wirth, je préfère gagner 100x en logiciel en optimisant pendant 1h que gagner 2x en payant 1500€. Faut aussi savoir analyser le besoin hardware.

          Moi aussi. Mais celui qui nous paye, c'est rarement l'utilisateur, et loi de wirth ou pas, il faut bien manger :)
          Accessoirement, actuellement il me semble que la majorité des décisionnaires soient peu enclins à miser sur l'avenir, préférant les profits immédiats. J'aimerai avoir la preuve par le vécu que je me trompe.
          Parfois ils vont préférer cracher quelques centaines d'€ de moins pendant le dev, pour payer plusieurs milliers d'€ de plus pendant des années, parce que de toute façon, eux auront migré ailleurs. Je ne parle même pas des problèmes de maintenance qu'une base de code dégueulasse va poser à l'avenir lorsqu'un pauvre hère devra corriger un bug ou ajouter une fonctionnalité sans avoir eu la moindre explication parce que de toute façon les dev histo sont plus la.
          Ce qui deviens, encore une fois, des € dépensés en plus, mais on s'en fout, parce que le décisionnaire d'origine n'est plus là.

        • [^] # Re: php et MMORPG?

          Posté par  (Mastodon) . Évalué à 6.

          La liaison full-duplex ne fait pas le MMO, tu peux avoir un MMO asynchrone, ce n'est pas antithétique.
          Et avec les websockets tu peux avoir une connexion dans les deux sens sans polling Ajax…

          On s'en fout que les requêtes soient en HTTP ou en protocole perso optimisé au bit près sur de l'UDP, c'est juste une question de latence et de performance ces choix.
          Après en web, PHP, etc, tu peux avoir des dizaines de serveurs en frontal, si ton architecture logicielle derrière est bien foutue, avec du cache type Redis ou memcached, ta cohérence de donnée sur base MySQL ou mieux PostgreSQL, ça peut être extrêmement réactif, et dépasser les 100000 joueurs simultanés.

          Je crois juste que pour toi un jeux MMO est un jeu synchrone, alors que ce n'est pas forcément le cas ; en tout cas ce n'est pas ce que « massivement multijoueur » signifie.

          Yth.

Suivre le flux des commentaires

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