XNova:Legacies est un jeu de gestion, où chaque joueur gère son empire de planètes dans l'espace. Ce jeu est développé en PHP, c'est un fork du projet XNova en version 0.8-sp1, projet abandonné depuis près d'un an au moment de la création du fork. Il utilise les technologies “Web 2.0” et Zend Framework en utilisant un modèle de conception modulaire, ce qui permet d'ajouter facilement et rapidement des nouvelles fonctionnalités au jeu ou bien en changer en profondeur le fonctionnement.
XNova:Legacies est intégralement exécuté sur le serveur pour tout ce qui concerne l'interaction entre le jeu et les joueurs, toute la partie qui concerne l'interface est elle exécutée dans le navigateur web. Le système requis est disponible chez une large majorité d'hébergeurs pour la partie serveur, et fonctionne sur la plupart des ordinateurs ayant un navigateur web récent pour la partie client.
ext_apc, l'utilisation de memcache pour la gestion des sessions et l'installation de PHP comme module Apache peuvent apporter un gain de performances non négligeable. Réferez-vous à la documentation de votre serveur pour plus d'informations.
ext_mysqlmod_rewrite
mod_rewrite est conseillée mais pas indispensable, l'application fonctionnera sans cette extension, avec le préfixe /index.php/ appliqué automatiquement à chaque adresse.
mysql sera utilisée, le temps de porter l'ensemble du code source sur Zend Framework. Une fois fait, le switch entre chacune des extensions mysql (mysql, mysqli, mysqlnd et pdo_mysql) pourra être fait dans le fichier de configuration. Un switch sur d'autres moteurs de bases de données restera possible, mais pas garanti.
Une description plus complète du modèle de données est faite directement sur la page Modèle de données
Le serveur web a besoin d'une configuration particulière pour faire fonctionner XNova:Legacies dans les meilleurs conditions, supposons que vous ayez votre serveur dédié avec une installation fraîche de Debian Linux 5.0 Lenny, avec l'ensemble des paquets nécessaires à un serveur web PHP installés. Vous aurez notamment besoin des paquets suivants :
Supposons que votre installation a été correctement faite, que votre serveur et votre site frontal (fichier /etc/apache2/sites-available/default) ont bien étés configurés, nous allons nous pencher sur votre hôte virtuel qui acceptera les connexions vers votre jeu.
Tout d'abord, ouvrez le fichier /etc/apache2/ports.conf et placez-y les lignes suivantes :
Port 80 NameVirtualHost A.B.C.D:80 ; IP "Maintenance" NameVirtualHost A.B.C.D:80 ; IP "Failover"
Nous allons définir une arborescence de sites dans le dossier /srv de votre serveur, telle que :
/
  srv/
    com.example/
      library/
        zend/
          1.7/
          1.8/
          1.9/
          1.10/
        legacies/
          src/
            community/
            core/
            local/
      vhosts/
        www/
          public/
          logs/
        admin/
          config/
            local.xml
          data/
          logs/
          public/
            images/
            script/
            style/
            index.php
        uni1/
          config/
            local.xml
          data/
          logs/
          public/
            images/
            script/
            style/
            index.php
Nous avons donc un nom de domaine example.com qui gèrera 3 sous-domaines :
www, pour votre cms/forum/blogadmin, pour l'administration de vos serveurs de jeuuni1, pour votre premier serveur de jeuEn parallèle, les fichiers de XNova:Legacies seront placés à un seul endroit sur le serveur, quelque soit le nombre de serveurs de jeu installés.
Créez ensuite le fichier /etc/apache2/sites-available/legacies et placez-y ce contenu en modifiant les champs avec les infos de votre serveur :
<VirtualHost A.B.C.D:80> ; IP "Failover"
    ServerAdmin email@example.com
    DocumentRoot "/srv/com.example/vhosts/www/public"
    ServerName www.example.com
    ServerAlias example.com
 
    <Directory />
        Order Allow,Deny
        Deny From All
    </Directory>
 
    <Directory "/srv/com.example/vhosts/www/public">
        Order Allow,Deny
        Allow From All
    </Directory>
 
    ErrorLog "/srv/com.example/www/logs/error_log"
    CustomLog "/srv/com.example/www/logs/access_log" common
</VirtualHost>
 
<VirtualHost A.B.C.D:80> ; IP "Failover"
    ServerAdmin email@example.com
    DocumentRoot "/srv/com.example/vhosts/uni1/public"
    ServerName uni1.example.com
 
    <Directory />
        Order Allow,Deny
        Deny From All
    </Directory>
 
    <Directory "/srv/com.example/vhosts/uni1/public">
        Order Allow,Deny
        Allow From All
    </Directory>
 
    SetEnv APPLICATION_ENV "prod"
    SetEnv ZEND_PATH       "/srv/com.example/library/zend"
    SetEnv ZEND_VERSION    "1.9.2"
 
    RewriteEngine On
 
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-s
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-l
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-d
    RewriteRule ^.*$ - [NC,L]
 
    RewriteRule ^.*$ /index.php [NC,L]
 
    ErrorLog "/srv/com.example/srv1/logs/error_log"
    CustomLog "/srv/com.example/srv1/logs/access_log" common
</VirtualHost>
 
<VirtualHost A.B.C.D:80> ; IP "Failover"
    ServerAdmin email@example.com
    DocumentRoot "/srv/com.example/vhosts/admin/public"
    ServerName admin.example.com
 
    <Directory />
        Order Allow,Deny
        Deny From All
    </Directory>
 
    <Directory "/srv/com.example/vhosts/admin/public">
        Order Allow,Deny
        Allow From All
    </Directory>
 
    SetEnv APPLICATION_ENV "prod"
    SetEnv ZEND_PATH       "/srv/com.example/library/zend"
    SetEnv ZEND_VERSION    "1.9.2"
 
    RewriteEngine On
 
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-s
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-l
    RewriteCond "${DOCUMENT_ROOT}${REQUEST_FILENAME}" !-d
    RewriteRule ^.*$ - [NC,L]
 
    RewriteRule ^.*$ /index.php [NC,L]
 
    ErrorLog "/srv/com.example/admin/logs/error_log"
    CustomLog "/srv/com.example/admin/logs/access_log" common
</VirtualHost>
Vous pouvez ensuite lancer les commandes suivantes pour activer les deux sites :
sudo a2ensite legacies sudo /etc/init.d/apache2 reload
Une fois fait, téléchargez la version de développement XNova:Legacies et placez le dossier src/ dans l'archive à l'emplacement /srv/com.example/library/legacies sur votre serveur. Copiez ensuite le contenu du dossier public/ dans le dossier /srv/com.example/vhosts/uni1/public sur votre serveur. Et enfin, copiez le contenu du dossier admin/ dans le dossier /srv/com.example/vhosts/admin/public sur votre serveur. Affichez ensuite la page http://admin.example.com/ (selon le nom de domaine que vous avez renseigné plus haut) pour démarrer l'installation du premier serveur.