Temps écoulé depuis le lancement du projet: 5359 jours       


 

News

Do you SCUMM? (samedi 30 décembre 2006, 12h03)
J'ai plus touché à REborn depuis longtemps, mais j'en ai utilisé beaucoup de code pour avancer dans un autre projet: The Automaton Project, plus orienté IA. Et comme c'est les examens, j'ai évidemment à l'instant extrêmement envie de reprendre le projet depuis le début :p.

Plus sérieusement, c'est en lisant des documents à propos de SCUMM, le moteur de jeu d'aventure graphique de Lucas Games (les fameux Monkey Island, Sam & Max, Full Throttle, ahlala!) que m'est venue l'envie: l'architecture de base, ou du moins le concept, est assez proche de ce que j'avais voulu pour le RPGEngine, déjà avant REborn. La preuve que ça marche était faite avec éclat depuis les années 80, j'ai bien envie de remanier la chose depuis le fond du fond. Mais c'est pas pour tout de suite: les cours, ça change!

J'avancerai dans ce projet ...


Troisième anniversaire ... (samedi 16 septembre 2006, 18h35)
Le 20 septembre, soit dans quatre jours, ce sera le 3ème anniversaire du projet.

Et rien n'a bougé depuis la dernière news!

C'était la news pour enfoncer le clou ^_^.


Treize dites-vous ? (samedi 7 janvier 2006, 23h47)
Cap des 13 000 lignes de code personnel dépassé, et plus de 18 000 avec le code que je n'ai pas écrit. Forcément, quand on travaille sur un système de GUI, ça file ^^. Malheureusement, je constate quelques bêtises dans le design de Eva, ma librairie d'interfaces graphiques. Une partie (petite, ouf) est à recoder, mais j'ai relevé pas mal de choses à faire différemment la prochaine fois, c'est assez handicapant :/. Enfin, c'est quand même mille fois mieux fait que la première :D.

Je m'en vais potasser mon cours de physique, examen lundi.

J'aimerais tant rattraper un niveau présentable rapidement pour REborn...


Dynamisme et architecture (lundi 19 décembre 2005, 20h25)
Le code de REborn avance très bien! Et cette fois-ci, on sent le changement de niveau dans le code. J'ai mal au coeur quand je lis celui de RPGEngine ^_^. Les nouveautés de cette version sont (e.a.):

- Un usage extensif du XML pour décrire tout ce qui s'y prête
- Dans ce cadre, un chargement vraiment dynamique des menus et toutes fenêtres du jeu via du XML, des factory, tout un tas de managers et d'héritage, et puis le tout dirigé par script. C'est un peu compliqué comme architecture, mais elle est en place, c'est élégant et ça permettra très certainement de coder toute cette partie désagréable (le GUI) plus aisément: ce sera scripté ^_^.
- Gestion des styles et de la configuration des touches du jeu etc dans des fichiers séparés XML: moins de hard code.
- Je n'ai vraiment pas peur de créer plein de fichiers cette fois, et ça se sent: 156 fichiers de code jusqu'ici + beaucoup de ressources, et c'est appelé à grandir. Le tout est orgnanisé dans des sous répertoires: l'ordre est un gage pour l'avenir.
- Un système de Game State's bien plus poussé que le précédent, qui rend enfin compte de la dure réalité: l'état de jeu "sur la map" n'est pas un état privilégié, il n'y a aucune raison de le traîter spécialement dans le code: c'est un état parmi d'autre, certes très important, mais comme tant d'autres... C'est ça qui avait bloqué le codage d'un Battle Engine: pas vraiment bien accueilli. Le code de chaque état est situé dans une classe séparée.
- Les Eye Candies (effets visuels) sont traités par des classes: ça permettra enfin de faire mieux qu'un fade in/out, si le coeur m'en dit.
- Les PNJ et les héros sont chargés depuis des fichiers et puis manipulés par script: on n'a plus de statut spécial pour le héros ni de PNJ intégrés aux maps.
- Utilisation de Design Patterns bien pratiques: Singleton et Factory principalement.
- Usage extensif des "delegates" (pointeurs de méthodes)
- La plupart des classes sont autogérées (avec des listes statiques qui en contiennent toutes les occurrences)
- Gestion des ressources automatisée pour textures, polices, sons, musiques et scripts.

