Réduire la voilure !
Cela fait un moment que je galère sur ce moteur de jeux ! Je dirais même que ça fait trop longtemps ! J'ai beau me creuser la tête, je n'arrive pas à trouver comment diminuer significativement la longueur du code de ce moteur ! J'arrive à 16 ko de code source, et le moteur n'est toujours pas terminé ! Je dois garder de la mémoire disponible pour pouvoir charger les écrans, et même les fichiers de données. La complexité du moteur, vient en premier lieu du fait qu'il gère 2 types d'écrans :
- Les écrans à choix multiples
- Les écrans à saisie libre
C'est ce deuxième type d'écran qui est le moins avancé dans mon moteur. Il est évidemment plus complexe à gérer. Même si l'algorithme n'est pas très compliqué dans le principe, son implémentation en BASIC du CPC, entraine beaucoup de code supplémentaire. Ces écrans amènent la nécessité de créer un très grand nombre de tableaux supplémentaires. Comme je l'ai déjà expliqué, quand je définis une structure de données dans mes fichiers Excel, c'est surtout parce que j'ai toujours en tête les méthodes de programmation structurées que l'on trouve en Pascal, en C, en Java, et pour ainsi dire quasiment tout les langages. Pour faire la même chose en Basic, je n'ai pas beaucoup d'options ! Soit je fais pour chacune de mes structures un tableau à plusieurs colonnes, ce qui me contraindra à n'avoir qu'un seul type de données dans ce tableau (vraisemblablement des chaînes). Soit je fais un tableau par colonne de cette structure. Si la première solution parait de prime abord, meilleure, elle n'est pas plus simple, et rajoute une couche d'illisibilité supplémentaire. La deuxième, si on choisit bien le nom de ses tableaux est un peu plus lisible.
Quoi qu'il en soit, les deux solutions impliquent du code pour charger chaque donnée, chaque colonne, une par une. Et au final, cela représente beaucoup de code ! En plus du chargement de ces tableaux, je dois aussi gérer du code pour les effacer, et les déclarer à nouveau ! Cela peut paraître excessif, car je pourrais tout aussi bien les déclarer une fois pour toute, et changer leur contenu au fil du déroulement du jeu. Mais faire cela m'expose malgré tout à des effets de bord, si jamais je controle mal, la limite du nombre de lignes, je pourrais alors exploiter des données laissées par le tableau précédent et avoir un comportement incohérent durant le jeu. En effaçant les tableaux à chaque fois, je m'assure d'avoir une erreur syntaxique qui apparaîtra de suite au lieu d'avoir un comportement erratique difficile à identifier.
J'ai donc fait rapidement, dans un autre fichier, une nouvelle version de mon moteur avec seulement le nécessaire pour gérer les écrans à choix multiples. Je tombe alors à un fichier de 7 ko, et je pense pouvoir encore gagner un peu. Cela devient nettement plus raisonnable et déjà plus lisible.
Se limiter à ce type d'écrans, n'est pas sans conséquence ! Cela simplifie grandement le jeu, et réduit considérablement sa durée de vie ! J'avais d'emblée annoncé la couleur en expliquant que mon jeu ne serait pas difficile, car je préférais priviléger un scénario réaliste plutôt que de chercher les enchaînements capilo-tractés du genre va chercher un peu d'eau à 10 écrans de là, mets là dans une bouteille que tu as obtenu en donnant à un PNJ, un autre objet que tu avais obtenu après avoir enchainé une dizaine d'actions...
Se limiter à ce type d'écrans, n'est pas sans conséquence ! Cela simplifie grandement le jeu, et réduit considérablement sa durée de vie ! J'avais d'emblée annoncé la couleur en expliquant que mon jeu ne serait pas difficile, car je préférais priviléger un scénario réaliste plutôt que de chercher les enchaînements capilo-tractés du genre va chercher un peu d'eau à 10 écrans de là, mets là dans une bouteille que tu as obtenu en donnant à un PNJ, un autre objet que tu avais obtenu après avoir enchainé une dizaine d'actions...
A la base, j'avais envisagé les écrans à choix multiples pour simplifier la gestion des dialogues dans mon scénario. Mais clairement, il m'est rapidement apparu qu'ils me seraient aussi très utiles pour certaines phases d'investigation.
Cela fait donc une nouvelle fois que je réduis la voilure sur ce projet très ambitieux au départ ! J'ai abandonné la gestion multi-mode, j'ai mis de coté l'idée d'un déplacement sur une mini carte, j'abandonne à présent les écrans en interaction libre. Cela peut paraître frustrant, tout ces renoncements, et quelque part, je reconnais que ça l'est. Mais d'un autre coté, ne pas pouvoir me lancer dans la rédaction de mon scénario détaillé sous Excel est encore plus frustrant. Je vais donc faire cet énième réduction de la voilure, car j'en ai en fait un peu marre de ronger mon frein !
J'espère donc pouvoir livrer une première version de ce moteur sous peu et la tester rapidement avec un petit scénario bidon...
J'espère donc pouvoir livrer une première version de ce moteur sous peu et la tester rapidement avec un petit scénario bidon...
Commentaires
Enregistrer un commentaire