Skip to content
theptitprincePublic

About

XNova Renaissance — reprise de XNova 0.8e (clone libre d'OGame, équipe française 2008), modernisée pour PHP 8, corrigé des bugs et failles

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

229 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XNova — 0.9k Renaissance

Le jeu de stratégie spatiale XNova, repris là où l'équipe d'origine s'était arrêtée.

Version PHP MariaDB MySQL JavaScript HTML5 Licence Statut


Note

Sécurisée et allégée, mais encore en développement avant la 1.0. Les failles connues du code de 2008 sont corrigées depuis la 0.9f, et la 0.9k a ajouté un audit de sécurité complet du code : injections SQL, triches par formulaire falsifié ou par clics simultanés, accès aux données d'autres joueurs, jetons des formulaires, installeur réservé à l'administrateur. Toutes les failles trouvées sont corrigées et couvertes par des tests automatiques ; les pages restent rapides sur un gros univers (milliers de joueurs et de flottes en vol). Un serveur public est envisageable : suivez la partie Mise en production, et gardez en tête que le jeu reste une version de développement. Tests faits sous MariaDB ; MySQL 8 est pris en charge mais pas testé.

Sommaire


Le jeu

XNova est un jeu de stratégie spatiale massivement multijoueur qui se joue dans un simple navigateur web. Chaque joueur reçoit une planète à l'inscription. Il y développe une base (mines, centrales, usines, laboratoire), recherche des technologies, construit des flottes et des défenses, colonise d'autres mondes, commerce, s'allie avec d'autres joueurs… ou les attaque pour piller leurs ressources.

Son gameplay s'inspire ouvertement d'OGame (Gameforge), mais XNova est écrit avec son propre code, publié en logiciel libre.

Histoire du projet

UGamela, le point de départ (2006)

Le 26 juin 2006, un étudiant argentin connu sous le pseudo Perberos lance UGamela, son projet de fin d'études : l'un des tout premiers clones libres d'OGame, écrit en PHP. Son serveur compte environ 22 000 joueurs actifs en 2007. Le code reste ouvert jusqu'à la version 0.2, puis une communauté allemande le reprend jusqu'à la 0.5. D'autres communautés se forment en Amérique latine, en Pologne et en France.

XNova, l'équipe française (fin 2007 – 2008)

Fin 2007 et début 2008, une équipe française reprend UGamela et en fait XNova :

  • Raito, fondateur et programmeur ;
  • Chlorel, chef programmeur, auteur de la grande majorité du code ;
  • e-Zobar, designer et programmeur ;
  • Flousedid, webmaster ;
  • des contributeurs, dont Bono, Tom1991, XxmangaxX, juju67 et Prethorian.

L'équipe ne se contente pas de rafistoler UGamela. Elle reforge le noyau version après version : de la 0.5 à la 0.7, puis la 0.8, qui deviendra l'une des versions d'OGame-like les plus diffusées. Le site officiel est xnova.fr, avec son forum. De ses débuts jusqu'au printemps 2008, le projet a aussi été hébergé par le forum Britania (britania.ws), que la page de crédits du jeu remercie « pour avoir accueilli XNova à ses débuts ». Britania a ensuite gardé une section XNova jusqu'à sa fermeture, en 2016.

L'éclatement (2008 – 2014)

En octobre 2008, Chlorel quitte la scène. Le projet se divise alors en plusieurs branches, qui avancent en parallèle :

  • XNova (2008 – 2011) : le jeu tel qu'on y jouait sur xnova.fr ;
  • XNova NG (« NextGen », 2009 – 2011) : une réécriture complète annoncée par l'équipe française ;
  • XNova Legacies (2009 – 2014) : reprise par une nouvelle équipe (versions 2009.1 à 2009.4) ;
  • Wootook (dès 2011) : la réécriture complète issue de Legacies, jamais achevée.

Ailleurs, le code essaime : XG Proyect (2008), communauté hispanophone qui corrige les bugs et rapproche le jeu d'OGame, puis 2Moons, et une multitude de « repacks » (Redesigned, Revolution, SuperNova…).

Puis les serveurs et les forums ferment les uns après les autres, et avec eux disparaît une grande partie du travail des communautés.

theptitprince et le forum Britania

theptitprince, qui porte aujourd'hui cette reprise, a participé à l'aventure XNova sur le forum Britania à partir de 2008. Les archives du web en gardent quelques traces :

  • en mars 2008, un premier message de remerciement à l'équipe XNova et à Chlorel, pour la version 0.8 ;
  • la distribution communautaire « XNova 0.9b » (février 2009), qu'il a assemblée à partir de la 0.8 en y intégrant de nombreux tutoriels et correctifs. Elle était proposée sur son site aux côtés des 0.9a et 0.9c, puis republiée par Britania en 2009 ;
  • un tutoriel « Captcha à l'inscription » pour XNova ;
  • des échanges avec Bono, en 2010, au sujet de l'outil « XNova Studio ».

C'est pour cette raison que la numérotation de Renaissance reprend à 0.9d : elle prolonge ces versions communautaires, au lieu de les écraser.

Le reste des contributions de cette époque a disparu avec le forum. XNova Renaissance est aussi une façon de rendre à ce projet ce qui a été perdu.

Pourquoi « Renaissance »

Les dérivés d'XNova ont presque tous suivi l'un de ces deux chemins : l'empilement de modifications jusqu'à l'illisible, ou la réécriture complète… jamais achevée. XNova Renaissance fait le choix inverse :

  • on repart de la dernière version de l'équipe d'origine, XNova 0.8e, et non d'un dérivé. Le premier commit de ce dépôt (tag v0.8e) est identique, fichier pour fichier, à l'archive xnova-legacies/xnova-0.8 mise en ligne en 2016 ;
  • on ne réécrit pas : la structure du code, son style et le gameplay restent ceux de Chlorel et de son équipe ;
  • on modernise et on sécurise pas à pas. Chaque version reste jouable, et la numérotation reprend la logique d'origine (0.8e → 0.9d → 0.9e → 0.9f…). La numérotation démarre à 0.9d, à la suite des versions communautaires « 0.9a » à « 0.9c » de 2008-2009 ;
  • on garde la trace de tous les auteurs : chaque fichier conserve sa mention d'origine.

« Renaissance » n'est pas un nouveau jeu : c'est le nom de la version qui suit la 0.8e. Le jeu, lui, s'appelle toujours XNova.

Feuille de route

Version Contenu État
0.9d Compatibilité PHP 8.4 / MariaDB, en-têtes et crédits, corrections de bugs d'origine ✅ Terminée
0.9e Sécurité critique (injections SQL, mots de passe password_hash, cookies, privilèges), bug de production d'énergie, installeur « Mise à jour » ✅ Terminée
0.9f Protection des formulaires (XSS, CSRF), formulaire de contact vers l'administration, mise à jour depuis la 0.8e d'origine, partie complète testée jusqu'à la création de lune (bugs d'origine corrigés) ✅ Terminée
0.9g Bugs restants et avertissements PHP, mot de passe oublié par lien de confirmation, affichage des colonies ; traductions complètes (allemand, espagnol, italien), base en utf8mb4, installeur verrouillé et harmonisé, nettoyage (conventions de nommage, textes, pages) ; partie complète retestée (lune, missiles, alliance, administration) ✅ Terminée
0.9h Fonctions laissées inachevées dans l'original : « Supprimer un joueur » et liste des multi-comptes, suppression de compte demandée par le joueur, officiers sans effet, heures d'arrivée des flottes, négociant, signalement ; compteur de ressources en direct, boutons « Max », captcha ; protection des débutants complétée, débris des combats corrigés ; partie complète retestée sur une installation neuve ✅ Terminée
0.9i Attaque groupée : prévue dans la 0.8e mais jamais programmée (groupe, invitations, flottes synchronisées) ; défense groupée par les flottes alliées en stationnement ; nouveau moteur de combat à plusieurs participants, mêmes résultats que l'original (prouvé sur 40 000 combats), tout le jeu sous AGPL ; Protection des vaisseaux enfin prise en compte ; partie complète retestée dans le navigateur ✅ Terminée
0.9j Derniers officiers (Bunker, Raideur, Empereur) enfin utiles et leurs unités : Protecteur planétaire, SuperNova, Destructeur planétaire, avec la destruction de colonies ; dépôt de ravitaillement terminé comme dans OGame ; expéditions complètes (pirates, aliens, retours retardés ou anticipés) ; valeurs d'OGame (Grand bouclier, petit transporteur, satellite solaire) ; technologies Bouclier et Protection remises à leur place au combat ✅ Terminée
0.9k Audit de sécurité complet (injections, triches, requêtes simultanées, accès, installeur réservé à l'administrateur) ; performances : index de la base, flottes traitées seulement quand il le faut, requêtes en double supprimées, statistiques en quelques secondes, résultats du jeu prouvés identiques ; chat désactivable, informations du serveur et statistiques automatiques dans l'administration ✅ Terminée
1.0 Tout propre, sécurisé et testé en jouant 🎯

Installation

Prérequis

  • PHP 8.4 (8.1 minimum), avec les extensions mysqli, gd et mbstring ;
  • MariaDB 10.6+ ou MySQL 8+ ;
  • un serveur web (Apache, Nginx), ou le serveur intégré de PHP pour le développement.

Étapes

  1. Copiez les fichiers du dépôt à la racine de votre site.
  2. Créez une base de données vide et un utilisateur MySQL qui y a tous les droits.
  3. Rendez le fichier config.php accessible en écriture au serveur web.
  4. Ouvrez le site dans un navigateur : vous êtes redirigé vers l'installeur (install/).
  5. Renseignez la connexion à la base, puis créez le compte administrateur, dans le même navigateur : seul celui qui a écrit config.php peut créer ce compte, et plus aucun ne peut l'être une fois l'installation terminée.
  6. Supprimez ou protégez le dossier install/ une fois l'installation terminée. L'installeur se verrouille de lui-même dès que config.php est rempli : depuis la 0.9k, la mise à jour et le transfert sont réservés à un administrateur du jeu, qui saisit son pseudo et son mot de passe dans l'installeur.

Pour développer en local :

php -S 127.0.0.1:8080

Statistiques automatiques

Le classement des joueurs et des alliances se recalcule depuis l'administration (« Statistiques »), ou automatiquement par une tâche planifiée qui lance php tools/stats.php depuis la racine du jeu :

  • Linux (cron, toutes les heures) : 0 * * * * cd /chemin/du/jeu && php tools/stats.php >> /var/log/xnova-stats.log (journal hors de la racine du site) ;
  • Windows (Planificateur de tâches) : programme php.exe, argument tools\stats.php, dossier de démarrage = la racine du jeu.

Sans tâche planifiée, le jeu peut aussi recalculer les statistiques de lui-même, au passage d'un joueur, quand le dernier calcul date de plus de N heures (0.9k : page « Statistiques » de l'administration, réglage des opérateurs et des administrateurs, désactivé par défaut). Un seul calcul tourne à la fois. Le joueur qui le déclenche attend qu'il se termine : sur un gros univers, préférez la tâche planifiée.

