JeuWeb - Crée ton jeu par navigateur
Symfony pour un jeu en ligne - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Symfony pour un jeu en ligne (/showthread.php?tid=7170)



Symfony pour un jeu en ligne - albert - 01-08-2014

bonjour,
C'est la première fois que je poste un sujet ici. Je ne suis donc pas sur que je suis au bon endroit ni que je ne fais d'erreurs dans la rédaction.
Ma question:
Est-ce que symfony 2 est assez performant pour un jeu en ligne ou (j'espère) des milliers (2000-3000) de personnes peuvent se connecter en meme temps sur le serveur sans que ce dernier ne lague ?
En effet j'ai entendu que symfony s'optimisait grace au cache mais comment faire pour un jeu en ligne qui change d'un joueur à un autre ? Existe-t-il d'autres méthodes pour optimiser symfony ?

cordialement, albert


RE: Symfony pour un jeu en ligne - Arnadus - 02-08-2014

Citation :Est-ce que symfony 2 est assez performant pour un jeu en ligne ou (j'espère) des milliers (2000-3000) de personnes peuvent se connecter en meme temps sur le serveur sans que ce dernier ne lague ?


Oui bien sûr. Comme tous les frameworks (Code Igniter, Laravel, Yii, Zend Framework, Ruby on rails etc.), Symfony représente une certaine charge (overhead) à chaque fois que tu dois passer par celui-ci mais ce temps d'exécution tend à se réduire et à devenir négligeable au fur et à mesure que ton application web gagne en popularité. Si tu arrives à avoir 2000-3000 personnes sur ton jeu, ta base de données sera certainement très sollicitée et ce sera certainement elle qui deviendra le goulot d'étranglement du ton site (bottleneck) plutot que les quelques milisecondes nécessaires au chargement du framework.


Citation :En effet j'ai entendu que symfony s'optimisait grace au cache mais comment faire pour un jeu en ligne qui change d'un joueur à un autre ?

Ce n'est pas parce que chaque joueur est différent qu'il n'est pas possible de mettre en place un système de cache performant. Naturellement, ce système de cache devra être un minimum intelligent. En effet, on voit mal comment un système de cache HTTP comme varnish pourrait être mis en place dans le cadre d'un jeu en ligne.
En revanche, d'autres systèmes de cache implémentés au niveau de l'application elle-même peuvent s'avérer très utiles. On pourrait par exemple penser à suvegarder une liste de commentaires, topics, annonces (etc.) dans un fichier pour pouvoir les resservir par après sans devoir passer par la base de données. Là dessus, les frameworks sont en général très utiles car ils viennent avec tous leurs bagages et outils déjà programmés qui ne demandent qu'à être utilisés.
L'un des plus prometteur pour un jeu en ligne, serait de mettre en place un système de cache au niveau de la base de données, plus précisément au niveau des entités gérées par l'ORM. Si tu utilises doctrine, tu seras certainement intéressé par ce lien. Personnellement, j'attends avec impatience la venue du second-cache level avec doctrine.


Citation : Existe-t-il d'autres méthodes pour optimiser symfony ?

Il existe d'autres méthodes pour optimiser du code php. Tu peux par exemple utiliser un système de cache d'opcode (très facile à mettre en place). Tu peux aussi, avec symfony, décider demettre en cache la totalité de l'output d'un controleur (dans la section: Le cache pour les flemmards). Il existe encore quelques petits réglages minimes que tu peux faire et qui sont expliqués ici.
Enfin, n'oublie jamais que l’environnement de développement n'a rien à voir avec l’environnement de production. Avoir un code d'une application symfony2 qui prend 2 secondes à s'afficher (ce qui peut paraître énorme) en environnement de développement est une chose tout à fait normale: tes fichiers css et javascripts ne sont pas compilés et sont rechargés à chaque requête, tes templates Twig ne sont pas mis en cache, certains fichiers de configurations de symfony sont aussi recalculés à la volée etc.


RE: Symfony pour un jeu en ligne - Xenos - 03-08-2014

Et de manière générale, privilégie la solution lourde et lente pour la machine mais rapide pour le développeur humain: si Symphony fait gagner du temps de développement, même s'il venait à être hyper-lent, privilégie-le, car cela te permettra de sortir quelque chose rapidement, quitte à laisser tourner ce prototype pendant que tu développera, "from scratch", une version plus légère pour la machine.


RE: Symfony pour un jeu en ligne - albert - 03-08-2014

merci pour ta réponse arnadus.
Cependant, xenos, je n'ai pas bien compris ta réponse: à quoi ca sert de faire un truc "super lent" pour en refaire un rapide plus tard ?


RE: Symfony pour un jeu en ligne - niahoo - 03-08-2014

L'idée est de privilégier le temps de développement au détriment des performances. Mieux vaut un outil complet qui te permette d'avancer vite et de garder ta motivation.

Ensuite si le site est lent tu peux éventuellement recoder certaines parties, ou remplacer certaines parties de symfony par d'autres implémentations. Mais généralement il vaut mieux simplement mettre du meilleur hardware et le tour est joué.

Oui le hardware ça coûte cher, mais le temps économisé vaut d'avantage.

De plus, pour un jeu c'est rarement le code symfony qui sera lent. Ce sera le tien.