Une liste de tous les logiciels qui peuvent vous servir à créer votre jeu web, du aux ressources graphiques, en passant par sa conception.

Coder votre jeu web

Notepad++: un éditeur simple

Notepad++ est un éditeur suffisant pour de tous petits projets de jeux, ou pour éditer un fichier rapidement. Pour un projet plus important (MMORPG), préférez un IDE.

Les IDEs

NetBeans: gratuit

NetBeans vous permettra de développer rapidement, facilement, et de façon fiable votre jeu web, sans débourser un euro. Un article est dédié aux astuces pour cet IDE.

IntelliJ (ou PHPStorm)

IntelliJ ou PHPStorm sont payants, mais ils proposent le support de PHP 7.2 et possèdent une bien meilleure auto-complétion (surtout pour la partie SQL et Javascript). Il s’agit de mon IDE actuel, car mon employeur (General Electric) m’autorise à réutiliser ma licence de travail pour mes projets personnels.

HeidiSQL: accéder à sa base de données

HeidiSQL est un client MySQL (et PostGre, MsSQL,…) similaire à phpMyAdmin mais en tant que logiciel dédié et non en tant que page web. Cela lui confère plus d’options de connexion (comme le tunnel SSH pour accéder à votre vrai serveur MySQL en ligne), et, je trouve, plus de praticité à l’usage. Bien plus stable que MySQL WorkBench.

HeidiSQL peut vous permettre de gérer votre base de données locale (sur votre poste de dev) ou distante (en prod) si l’hébergeur vous autorise le tunnel SSH.

SonarQube

SonarQube permet de surveiller la “qualité” de votre code. Vous trouverez plus de détails dans l’article dédié à SonarQube. Pour un jeu web amateur, je trouve que c’est “overkill”: votre IDE (IntelliJ) repère déjà ces mêmes erreurs et vous propose même des auto-corrections.

Exécuter (localement) votre jeu

WAMP

WAMP est un logiciel qui embarque Apache, MySQL et PHP (ainsi que Perl et MariaDB) et permet de disposer d’une stack web (un serveur web local) complète sur son Windows en quelques secondes (et de la mettre à jour facilement).

D’autres stacks existent (EasyPHP, XAMPP, NodeJS,…) mais elles ne seront pas trop abordées dans ce blog. WAMP à l’avantage de permettre de switcher facilement de version PHP, MySQL ou Apache. Très pratique pour les upgrades.

FakeSMTP

FakeSMTP est un faux-serveur SMTP à faire tourner en local et à utiliser pour simuler les envois de mail pendant la phase de développement. En pratique, FakeSMTP est vu comme un serveur de mail (serveur SMTP) par PHP. Lorsque PHP envoie un mail, FakeSMT va juste le stocker sur votre disque dur au lieu de l’envoyer. Vous pourrez alors l’ouvrir (dans ThunderBird par exemple) pour vérifier son contenu. Cela s’avère donc très pratique pour s’assurer que les emails que le jeu envoie sont bien formatés.

Vue de FakeSMTP
FakeSMTP liste les mails reçus par le serveur SMTP

XDebug

XDebug est un plugin indispensable de PHP, fourni avec WAMP. Il permet de déboguer votre jeu web en visualisant son exécution pas à pas, et de profiler l’exécution de vos pages pour en trouver les parties à optimiser.

XDebug Helper> (plugin Firefox)

XDebug Helper est une extension de Firefox qui permet d’activer et de désactiver une session XDebug d’un seul clic, pour lancer le débogueur ou le profileur ou le traceur à la demande.

QCacheGrind

QCacheGrind est un logiciel de visualisation capable d’ouvrir les fichiers issus du profiler de XDebug, pour voir où votre serveur local passe le plus clair de son temps. Cela ne vous aidera donc pas à déboguer un mauvais comportement de votre jeu, mais à trouver quelle composante de votre code demande trop de calculs et rend le jeu injouable. Optimisez alors ces morceaux de page.

La vue de QCachegrind une fois le fichier ouvert

QCacheGrind peut également analyser d’autres profils, mais nous ne les aborderont pas dans ce blog.

Déployer votre jeu en ligne

Magallanes

Magallanes est un outil de déploiement que j’utilisais au début, et que j’ai abandonné depuis son passage à Composer (et plusieurs problèmes de liens symboliques et de compatibilité Windows/Cygwin).

Dans les grandes lignes, Magallanes crée un .tar.gz de votre projet en développement, l’envoie sur le serveur, le décompresse dans un dossier dédié, puis crée un lien symbolique vers ce dossier (et vous êtes censé avoir réglé votre serveur Apache pour qu’il pointe sur ce lien symbolique). J’ai fait la même chose dans un script PHP classique, lancé via Phing.

Les sites autour de votre jeu

WordPress: gamebook ou blog

WordPress est un CMS très répandu dans le monde qui vous permet de monter un site en quelques minutes. Plus souvent utilisé pour les blogs (dont celui-ci), WordPress permet aussi de faire des boutiques en ligne, et peut être dévié pour constituer, par exemple, un gamebook ou même avoir l’apparence d’un Wiki (comme le wiki de Dracca).

