mercredi 27 février 2013

Hébergement d'un jeu par navigateur

Hello tout le monde ! Je fais ce petit billet parce que j'ai l'impression que pas mal de personnes se retrouvent légèrement perdues face à la question de l'hébergement d'un jeu et du choix du serveur. C'est un article théorique destiné aux débutants et qui ne sera donc volontairement pas très technique. Il concerne l'hébergement d'un jeu en ligne par navigateur (généralement développé en PHP avec une base de données MySQL).

Si vous avez des bons plans d'hébergement de sites, n'hésitez pas à les partager via les commentaires ;-) Je pense qu'il y aura des preneurs... ! Idem si vous avez des précisions à apporter, n'étant pas forcément à jour...
Ce billet ne trollera pas sur le choix de l'OS...

Le serveur

Afin de pouvoir rendre accessible votre jeu à vos futurs joueurs via une adresse url, vous aurez besoin de le déployer sur une machine (un ordinateur) allumé (et connecté à Internet) en permanence sur lequel est installé un ensemble de logiciels indispensables à son bon fonctionnement. Cette machine via laquelle les joueurs auront accès au jeu est communément appelé serveur.

Généralement pour héberger un jeu par navigateur classique on aura besoin (au minimum) d'installer sur cette machine les trois éléments suivants :

Ces éléments sont inclus dans les fameuses plate-formes de développement web WAMP (ou EasyPhp) et LAMP.

En général pendant toute la phase de développement vous n'avez pas besoin d'un hébergement en ligne car il n'est pas encore rendu public. C'est votre propre ordinateur personnel qui jouera le rôle de serveur. La recherche d'un hébergement online intervient donc en fin de développement juste avant la beta (ou de la alpha) qui nécessite l'intervention de joueurs (et donc que le jeu soit accessible à tous via Internet). Inutile de commencer à payer un hébergement en ligne alors que personne ne peut encore jouer à votre jeu :) Focalisez vous sur la conception et le développement et mettez cette problématique de côté tant que votre jeu n'est pas un minimum abouti.

Il faut également noter que le terme "serveur" désigne habituellement un ordinateur ("Tu peux me rappeler l'adresse du serveur ?") mais peut également désigner un ou plusieurs logiciels installés sur une machine ("J'ai installé un serveur FTP sur mon pc portable ce week-end"). Parfois il peut s'agit d'une personne ("Le serveur a encore oublié ma pizza !"). Tout cela peut éventuellement porter à confusion...

Lorsque l'on parle d'héberger son jeu en ligne, cela revient à chercher un serveur sur lequel le déployer. Vous pouvez utiliser votre propre ordinateur ou bien encore en louer un à une société (un hébergeur) en payant une somme tous les mois qui sera variable selon le type de machine louée, les services associés, etc.

Quelques types d'hébergement

Un jeu par navigateur est avant tout un site internet et il y a différents moyens de l'héberger (il est possible que j'en oublie car les offres sont très riches sur Internet). A vous de décider de la solution que vous allez adopter, selon vos besoins, vos connaissances et vos moyens (financiers). Voici un petit topo des solutions d'hébergement les plus fréquemment rencontrées :

Personnel : héberger soit-même son jeu par navigateur


Il est tout à fait possible d'héberger soit même son jeu en utilisant son propre ordinateur. Cela nécessite néanmoins des connaissances techniques non négligeables et présente pas mal de contraintes. C'est donc une option que je déconseillerai aux novices même si elle présente l'avantage (non négligeable) d'offrir une liberté totale au niveau du serveur.

Déjà il est évident que l'ordinateur doit être allumé et connecté sur Internet en permanence - faute de quoi votre jeu sera inaccessible - ce qui a un prix et peut occasionner quelques gênes (bruit, chaleur). Inutile également de préciser que si votre bande passante est saturée par vos téléchargements (des isos Linux, bien évidemment), vos visiteurs en souffriront puisque c'est cette même connexion qui sera utilisée pour votre jeu. De même, si votre serveur plante lamentablement pendant que vous êtes en vacances à Bora-Bora, cela peut signifier des jours d'indisponibilité, un désastre pour votre jeu web...

A prévoir :
  • Installation et configuration de l'ordinateur (OS, serveurs applicatifs, base de données, serveur mail, etc.),
  • Sécurisation du serveur (conf réseau, firewall, OS etc.),
  • Ordinateur allumé 24h24
  • Connexion internet performante et disponible,
  • Prix pas vraiment attractifs (ordinateur, électricité, internet),
  • Disponibilité en cas de surprise (problème) technique : crash du pc, la box qui part en vrille ...
Bref, pas forcément une partie de plaisir. Si j'étais vous je ne me lancerai pas dans l'aventure.

  

Gratuit : mais (forcément) limité !


Il est tout à fait possible de trouver un espace gratuit pour votre jeu.

Par exemple via votre fournisseur d'accès à Internet vous avez peut-être accès à un espace web gratuitement, renseignez-vous. Mon jeu a ainsi passé ses premiers mois sur un simple espace personnel Free (saturé au bout de quelques mois mais c'était globalement satisfaisant au début).

Malheureusement les hébergement gratuits (comme Multimania) ajoutent souvent à votre site des bandeaux publicitaires qui ruineront le design de votre jeu et feront fuir vos visiteurs... Bien plus restrictifs, certains hébergements gratuits sont limités à des pages html (pas de PHP), ou bien ne proposent pas de bases de données.

Cela peut néanmoins être une première étape dans la vie de votre jeu, et vous pourrez toujours changer d'hébergement par la suite, pour un petit hébergement mutualisé par exemple.

Mutualisé : passer par un hébergeur (payant)


L'hébergement mutualisé est la solution la plus pratique (et je pense la plus fréquente) pour un jeu web. Il s'agit tout simplement de passer par une société spécialisée dans l'hébergement web en payant une certaine somme par mois en fonction de ses besoins. On obtient ainsi un espace sur lequel déployer son site (dans notre cas notre jeu).

Il existe un grand nombre d'hébergeurs sur Internet qui proposent différentes solutions à des prix très variables. En général ces offres ont pour caractéristiques :
  • Espace disque disponible pour vos fichiers,
  • Bande passante allouée par mois (traffic mensuel),
  • Nombre et taille des bases de données,
  • Nombre de comptes mails associés,
  • etc.
Votre but sera de trouver ce qui convient le mieux à votre besoin et à votre budget. Il ne faut pas voir trop petit (sous peine d'en souffrir), mais il ne faut pas non plus voir trop grand. Le mieux est donc de prendre le nécessaire au bon fonctionnement du jeu (avec une marge de progression afin de ne pas étouffer en quelques semaines) puis de monter en gamme au fil du temps. Plus il y aura de joueurs, plus vous aurez besoin de bande passante, d'une taille de base de données de plus grande taille, etc. Anticipez un minimum vos besoins futurs !

Attention, pensez à vérifier que les éléments techniques nécessaires au bon fonctionnement de votre jeu soient bien disponibles !
  • Version de PHP installée,
  • Fonctions, extensions PHP autorisées,
  • Version de la base de données MySQL,
  • Présence de CRON (lancement automatisé de scripts),
  • etc.
Ce serait dommage de vous rendre compte au dernier moment que votre framework PHP top moumoute ne fonctionne pas car vous ne disposez pas de la bonne version de PHP sur votre serveur ... Par exemple le framework Symfony a ainsi besoin d'une version de PHP 5.2.4 (ou plus) et Symfony 2 d'une version 5.3.3 (ou plus). Si votre hébergeur ne propose pas une version compatible avec votre code source, c'est tout votre jeu qui est ko.

Vous pouvez avoir un exemple d'offres sur la page de 1&1. On peut par exemple voir que si votre site utilise du Ruby, l'offre "1&1 Essentiel" ne vous conviendra pas car le Ruby n'est pas supporté dans cette offre ! Prenez donc bien le temps avant de choisir votre hébergement, surtout n'hésitez pas à vous renseigner sur Internet pour vérifier la qualité de l'hébergement que vous comptez prendre.


  


Serveur dédié : louer une machine


On trouvera souvent chez ces sociétés des offres d'hébergement dédié en plus des offres mutualisées. Il s'agit de louer un serveur fixe ou virtuel (par exemple les VPS d'OVH) chez l'hébergeur et donc d'avoir plus de libertés. Elle nécessite par contre un minimum de connaissances système et de patience...

A noter qu'un hébergement dédié est en général plus cher qu'un mutualisé et je pense qu'il est préférable de commencer par un mutualisé au lancement du jeu, ce serait un brin dommage de payer un dédié pour un jeu qui ne fonctionnera pas forcément aussi bien qu'escompté (et ça arrive !).

Ne pas oublier non plus que vous allez devoir assurer la maintenance de votre dédié ce qui est une contrainte à considérer (ne pas oublier les mises à jour, par exemple...).

Associatif : trouver un espace au sein d'une association


Enfin il existe des associations qui peuvent (en respectant certaines conditions) vous fournir un espace pour votre jeu. C'est la solution pour laquelle j'ai opté pour mon propre projet, via l'association Nainwak. En plus d'être gratuite, cette solution vous permet de côtoyer d'autres créateurs passionnés, de vous délester de la partie administration du serveur ou bien encore d'avoir une assistance technique en cas de pépin.

A noter qu'il y a néanmoins une cotisation annuelle à prévoir car il faut en général adhérer à ce type d'association pour bénéficier de l'hébergement.

  

Conclusion


Pour un créateur néophyte je pense que le plus raisonnable serait de commencer par un hébergement gratuit comme ceux de Free ou un petit mutualisé (offres de mieux en mieux fournies pour quelques euros par mois). Lorsqu'on lance un jeu, on a pas forcément le temps ou l'envie d'avoir en plus les galères techniques d'un serveur (hébergement perso / dédié). Inutile de faire un investissement important en prenant un hébergement de fou furieux dès le début, vous pourrez évoluer petit à petit selon le succès de votre jeu. 

Pour ceux qui n'arrivent pas à mettre la main sur un bon hébergement gratuit et qui n'auraient pas de quoi payer un mutualisé, vous pouvez toujours essayer d'aller squatter le dédié d'un ami ou d'aller faire un tour du côté des associations ;-)

J'en profite pour remercier les gens qui me font des retours ici et là (globalement positifs) sur le blog ;-) Je suis toujours preneur de toute correction ou suggestion d'article via les commentaires, Facebook ou Twitter (liens sur la droite) !

5 commentaires:

  1. Salut,

    dans le cas où vous êtes plusieurs à travailler sur le même projet, je recommande d'avoir un hébergement assez tôt pour que chaque partie puisse travailler sur le site en même temps.

    D'expérience, je peux vous dire que le top du top est un serveur dédié. C'est sûrement un peu plus cher que les autres options, mais pensez bien qu'à un moment ou à un autre, vous devrez passer de l'hébergement mutualisé à un serveur dédié ou VPS.

    Il y a plusieurs avantages à avoir son serveur dès le début.

    - Vous pouvez y installer toutes les lib/modules que vous le voulez.
    - Vous pouvez y installer un SVN pour mieux gérer le travail collaboratif
    - Vous pouvez configurer un serveur de dev et un serveur de production
    - Vous pouvez facilement augmenter les capacités de votre serveur en cas de besoin.

    RépondreSupprimer
  2. Ah ça fait plaisir de voir un nouvel article (même si celui-ci ne m'intéresse pas grandement)

    RépondreSupprimer
  3. Dans les hébergeurs - mutualisés - gratuits/"bas prix" je conseillerais www.free-h.org qui permet de payer en allopass (pour ceux qui n'ont pas accès la CB par exemple).
    En plus l'offre semi-gratuite permet un paiement tous les 6 mois à environ 2 allopass/SMS (le nom de domaine est par contre à part, si il est prit chez eux il faudra ajouter environ 9 euros par an).
    Leur support (système de ticket) et leur forum sont efficaces et répondront en générale rapidement à une demande.

    RépondreSupprimer
  4. Pour mon nouveau jeu web j'ai aussi passé le pas de l'hébergement dédiée. J'ai appris Linux sur le tas et découvert de nouvelle choses intéressantes.

    Oui c'est pas mal de boulot, mais le retour est très intéressant. Cela m'as permis par exemple d'installer Nodejs que j'ai testé sur mon tchat. Vous pouvez littéralement oublié ceci sur un mutualisé, l'hébergeur ne vous l'installera jamais.

    L'inconvénient majeur et le temps que cela prend d'apprendre à gérer son serveur. Mais d'un autre côté, n'oublier pas qu'en programmation on peut quasi tout automatiser :D

    Personnellement, je ne regrette pas du tout l'expérience. Et niveau budget, on peut tout a fait commencer par un petit dédiée, 10 euros par mois et un domaine par an, c'est pas si cher payé pour une passion. Faites la comparaison, c'est une place de cinéma par mois, et cela vous offre beaucoup plus qu'1h30 :)

    RépondreSupprimer
  5. Vous n'évoquez pas les hébergement "dans le cloud" qui est une variante intéressante de l'hébergement mutualisé.
    J'utilise Google App Engine, c'est gratuit et on commence à payer dès que les besoins s'en font sentir en toute transparence.

    J'avais un serveur dédié que j'ai abandonné pour mon plus grand plaisir. Comme le dit Damocorp, c'est pas mal de boulot et j'ajouterais que c'est un métier/une passion qui n'a rien à voir avec le développement.
    Mon projet à failli capoter (18 mois de pause) a cause de ces problèmes d'administrations qui ne m'intéressent absolument pas.

    RépondreSupprimer