Hello les gens!
Vous m’aviez demandé un post-mortem, et vu qu’une image représente bien plus que des mots, j’ai ressorti le projet (et galéré pour l’adapter en PHP7.3 c’était un vieux PHP5.6) pour vous montrer l’état des choses sur la toute dernière version.
Désolé pour l’enregistrement totalement fait à l’arrache, vous aurez même droit au bruit de fond de mon bureau 
Évidemment c’est tout buggy, vu que j’ai réadapter le strict minimum pour « afficher quelque chose » (d’ailleurs on voit un tooltip qui se charge pas à un moment).
Bon bref, postmortem.
J’ai vérifié mon repo git, le dernier commit sur le projet date de… aout 2018… ce qui correspond peu ou prou à la fin de mon dernier emploi; comme quoi, 2011-2018 j’aurai été pugnace (malgré la naissance de deux enfants). Certes il y aura eu de longues périodes de pauses dans le développement, les périodes de pauses (de mémoire) étant souvent arrêtées par « hey ca donne quoi magna stella?! »; ce qui au final aura fait plus de dommage que de bien au projet, vu que je ne savais absolument plus ou je m’étais arrêté entre temps.
Le jeu aura vu 3 versions (et interfaces utilisateurs), les GZ n’auront vu au final que la première. La seconde version a eu un succès d’estime (150 visiteurs par jour à une période, c’est aussi curieusement là ou je bossais le plus dessus
); sur la dernière version (celle que j’ai montrée en vidéo), j’avais tenté de migrer le serveur sur du websockets en Java parce que le serveur en version PHP (qui n’était qu’une version glorifiée d’un cronjob qui tournait toutes les 10 secondes) montrait largement ses limites (crashs inexplicables, etc…).
Malheureusement, sur la fin, je n’arrivais carrément plus à me focaliser sur l’essentiel du gameplay (certainement par faute de manques de retours, vu qu’à part @Nostra et @Helmut_de_Bouffy plus personne ne trainait vraiment sur le serveur).
Je pense que j’aurai du complètement pousser le jeu au moment ou j’avais du monde dessus et en faire de la pub; c’est pas mon métier. Combiné à un syndrome de l’imposteur (je pense) + j’aime pas embêter les gens, on a vu ce que ca a donné.
Les problèmes du jeu
Le plus gros problème que j’ai eu au final, sur le jeu, c’était la partie que je pensais être la plus facile: la gestion des ressources. Tant que les ressources étaient gérées au niveau de l’entité (soit une planète, soit une flotte) tout allait bien; mais le parti pris (gestion de flux de ressources, plutot que des ressources « en dur ») devenait extremement compliqué quand on faisait intervenir des ressources d’entités externes.
Je ne sais pas si vous vous rappellez, mais un exemple sera peut etre parlant:
Si une planète produisait 20 ore par minute, et que vous désiriez construire quelque chose qui coutait 200 ore, ca mettait 10 minutes a construire. Si vous rajoutiez une autre fois le meme batiment qui coutait 200 ore, ca attendait 10 minutes, et puis ca le finissait au bout de 20.
Maintenant qu’est ce qui se passait quand le batiment utilisait deux ressources pour construire? Ca prenait le ratio cout/production le plus désavantageux.
Jusque là, tout allait bien. Les problèmes ont commencé à poindre avec la gestion des trade routes, les blocus, etc; sans compter les ressources « bizarre » comme la population qu’on pouvait tantot assigner à l’extraction de minerai, tantot à la bouffe etc…
Je me suis bien pris le pied dans le tapis avec ca.
Gestion du carburant
Vous aurez aussi peut être souvenir de la gestion du fuel de la deuxième alpha, qui avait été catastrophique. J’ai complètement fait un roll-back la dessus lors de la version 2, et « fixé » les routes entres les systèmes solaires ce qui empêchait les frappe en profondeur à 15000 années lumières.
Le seul truc que j’avais gardé, c’est la notion de « CPU » renommé en « vitesse hyperspatiale » qui permettait d’avoir des notions de vaisseaux rapide (des sondes) et des vaisseaux lents (les gros motherships). Naturellement une flotte comprenant un mix de vitesses allait toujours à la vitesse la plus lente.
C’était un des meilleurs move de gameplay je pense, ca a transformé le jeu en un jeu de positionnement, ou chaque système devait être aprement défendu pour étendre son empire. Combiné au fait que les flottes pouvaient être mises en mode « patrouille » et attaquer automatique les hostiles et/ou neutres, vous pouviez dormir sur vos deux oreilles (et recevoir un rapport de bataille par email si jamais quelqu’un tentait de vous taper dessus).
Le brouillard de guerre
La dernière version de magna stella gérait aussi un brouillard de guerre qui avait vocation à forcer les joueurs à communiquer entre eux ou faire des alliances d’exploration (les joueurs pouvaient se partager la visibilité).
Chaque système disposait de 3 status pour chaque joueur: inconnu, exploré, et visible. Quand le système était inconnu, la seule info que vous aviez dessus, c’était l’étoile qu’il y avait dans le système. Pas d’infos sur les planètes, pas d’infos sur les anomalies, pas d’infos sur les potentiels pirates. Pour en savoir plus, il fallait envoyer un vaisseau sur place: dans ce cas là, le système était « visible » et vous aviez accès à toutes les infos possibles: détails des flottes, etc…
Si vous n’aviez plus de présence dans le système (flotte ou planète), il passait alors en mode « exploré »: vous n’aviez plus que accès à l’étoile, et aux infos « basiques » des planètes genre leur taille, type, etc… bref tout ce qui ne change pas dans le temps.
Qu’en reste t’il ?
Quand j’ai démarré magna stella le language PHP était un des plus utilisé sur le web, mais en 2010, il n’y avait aucun écosystème sain (à mon souvenir): pas de composer (gestionnaire de paquets), pas de PSR etc… hell, le projet était encore en 5.6 il y a un jour (avant que je vous fasse la capture).
Toutefois, j’ai vraiment appris un tas de trucs en développant ce projet; des tas d’algos sympas (Triangulation de Delaunay, A* pour les plus connus). Et j’ai eu le nez creux en séparant le code « métier » de magna stella du code commun; j’ai pu en extraire tout un tas de code utile pour d’autres projets, notamment mon site perso sur le JDR warhammer.
J’ai aussi pu jouer avec des shaders (les étoiles, les routes avec les flèches qui bougent etc sont entirèrement du code shader GLSL), three.js.
Bref, j’ai adoré bosser sur ce jeu (même plus qu’y jouer en fait), et le simple fait de le rementionner ici, le fait que vous en ayez eu souvenir (bon ou mauvais) c’est aussi pour ca que je
Geekzone.
Si vous avez des questions, n’hésitez pas. Après le projet est loin dans ma tête mais je dois certainement pouvoir vous répondre 
edit: j’ai retrouvé comment embed la vidéo 