Bonjour, je suis actuellement en train de développer un jeu en ligne qui fait intervenir des personnages non joués (PNJ ou NPC) pour donner la possibilité de faire des quêtes (entre autre). J'ai dans l'idée que le plus simple pour pouvoir en créer une multitude, qui puissent avoir des fonctionnalités variées, est de créer un langage de script pour les faire dialoguer avec le joueur. Leurs coordonnées, nom, identifiant seraient stockés en base de donnée, ainsi que leur code (dans un champ varchar ou text)
Je désire créer un langage relativement complet, mais non Object Oriented, 'juste' du procédural suffira, incluant des variables, des boucles, des structures conditionnelles etc... Pour cela il faut qu'au moment ou le PNJ est activé par un joueur, il y ai un interpréteur de script qui parse ce code, et l'execute à la volée.
J'ai quelques idées pour commencer à développer ce genre de parser, mais je préfèrerais, avant de me lancer dans le codage de ce petit monstre, avoir l'avis de gens qui se seraient déjà penchés sur un problème similaire.
Pour le moment mes idées sont :
- - créer une methode qui lis des mots (suite de chiffre, lettres, ou underscore) afin de déterminer la commande à executer.
- - si la commande est reconnue on va chercher ses arguments dans la suite, et si ils sont valides on fait nos histoires avec le client et le serveur
- - définir une liste des mots disponibles, et des caractères qui ne peuvent constituer un mot (par exemple ;() {} pour les boucles et arguments)
seulement j'ai des difficultés face à des problèmes relativement simples tels que la commande "say" qui prend une chaine de caractère en argument ex:
say "Bonjour "+getCharName()+" comment vas-tu?";
sachant que getCharName() sera une fonction qui renverra le nom du personnage joué.
peut-etre que la base de mon algorithme n'est pas bonne? Toute idée est la bienvenue
je ne précise pas de langage car toute idée d'implémentation de ce parser est la bienvenue, qu'elle soit en POO ou non
Merci d'avance pour votre aide
Partager