Author Topic: [LUA-TIPS]  (Read 5585 times)

0 Members and 1 Guest are viewing this topic.

Chrisad

  • Global Moderator
  • Thug
  • *****
  • Posts: 37
[LUA-TIPS]
« on: August 14, 2010, 10:50:03 PM »
Ce topic à pour but de réunir toutes les astuces qui sont utilisés pour la programmation de jeu avec GXL. Si vous découvrez ou cherchez une réponse à un de vos problèmes, elle se trouvera peut-être ici.

Première astuce, qui je suis sur vous servira, comment créer un système permettant la sauvegarde des données du jeu.
Il faut savoir que charger des données consiste à mettre à jour des variables en les prenant d'un fichier.
Sauvegarder consiste à écraser ses variables par des nouvelles dans ce même fichier.

On commence par le système de chargement de partie. On utilise la commande "dofile" qui permet de charger les variables contenu dans un fichier. Le code se compose ainsi :

dofile ( HYP_Utils.GetDemoDir()..  "/filename")
et voici un exemple:
dofile ( HYP_Utils.GetDemoDir()..  "/sauvegarde/data.lua")

HYP_Utils.GetDemoDir() ==> "permet de récupérer le répertoire de base du script XML principal de la démo. Cette fonction est utile pour spécifier le chemin d'accès à un fichier dans les scripts LUA"
sauvegarde ==> dossier du fichier. Il se situe dans le répertoire du ficher xml principal
data.lua ==> non du fichier

il suffit que vous intégriez cela dans le script qui déclenche le chargement pour que les valeurs contenus dans le fichier soient chargés.
Si le fichier data.lua contient ==>  positionx = 50;
alors la variable positionx vaudra 50.

Maintenant, le plus difficile, la sauvegarde, que je vous montre dans un exemple direct.

file = io.open( HYP_Utils.GetDemoDir().."/sauvegarde/data.lua", "w")
file:write ("positionx=500".."\n")
file:close() -- On referme le fichier

La première ligne ouvre le ficher. Le "w" désigne la fonction write ou écrire. Elle va écrire par dessus les données présentes dans le fichier. Il en existe d'autres mais elle sont pas utile pour nous.
La second correspond à ce que l'on écrit. Le "\n" permet de réaliser un saut de ligne
la troisième ferme le fichier

Mit dans le script permettant la sauvegarde, elle va écrire dans le fichier data positionx=500

Voila pour notre première astuce.

« Last Edit: August 16, 2010, 09:30:02 AM by Chrisad »

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Programmation jeu
« Reply #1 on: August 16, 2010, 08:48:05 AM »
Peut etre devrais-tu renommer le sujet de ton topic en y ajoutant quelque chose du genre [LUA-TIPS]....
Ca permettra de créer un autre topic similaire pour Python: [PYTHON-LIPS].

Sinon bonne initiative :thumbup:

Chrisad

  • Global Moderator
  • Thug
  • *****
  • Posts: 37
Re: [LUA-TIPS]
« Reply #2 on: October 28, 2011, 06:18:21 PM »
Petites pièges avec la fonction HYP_Texture.LoadTex2DAvi().

Pour que cette fonction fonctionne, il faut absolument que votre fichier avi ne contiennent pas d'audio. Des logiciels comme camtasia permettent d'enlever le son de la vidéo. Sinon, vous aurez droit à une belle texture noir.

Éviter les fichiers trop lourd : GXL risque de ramer sur un PC peu puissant.

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: [LUA-TIPS]
« Reply #3 on: October 29, 2011, 10:14:24 AM »
Petites pièges avec la fonction HYP_Texture.LoadTex2DAvi().

Pour que cette fonction fonctionne, il faut absolument que votre fichier avi ne contiennent pas d'audio. Des logiciels comme camtasia permettent d'enlever le son de la vidéo. Sinon, vous aurez droit à une belle texture noir.

Éviter les fichiers trop lourd : GXL risque de ramer sur un PC peu puissant.
:thumbup: pour le tips

J'ai remarqué recement que certains de mes AVI ne passaient plus avec GXL mais je n'avais pas fait le raprochement avec l'audio contenu dans les AVI. C'est d'autant plus étrange que ces fichiers AVI étaient bien lus dans les premières versions de GXL comme le montre cette image:

Je viens de tester avec VLC et la video d'iron-man par exemple a une piste audio.

Il va falloir que je check pourquoi!