VREng est un moteur de réalité virtuelle qui utilise des fichiers ascii de descriptions de mondes et de leurs objets. Certains objets sont fixes (les murs), d'autres peuvent être mobiles. Parmi les objets mobiles il y ceux qui sont permanents (rotation de la terre), ceux qui sont volatiles (projectiles), les avatars biensûr, mais aussi des objets à états, par exemple les portes (ouvertes/fermées), les ascenceurs (niveau),...
On ne s'intéressera qu'à ces derniers car ils posent un problème de persistence dans le temps. En effet. un monde peut contenir au départ une porte fermée. Lorsque les avatars entrent dans ce monde, ils peuvent ouvrir ou refermer la porte. Mais lorsque l'on quitte l'application et qu'on la rappelle plus tard, la porte sera toujours dans l'état initial du fichier de description, c'est-à-dire toujours fermée alors que le dernier avatar ayant quitté ce monde aurait pu l'ouvrir.
Il s'agit donc de concevoir et réaliser un ou plusieurs serveurs permanents qui écouteront sur un canal multicast de contrôle de l'application "vreng". Ce ou ces serveurs pourront donc échanger des informations relatives aux persitences de certains objets mobiles, entre eux pour se resynchroniser en cas de crash de l'un d'eux, et avec les applications "vreng" actives à un moment donné. Par exemple, une application "vreng" pourrait demander l'état d'un objet susceptible d'être bougé au groupe de serveurs "vrengd". Le ou les serveurs rendraient l'état de l'objet à l'application "vreng" demandeuse qui le mettrait alors à jour dans la scène.
Au niveau de la réalisation pratique, il faudrait faire un peu de "reverse engineering" à partir des sources de "vreng", notamment au niveau de l'objet "door" et reprendre une grande partie du module réseau de "vreng" pour en faire un serveur multicast "vrengd".