JeuWeb - Crée ton jeu par navigateur
Script, déclencheur et évenement - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Script, déclencheur et évenement (/showthread.php?tid=3454)



Script, déclencheur et évenement - Seren - 18-12-2008

Salut,

Dans ma vision des choses, j'aimerais avoir la possibilité de pouvoir gérer des évenements pour faire un monde un peu plus vivant qu'une simple carte statique. (C'est pas original)

Exemples :
- Passer à un endroit particulier provoque un éboulement
- Actionner un levier pour ouvrir/fermer un pont levis/herse

Après avoir un peu réfléchi, il me semble que la meilleure solution : la plus flexible et la moins dure à implémenter, c'est d'avoir des objets dans ma base avec des propriétés du style:
-onPick
-onDrop
-onThrow
-onSmell
-onExamine
-onUse
etc...

Pour les lieux OnEnter / OnLeave éventuellement onFirstEnter.

Par exemple, pour un oeuf, la propriété onDrop est testée quand on pose/lâche un objet :

// onDrop
echo "Votre oeuf se casse";
this->Object->isBroken();

Et on fait un eval() au moment où la condition est executée.

Au début, je pensais plus à créer mes propres macros, mais je ne vois pas vraiment l'intérêt par rapport à du code "brute".

Est-ce qu'il y a d'autres solutions plus simples ? pires ?

PS : C'est une solution inspiré dans ce qu'on trouve dans les langages dédiés à l'écriture de fictions intéractives.


RE: Script, déclencheur et évenement - Sephi-Chan - 18-12-2008

Hello,

J'avais ouvert un tel sujet il y a un moment déjà. Tu y trouvera sans doute des pistes :
[PHP] Programmation événementielle - Scripter les actions.


Sephi-Chan


RE: Script, déclencheur et évenement - Seren - 18-12-2008

C'est un poste intéressant, mais je ne vais pas forcément faire de la programmation événementielle pour gérer un "événement" en jeu. Mais bon pourquoi pas !

A priori pour toutes actions, seuls sont concernés le joueur/personnage, l'objet de son action et éventuellement un journal d'événements visible par les autres joueurs. Je sais pas si c'est utile de gérer des "event" sachant que la liste des "listener" est assez constante et limité. (peut être pas dans le cas d'une action sur une zone... Il faut que tous les objets dans la zone réagisse...)

Si il y avait 10 / 15 modules différents qui pourraient réagir ou non à chaque action ça serait peut être plus justifé.

Mais bon, j'avais jamais pensé qu'on pouvait utiliser un motif observateur/observable en php comme ça... Tout ça demande un peu de reflexion. Merci, au moins je me coucherais moins bête ce soir.


RE: Script, déclencheur et évenement - Ebe - 18-12-2008

Ça ressemble au système de script de l'éditeur Aurora de Neverwinter Night, qui est assez prisé des level designers (avoir scripté un module est un bon point dans les entretiens de level design en général). Il laisse beaucoup de possibilités. Tu dois pouvoir trouver des bibliothèques complètes là dessus sur le net...


RE: Script, déclencheur et évenement - Zamentur - 19-12-2008

Ce message devrait être dans la section programmation...

Sinon ce que j'aime pas avec le design pattern listener, c'est que l'objet doit être instancié dans le script en question. comment faire pour que les écouteurs s'active même si il n'existe pas encore dans le script?

Du coup j'ai choisis un fonctionnement avec une bdd qui gère les relation event trigger dans el but de pallier à ce manque.
Ca se paye puisque çà utilise des ressources bdd à chaque événement lancé. Mais visuellement et structurellement c'est incomparable au niveau du code!


Edit Sephi-Chan : bien vu Zamentur ! Je déplace. Smile