Home - Forums - Documentation - Gallery - Bugs
Manuel utilisateur de CEL

Contents

Bases

Dans cette section sont expliqués les concepts de base qui soutendent Crystal Entity Layer. Ce dernier est une couche Jeu qui prend assise sur Crystal Space et y ajoute des notions spécifiques au domaine du jeu.

Entités

Le concept le plus important dans presque tous les jeux est l'Entité. Une Entité peut être n'importe quoi ayant une signification dans le jeu. Ceci inclut les objets avec lesquels le joueur peut interagir (comme les touches, les armes, ...), les personnages non-joueurs (PNJ), les monstres, les boites que l'on peut ouvrir ou fermer, le joueur lui-même, le monde, une partie de l'intrigue que le joueur doit résoudre, et la liste ne s'arrête pas là. En simplifiant, tout ce que vous considérez comme une Entité séparée en parlant de votre jeu sera une Entité dans Crystal Space.

Les Entités ne sont pas toujours des Entités visuelles. Autrement dit vous ne pouvez pas toujours voir une Entité sur votre écran. Elle peut également être quelque chose de non visuel, comme un élément de l'histoire ou une donnée que vous voulez conserver.

Une Entité est représentée par l'interface iCelEntity. Elle est créée par une instance iCelPlLayer.

En elle même, une Entité est presque inutile dans Crystal Entity Layer. C'est juste un contenant vide doté d'un nom. C'est tout. Pour la rendre utile, il faut introduire deux concepts primordiaux : les Classes de Propriétés et un Comportement.

Classes de Propriétés

Une Classe de Propriété est un morceau de code (typiquement implémenté dans un plugin) que vous pouvez lier à une Entité. En attachant la bonne Classe de Propriété à une Entité, vous définissez les caractéristiques de cette Entité. Cette notion peut être mieux explicitée grâce à quelques exemples :

Une caisse

Disons que vous voulez définir une Entité pour une caisse dans un jeu. Voici les Classes de Propriété que vous pourriez utiliser pour cette Entité :

  • pcobject.mesh (voir la section Mesh)
Cette Classe de Propriété donne une représentation 3D des entités (autrement dit un mesh selon la terminologie Crystal Space). Dans cet exemple particulier, cette Classe de Propriété serait définie avec un mesh représentant une boîte.
Cette Classe de Propriété est le système général de mouvement dans Crystal Entity Layer. Elle n'utilise pas les physics mais uniquement la gravité et la détection de collision. En attachant cette Classe de Propriété à l'Entité, cette dernière va tomber correctement sur le sol dès qu'elle se trouvera placée dans les airs.
  • pctools.inventory
En ajoutant cette Classe de Propriété, la boîte sera capable de contenir d'autres objets (Entités). Elle se comporte à présent réellement comme une caisse. Vous pouvez assignez divers attributs à l'inventaire de façon à définir la capacité maximale de cette caisse, par exemple.

Un Personnage Joueur

Voici un autre exemple sur la façon dont vous pourriez façonner votre héros :

  • pcobject.mesh (voir la section Mesh)
Là encore nous aurons besoin d'un mesh si nous prévoyons d'utiliser un mode à la troisième personne.
Là aussi nous utiliserons pcmove.linear. Cette fois nous l'utiliserons pour contrôler les mouvements réels du héros.
  • pccamera.old
Notre héros définit la caméra. Donc tout ce qu'il voit, nous le voyons aussi. La caméra par défaut dans Crystal Entity Layer supporte également la vue à la troisième personne. C'est en fait une puissante Classe de Propriété, avec un tas d'options pour moduler la façon dont la caméra suit le héros. A noter qu'elle est appelée old puisque nous travaillons sur un nouveau système de caméra.
  • pcmove.actor.standard
Cette classe aide à combiner les fonctionnalités des trois Classes de Propriété précédentes, de façon à ce qu'elles fonctionnent ensemble à merveilles. Elle gère notamment les animations du joueur et la relation entre les vitesses de marche et de course. A noter qu'elle est appelée standard puisque nous travaillons sur un nouveau système de mouvement.
  • pctools.inventory
Il est possible qu'un joueur puisse porter des objets, il est donc utile d'avoir un inventaire.
  • pcinput.standard
Pour pouvoir réagir aux entrées de l'utilisateur (souris, clavier, etc), on utilise la Classe de Propriété pcinput.standard. On la configure également de façon à ce que la bonne entrée soit envoyé à pcmove.actor.standard.

En bref

Il ne s'agit là que de deux exemples. Il existe beaucoup plus de possibilités. Il est important de bien noter que les Classes de Propriétés sont dynamiques. Vous pouvez en ajouter ou en retirer en cours d'exécution de façon à pouvoir changer à tout moment les caractéristiques d'une Entité.

Une Classe de Propriété est représentée par l'interface iCelPropertyClass. Les Classes de Propriété sont créées depuis les Fabriques de Classes de Propriétés.

Comportement

Les Classes de Propriétés définissent ce qu'une Entité peut faire. La combinaison de ces Classes de Propriétés définit les caractéristiques de cette Entité. Le Comportement d'une Entité définit comment l'Entité interagit dans et avec le jeu. C'est là qu'est définie la logique de jeu. Le système d'Entités et les Classes de Propriétés représentent le code écrit dans Crystal Entity Layer lui-même, mais les comportements représentent le code que vous aurez vous-même besoin de rédiger en tant que créateur du jeu. Il y a actuellement trois manières d'écrire les comportements :

  • En utilisant Python :
vous pouvez créer des scripts contrôlant la logique de jeu.
  • En utilisant XML :
Crystal Entity Layer a un langage de script basé sur XML spécifiquement conçu pour créer des comportements.
  • En utilisant C++ :
vous pouvez par ailleurs créer des comportements en utilisant le code C++.

Dans le même jeu vous pouvez mélanger des comportements de différents types, et dans l'avenir d'autres moyens seront ajoutés.

Les Classes de Propriété envoient des messages au comportement lorsque quelque chose d'intéressant se produit. Par exemple, quand une Entité a une Classes de Propriété pcinput.standard, alors le comportement recevra des messages à chaque fois qu'une touche sera pressée. En réaction à ces messages, le comportement peut solliciter les appels API vers pcmove.actor.standard afin (par exemple) de faire bouger l'acteur.

Un comportement est représenté par l'interface iCelBehaviour. Vous pouvez créer des comportements depuis iCelBlLayer.

La Couche Physique

La Couche Physique est le coeur de Crystal Entity Layer. Elle s'occupe de la création et de la gestion des Entités et des Classes de Propriété. En plus du plugin de la Couche Physique, les plugins contenant les Fabriques de Classes de Propriété sont également considérés comme partie intégrante de la Couche Physique.

Une Couche Physique est représentée par l'interface iCelPlLayer. Vous pouvez obtenir une instance de la Couche Physique depuis le registre objet si vous avez chargé le plugin lors de la phase d'initialisation.

La Couche Comportement

La Couche Comportement est une simple classe qui n'a qu'une seule responsabilité : la création des comportements. Pour XML et Python, il y a déjà deux Couches Comportements prédéfinies. Si vous désirez utiliser le C++ pour la logique de jeu, alors vous devrez créer votre propre Couche Comportement.

La Couche Comportement est réprésentée par l'interface iCelBlLayer.


Langue: EnglishBrazilianChineseDeutschEspañolEsperantoFrançaisMagyar
Translate this page

| Article | Discussion | View source | History |