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