
Envoyé par
j-jorge
Ça y ressemble oui, avec beaucoup plus de fonctionnalités. Mais il y a quelques petites différences qui me perturbent.
Je donne un peu le contexte dans lequel j'ai codé cela, afin que vous puissiez m'indiquer si CAMP, que je ne connaissais pas, peut combler mes besoins et donc remplacer ce code.
J'ai un projet de jeu dans lequel je souhaite intégrer un petit système de script pour les personnages, de manière à faire des petites scènes se déroulant dans le style d'une pièce de théâtre. C'est à dire que les personnages doivent effectuer des actions à des moments précis et dans un ordre donné. L'idée est d'illustrer un peu avec des scène clés du scénario. Nous avions initialement pensé à utiliser Lua, mais nous sommes arrivés à la conclusion que c'était totalement démesuré (nous n'avons pas besoin de structures de contrôles par exemple) et le fait de devoir dupliquer les méthodes pour faire une version code et une version Lua avec contexte d'exécution nous a semblé peu pratique.
J'ai donc écrit ce code qui va nous permettre de faire ce genre de fichiers texte, où le premier nombre indique la date de l'action et où tous les intervenants sont connus au début de la scène*:
0.10 joueur.rejoindre(repère_1);
1 ennemi.attaquer(joueur);
1.5 joueur.dire("argh !");
1.5 ennemi.rejoindre(repère_2);
Nous avons donc des méthodes et des paramètres en texte, à appliquer sur des objets que nous ne connaissons qu'à peine (nous savons juste qu'ils héritent d'une même classe). Dans le code que j'ai posté, les paramètres de la méthode appelée sont passés par un tableau de chaînes de caractères. Je trouve cela pratique dans le sens où il n'est pas nécessaire de connaître leur nombre et leur type pour exécuter la méthode (il y a quand même une vérification avant la conversion). Je me demande quel est le coût pour arriver à un résultat similaire avec CAMP. En effet, dans le lien que vous avez posté, les méthodes sont appelés avec la liste de paramètres donnés selon les types déclarés.
De même, j'aime assez le côté non intrusif de CAMP, mais je me demande où et comment enregistrer les classes (la première instruction du main() que du lien que vous avez envoyé). En particulier, quand il s'agit d'une classe qui provient d'un autre module, inconnu du moteur du jeu. Un point qui me plaît dans le code que j'ai écrit est qu'il est possible d'exporter une classe d'une manière indépendante du reste du programme.
Je suis intéressé par vos commentaires sur ces interrogations et sur la technique. Aussi, pensez-vous que cela vaille le coup de continuer l'article*?
Partager