Hello
Avant toute chose, je tiens à dire que cette réécriture n'engage que moi.
Je ne veux pas bloquer / ralentir le développement de Wormux. Par contre,
si des gens ont des critiques constructives à apporter, qu'ils m'en
fassent part (par la liste de diffusion).
tant mieux, parce que moi je pense continuer à bosser sur Wormux :-P
même en cas de naissance d'un projet nommé bombastic
Le nom est choisi pour marquer la réécriture, et éviter les problèmes
juridiques avec Team17 ;-) Et puis, j'aime bien la chanson homonyme.
Pour le nom certes, en même temps le nom commence à être connu et puis
Worms est un nom commun donc je vois pas pourquoi on pourrait pas
utiliser la contraction de Worms et Linux. Et puis, un changement de nom
qd y a des problèmes, ça fait un max de pub ;-)
Team17 a définitivement abandonné la série des Worms 2D n'y voyant plus
trop quoi y ajouter donc je pense pas qu'on est de problème (si on ne
fait pas de portage Windows...)
L'idée serait de partir de zéro. Ceci laisse la voie ouverte à plein
d'innovations, et une écriture mieux pensée. Quelques idées en vrac :
- ajout de pièges sur le terrain, comme par exemple un piège à souris
géant :) (je pense au jeu Lemmings)
C'est tout à fait faisable dans l'architecture actuelle. Un piège à
souris ou une mine c'est un peu similaire...
- ajout de zones spéciales sur le terrain, comme un fontaine qui redonne
de l'énergie aux personnages qui en sont proches (idée reprise de Wacraft
3, jeu excellent au passage)
Pourquoi pas. Là encore un objet physique (potentiellement invisible)
peut faire l'affaire. Je sais, c un peu crade comme proposition, on peut
faire mieux, mais là c'est pas la priorité à mon avis.
- séparation radicale de la partie logique et de l'affichage. la partie
logique ne verra que les fonctions draw() et collisionTest(obj). J'ai
carrément pensé à faire plusieurs affichages 2D différents et aussi à un
rendu 3D (c'est le projet X-Foot qui m'a fait pensé à ça).
C'est clair que c'est bien d'avoir une partie logique et une partie
affichage séparée seulement si c'est viable pour une application
classique, je pense que le modèle-vue-controlleur est difficile à
appliquer dans un jeu.
Quand au fait d'avoir plusieurs systèmes d'affichage différents, ça
semble te tenir à coeur mais à mon avis ça n'est pas viable sur le long
terme puiqu'il faut maintenir les différentes implémentations graphiques
en parallèles au même niveau, ce qui demande beaucoup de ressource en temps.
- tout est un objet, et tous les objets actifs seront dans une liste
globale. Plus besoin de s'embêter à faire plusieurs boucles séparées pour
afficher tous les persos, puis le fond, puis les armes, puis ... Une seule
boucle fait *une* opération sur TOUS les objets.
Je ne vois pas en quoi cela serait impossible actuellement, il s'agit
juste de nettoyage du code.
- utilisation de SDL (héhé). bon, reste à voir si ça couvre tous les
besoins de Boombastic.
Aucune idée à ce niveau
- probable changement du langage de programation. le c++ est lent à
compiler, et un peu trop bas niveau à mon goût (je veux dire que ça hérite
du C, et qu'on hérite des pointeurs null, et autres attrocités). Je vais
voir si le python pourrait couvrir tous mes besoins.
Lent à compiler, à mon avis c'est pas trop un problème. Chaque type de
langage à ces inconvénients, perso je préfère les langages typés. Python
est à mon avis un peu juste à ce niveau, sans parler que l'encapsulation
est plus que sommaire, ce qui peut potentiellement posé des problèmes
pour un gros projet de jeu. (Je précise que j'adore python mais je ne le
vois pas trop adapter à l'écriture de gros projet de jeu, non pas à
cause de la vitesse, il y a Slune pour prouver le contraire, mais point
de vue lisibilité du code, je trouve que qd le projet grossit trop, ça
devient illisible).
- Il faut un langage de script (pas forcément que le jeu soit écrit
qu'avec ce langage). Ceci permettrait de rendre le jeu beaucoup plus
dynamique, car je trouve que Wormux est plutôt chiant au bout d'un moment
(comme les escargots qui finnissent par s'allumer une cloppe au bout d'un
moment). Bon, j'ai du jouer trop longtemps tout seul.
Beaucoup de bonnes idées, reste à les mettre en application. J'ai discuté
avec un mec à GameOver. Il m'a dit que la conception (UML / bien définir
les choses / ...) c'est bien joli, mais si on vise trop gros, au final on
se décourage. Il m'a dit qu'il faut écrire de petis bouts de code *qui
marchent* et ensuite les coller ensemble. Je pense qu'il a raison.
Si une réécriture me tient à coeur c'est parce que je trouve que Wormux
est un gros truc patché à mort que je ne comprend plus vraiment (alors que
pourtant j'ai écrit un gros morceau !).
Wormux a suivi un développement pas forcément très propre.
Personnelement je pense comprendre à peu près tout (faut dire que j'ai
nettoyé le code des armes, mis en place le son, modifié le moteur
physique lors de première implémentation, etc.)
Évidemment, il est nécessaire de faire du gros nettoyage comme j'ai pu
en faire l'été dernier pour le code des armes.
Voilà voilà. J'espère que cet email ne va pas faire grincer trop de dents,
et qu'il va créer de nouvelles idées ;-)
Personnelement ton email ne me fait pas grincer des dents, si tu quittes
Wormux pour "Bombastic", je ne te suivrais pas. Je n'ai pas la
motivation pour repartir de zéro, je préfère faire du gros nettoyage et
continuer à faire avancer Wormux, quitte à intégrer des trucs crades
pour intégrer plus proprement après.
@+
Matt