====== 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 ====
* 1 Go de RAM
* Debian Linux 5.0 Lenny
* PHP 5.3
* Apache 2.2
* mod_rewrite
* Mysql 5.0
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 =====
* Zend Framework 1.9
* PHP 5.3
* SimpleXML
* DOM
* ''ext_mysql''
* Apache 2.2
* ''mod_rewrite''
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 [[legacies:fr:modele-de-donnees|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 :
* apache2
* apache2.2-common
* apache2-mpm-worker
* apache2-utils
* libapache2-mod-rewrite
* libapache2-mod-php5
* php5
* php5-common
* php5-dev
* php5-gd
* php5-imagick
* php5-mcrypt
* php5-memcache
* php5-mysql
* php5-xsl
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 :
- ''www'', pour votre cms/forum/blog
- ''admin'', pour l'administration de vos serveurs de jeu
- ''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 :
; IP "Failover"
ServerAdmin email@example.com
DocumentRoot "/srv/com.example/vhosts/www/public"
ServerName www.example.com
ServerAlias example.com
Order Allow,Deny
Deny From All
Order Allow,Deny
Allow From All
ErrorLog "/srv/com.example/www/logs/error_log"
CustomLog "/srv/com.example/www/logs/access_log" common
; IP "Failover"
ServerAdmin email@example.com
DocumentRoot "/srv/com.example/vhosts/uni1/public"
ServerName uni1.example.com
Order Allow,Deny
Deny From All
Order Allow,Deny
Allow From All
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
; IP "Failover"
ServerAdmin email@example.com
DocumentRoot "/srv/com.example/vhosts/admin/public"
ServerName admin.example.com
Order Allow,Deny
Deny From All
Order Allow,Deny
Allow From All
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
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.
==== En allant plus loin... ====
==== Référence de l'API ====
==== Documentation ====