Présentation

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.

Tout patch ou MOD réalisé jusqu'à présent sur les versions antérieures de XNova ne sont pas compatibles avec le code de base de XNova:Legacies à partir de la version 2010.1, ils devront suivre les règles décrites par cette documentation.

Système requis

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.

Client

Les prérequis complets restent à définir, le support de XML/XHTML2, CSS3 et Javascript est envisagé.

Serveur

L'utilisation des modules de cache d'opcode PHP comme 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.

Prérequis

L'utilisation de mod_rewrite est conseillée mais pas indispensable, l'application fonctionnera sans cette extension, avec le préfixe /index.php/ appliqué automatiquement à chaque adresse.

Dans un premier temps, l'extension 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.

Modéle de données

Une description plus complète du modèle de données est faite directement sur la page Modèle de données

Le moteur de jeu

Premiers pas

Intallation

Le serveur web

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 :

A partir de ce point, la notation A.B.C.D désigne une adresse IP sur laquelle votre serveur sera joint depuis internet. Remplacez la valeur dans les exemples de configuration par l'adresse IP que votre hébergeur vous a fourni.

Chez OVH, deux types d'adresses IP sont fournies sur chaque serveur : une adresse de maintenance et au moins une adresse ”failover”. Vous devez utiliser l'adresse failover pour configurer votre serveur web, l'adresse de maintenance étant réservée aux accès SSH pour l'administration du serveur.

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"
L'arborescence

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 :

  1. www, pour votre cms/forum/blog
  2. admin, pour l'administration de vos serveurs de jeu
  3. uni1, pour votre premier serveur de jeu

En 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.

Le les hôtes virtuels

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 "$