-
Notifications
You must be signed in to change notification settings - Fork 1
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.masterest 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 addsinon 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.jsetpackage.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