Bonjour à tous.
Je travaille actuellement sur un projet de jeu. Le projet tourne autour d'un jeu fonctionnant sous navigateur style Ogame dans le principe (pour référence http://www.ogame.fr/).
Le projet me sert plus d'autoformation et de pédagogie, il est sans prétention mais j'aime bien faire les choses.
L'architecture implique que nous avons donc plusieurs clients et un serveur fonctionnant sous php et base de donnée.
- Les clients recoivent les informations et actualisent la page et les joueurs peuvent transmettre leurs instructions suite à la lecture des tableaux et statistiques.
-Le serveur lui s'occupe du serveur apache, d'exécuter les scripts php et la base de données. Bref rien que du très classique.
Ma problématique est la suivante :
Le jeu fait appel à des calculs liés à la simulation assez importants. Ces calculs doivent être réalisés simultanément pour chacun des clients connectés en temps réel mais n'ont pas de répercutions sur les autres joueurs.
La première solution est qu'un serveur dédié les réalise et mette à jour la base de donnée; Ces calculs sont répartis en plusieurs threads simultanés et cadensés selon leur prioritié. J'ai estimé que le serveur ne peut supporter la charge importante des calculs à réaliser pour l'ensemble des clients connectés sans lag de plusieurs secondes ce qui n'est pas supportable.
La seconde solution est que ce soit le client qui réalise les calculs dont il a besoin pour la simulation. C'est possible car les données calculées n'ont pas de lien avec les autres joueurs. On reparti ainsi la charge ce qui supprime la lag. Le client transmet ensuite le résultat au serveur qui les stocke.
Deux problèmes à cette solution :
Le premier est le hacking. Un joueur peut manipuler la mémoire de l'ordinateur via un programme externe ou agir sur les trames d'échanges entre le serveur et le client. Il existe néanmoins des parades.
Le second est l'objet de ma question :
Quelle technologie utiliser pour les calculs réalisés coté client ? Appel à un applet Java, un ActiveX, Flash autre ?
La solution doit être téléchargeable, compilée et ne pas faire appel à un langage scripté qui peut être modifié cela élimine déja des solutions.
A terme la solution doit pouvoir aussi prendre en charge quelques éléments d'affichages graphiques mais ce n'est pas une priorité. Juste une possibilité.
Merci à vous de me répondre suite à vos expériences ou compétences.
Partager