Mines of Elderlore: welcome Libtcod!

I have been following Libtcod for a long time, since it is probably the most promising project related to roguelikes published on the past years. What I was missing was a good reason – and some motivation! – to dive in it and code my own Libtcod roguelike.

On the other hand, the next 7DRL is arriving; Mines of Elderlore, my 7DRL attempt some years ago, made me realize that coding under time pressure, with a common goal with some other folks, can be a really stimulating experiment and good way to produce something that simply works.

So I would really like to try to create a 7DRL roguelike under Libtcod this year. But what I need first is to improve my knowledge in this library, and, well yes, practice a little my oldy pythonic skills. And what better subject for this than my old 7DRL Mines of Elderlore?

Adding Libtcod was easier than I would have expected. The python files were already set to handle different displaying libraries (Curses and Pygame), and Libtcod is very well documented and supported by its author Jice, so only a few hours were necessary to provide this first version.

You can download the game there:

The state of the game is far from completed: it is just a work in progress, still playable from the beginning to the end (I hope…), but some features and details are lacking.

You can tweak the moe.ini file to change the screen size, set it to fullscreen, and some other more-or-less explicit parameters. F1 to F4 keys provide in-game help.

Armes de guerre offensives et défensives

Un trésor de guerre

Viollet-le-Duc a publié deux dictionnaires, un d’architecture en 10 tomes, et un sur le mobilier, en 6 tomes, dont les deux derniers traitent plus particulièrment des armes de guerre offensives et défensives.

Ces ouvrages sont depuis longtemps dans le domaine public, et leurs illustrations également, et sont disponibles en téléchargement sur archive.org. Elles constituent un véritable trésor culturel que tout le monde peut utiliser, pour peu qu’elles soient mises en ligne. Le seul droit qu’on peut leur associer est le droit moral, qui impose notamment de respecter la paternité de l’auteur sur sa création par une citation de son nom et de sa qualité.

Copier ce n’est pas voler

J’ai donc entrepris de mettre en ligne ces illustrations, en reprenant chaque page scannée des tomes 5 et 6 du dictionnaire du mobilier de Viollet-le-Duc, en extrayant chacune des illustrations et en les publiant ensuite sur Wikimedia (grâce notamment à l’outil Commonist sous licence libre qui permet de mettre en ligne plusieurs ressources en une seule passe).

Chaque fichier est au format png, en noir et blanc, sous le nom 05-xxx pour le tome 5 et 06-xxx pour le tome 6, avec xxx faisant référence au numéro de la page scannée sur archive.org.

Comment participer

Il reste encore pas mal de choses à faire sur les illustrations de Viollet-le-Duc; en vrac:

  • ajouter une description à chaque illustration que j’ai publié (j’ai seulement mis le nom du livre et le tome dont elle est issue)
  • publier les illustrations des 4 autres tomes du dictionnaire du mobilier sur Wikimedia
  • publier le texte et les illustrations du dictionnaire du mobilier sur Wikisource (le dictionnaire de l’architecture y est déjà)

Toutes les bonnes volontés sont les bienvenues!

Illustrer Elderlore

Je pense utiliser ces illustrations dans le guide du jeu, que j’ai commencé à rédiger, et aussi en illustration de certaines armes et armures d’Elderlore.

En attendant, je vous souhaite à tous un Joyeux Noël!

Les peintures d’Albert Bierstadt

Among_the_Sierra_Nevada_Mountains

A. Bierstadt

Albert Bierstadt est un peintre du 19ème siècle, dont les paysages peints, étonnament modernes, ont un je ne sais quoi qui colle assez bien avec un univers de fantasy.

Étant mort depuis plus de 70 ans, ses peintures sont tombées dans le domaine public et librement réutilisables. C’est celle représentée ici en vignette, que j’ai travaillée pour illustrer l’entête du site.

Pour être tout à fait honnête, il reste une polémique, ou au moins un sujet de débat, entre la licence de l’œuvre elle-même, le domaine public, et le droit sur la reproduction de ces images. Je vous renvoie vers l’excellent article du Framablog pour plus d’explications.

Changement du moteur de blog: bienvenue sous Wordpress!

logo wordpress

Pour blogger sur les développements à venir, il me faut une infrastructure web facile à utiliser, simple à maintenir, et quand même suffisemment puissante et modulaire pour répondre à tous mes besoins. Aujourd’hui, j’ai un wiki sous Dokuwiki, un planetlike sous MoonMoon, des blogs sous Dotclear, Drupal et Joomla, et un outil de debugging sous Flyspray. C’est le bordel!

Il faut que je regroupe tout ça sous un unique outil de communication. J’ai commencé à tester Wordpress. Les fonctionnalités qu’il doit offrir sont nombreuses:

  1. pouvoir migrer mes anciens messages dessus:
    • Les messages du Dotclear blog.elderlore.com sont migrés grâce à l’outil de migration natif de Wordpress;
    • Les messages et les commentaires du Drupal landsof.elderlore.com sont migrés, en tout cas les plus importants;
    • Les messages du Joomla portal.elderlore.com ne sont pas encore migrés;
  2. intégrer le Planet Roguelike, ou en tout cas un agrégateur de flux affichant les billets des développeurs de roguelike et renvoyant vers le site d’origine:
    • l’intégration du Planetlike MoonMoon sous Wordpress est une vraie sinécure, et en tout cas au-delà de mes maigres compétences en php et css :-(
    • l’extension Feedwordpress fonctionne plutôt bien, surtout couplée avec Sticky Wordpress Categories and Tags pour ne pas afficher les billets du planet sur la page d’accueil. C’est d’ailleurs elle qui tourne en ce moment. Il me reste encore trois problèmes à régler:
      • impossible de changer les permaliens en quelque-chose de plus sympa, car sinon les liens sur les titres des billets du Planet Roguelike ne fonctionnent plus;
      • il n’y a pas encore de Widget listant les auteurs du Planet Roguelike;
      • il manque aussi un formulaire permettant de me soumettre un nouveau flux pour le Planet;
  3. gérer plusieurs langues, c’est-à-dire dont l’interface est localisée, et qui facilite la rédaction de billets sous plusieurs langues:
  4. intégrer mon wiki sous Dokuwiki:
    • l’extension dw2wp ne fonctionne plus avec la dernière version 2.8 de Wordpress. Mais son auteur, que j’ai contacté cette semaine, m’a dit très gentiment qu’il essaierai de le rendre compatible après les fêtes.
  5. disposer d’un système de galerie d’images pour afficher des captures d’écran des jeux et illustrer mes billets:
    • la fonction native de bibliothèque Média de Wordpress est pratique, surtout avec l’extension Media Tags;

Wordpress permet donc de quasiment tout faire, nativement ou par le biais d’extensions, à l’exception peut-être de Dokuwiki. Le nouveau site avance bien, j’espère avoir fini prochainement.

Elderlore, le roguelike: plan de bataille

Bilan et perspectives

Elderlore est un roguelike ambitieux que j’ai développé pendant quelques années. Peut-être un peu trop ambitieux justement puisqu’après avoir sorti quelques versions non jouables, j’ai interrompu son développement, un peu noyé je dois dire sous les lignes de code et probablement mon manque d’expérience pour gérer un aussi gros paquet de lignes de code.

J’ai ensuite développé un 7DRL, Mines of Elderlore, beaucoup plus modeste – 10 niveaux superposés, 10 types de monstres, 4 armes différentes -, que j’ai ensuite amélioré pour affiner le gameplay et ajouter des graphismes sous Pygame.

Avec le recul, je pense que cette échelle de temps – une dizaine de jour pour faire un prototype fonctionnel, un ou deux mois ensuite pour affiner les détails et le gameplay – me convient bien pour développer un jeu: elle est suffisamment longue pour obtenir quelque chose d’intéressant, et quand même assez courte pour forcer à se concentrer uniquement sur l’essentiel, profiter du résultat et communiquer dessus (release early, release often).

Modèle de développement

Pour reprendre le développement d’Elderlore, je pourrai restreindre mes ambitions et tenter de le faire rentrer dans ce schéma. Une autre solution, qui a ma préférence, est de scinder le jeu en plusieurs modules que je développerai indépendamment. L’idée ici est de regrouper les fonctionnalités d’Elderlore de manière intelligente, de telle façon que l’avancement de chaque module impacte les autres le moins possible.

Chaque module sera développé en deux étapes:

  • une première étape destinée à répondre aux objectifs premiers, sera développé en 10 heures non consécutives (10HRL).
  • Une seconde pour développer les concepts, ajouter des graphismes 2D et corriger les bugs identifiés, avec un objectif de 100 heures de développement (100HRL).

Cela me permettra, à chaque fois que je m’attellerai au développement d’un des modules, de quantifier mon avancement et d’en faire un suivi rigoureux sur ce blog. J’espère ainsi réduire au minimum les perturbations

Les modules

Voila ci-dessous les différents modules que j’envisage de mettre en route progressivement. Chaque module incarne une ou plusieurs activités que le joueur pratiquera dans Elderlore, à savoir explorer, combattre et progresser dans les voies du commerce, de la connaissance et de la maitrise des armes.

Worlds of Elderlore

Ce module est le socle de base qui permettra de façonner le monde sur lequel le joueur évoluera. Il reprendra des bouts de code issus des premiers développements de Lands of Elderlore, comme l’altitude, les montagnes, l’écoulement des rivières ou la position des forêts.

  • Activité: Explorer
  • Création de mondes sphériques, avec un pôle nord et un pôle sud
  • Gestion de l’altitude, création des mers
  • Gestion de la température et de l’hygrométrie
  • Création des montagnes
  • Création des rivières, des lacs et des marais
  • Création des forêts, des marais et des déserts
  • Objectifs 100HRL: Affiner la carte sous Pygame + OcempGui
  • Génération des noms pour chaque formation naturelle (continents, mers, rivières, montagnes, forêts, marais, déserts)
  • Gestion des climats et des saisons (avec influence des montagnes sur le climat)
  • Ajout de tuiles graphiques avec gestion des transitions
  • Ajout d’une GUI pour jouer sur les paramètres de création du monde
  • Création d’un effet parchemin (filtre Sépia + texture de parchemin)
  • Ressources:

Realms of Elderlore

Ce module permet d’intégrer des royaumes médiévaux aux mondes générés dans le module Worlds of Elderlore.

  • Activité: Explorer
  • Objectifs 10HRL: Créer la carte d’un monde médiéval (géographie, histoire)
  • Pré-requis: Worlds of Elderlore 10HRL
  • Ajout de ressources naturelles en fonction du type de terrain
  • Placement des villes en fonction des ressources naturelles
  • Création des routes entre les villes
  • Création des royaumes
  • Évolution simple des villes et des royaumes au cours du temps
  • Objectifs 100HRL: Affiner la carte sous Pygame + OcempGui
  • Génération des noms pour chaque formation artificielle (ville, route, royaume)
  • Évolution complexe des villes (extension sur plusieurs cases avec ajout de tuiles graphiques pour les villes sur plusieurs cases)
  • Évolution complexe des royaumes (diplomatie, guerre, colons) dans le temps
  • MAJ de la GUI pour intégrer les paramètres de gestion des villes et des royaumes
  • Ressources:
  • A Magical Medieval Society: Western Europe

Blades of Elderlore

  • Activité: Combattre, Progresser
  • Objectifs 10HRL: Simuler des combats simples dans une arène façon The Doryen arena
  • Feuille de personnage simple finale
  • Pyramide des compétences
  • Gestion de l’inventaire martial simple
  • Mise en place des combats simples
  • Objectifs 100HRL: Simuler des combats complexes sous Pygame + OcempGui
  • Feuille de personnage finale
  • Background des armes et armures
  • Mise en place des combats tactiques
  • Simulation des dynasties de joueurs
  • Sauvegardes et scores en ligne
  • Tuiles graphiques
  • GUI
  • Ressources:

Trades of Elderlore

  • Activité: Commercer
  • Objectifs: Permettre l’artisanat et simuler les échanges commerciaux entre villes
  • Un système économique simple basé sur l’offre et la demande entre les villes et leurs ressources
  • Des biens dépendant des ressources locales et permettant un artisanat simple
  • Des routes terrestres et maritimes entre les villes
  • Des caravanes et des navires marchands
  • Ressources:

Cities of Elderlore

  • Activité: Explorer
  • Objectif: Créer des villes médiévales réalistes
  • Qui s’adaptent à la géographie du site (bord de mer, forêt, désert, embouchure de rivière, …)
  • Qui contiennent différents bâtiments (différents types, différentes qualités)
  • Qui sont peuplées d’habitants ayant leur vie propre
  • Qui ont des égouts et des catacombes
  • Ressources:
  • Cityscape
  • Cityworks

Lands of Elderlore

  • Activité: Explorer, commercer, combattre, progresser
  • Objectif 10DRL: Créer un modèle détaillé à partir d’une carte du monde
  • Avec une vue isométrique (et gestion du relief façon pytile?)
  • Avec des rivières à base de courbes de Bézier (Ubrarum Regnum, PlayTechs)
  • Détail des zones à base de fractals
  • Ressources:
Categories: Journal de Bord Tags:

Dev diary

Here are some news about my last developments.

Things are not progressing very fast, I would like to release version 1.0 of Mines of Elderlore before going on with Lands of Elderlore, and real life didn’t left me a lot of spare time and energy.

Anyway I’ve found a nasty bug that was roaming around from the beginning in MoE, and now keymovies are efficient at last. What are keymovies? Only records of previous play in the form of keypressed and random seeds that can be played back.

I’ve also coded some PHP and now high scores can be pushed to some website. This feature will be in the 1.0 release; I hope I’ll publish it soon! I think I should try to release soon and often, but that’s easier to say than to do.

Concerning this website, I’ve uploaded some screenshots in several image galeries; I’m still having a hard time mastering Drupal, but I progress slowly in my knowledge of this CMS.

Finally, I’ve migrated my laptop to Hardy Heron, the last Ubuntu release that was published some days ago. Most of the migration process consisted in backing up my data; once this backup done, it only took about an hour to install the new system, install the useful packages (Eclipse, pydev, pygame, numeric-ext, ocempgui, psyco), and find my usual development environment. This heron is very hardy indeed!

Categories: Journal de Bord Tags:

Mines of Elderlore 1.0 beta 4 is released

I’ve release beta 4 of Mines of Elderlore. Final version is close, here is the changelog so far:

  • [Bug] It is now really possible to hit monsters with axes and warhammers while in fuzzy mode.
  • [Bug] In pygame mode, you can use ‘1′ to ‘4′ keys from the keypad to change your equipped weapon.
  • [Bug] No more crashing to desktop when hitting a wrong key under moe-pygame.
  • [Feature] In pygame mode, a menu is displayed to play multiple games without quitting each time.
  • [Feature] In pygame mode, if ‘random’ dungeon selected in ‘moe.ini’, the same random dungeon will be proposed from game to game.
  • [Feature] On floor level ‘n’, monsters can only progress to level ‘n + n-1′.

You can get the windows binary at:
http://downloads.sourceforge.net/elderlore/moe_windows.1.0beta4.zip

And the source release at:
http://downloads.sourceforge.net/elderlore/moe_source.1.0b4.zip

After unzipping it, you can launch the game with:
- moe-pygame.exe (graphical version) or moe-curses (ascii version) under Windows
- python moe-pygame.py (graphical version) or python moe-curses.py (ascii version) under a real Operating System  Wink

There is a readme.txt file pretty complete about the game in the folder. Have fun!

Mines of Elderlore 1.0 beta 2

Next beta release of Mines of Elderlore is nearly there; here is the changelog so far:

  • sword charge is now effective only if the player hits the monster in the same direction of his charge
  • inventory now displays te player active weapon min and max damage
  • mushrooms cannot be dropped on stairs anymore
  • player can rest and eat mushrooms while in berzerk mood
  • weapon flavor names have been changed
  • monsters are now different kinds of demons
  • the status bar displays HP and mood in different colors
  • player can get higher than level 10
  • readme.txt file updated

I should release it this week-end. And a great thank you to Adral for his enthusiastic feedback and support on Roguetemple forum !!!

Edit: files are released on sourceforge. You can get them at:

Categories: Journal de Bord Tags:

Genèse d’un 7DRL

Mine de roguelike

I have been developing a little roguelike during last weeks, named Mines of Elderlore. This game has been created for the 7 day roguelike challenge, the code was only one file. I wanted it to be full GNU/GPL v2, so that it may be of some help for anyone interested.

I started developing it with simple needs in mind: I wanted to create a little roguelike around the new dungeon generator I had just created for Lands of Elderlore, my other roguelike. And I wanted to test how I could implement those simple features:

Permanent levels

Well, not only permanent levels on your computer, but on every computer of every player! So that when you provide (automatically or by player input) a dungeon name, the same levels will always be created.

Python is a great language for this, and it is really easy to store dungeons in a dictionary and save games with the pickle module.

A common risk when creating permanent levels is to reduce the amount of space to explore for the player: once every level crawled, what can he do ? So I decided to create two downing stairs for every level, each one leading to a different -and permanent- level.

There are 9 floors in Mines of Elderlore. That may not seem a lot, but with this ‘two-stairs’ design, you can have as much as 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 = 511 different floors!

Having permanent levels provides a great advantage: player can compare their scores. I did not have time to implement it yet, but I plan to provide an online display of every player scores on landsof.elderlore.com. By sending their keymovie files, not only players will be able to compete with each other, but when published online their movies will inspire other players and challenge them to perform better! Some kind of Massively Mutliplayer Offline Role Playing Game ;-) .

Easy gameplay

Roguelikes can have a steep learning curve for new comers, and to my point of view every effort to ease their first roguelike experiment should be cherished.

First idea is to display symbols with two ascii characters. So that the player can see at a glance what weapon he is wearing, what level is the monster in front of him, and so on. Simple and effective. And with fonts twice as high as large, symbols are displayed perfectly squared!

Then I tried to add weapon special attacks based on the player movements rather than additional keys or over complicated RPG skills. Charging is maybe the simplest example: by moving in the same direction during several rounds, you increase your ‘charge’ amount, and if you manage to hit a monster at the end, you will inflict increased damages.

I think this enhanced gameplay based on player movement can really be developped very far; you can count on me to investigate further on this !

Nouveau site en ligne !

Landsof.Elderlore

J’ai décidé de monter un nouveau site web pour présenter Lands of Elderlore en anglais et en français, et continuer à blogger sur le dévelopement du jeu.

Les billets actuellement publiés sont pour l’instant surtout en anglais, mais j’ai bon espoir – une fois que j’aurais compris les subtilités de l’internationalisation sous Drupal – de proposer plusieurs langues.

Le nouveau site est accessible ici :

Vous êtes plus que jamais invités à utiliser ce nouveau site pour poster vos commentaires, suggérer des fonctionnalités ou me faire part de tout ce qui vous passe par la tête.

J’espère que vous serez du voyage ! L’aventure ne fait que commencer…

Categories: www.elderlore.com Tags:
 

You need to log in to vote

The blog owner requires users to be logged in to be able to vote for this post.

Alternatively, if you do not have an account yet you can create one here.

Powered by Vote It Up