IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Game Scripting . [ Lua ? ]


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut Game Scripting . [ Lua ? ]
    Bonjour à tous.

    J'aborde doucement le game scripting, je préfère faire cela très tôt dans la conceptionde mon projet, cela m'évitera surement de tomber dans les piège du "je me démerderai comme je pourrai plus tard". Je veux quelquechose de simple à utiliser, pas inhumain à mettre en place et utile

    En résumé : Pour le moment je suis parti sur une idée simplifiée d'envoie d'Event entre mes objets (un objet au sens large, cela peut être un monstre , un pnj, un morceau du décor, un projectile et bien d'autres choses encore).

    Ainsi, après une routine d'IA, une céature pourra décider d'en attaquer une autre . Elle envera alors un Event "Attaquer" à cette créature . Celle-ci le recevra et devra "réaliser" les actions impliqué par l'évènement, par exemple dans ce cas, perdre X pv, ou X est la force de la créature attaquante.

    J'ai pensé me tourner vers LUA (je n'ai pas une connaissance suffisante pour le moment à ce sujet et je n'ai pas les idées très clair quand a la facons pratique de m'en servir ...). Et ainsi, inclure simplement dans mes Event, le chemin vers un script lua qui contiendrai toute les actions a effectuer.

    Typiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Event E ;
    E.Emetteur = "#ID de l'attaquant"
    E.Recepteur = "#ID de l'attaqué " // <- remplie lors de la reception de l'event
    E.Script = "/Script/Attaquer.lua"
    Je ne vois pas (jusque là) de faille à ce raisonement, mais sait-on jamais si j'en ai oublié, je vous remercie de me remettre dans le droit chemin!

    Avec ce raisonement, je dois pouvoir créer plusieur fonction dans plusieur fichiers .lua et au final les combiner pour obtenir des suites d'actions fort interessantes,non?
    Exemple :
    Manger.lua
    Dormir.lua
    Repos.lua qui contiendrai un apple a Dormir() et a Manger, défiinit dans les fichiers précédents. Bref, le but est de construire une grande partie de ma "game logic" de cette facons.

    Maintenant : Les problèmes !
    Mes objets ( entitée ) sont accessible en globale , par leur ID unique, donc pas de problème pour mettre la main dessus à partir de mon code en C++ par exemple.
    La ou le bat blesse, c'est au niveau du traitement sur ces objets.
    Si mon Entitée recoit "Attaquer", elle va vouloir exécuter le script "Attaquer.lua" , dedans il va me valoir remplir au moins 3 variables : l'attaquant, la cible et la force de l'ttaquant . Ca me force donc à faire tout cela manuellement en c++ et ce pour chaque nouveau script que je vais, et pire, ca réduit quasiment à zéro la réutilisation de fonction ( dormir, manger, comme dans l'exemple précédent) , vu que le nombre de paramètre de Repos devra etre dispatché correctement entre dromir et manger, et donc de toute facons je devrai écrire ca en dure en c++ et recompiler ...

    Je dois vraiment manquer de pratique la dedans car ma version des choses est on ne peux plus bancale :/

    Ce qui me pose problème est donc en partie : le passage d'argument a mes script lua necessitant du code en dur a chaque fois :/

    Si vous avez une idées de la démarche a suivre pour régler ce genre de problème , ou des liens sur le sujets ...

    Il se peux que la solution vienne de l'utilisation d'objets c++ dans le script ( via luabind dans mon cas), mais je n'ai pas encore vu comment cela marchait en pratique, quelle était l'utilité ect ... ( je m'y penche d'ici demain car c'est une piste a explorer ).

    Merci .

  2. #2
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Je n'ai pas de solution à ton problème (n'ayant pas trop réfléchi à celui-ci pour le moment). Cependant, je te conseille de rajouter E.fonction afin d'avoir plusieurs fonctions dans un seul fichier lua, sinon tu risques d'en écrire beaucoup...
    Mindiell
    "Souvent, femme barrit" - Elephant man

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Je ne comprend pas ce que tu veux dire par E.fonction : faire en sorte que UNE seule fonction soit utiliser dans le script ? Je trouve que ca fait un peu limitatif, un Event peut trés bien faire appel a plusieur fonction, non ?

  4. #4
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Non, au contraire, dans ton cas, un event appelle un fichier entier, dans mon cas, il appelle une fonction. Ainsi, tu as un seul fichier repos.lua par exemple et qui contient les fonctions Dormir, Manger, et Repos !
    Mindiell
    "Souvent, femme barrit" - Elephant man

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    D'accord tu parlias de regrouper des script que javais séparer dans un fichier, c'estca ? C'est une idée en effet Mais la base du problème reste la même ^^
    Enfin, toute les idées/astuces sont bonne à prendre, merci .

  6. #6
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Pour ton problème, j'utiliserais p'tet une structure à remplir qui est envoyée à tout fonction. Soit la fonction concerne un seul objet (manger, dormir) et ne recoit qu'une structure, soit elle concerne 2 objets (attaquer, parler) et tu lui colles 2 structures. Les structures sont remplies par ton programme et lua sait quoi trouver dedans...
    Mindiell
    "Souvent, femme barrit" - Elephant man

  7. #7
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Hum, par exemple : un structure contenant le nom de la fonction associé et les paramètre necessaire ? Comme ca, quand jarrive a "repos", je lit les strcuture dormir et manger, et leur paramètre ... hum y'a de l'idée

  8. #8
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    pas tout à fait, je voyais plus l'ID de l'objet, et les infos utiles pour la fonction, peut-être une liste d'arguments...
    Mindiell
    "Souvent, femme barrit" - Elephant man

Discussions similaires

  1. [Free Pascal] Appeler une fonction dans un script Lua
    Par Roland Chastain dans le forum Free Pascal
    Réponses: 4
    Dernier message: 08/02/2015, 11h55
  2. [LUA & C++] Script LUA dans un programme C++
    Par zakharorion dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 21/05/2012, 15h05
  3. Intégration de scripts lua
    Par Kernald dans le forum C++
    Réponses: 10
    Dernier message: 13/09/2010, 23h05
  4. Réponses: 9
    Dernier message: 21/02/2008, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo