Nouveaux élements

Le développement se poursuit, et j'ai pu implémenter de nouveaux elements de carte :

  • une forêt dans une zone enneigée devient une forêt nordique
  • une forêt dans une zone désertique devient un palmier
  • des rivières coulent vers la mer, selon un algo recursif qui :
    1. part d'une source donnée sur la terre
    2. coule vers la case voisine la plus basse
    3. évite les montagne mais rase les forêts
    4. s'arrête en atteignant la mer moyenne ou une autre rivière

L'affichage des rivières m'a posé quelques soucis, je voulais un ruban d'eau assez étroit pour le différencier de la mer, et l'algo d'affichage que j'utilisais produisait des artéfacts graphiques:

Rivières

Tout est corrigé désormais.

Je suis en train d'ajouter un brouillard de guerre, masquant les terres encore inexplorées, et assombrissant les terres déjà explorées mais non visibles. Pas encore de champs de vision, c'est la prochaine étape.

La chêvre ou le choux ?

J'en ai profité pour remanier le code d'affichage de tous ces élements de carte, pour m'y retrouver plus tard si jamais je dois remettre le nez dedans. Ce qui m'amène à ma reflexion du jour :

  • je dois d'un côté faire du code propre, optimisé et commenté pour m'y retrouver plus tard
  • plus je m'attache aux détails, plus je m'éloigne de mon objectif : faire simple pour mettre en place un squelette fonctionnel rapidement

C'est un réel dilemne pour moi, qui n'ai pas d'expérience particulière en design logiciel. De la même manière, la chasse aux bugs se partage avec l'ajout de nouvelles fonctionnalités.

Un exemple pour finir : l'algorithme fractal que j'utilise pour construire le tableau des altitudes n'est pas particulièrement rapide. Je l'ai déjà fait tourner en C auparavant, avec une vitesse d'exécution facilement 10 fois plus importante; la facilité d'utilisation de Python a malheureusement ses inconvénients.

Sauf que le module Numeric de Python autorise des opérations complexes sur les tableaux, et il est probablement possible de traduire toutes les étapes de l'algorithme en opérations Numeric, pour retrouver une vitesse d'exécution similaire au C. Cela me permettrai en plus de monter en compétence sous Numeric, ce qui me sera probablement utile pour plus tard.