Un jeu sans contenu est comme un blog sans article. Votre jeu ne commence à exister que lorsque vous en créez le contenu, comme un blog n’aura d’intérêt que lorsqu’il proposera des articles de qualité.

PHPBB, un forum d’échange

Un moteur de forum simple et complet, qui vous permettra de créer rapidement un espace d’échange entre les joueurs de votre communauté. Il peut aussi servir à créer directement votre jeu, si vous souhaitez par exemple faire un jeu de RP par texte (ce n’est pas toujours idéal, mais c’est parfois suffisant).

Question2Answer, la FAQ

Question2Answer permet de monter une FAQ, semblable à celui de Stack Overflow (à vous de trouver le design qui vous plaira). Difficile d’en faire un jeu web, mais vous pourrez vous en servir pour les questions de votre communauté de joueurs. Attention toutefois car il est rapidement sujet aux spams, et plus difficile à mettre à jour que WordPress: il sera parfois plus intéressant de mettre votre FAQ dans des articles que dans Question2Answer (par exemple, vous pouvez faire un article wordpress par question récurrente).

Wikimedia

Un vrai moteur de wiki. Mais c’est son installation et sa mise à jour sont une horreur, et il en va de même pour les plugins. Préférez un WordPress stylisé, ou reposez-vous sur Wikia, qui vous permet de créer votre wiki en deux clics et de bénéficier de plus d’exposition via leurs annuaires.

Mantis BT

Mantis BT est un “Issue Tracker”, c’est à dire un site qui permet aux utilisateurs (vous et votre équipe inclus) de reporter les bogues ou de suggérer des features, et de suivre l’avancement de leur correction. Vous saurez alors quelles tâches restent encore à faire pour que votre jeu web progresse, et vous pourrez dire sur quelle tâche vous travaillez en ce moment. L’intégration avec les de versionning et les IDE vous permettra aussi de faire référence à un des bogues du tracker (un “ticket”) dans vos commits.

Il en existe beaucoup d’autres, mais je suis resté sur Mantis car il est écrit en PHP+MySQL (donc fonctionnel sur un mutualisé OVH), il est gratuit (open-source) et extensible (via des plugins). Cf mon bug tracker.

Discord

Un logiciel de tchat, similaire à ce qu’était MSN et à ce qu’est maintenant Skype, à la différence qu’il est gratuit et n’est pas “fusionné” avec des composants Windows. Vous en trouverez des version pour mobile. Discord servira rarement à créer un jeu web (sauf éventuellement un role-play textuel en temps réel), mais il complètera efficacement vos outils de communication avec vos joueurs, ou entre vos joueurs.

En vrac

Ces outils-ci sont probablement “overkill” pour un jeu web, mais il est intéressant de les mentionner.

RRDTools

RRDToolsRRDTools permet de visualiser des graphs d’évolution temporelle de données.

Siege

Siege est un outil de benchmark HTTP(S) pour tester le temps de chargement des pages de votre jeu web.

Nagios

Nagios est un outil de monitoring réseau. C’est plutôt à votre hébergeur de l’installer et de l’utiliser.

MySQLTuner

MySQLTuner permet d’analyse la configuration MySQL pour en booster les perfs. Celle par défaut est souvent suffisante, et vos soucis de performance viennent soit d’un sous-dimensionnement du serveur, soit d’un mauvais usage du SQL.

Jenkins

Jenkins est un outil d’intégration continue (et déploiement) très pratique pour gérer plusieurs projets au sein d’une équipe, mais souvent overkill pour un petit jeu web. Un simple script de déploiement (ou Magallanes) suffit.

PHPUnit

PHPUnit est un framework de tests unitaires automatisés, permettant d’éviter les régressions. Sur un petit jeu web amateur en constante évolution, c’est une perte de temps à mon avis.

Selenium

Selenium permet d’automatiser les tests d’intégration, c’est à dire des tests dans le navigateur. Comme pour PHPUnit, c’est surfait dans le cas d’un jeu web amateur.

GraphViz

GraphViz permet de visualiser des graphes et des diagrammes. Un papier et un crayon sont souvent plus simples d’usage encore, mais vous pouvez vous en servir pour afficher des statistiques du jeu (par exemple, vous générez un fichier .dot décrivant l’arbre des technologies du jeu, et vous le visualisez dans GraphViz).

Doxygen

Doxygen génère une documentation formattée de votre jeu web à partir des commentaires de PHPDoc. Ca ne mange pas de pain, mais si vous êtes seul sur votre jeu, ce n’est pas fondamentalement indispensable.

XNova, Ma-mafia

Ce sont des moteurs de jeux web “prêts à l’emploi”, mais dont l’utilisation abusive les a connotés négativement. S’ils sont remplis d’un contenu original et riche, ils peuvent être une très bonne solution pour créer votre jeu web. Sinon, vous allez vous faire rembarrer pour avoir créé un n-ieme clone des jeux d’origine (respectivement Ogame et Mamafia).

FreeMind

Un logiciel de Mind-mapping, pratique pour schématiser une idée. Si un papier marche tout aussi bien quand on est seul, FreeMind est plus adapté au travail en équipe, où vous devrez envoyer vos schémas aux autres membres.