Il y en a évidemment encore pour de bons gros mois de code, mais au moins c'est de nouveau agréable à coder ^_^. Ceci dit, difficile de dire si le niveau du RPGEngine est déjà rattrapé, dans la mesure où certains aspects sont de loin dépassés, mais où visuellement et du point de vue interactif on n'est bien derrière. Je n'ai pas encore abordé ce point-là.

(À suivre ...)


Mises à jour (vendredi 2 décembre 2005, 23h11)
Quelques mises à jour ont été effectuées sur le site pour prendre en compte le recommencement du projet. Principalement, c'est la page "avancement" qui a été refaite, et le graphe représente REborn désormais. Enfin ^^. Comme vous pouvez le voir, ça file: déjà près de 11500 lignes de code personnel.

Je ne pense pas poster de preview de REborn avant d'avoir ratteint le niveau visuel de RPGEngine.


Recommencement (samedi 15 octobre 2005, 19h22)
Ça y est: hier soir j'ai pris la peine de créer le nouveau projet: REborn, pour RPG Engine Reborn. Le nom complet:

REborn - A New Fantasy?

Ou comment se moquer de soi-même.

Avec le gestionnaire de ressources maintenant bien installé, le script engine intégré, le gestionnaire OO de la fenêtre OpenGL (avec les événements clavier etc)... Première tâche: le tile engine, évidemment. Un de plus ^^.

À quand un résultat tangible?


Deuxième anniversaire (mardi 4 octobre 2005, 17h57)
Eurmf ... ça fait plus de deux ans maintenant, et toujours rien de définitif. Je recommencerai tout ça un de ces quatre, ça devrait aller bcp plus vite, surtout avec le script engine D++ qui est pas mal rodé.

Mais bon ... avec la vie universitaire, c'est pas trop trop simple de trouver du temps pour coder autre chose que des petits projets. Il ne doit plus y avoir grand monde à lire ces messages :P


Déesse++ - Nouveau Script Engine (jeudi 2 juin 2005, 17h36)
Le tout nouveau Script Engine Déesse++ est prêt depuis quelques jours! C'est un langage C-like, assez simplifié (langage de script oblige... et mes capacités limitées ont aidé dans ce sens :p). Il présente tout de même un ensemble d'atouts pour l'usage que j'en aurai: les RPG:

* On peut facilement rajouter des modules / fonctions au langage avec des delegates (pointeurs de fonctions/méthodes): ça permettra d'ajouter les routines spécifiques du jeu (GetNbObjects(), OpenShop(), Talk()...).

* Les fonctions ainsi ajoutées peuvent mettre l'exécution du script en pause à tout instant, ce qui permet de continuer de rafraîchir l'écran pendant qu'on attend la réaction du joueur.

* Il est bien plus rapide et robuste que le premier langage de script (Déesse), qui était un basic-like (mais ça ne change rien): le typage des variables est beaucoup plus fort et la syntaxe plus souple. Il n'est, comme son prédécesseur, basé sur aucune librairie externe (en dehors de la STL).

* Il est orienté Resource Manager: on pourra sauver les versions parsées (analysées) des scripts dans un manager de ressources, qui permettra de récupérer très rapidemment une version exécutable du script. On peut dès lors exécuter un même script n fois en parallèle sans souci.


Défaut majeur: peu (pas) de gestion d'erreurs et pas de debugger: il faudra scripter juste ^_^.

Le code fait environ 3700 lignes, sans compter la classe de gestion des delegates. J'ai aussi modifié quelque peu l'exemple wxScintilla fourni avec wxWidgets pour faire un semblant d'EDI pour Déesse++. Ça s'appelle Olympe ^_^.

Au fait, Déesse, ça vient de DS qui était à l'origine Dwarf Script (script nain), aucune prétention dans le nom donc ;).


Resource Manager et recommencement (dimanche 22 mai 2005, 16h02)
J'envisage de plus en plus le recommencement pur et simple. Dans cette optique, j'ai débuté l'écriture d'un système de gestion de ressources générique que je pense être assez stable et économe. Pour les textures, la librairie DevIL a été mise à contribution, et pour les polices d'écriture, la petite librairie glFont 2.0 est exploitée. Je vous recommande chaudement les deux! Je devrais bientôt rajouter le support des sons et des musiques, plus que probablement avec FMOD. J'hésite encore à considérer les scripts comme des ressources, bien que ça semble assez sensé comme approche. De toute manière, Déesse++ (le nouveau langage de script) est encore en cours d'écriture, et ne devrait pas être finalisé avant un moment. OGLKL, rebaptisé Eva, le gestionnaire de GUI, est en pause de développement depuis un moment (je le co-développe avec Twxs depuis quelques mois), mais devrait reprendre des forces dans un futur proche. Parallèlement, j'ai écrit un nouveau Framework OpenGL complètement orienté objet et beaucoup plus propre que K2D (désolé CyberKeirua ;)): OGLOO (j'adore les noms barbares). Ce Framework fait usage de l'excellente librairie GLFW.

Si on plug tout ça ensemble, ça fera déjà une bonne base de travail pour la suite :). Peut-être que l'approche de Kenjimax est plus appropriée finalement: il crée plein de petits RPG qu'il essaye de finaliser. Ça lui permet de mieux percevoir les problèmes avant de se lancer dans un gros projet. J'avais vraiment cru pouvoir terminer le RPG Engine du premier coup. Une leçon pour la suite ^^. N'oubliez pas ce qu'on dit: l'homme intelligent apprend de ses erreurs; l'homme sage apprend des erreurs des autres.


Pathfinding (samedi 25 septembre 2004, 17h47)
J'ai codé un algorithme de Dijkstra pour permettre de scripter les déplacements des héros / PNJ sur la carte. Cet algo détermine le plus court chemin (ou en tout cas: un chemin des plus courts) pour atteindre une case indiquée dans le script depuis la case sur laquelle se trouve le personnage au moment de l'appel. La seconde partie de l'algo (déjà codée et fonctionnelle) consiste à faire suivre ce chemin au personnage, frame après frame.

(7720 lignes)


Premier Anniversaire ! (lundi 20 septembre 2004, 17h09)
C'est un petit jour pour l'homme, et rien du tout pour l'humanité: le projet RPG Engine a aujourd'hui un an!

Vous (il y a toujours quelqu'un?) vous demandiez peut-être si le projet était mort, vu la date de la dernière news... Rien n'est moins vrai: le projet est bel et bien toujours en marche, toujours en route, depuis toujours et jusqu'à la fin des temps maître de sa destinée, preuve élégante de l'inertie, fonceur, intrépide et... stagnant. Je le confesse: je n'ai plus touché au code depuis un moment, si ce n'est 2-3 retouches au script engine par-ci par là, notament pour permettre de ne plus placer un espace entre chaque lexème, et pour reconnaître à coup sûr les valeurs numériques (sale bête!).

Qu'en est-il du passé?
Ou: où le projet en est-il après tout ce temps?

Loin! ... de la fin. Mais aussi loin du début, fort heureusement.

*** Ce qui est achevé ou très bien en cours: ***

- Le Tile Engine (c'est-à-dire tout ce qui tourne autour de l'affichage de la carte, du mouvement sur celle-ci, les collisions, les PNJ, les objets, ...)
- Le Script Engine (c'est-à-dire l'interpréteur de mon langage de script 'Déesse')
- Le système de menu (tout le décor est planté pour les utiliser à fond, mais il faut encore les coder)
- Le système de dialogues (complètement achevé, et à la base des menus, il permet d'afficher des informations au joueur, de faire parler des personnages, de demander des informations au joueur, de lui demander de faire un choix...)
- Le système de gestion d'états, qui permet justement l'interactivité, et qui permettra l'insertion des combats

Tout ceci aurait pu être codé en beaucoup moins de temps si: je ne faisais que ça au lieu de toujours m'embarquer dans d'autres projets à court-terme; j'avais déjà de l'expérience en matière de programmation de jeux d'aventure; j'avais déjà codé un langage de script (c'est la partie qui m'a moblisé le plus longtemps, de tous les points pré-cités)

Et l'avenir dans tout ça?
Ou: ce qui est à venir, et absolument nécessaire au projet avant la première beta.

*** Ce qui sera codé dans un futur plus ou moins proche ***

- Un Battle Engine (qui manque désespérément pour l'instant, c'est un gros morceau)
- Un système de gestion des objets, équipements, compétences... (les grands traits ont déjà été définis et permettront d'avancer)
- Les menus en tant que tels, c'est-à-dire l'exploitation du code qui permet leur existence (c'est très pelant à coder, ce qui explique que des semaines sont passées depuis que je suis techniquement capable de les définir...)
- Un sound Engine, pour gérer la musique et les bruitages (je le garde pour la fin, théoriquement c'est l'affaire de quelques heures grâce à FMOD).

Et une fois que le moteur sera fonctionnel?
Ou: combien de temps reste-t-il avant la sortie effective du jeu?

Le moteur devrait être terminé pour dans (peut-être) 6 mois... C'est que j'ai beaucoup d'autres occupations, mais je tiens toujours autant au projet, il ne tombera pas aux oubliettes et sera achevé.
Après, il faudra encore scripter et "grapher" (mot inventé sur le tas pour dire "créer les maps") le scénario, ce qui va prendre pas mal de temps. Pour l'instant, je réfléchis à la possibilité de distribuer le jeu sous forme d'épisodes, au compte-gouttes, car cela permettrait de sortir les premières lignes beaucoup plus tôt que s'il fallait attendre tout le jeu.

Le mot de la fin: c'est pas pour demain, c'est certain, mais cet "anniversaire" ne peut que motiver.
Environ 7330 lignes à ce jour, gardez un oeil sur l'avancée ;) je continuerai de poster des screenshots quand il y aura une amélioration visuelle.

Kirua


CHeros (mardi 10 août 2004, 02h22)
Développement bien avancé du système de statistiques. C'est le premier bout de menu et de gestion "achevé" (ce n'est jamais fini, il va falloir peaufiner la valeur de l'expérience une fois le jeu scripté).

(toujours pour les traces: 7050 lignes)


StatBox, CPersoChoiceBox (jeudi 5 août 2004, 05h07)
De dérivation en dérivation, d'héritage en héritage, les boîtes de dialogue se spécialisent et manipulent des données de plus en plus spécifiques aux besoins des menus. Il est un peu tard alors je reprendrai une autre fois, mais le nombre de classes dérivées à partir de CMenuBase devient assez effrayant ^^

(6700 lignes)


K2DEngine (mercredi 4 août 2004, 16h01)
Encore une migration. Je suis passé à un système complètement OO grâce au moteur de base SDL/OpenGL de Keirua (www.coder-studio.com): K2DEngine (version modifiée, vive l'open-source). Cela a demandé des modifications en profondeur, mais a permis d'éliminer les déclarations "extern" du code: on gagne en propreté. Basiquement, ce module remplace juste ma classe de fenêtre SDL.

Ce même changement a donné lieu à un passage du loader de TGA de Nate Miller à celui de Funto (modéro coder-studio.com), qui supporte la compression RLE, un gain de place drastique! Merci à tous les deux.

Parallèlement à cette évolution du code, un meeting avec le scénariste a permis de définir plus précisément le mode de jeu, et va permettre l'élaboration du système (complexe) de menus, et plus tard le développement du Battle Engine, en suspend depuis tellement longtemps.

PS: Je pense de moins en moins pouvoir finir le moteur en moins d'un an, la date limite étant le 20 septembre 2004, et je passe beaucoup moins de temps à programmer que par le passé. Quoi qu'il arrive, le projet sera mené à terme.

(toujours pour mes traces: 6480 lignes)


CAssocChoiceBox, CGridBox, nsGame (mercredi 28 juillet 2004, 01h51)
Je poursuis le développement des classes dérivées de CMenuBase et de ses enfants pour varier les types de données pouvant être affichées à l'écran (principalement pour le développement futur des menus et du battle engine qui va nécessiter l'affichage de beaucoup d'informations), et parallèlement j'essaie d'avancer dans la modélisation du système des équipements, des objets, des compétences, des techniques... Je remplis pas mal de feuilles de notes, ce qui explique que le code peut parfois stagner sans que le projet ne soit en pause.

6330 lignes environ (je note ceci uniquement pour garder une trace de la progression)


Portage du projet grâce à la SDL (samedi 26 juin 2004, 18h52)
Je me suis occupé de récrire la classe CFenetre (anciennement fenêtre Win32, maintenant fenêtre SDL) et la gestion clavier afin de rendre le jeu compilable sous Windows, Linux, et normalement tous les OS supportés par SDL et qui peuvent gérer des applications graphiques OpenGL et compiler du C++. Pour rappel, le code source ne sera disponible qu'une fois le projet terminé. [aucun test de compilation sous Linux n'a encore été réalisé]

A noter que cette modification a également considérablement réduit la longueur du code (6050 -> 5750 environ).


Nouvelle classe (dimanche 13 juin 2004, 12h54)
Et rebelote, encore une nouvelle classe: CEtat. Elle permet une gestion bien plus avancée des statuts du jeu que ce que j'avais implémenté avant (juste une variable et quelques #define). Désormais, les états ont trois niveaux de précision et sont empilés, ce qui permettra à l'avenir d'ouvrir des fenêtres de dialogue par dessus d'autres sans perdre le contrôle des premières (indispensable pour les combats).

En plus de ça, j'ai pu raccourcir le code significativement grâce aux méthodes virtuelles et à cette nouvelle classe. Donc non, le projet n'a pas régressé, j'ai juste condensé le code, ce qui est une bonne chose.


Modification des classes (lundi 24 mai 2004, 18h22)
Bonjour (me demande si ça vaut la peine d'écrire bonjour, dans la mesure où je ne sais pas si "on" me lit ^_^).

J'ai plus où moins remis la main à la patte en améliorant l'architecture de mes classes d'affichage de boîtes d'info/saisie (c'est-à-dire les boîtes de dialogue, demande de choix, demande d'une chaîne de caractère/nombre entier/nombre réel ...) grâce aux méthodes virtuelles. C'est beaucoup plus propre, plus beau, plus esthétique (je le clame haut et fort, les codes sources doivent être BEAUX ^_^').

Quant à la suite du projet, dès que j'aurai eu le courage d'aligner le début du code du Battle Engine, ça ira vite (pour le diagramme des lignes de code en tout cas ^^), le tout est de commencer, et pour ça, il faut de la volonté (sic!). Heureusement que c'est bientôt les exams ;)


Pause (vendredi 21 mai 2004, 05h11)
Je manque de motivation en ce moment... et puis j'ai pas mal d'autres choses en tête qui font que j'ai du mal à m'attaquer à la suite du projet. Je reprendrai dès que ça ira mieux, mais je terminerai ce projet, c'est une certitude.

PS: pour ceux qui connaissent, je me suis frotté à wxWidgets et c'est vraiment une librairie incroyable, adoptez-la :-) J'ai écrit un programme de graphiques (math) en 2 jours (ou plutôt deux nuits si on en juge par l'heure de ce message ^^) et le résultat est très satisfaisant!


Barre psychologique (dimanche 25 avril 2004, 00h44)
La barre des 6000 lignes de code pour le moteur a été dépassée à l'instant (6017). Cet incident tragique est survenu alors que je codais (et achevais) la nouvelle classe CInputBox (cf. screenshot d'aujourd'hui). Malgré mes pauses dans le développement, le code avance bel et bien, un gage pour la suite!


Avancement (jeudi 15 avril 2004, 13h14)
Le langage de script est maintenant "terminé" (ça c'est un mot qui appelle la découverte de bugs), et débuggé un peu plus avant. Nouveautés: boucle "for" + break/continue.

Les "ChoiceBox" (boîte de choix) peuvent maintenant être dimensionnées pour afficher x choix tout en en ayant plus à proposer (ils scrollent donc dans la fenêtre).

Pour le Battle Engine (que je dois encore commencer, mine de rien), encore une fois plein d'idées qui se sont bousculées... Je voudrais être original et en même temps coller au principe des bons vieux RPG (pourtant tous différents!). Le système proposé par olivier, cité plus tôt, est trop complexe. Peut-être une adaptation de celui-ci...


Six mois (samedi 20 mars 2004, 15h25)
Cela fait six mois maintenant que le projet est lancé. Je ne travaille plus sur le projet depuis 3 jours, histoire de respirer. Je reprendrai le travail dès que j'aurai rempli la jauge de motivation.


Système de combat (jeudi 18 mars 2004, 17h58)
Olivier (un ami programmeur) a eu une idée très attrayante pour le système de combat, et a eu la gentillesse de m'en faire part. Ce sera probablement le système du jeu final, même si il requiert une gestion ardue de l'IA des autres personnages. Je ne vous en dis pas plus, s'agirait pas que l'idée fasse son chemin sur la route d'un autre ;-) Ce message est juste là pour dire que cette partie là est assurée. Reste à ... la coder.


Boîte de Choix (dimanche 7 mars 2004, 19h33)
La classe CChoiceBox est écrite et débuggée. Le choix réalisé par le joueur est analysé par script, on peut donc imaginer toutes les réactions possibles selon la réponse et les scripter. Dans le preview actuel, vous pouvez vérifier ça en parlant avec la Dame en Rouge.


Animation de la boîte de texte (dimanche 29 février 2004, 03h47)
J'ai écrit une nouvelle classe de base pour les menus que j'ai déviée (pas dérivée) pour en faire une boîte de texte animée (elle s'ouvre rapidement depuis le coin supérieur gauche, mais d'autres effets seront possibles, tout est prévu pour). J'ai aussi placé l'affichage du framerate dans la fenêtre (mon timer bloque les FPS à 30-33, c'est si vous avez moins qu'il y a un problème).


Interaction avec les PNJ (jeudi 26 février 2004, 16h40)
Plus question de marcher sur les autres personnages maintenant (autant PNJ que autres héros, lorsqu'il y en aura). Les collisions sont propres (intersections de rectangles) et on peut également parler aux autres êtres vivants (mais pas seulement parler, puisque la réaction est scriptée).

Une autre modification: les personnages sont dessinés dans le bon ordre, ce qui fait que si vous êtes derrière un PNJ vos pieds ne sont plus devant son visage ^^

Au passage: barre psychologique des 5000 lignes de code (pour le moteur) dépassée.

PS: PNJ ça veut dire Personnage Non Joueur


Bâtiments (mardi 24 février 2004, 23h29)
Maintenant, non seulement on peut entrer dans les bâtiments et changer de carte à volonté grâce aux scripts, mais en plus quand on sort d'une maison on arrive à l'endroit logiquement prévu à cet effet, c'est-à-dire la porte. Fichu casse-tête, je ne vous le cache pas.


Lancement du site (lundi 23 février 2004, 19h58)
J'ai assemblé ce site en 48h pour présenter mon projet en cours depuis déjà plus de 150 jours. Ça donne une touche de plus au sérieux du projet. Alors que j'écris ces lignes, le code source du moteur compte près de 4700 lignes et l'ensemble du projet plus de 6000. C'est aussi l'heure des Guignols de L'info, bonne visite sur ce site!