Cette page appartient aux archives web de l'EPFL et n'est plus tenue à jour.
This page belongs to EPFL's web archive and is no longer updated.

ColdC, Genesis, ColdCore et al

Savez vous ce qu'est un MUD ? Multi User Dungeon, l'ancêtre de nos MMORPGs courants. Pensez World of Warcraft, mais avec la pureté ergonomique du mode texte (Les GUI peuvent brûler en enfer, nous sommes tous bien d'accord, hein ?) Quitte a perdre du temps sur un jeu en ligne, j'apprécie l'aspect d'évolution et de construction des RPG, ainsi que la liberté offerte par le mode texte, autrement stimulante pour l'imagination. Mais là n'est pas le débat.

Il existe sur le net plusieurs logiciels implémentant le concept, de manière plus ou moins générique. Parmis ceux-ci, j'ai découvert une obscure référence vers cette plateforme: http://www.cold.org.

D'après les dates mentionnées sur le site, le projet a démarré il y a plus de dix ans. Le système se décrit comme une Base de données orientée-objets, a code mutable en runtime; il inclut un langage (ColdC), une machine virtuelle (Genesis) et un compilateur dédié. Le langage est orienté objet, à héritage multiple, supporte les listes et les dictionnaires nativement, et surtout supporte la modification de son programme sans redémarrage; les objets sont persistants, et sont sauvegardés de manière asynchrone sans interruption de service. Une combinaison de fonctionnalités peu commune, mais dont l'intérêt dans le cadre d'un MUD est évident: plus besoin de rebooter le processus serveur, et donc d'interrompre potentiellement des centaines de joueurs, pour un changement de code. La machine virtuelle fournit les fonctions de base d'I/O réseau et la persistence des objets, tout le reste des fonctionnalités tenant dans une bibliothèque dont la totalité est modifiable interactivement depuis le système lui-même.

J'ai été impressionné par les spécifications, et je ne comprends pas encore pourquoi ce projet n'a pas connu une diffusion plus large. Problème de performance ? Intérêt trop restreint ou mauvais marketing ? manque de diversité dans les environnements pré-fournis ? Complexité excessive ?

Pour l'instant, la seule solution que je puisse imaginer qui soit équivalente et basée sur des technologies "En vogue" serait une collection de classes Python. (Je soupçonne que Python est a même d'implémenter ce mécanisme de modification dynamique du code, mais n'en suis pas certain). Je soupçonne également que Zope serait capable d'un travail équivalent, mais j'ignore si Zope peut être facilement découplé du support web.

J'hésite donc entre me plonger dans les quelques 50000 lignes de ColdC constituant l'implémentation "stock" d'un MUD générique (ColdCore), pour l'adapter a mes besoins, M'orienter vers Zope, ou réécrire le noyau de base en Python (je n'ai pas l'habitude de Python, Perl occupant déja sa niche principale dans mon cas.)

Suggestions, quelqu'un ?
Posted by Maxime Augier on Monday 4 April 2005 at 22:53