-
Notifications
You must be signed in to change notification settings - Fork 2
GameElement
storm1er edited this page Oct 1, 2017
·
5 revisions
Accueil > Spécifications techniques > GameElement
Un GameElement est un élément de jeu.
Les GameElement sont formalisé de la façon suivante :
-
^[A-Z]{1}[a-zA-Z]+::[A-Z]{1}[a-zA-Z]+$
, exemple :MonSuperSysteme::MonSuperGameElement
(gameElementName ci-dessous) - Structure unique :
src="/js/"+folder.toLowerCase()+"/"+elementName+".js"
- Ils doivent
extends GameElement
Admettons le GameElement "MonSuperSysteme::MonSuperGameElement" :
- doit être dans
/js/monsupersysteme/MonSuperGameElement.js
- doit être déclaré de cette façon
class MonSuperGameElement extends GameElement {...}
Le GameManager va se servir de votre GameElement de la façon suivante :
-
MonSuperGameElement.onStart()
sera appeler quand le GameManager va intégrer MonSuperGameElement. -
MonSuperGameElement.onUpdate()
pour chaque retour derequestAnimationFrame
. -
MonSuperGameElement.onDestroy()
en cas d'erreur critique (n'est pas censé arriver). -
MonSuperGameElement.sharedRessources()
retournera par défautthis
(== votre GameElement entier) et sera envoyé aux éléments qui vondront utiliserMonSuperGameElement
. Nous vous conseillons de surcharger cette fonction pour s'assurer du bon fonctionnement de votre GameElement.
Au sein de MonSuperGameElement
, vous pouvez utiliser les éléments suivant :
-
this.master
est le lien avec le GameManager :-
this.master.element(gameElementName)
: retourne une Promise.
L'argument deresolve()
sera le retour desharedRessources()
du GameElement correspondant. -
this.master.fatalError("msg")
: va détruire le jeu, à appeler quand une erreur irréparable se produit (n'est donc pas censé arrivé). -
this.master.isGameElementExist(gameElementName)
: permet de vérifier qu'un élément est chargé et actif dans GameManager. -
this.master.on("eventName", callback)
: Executera votrecallback
à chaque fois que l'évent "eventName" sera émis. -
this.master.off("eventName", callback)
: Vous permet de ne plus écouter l'event "eventName", vous devez préciser votre callback (utilisé dansthis.master.on
) pour que cela fonctionne. -
this.master.emit("gameElementEvent")
: va trigger l'event "MonSuperGameElement[gameElementEvent]" via le GameManager, cette event pourra être écouté par n'importe quel autre GameElement.
-
-
this.getDependency("XXXXX")
permet de charger une dépendance depuissrc/js/webpack.js
. Voir le point 4.3.3.
Si vous souhaitez injecter une librairie externe, merci de suivre les étapes suivantes :
- à la racine du projet, exécuter
npm intall VOTRELIBRAIRIE --save
Ceci va ajouter votre librairie dans package.json, pensez à legit add
sinon cela pourrait empêcher votre dépendance de fonctionner. - Dans
src/js/webpack.js
:- définissez un nom valide pour votre dépendance :
/[A-Z]{1}[a-zA-Z]+/
(e.g. : VotreLib). - une fois que vous avez trouvez votre nom, ajouter la ligne suivante au début du fichier :
dispatchDependency("VotreLib", require('NOMDUPACKAGE'));
.
- définissez un nom valide pour votre dépendance :
- Ajouter le GameElement correspondant dans
src/js/lib
:- en gardant le nom VotreLib
- utiliser
this.getDependency("XXXXX")
dansthis.onStart()
- Appeler votre dépendance dans un autre GameElement via
this.master.element('Lib::VotreLib')
. - Example avec JQuery et ConsoleFPS :
src/js/debug/ConsoleFPS.js
,src/js/lib/JQuery.js
,src/js/webpack.js
etpackage.json
-
Règles et Story line
1.1. Map
1.2. Appareils
1.3. Données
1.4. Vous
1.5. Les quêtes -
Utilis. & Config. client
2.1. Compte
2.2. Interface
2.3. Appareil
2.4. Quêtes - Utilis. & Config. serveur
-
Spécifications techniques
4.1. Env. de développement
4.2. GameManager
4.3. GameElement -
WorkFlow
5.1. Guideline du Wiki
5.2. Guideline du tracker