Faire tourner un univers

Bonsoir,
j’ai un casse tête assez fatiguant pour un de mes projets personnels, d’autant qu’il dépasse largement mes connaissances. :stuck_out_tongue:
J’aimerai faire un jeu web (du type hyperiums, astrowars, tdzk ou ogame pour ceux à qui ça parle), qui consiste donc en un « univers » persistant, du genre une carte de territoires, d’armées, de joueurs… auquel est appliqué à intervalle régulier des opérations de mise à jour (on bouge les armées, on crée des territoires…).
Concrètement, pour des raisons de rapidité, de prise de tête et de propreté, je désire conserver tout mon univers (composé d’objets) en mémoire et le consulter directement, au lieu de repasser par la base de donnée à chaque fois (ça a un certain confort de tout faire en objet sans devoir remettre à plat pour faire l’intéraction avec la BDD); et faire à intervalle régulier une écriture de la mémoire vers la base en tant que backup.
Je sais que de base, PHP inclut Memcache qui fait ce que je veux, c’est à dire conserver mes objets en mémoire en permanence. Mais il y a 2 problèmes: d’une, on n’accède pas directement aux objets, mais on les récupère, on fait les éventuelles modifications et on remet en place. Je crains des problèmes de cohérence, si par exemple je récupère l’objet, quelqu’un d’autre le récupère, et je remet un objet modifié, ensuite l’autre personne remet le sien; on aura perdu la 1° modification. Et je pressens des problèmes avec les références etc… Bref c’est pas une solution idéale à cause de ce coté « indirect ». L’autre problème, c’est que le PHP n’est pas le langage idéal objet pour moi, car il n’est pas fortement typé et je le trouve moins pratique à débugger que C# par exemple (ça n’engage que moi).
Du coup j’ai songé à une sorte d’architecture client/serveur, avec un client en PHP (le site) et le serveur en C#/Java (l’univers en lui même, qui tourne en tant qu’application); l’idée est séduisante, me parait propre (et je pourrai faire des backups de mes objets en sérialisation directement, ce qui m’affranchirait totalement de base de donnée… c’est faisable en PHP aussi mais je crois qu’il a du mal avec les « gros » objets :/). Mais je ne sais pas du tout si dans mon cas c’est viable, ni du moyen de faire communiquer mon serveur avec mon client. J’ai entendu parler de DOM/XML/SOAP et autres termes barbares, mais j’ai aucune pratique là dedans. Je me demande par exemple si je peux carrément me faire « envoyer » des objets à des fins de lecture (car je pense que toutes les modifications devraient être fait par des appels de fonctions vers l’appli à des fins de cohérence, et ça aussi d’ailleurs je ne sais pas faire).

J’attend vos suggestions, propositions d’autres solutions, réponses ou liens pour me guider. Merci d’avance :stuck_out_tongue:

Contacte moi en privé, j’ai un projet similaire sur les rails… (en C# par contre, pas en Web).

[quote name=‘Naxo’ date=’ 13 May 2005, 00:43’]Du coup j’ai songé à une sorte d’architecture client/serveur, avec un client en PHP (le site) et le serveur en C#/Java (l’univers en lui même, qui tourne en tant qu’application); l’idée est séduisante, me parait propre (et je pourrai faire des backups de mes objets en sérialisation directement, ce qui m’affranchirait totalement de base de donnée… c’est faisable en PHP aussi mais je crois qu’il a du mal avec les “gros” objets :/). Mais je ne sais pas du tout si dans mon cas c’est viable, ni du moyen de faire communiquer mon serveur avec mon client. J’ai entendu parler de DOM/XML/SOAP et autres termes barbares, mais j’ai aucune pratique là dedans. Je me demande par exemple si je peux carrément me faire “envoyer” des objets à des fins de lecture (car je pense que toutes les modifications devraient être fait par des appels de fonctions vers l’appli à des fins de cohérence, et ça aussi d’ailleurs je ne sais pas faire).
[right][post=“358725”]<{POST_SNAPBACK}>[/post][/right][/quote]
Je comprend pas trop l’interet d’un “client” en PHP en fait. Fait tout direct en ASP.Net. A priori le coté WebApplication te permettra de la stocker en mémoire et de lancer tes backups vers la BDD à intervalles réguliers.

Je plussoie pour faire une appli ASP.Net, et je te propose aussi de jeter un oeil sur le projet Bamboo. C’est un projet qui au lieu d’utiliser une base de donnée charge toutes les données en mémoire et les sérialise à intervalle régulier ou après chaque changement que tu trouves bon de sauvegarder directement. Un des avantages, c’est qu’il ne sauvegarde qu’il est capable de faire de la sauvegarde incrémentale. Perso, c’est ce que j’ai prévu d’utiliser pour un projet de gestion de projet. (En fait notre idée c’était d’exposer en remoting des classes gérées par un TransparentEngine Bamboo).

Merci pour Bamboo, effectivement ça m’a l’air plutôt pratique. :stuck_out_tongue:
L’intéret de faire le client en php: je n’ai absolument aucune expérience en développement web en asp.net (et je n’ai pas le temps d’apprendre) alors qu’en php ça roule.
En tout cas, puisque l’idée des 2 parties a pas l’air absurde, il me manque le moyen de faire communiquer tout ça :stuck_out_tongue:

Personnellement je ne vois pas trop, je ne suis pas un gourou en php… Par contre des objets .Net peuvent être exposés comme des objets COM… Si tu sais manipuler des objets COM en PHP, ca devrait rouler. Mais ASP.Net, c’est vachement bien aussi :P"

Bonjour

Lis ce message , j’ai déjà réalisé le moteur et je cherche à monter une équipe.

http://www.cafzone.net/ipb/index.php?showt…=0&#entry361293

A bientôt

Bernard

Merci de l’offre, mais je tiens à faire ça tout seul, non seulement parce que c’est très spécifique sur pas mal de points, mais aussi parce que c’est un projet scolaire individuel. :stuck_out_tongue:
En tout cas ton projet a l’air intéressant, je risquerai d’y jouer une fois lancé :stuck_out_tongue: