Cel Reference/es
From Blender2crystal
Contents
|
[edit] Introducción
Es posible generar mundos preparados para usarse con CEL, y ajustar algunas propiedades relativas a las entidades y los quest, así como comportamientos.
Para exporta mapas preparados para CEL tenemos que tener el boton celexport en la pestaña de exportación (
) activado, entonces el exportador también creará un archivo level.xml, un archivo de entidades. El proceso de exportación está preparado para cargar a través de la entidad zonemanager, pero los diferentes archivos se exportarán por separado (sólo el mundo se exportará antes que las entidades).
La propiedad más importante a tener en cuenta es la propiedad entity. Ajustándola a true exportaremos una entidad al archivo de entidades, además de la malla y el objeto que normalmente exportaremos al archivo de mundo.
Lo siguiente más importante es que necesitamos un jugador (player), normalmente asignarás el jugador ajustando la propiedad player a true en algún objeto, esto aplicará los componentes pccommandinputy pcdefaultcamera a la entidad y le asignará el nombre camera (no debes tener ningún otro objeto con ese nombre ni tener más de un player en el mapa).
Algunos componentes son asignados automáticamente a las entidades dependiendo de las propiedades que lleven aplicadas:
-pcmesh se asignará a todos los objetos que contengan una malla.
-pclight se asignará a todas las luces que sean una entidad.
-pctrigger se asignará a todos los objetos con algún sensor o la propiedad anchor aplicada.
-pcquest Se añadirá al enlazar un quest a una entidad usando la pestaña de quest.
-pcmechsystem will be added to the sector depending on pcmechanics property in sectorsettings object.
-pcmechobject se añadirá al objeto cuando la propiedad dynamics se aplica al objeto.
-pcproperties se añadirá a un objeto cuando tenga algún componente añadido.
También podremos asignar explicitamente más componentes a los objetos en la pestaña de componentes(
)
(para añadir más componentes usa la propiedad pcclass*.)
[edit] Objetos tipo CEL
Hay algunos "tipos" de objeto para CEL, puedes consultarlos en la Guía de tipos de objeto.
[edit] Soporte para scripts
El uso de scripts está integrado en el proceso de exportación.
Las capas de comportamiento xml y python están soportadas (de momento debes elegir una u otra en la pestaña de ajustes de mundo).
Tanto scripts como plantillas pueden empaquetarse dentro del archivo blend para editarlos desde blender o distribuirlo, o desempaquetarse en un directorio para editarlos en un programa externo.
Aparte los scripts usados en el mapa se exportarán dentro del archivo .zip para distribuirlo y poder ser arrancado con la aplicación estándar celstart.
Arrancando con RUN desde blender2crystal se empaquetarán los scripts necesarios y se arrancará nuestro mapa usando la aplicación de CEL celstart y alguno de los scripts principales para aplicaciones (celstrap.py para blpython o celstrap.xml para blxml).
[edit] Arrancar manualmente mapas generados previamente
[edit] Aplicaciones blpython
Una aplicación python se cargará de la siguiente manera:
($CEL)/celstart /tmp/world.zip
Esto arrancará la aplicación celstart, el cual llamará a nuestro comportamiento principal (debe estar en el path). Entonces el mapa se cargará y se inicializarán el resto de comportamientos.
Fíjate en que todos los comportamientos, por ejemplo los scripts de python, deben de estar localizados en el PYTHONPATH(ruta a python), lo que puede hacerse de varias maneras.
- Poniendo todos los archivos de python dentro del zip y poniendo la ruta absoluta de el archivo zip. Python encontrará los scripts.(mirar discusión)
- Poniendo todos los archivos de python dentro del directorio scripts/ por debajo del directorio desde donde lanzas la aplicación.
[edit] blxml apps
An xml app is loaded as follows:
($CEL)/celstart /tmp/world.zip
this also calls the celstart app, which calls the cel blxml hardcoded behaviour bootstrap, which loads our world file using the specified xml file as main entrance.
[edit] Entity Mechanics
If the sector has a mechsys then a pcmechsystem entity will be created for the sector. also if the sector has a dynamicsystem (dynsys property set) it will be used for the mechanic system (so the mechanic system will control the dynamic system).
Gravity for a sector can be set through the gravity property also in sector settings.
The properties for bodies are the same as general physics properties in the exporter (mass, density, elasticity, friction, softness). The general rule is a pcmechobject propclass will be exported for entities with dynamics set to true. A pcmechsystem will also be created automatically if it has not been specified in sectorsettings.
also gravity and dynsys are used for entity physics.
[edit] Quests
Se pueden aplicar en la pestaña de quest (
).
Estas propiedades darán ciertos parámetros que se enviarán al quest de la entidad.
Puedes aplicar varios quest, y definir variables para ellos.
Aparte puedes acceder al editor de quest con el botón open editor. Tienes más información en la sección Editor de quest de este manual.
[edit] Ejemplos de uso
Se pueden conseguir diferentes resultados usando el modo de ecportación con CEL. Algunos ejemplos a continuación:
[edit] El jugador (player)
Hay dos formas de colocar un jugador en nuestro mapa:
1 - Aplica la propiedad player en el objeto que quieres que sea el jugador. Aparte le puedes aplicar el comportamiento actor si quieres controlarlo, y el componente pclinmove si no quieres que flote en el aire. Esta es la forma preferida de situar un jugador.
2 - El jugador puede asignarse dándole al objeto el nombre camera y asegurándonos de que tiene el componente pcdefaultcamera, bién aplicando directamente este componente o usando la plantilla player.xml. Los comentarios de la primera opción sobre el comportamiento actor y el componente pclinmove son aplicables a esta también.
[edit] Una plataforma movil
Se pueden exportar objetos animados directamente con las animaciones de blender. La propiedad cycle se usará para hacer la animación cíclica en el modo de extrapolación, esto significa que la primera y la última clave en las curvas IPO deben de ser iguales si queremos que el movimiento sea cíclico.
Entity y anchor deben estar en true si queremos que la plataforma transporte al jugador.
[edit] Objetos recolectables
Aplicando el quest pickable.xml desde el buscador de quest cualquier objeto se podrá recoger.
[edit] Personajes "no jugadores"
La plantilla npc.xml esta diseñada especialmente para personajes secundarios. También pclinmove deberá estar aplicado para que la entidad no flote en el aire. Usualmente también añadiremos un comportamiento o un quest para que la entidad reaccione al entorno.
[edit] Aplicando la entidad globalselection
La plantilla globalselection.xml está diseñada para aplicarse a un objeto empty de blender, lo que provocará que cualquier objeto pueda ser arrastrado pulsando en él.
[edit] Slightly Outdated
[edit] Available Entity templates
[edit] globalselection.xml
an entity template that should be set to an empty object in blender. it will allow moving entities around with the mouse.
[edit] Available Quest templates
Undocumented quest templates are still experimental.
[edit] pickable.xml
a quest for objects that can be picked from the ground. it works just by setting it.
[edit] ProximityPickable.xml
a quest for objects that will be picked on approaching. it works just by setting it.
[edit] MovingPlatformAnchor.xml
a quest for objects that can carry the camera around. it is automatically assigned by using the anchor property as explained above
[edit] SlideDoor*
a quest for doors that open when the player comes near. this quest should be used in conjunction with trigger_sphere to the define the radius for opening the door. activate_move will also affect this quest.
[edit] SlideDoorLocked*
like the before quests for doors that open on approaching, but this variant only opens when the player is carrying the key entity specified with key property.
[edit] ButtonLight
A quest for a light that can be switched on and off. It is automatically assigned to lights with entity set to true.
[edit] ButtonSeq*
a quest for buttons that can activate sequences in quests from other objects. there are several flavours for this quest, to set direction for the button. activate_move, target, op_on, op_off are valid properties for this quest that can be set in blender (see above). The defaults are set so it will automatically switch lights when setting target to a light, but different effects can be attained by using the properties.
Don't forget target entities must also be entities (i.e. they must have the entity property set to True).
[edit] Available python behaviours
[edit] actor.py
A behaviour for a normal cel player. With support for camera change and standard keybindings.
[edit] actorball.py
A behaviour for the typical physics ball player that can be controlled by applying forces (this kind of player has been known to drive cars).
[edit] lookat.py
A simple behaviour for for an object that is constantly looking at the player entity. Not very useful but a simple example to grow upon.
[edit] Available python app entities
[edit] celstrap.py
Celstrap is at the moment the only application provided. It loads the map, gets the player and sets the camera. Also allows restarting the map and recording your session on video.
[edit] Available xml behaviours
[edit] actor.xml
A behaviour for a normal cel player. With support for camera change and standard keybindings.
[edit] Available xml app entities
[edit] celstrap.xml
Celstrap is at the moment the only application provided. It loads the map, gets the player and sets the camera.