Mise à jour et transfert

Les modes « Mise à jour » et « Transfère » de l'installeur prennent en charge :

  • la XNova 0.8e d'origine (même structure de base que la 0.9d) : les mots de passe md5 sont convertis à la première connexion de chaque joueur, et les textes enregistrés à l'époque (noms, messages, textes d'alliance…) sont nettoyés ;
  • toutes les versions de XNova Renaissance (0.9d et suivantes).

Les autres bases (UGamela, versions communautaires 0.9a à 0.9c, Legacies et autres dérivés) ne sont pas migrées. Faites toujours une sauvegarde de votre base avant une mise à jour. Si les accents d'une très ancienne base s'affichent mal (encodage mal déclaré à l'époque), signalez-le : une mise à jour de réparation reste possible.

Depuis la 0.9k, sur un jeu installé (config.php rempli), ces deux modes sont réservés à un administrateur du jeu : ouvrez install/ et saisissez le pseudo et le mot de passe de votre compte administrateur dans le formulaire de l'installeur. Inutile de vous connecter au jeu : après la copie des nouveaux fichiers, n'ouvrez ses pages qu'une fois la base mise à jour (le code de la nouvelle version n'est pas fait pour l'ancienne base). Comme sur la page de connexion, 5 essais ratés pour un même pseudo depuis une même adresse bloquent ce pseudo 15 minutes. Le transfert vers un nouveau serveur, dont le config.php est encore vide, reste ouvert comme l'installation : si vous avez copié tout le site, ancien config.php compris, videz d'abord ce fichier. La mise à jour remplace aussi le mot secret faible écrit par les installeurs de la 0.8e et de la 0.9d (il signe les cookies de connexion) par un mot secret aléatoire : chacun, administrateur compris, se reconnecte une fois.

Hébergement : OPcache

OPcache, livré avec PHP, garde en mémoire les fichiers PHP déjà compilés : sans lui, chaque page recompile une centaine de fichiers (fonctions du jeu, textes, config.php). Le jeu fonctionne avec ou sans ; il est conseillé en production. Réglages conseillés dans php.ini :

zend_extension=opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2

Avec validate_timestamps=1, un fichier modifié (nouvelle version du jeu) est relu au plus tard revalidate_freq secondes après. Avec validate_timestamps=0 (un peu plus rapide), videz le cache, en redémarrant PHP, après chaque copie de nouveaux fichiers ; l'installeur invalide de lui-même la copie de config.php qu'il vient d'écrire. OPcache n'accélère que la compilation : le nombre de requêtes SQL et le traitement des flottes ne changent pas. Son état (mémoire utilisée, taux de réussite) est affiché dans l'administration, page « Informations du serveur ».

Mise en production

  • Ne publiez que le jeu : ni .git/, ni TRAVAUX.md, ni sauvegardes (*.sql, *.bak, config.php~…) dans la racine du site. Un site installé par git clone doit interdire l'accès à .git/ (Apache : RedirectMatch 404 /\.git, Nginx : location ~ /\.git { deny all; }).
  • config.php (connexion à la base et mot secret) : modifiable par le serveur web seulement pendant l'installation, puis en lecture seule (par exemple chmod 440, lisible par le groupe du serveur web). Rendez-le modifiable le temps d'une mise à jour depuis une 0.8e ou une 0.9d (renouvellement du mot secret). Lors d'une mise à jour des fichiers, ne le remplacez jamais par le config.php vide du dépôt : le jeu repartirait vers l'installeur.
  • Dossier install/ : supprimez-le, ou limitez son accès à votre adresse IP, une fois l'installation terminée ; remettez-le seulement le temps d'une mise à jour. La page « Informations du serveur » de l'administration signale un config.php modifiable et un dossier install/ encore présent.
  • Adresse du jeu (administration, « Paramètres du jeu ») : les liens des mails (mot de passe oublié, bienvenue) sont construits avec elle, jamais avec l'adresse envoyée par le visiteur. Elle est remplie à l'installation et à la mise à jour ; changez-la après un changement de domaine ou le passage en HTTPS.
  • Base de données : un utilisateur MySQL limité à la base du jeu, sans le privilège FILE.
  • PHP : display_errors = Off (les erreurs vont dans le journal du serveur) et expose_php = Off ; HTTPS conseillé (le cookie de connexion est alors réservé aux pages chiffrées). Le dossier tools/ ne sert qu'en ligne de commande (il refuse les visites).

Organisation du code

Dossier Contenu
racine pages du jeu côté joueur (overview.php, buildings.php, fleet.php…)
admin/ panneau d'administration
includes/ fonctions du jeu, formules (vars.php), moteur de combat
db/ accès à la base de données (doquery)
language/ textes du jeu (fr, de, es, it)
templates/ gabarits HTML (.tpl)
skins/, images/, css/, scripts/ graphismes, styles et JavaScript
install/ installeur

Le tag v0.8e marque le code d'origine de l'équipe XNova, tel qu'il a été récupéré ; chaque version de Renaissance a ensuite son propre tag (v0.9d, v0.9e…).

Crédits

XNova — équipe d'origine (2007-2008)

  • Raito : fondateur, programmeur
  • Chlorel : chef programmeur
  • e-Zobar : designer, programmeur
  • Flousedid : webmaster
  • Bono, Tom1991, XxmangaxX, juju67, Prethorian : contributions

Bases et code tiers

  • UGamela, par Perberos : base d'XNova
  • Moteur de combat (includes/ataki.php) par jacekowski
  • Code issu de la communauté UGamela allemande (MoF) et de prethOgame (Aleksandar Spasojevic / KGsystem)
  • Forum Britania, pour avoir accueilli XNova à ses débuts

XNova Renaissance (depuis la 0.9d)

  • theptitprince : reprise, modernisation et maintenance (depuis 2026)

Licence

XNova Renaissance est distribué sous licence GNU Affero General Public License v3.0 ou ultérieure (AGPL-3.0-or-later). Le texte complet est dans le fichier LICENSE et les conditions d'attribution dans NOTICE.

En résumé :

  • vous pouvez utiliser, étudier, modifier et redistribuer le jeu librement ;
  • si vous faites tourner une version modifiée sur un serveur accessible à d'autres, vous devez publier votre code source ;
  • conformément à la section 7(b) de la licence, vous devez conserver les mentions d'auteur : les en-têtes des fichiers et la page de crédits du jeu, qui citent l'équipe XNova d'origine et theptitprince (XNova Renaissance).

Jusqu'à la 0.9h, le moteur de combat includes/ataki.php (jacekowski) était sous licence Creative Commons BY-NC-SA 2.5, qui interdit tout usage commercial. Depuis la 0.9i, il est remplacé par un moteur écrit pour Renaissance (includes/functions/CombatEngine.php), qui donne exactement les mêmes résultats : tout le jeu est désormais sous AGPL.

XNova 0.8e était distribué sous GNU GPL sans numéro de version précis. La section 9 de la GPL v2 permet alors de choisir n'importe quelle version publiée par la Free Software Foundation. Le texte de la GPL v2 fourni à l'origine est conservé dans LICENCE.txt.

Sources

About

XNova Renaissance — reprise de XNova 0.8e (clone libre d'OGame, équipe française 2008), modernisée pour PHP 8, corrigé des bugs et failles

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages