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
- Code source (242 clics)
- Démonstration (1210 clics)
- Site officiel (917 clics)
- Précédente dépêche sur le sujet (126 clics)
# php et MMORPG?
Posté par alpha_one_x86 (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 xcomcmdr . É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 caranille . É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 alpha_one_x86 (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 Nim . Évalué à 1.
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 abriotde (site web personnel, Mastodon) . É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…).
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: php et MMORPG?
Posté par Pazns . É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 alpha_one_x86 (site web personnel) . Évalué à 4.
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 Anonyme . Évalué à -5.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: php et MMORPG?
Posté par alpha_one_x86 (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 ;)
MMOMon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: php et MMORPG?
Posté par Pazns . É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 xcomcmdr . Évalué à 0. Dernière modification le 21 octobre 2015 à 16:26.
Ben c'est quand même pas au sous-niveau de PHP, hein…
C'est… C'est à dire qu'on PEUT faire PIRE que PHP ? VRAIMENT ?
"Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)
[^] # Re: php et MMORPG?
Posté par Pazns . Évalué à 0.
Et on pourra trouver au moins autant d'horreurs et d'absurdités chez Javascript, j'en suis certain.
On va où comme ça ? Pas très loin malheureusement.
Par contre, cet article date quand même de 2007, c'est une preuve un peu ancienne non x) ?
J'aimerais voir l'état actuel du bout de code, pour culture générale.
[^] # Re: php et MMORPG?
Posté par Benoît Sibaud (site web personnel) . Évalué à 6.
https://git.php.net/?p=php-src.git;a=blob;f=ext/standard/string.c;h=3d5b76caa2d314dca21e1c90f2005f199aa44464;hb=HEAD#l2278
[^] # Re: php et MMORPG?
Posté par freem . Évalué à 0.
Ç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.
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…)
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 alpha_one_x86 (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 freem . É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:
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.
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.
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.
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 Yth (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.
[^] # Re: php et MMORPG?
Posté par alpha_one_x86 (site web personnel) . Évalué à 3.
http://socketo.me/ -> je savais pas que php + web socket existais. Je pensais que c'été uniquement pooling.
Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.