Descargar manual en PDF

Anuncio
Traducido por Jruano de desarrollodejuegos.com y Marta Villaescusa
1. Instalación
En esta sección conseguiremos configurar Construct 2 (C2 en adelante) para hacerlo funcionar. Nos
centraremos en la descarga y actualización de C2, después en el proceso de instalación, como usar tú
licencia si la has comprado, y un recordatorio de los requisitos del sistema.
1.1 Conseguir Construct 2
Descargarlo de la web
Para descargar la última versión de C2 puedes visitar: http://www.scirra.com/construct2/releases/new ⇗
Esta URL siempre te indicará la última versión. Te recomendamos siempre mantenerte actualizado y usar la
última versión de C2. Esto prevendrá encontrarse con problemas que ya han sido resueltos. Hay 3 formas de
ser notificado acerca de las nuevas versiones:
Notificaciones por email
Si quieres que se te notifique cuando se publique una nueva versión puedes inscribirte en nuestra lista de
mailing. Para hacerlo, inicia sesión en tu cuenta y visita tu página Yo (Me): http://www.scirra.com/me ⇗
Marca la casilla Nuevas versiones de C2 (Construct 2 new releases) debajo de tus subscripciones (Your
subscriptions). Automáticamente te enviaremos un email cuando una nueva versión sea publicada. No te
enviaremos ningún otro mail distinto al de las notificaciones de nueva versión si sólo has marcado esa
casilla, y puedes cancelar la inscripción en cualquier momento demarcando la misma casilla en tu perfil.
¡Nosotros también odiamos el spam!
Alerta de actualizaciones en Construct 2
Si usas C2 en un ordenador conectado a internet, el propio C2 te avisará si hay alguna actualización
disponible. Normalmente esto es un poco lento –puede notificar unos cuantos días después de la salida de la
actualización. Puede cambiar tus preferencias en notificación de actualizaciones en el diálogo de
preferencias (Preferences dialog).
Actualizaciones en las redes sociales
Tenemos una página de Facebook, una cuenta de Twitter y una página de Google+. Si usas alguna de estas
redes puedes seguirnos o agregarnos. Publicamos actualizaciones en estas páginas en cuanto salen, al igual
que otras noticias que pueden interesarte.
Actualizaciones Beta
Los lanzamientos Beta de C2 no están muy preparados para el uso continuado, pero son lanzados más pronto
y con más regularidad que las actualizaciones estables. Si quieres ayudar a probar estos lanzamientos Beta,
bajo el riesgo de posibles virus o cuelgues, puedes encontrarlos en la lista de lanzamientos (releases list ⇗) o
configurar C2 para que te avise de las actualizaciones Beta en el diálogo de preferencias (Preferences dialog).
1.2 Instalando Construct 2
Una vez descargado C2, la Configuración (Setup) empezará a instalarlo en tu ordenador. Clica Siguiente (Next>) para
seguir los pasos.
Tu navegador o Windows puede mostrar una advertencia de seguridad antes de comenzar la Configuración (Setup).
Debes comprobar si el editor está en la lista de Scirra Ltd antes de hacerlo funcionar. Esto ayudará a asegurar que la
configuración es la genuina de Scirra y no algo maligno editado por terceras personas.
Instalación Portátil
Construct 2 puede usarse como software portátil. En otras palabras, puedes instalarlo en un disco externo (como una
memoria USB) y usarlo en cualquier ordenador. Si quieres hacer esto, coloca la carpeta de instalación (Install) en tu
disco externo.
Versiones de 32-bit y 64-bit
Hay dos versiones de C2, una de 32-bit (para ordenadores antiguos) y otra de 64-bit (para ordenadores
nuevos). Si no estás seguro de cual instalar puedes dejar que la configuración lo detecte (auto-detect).
Aunque, si lo has instalado en un disco externo, puedes querer instalar la de 32-bit, ya que esta versión
funcionará en ordenadores de cualquier tipo, no como la de 64-bit.
Cuentas de usuario limitadas
C2 todavía puede ser instalado en cuentas de usuario limitadas sin acceso administrativo. Esto es común en
lugares de trabajo, escuelas, universidades, bibliotecas y otros lugares de acceso público. Podrás descargarlo
e instalarlo con una cuenta limitada mientras no haya otras restricciones en el lugar. En este caso la
configuración (Setup) no podrá acceder a al directorio de archivos de programa. En cambio, se instalará en
una carpeta en tu cuenta de usuario. Otros usuarios quizás tengan que instalar el software manualmente.
Algunos sistemas incluso desinstalarán el software cuando cierres sesión y tendrás que volver a instalarlo
cada vez que inicies sesión.
Si la configuración (Setup) falla debido a otras limitaciones (por ejemplo, no poder descargar EXEs de
internet) prueba con una instalación portátil. Instala C2 en un disco externo en un ordenador donde puedas
hacer funcionar la configuración (Setup) y prueba a hacerla funcionar en el ordenador con limitaciones
desde el disco.
Actualizaciones
Si ya tienes C2 instalado e intentas instalar una actualización, la configuración (setup) te ofrecerá eliminar la
última copia instalada de C2. Siempre debes eliminar la versión vieja a menos que hayas instalado el
programa dos veces (por ejemplo, en el ordenador y en el disco externo, en cual caso la desinstalación
podría eliminar la instalación portátil).
Desinstalación
C2 puede ser desinstalado a través de Añadir/Quitar programas (Windows XP) o Programas y características
(Windows Vista y nuevas versiones) en el Panel de Control
Instalaciones masivas
Si estás instalando C2 en muchos ordenadores, recuerda que la instalación es portátil. Esto significa que no
hay dependencia fuera de la Carpeta Archivos de Programa de C2. Puedes instalarlo en varios ordenadores
instalándolo en uno y copiando la carpeta de instalación (y cualquier acceso directo que quieras) en otros
ordenadores. Puedes usar también los siguientes modificadores de línea de comando (command-line
switches) para hacer funcionar la configuración de forma automática:
construct2-setup.exe /SP- /SILENT /SUPPRESSMSGBOXES
Por defecto, también se añadirá un icono en el Menú de inicio.
Usar una licencia masiva
Para asegurar que C2 encuentra tu licencia masiva, simplemente escríbela en el directorio de instalación de
cada ordenador. Si eso no funciona, puedes usar el enlace de “Archivo de cargar licencia” (“Load license
file”) en el diálogo “Sobre” (“About”) para localizarla. Normalmente sólo es necesario hacer esto una vez y
C2 recordará la localización en el registro. Sin embargo, algunas redes deshacen cualquier cambio en el
registro cuando el usuario cierra sesión. Esto hará que C2 olvide el lugar de la licencia. Para asegurarlo en
este caso, contacta con el administrador de la red. El lugar de la licencia está almacenado en la siguiente
clave de registro:
HKEY_CURRENT_USER\Software\Scirra\Construct2\LicensePath
Este debe ser una secuencia con la localización completa al archivo de licencia, por ejemplo
"C:\Path\To\c2license.txt". El administrador de red debe asegurarse de que la secuencia queda guardada
cada vez que se cierra sesión, y así la liecencia se recordará de forma permanente.
Es aconsejable esconder el enlace “Vista de licencia” (“View license”) en el diálogo “Sobre” (“About”)
cuando uses una licencia masiva. Para esconderlo establece la siguiente clave de registro en el valor 1
DWORD: HKEY_CURRENT_USER\Software\Scirra\Construct2\HideLicenseLink
1.3 Usar una licencia
Ver también: Tutorial de cómo funcionan las licencias de C2 How Construct 2 Licenses Work ⇗
Versión Gratuita de Construct 2
C2 puede ser descargado e instalado en cualquier ordenador de forma gratuita, incluyendo aquellos de uso
público y no comercial. Sin una licencia funciona como una versión gratuita. Tiene las siguientes
limitaciones:








Un máximo de 100 eventos (events) en un proyecto (project)
Un máximo de 4 capas (layers) en un plano (layout)
Un máximo de 2 efectos (effects) en un proyecto (project)
No hay organización en la carpeta de la barra del proyecto (Project bar)
No hay búsqueda de acontecimientos (events)
No hay Familias (families)
No hay vista previa de LAN Preview on LAN ⇗
No está permitido su uso con propósitos comerciales (aunque sí puede ser usado con fines educativos y otras
organizaciones sin ánimo de lucro)
Comprando la licencia eliminas todos estos límites. Las licencias pueden comprarse en Scirra.com. Ambas
licencias, la Standard y la Business quitan todas las restricciones anteriores.
La licencia personal (Personal license)
Todos los límites de la versión gratuita se eliminan con la Licencia Personal. De todas formas, las reglas de
usos comerciales son distintas para personas individuales y organizaciones.
Las personas individuales pueden usar una licencia Standard para usos comerciales hasta un límite de
5000$. Si las ganancias asociadas a creaciones hechas con C2 superan los 5000$ (incluyendo
publicidad/promoción asociada) se debe comprar una licencia Business, aunque no es necesario comprarla
hasta entonces.
Organizaciones sin ánimo de lucro, como escuelas, bibliotecas y universidades pueden usar Licencias
personales para eliminar las restricciones de la versión gratuita. Hay disponibles descuentos para compras al
por mayor.
Las Organizaciones Comerciales no pueden usar licencias Standard: deben comprar la Business.
La licencia Business (Business license)
La mayoría de las personas individuales no necesitan esta licencia. Sólo es necesario para:


Personas individuales que ya han ganado 5000$ por creaciones hechas con C2 y
Organizaciones comerciales y de negocios.
Las organizaciones sin ánimo de lucro nunca necesitan una licencia Business, sólo la Standard.
Compra desde Steam
Si compras desde Steam, será Steam quien administre tu licencia. Si quieres instalar tu copia de C2 en otro
ordenador, simplemente instala Steam, inicia sesión y descarga C2 de nuevo. El resto de esta sección se
aplica a la compra directa desde nuestra web, que usa un archivo de licencia en vez de Steam.
El archivo de la Licencia (License file): c2license.txt
Una vez has hecho la compra directamente en Scirra, te enviaran una clave (redeem key) por email. Esta es
un código especial con el que poder entrar a la tienda de Scirra y conseguir la licencia. Si quieres comprar
una licencia para alguien más, puedes darle la clave y esa persona podrá conseguir otra licencia de la tienda
con su propio nombre y dirección de email. Esto también funciona si quieres comprar licencias para un
número indeterminado de personas, por ejemplo tus empleados o compañeros: puedes recibir cierto número
de claves, que puedes dar de forma individual.
Una vez has usado tu clave en la tienda de Scirra, puedes descargar tu licencia de C2, que es un archivo
llamado c2license.txt. Solamente necesitas copiar esta carpeta en el directorio de instalación (install
directory) o en mis documentos. Reinicia C2 y funcionará como la versión licenciada: el nombre del
comprador debe aparecer en la página de inicio y en el diálogo “Sobre” (About), la versión gratuita debe
desaparecer de la barra del título, y los límites deben desaparecer. Así mismo, puedes colocar tu archivo de
licencia donde quieras y localizarlo clicando cargar el archivo de licencia (Load license file) en el diálogo
“sobre” (About).
A menos que la licencia sea comprada por una organización, la licencia es para la persona y no para el
ordenador. Esto quiere decir que puedes usar tu copia licenciada de C2 en todos los ordenadores que quieras,
por lo que debes ser el único que lo utiliza. Otras personas deben comprar su propia licencia. Recuerda que
C2 puede ser usado como software portátil (ver Instalando C2). Puedes poner tu archivo de licencia en un
disco externo e instalar tu copia licenciada en cualquier ordenador.
No debes modificar el archivo de licencia. Está protegido por un resumen criptográfico hash y cualquier
modificación podría causar que C2 rechace la licencia y vuelva a la versión gratuita.
¡No debes compartir tu archivo de licencia! Guárdala al igual que haces con el número de serie para otros
programas. Además el archivo de licencia contiene información personal, así que es aconsejable mantenerlo
en privado.
Si pierdes tu archivo de licencia, o si formateas tu ordenador y olvidas hacer una copia de seguridad, puedes
volver a descargarlo aquí: http://www.scirra.com/store/purchases ⇗
1.4 Requisitos del Sistema
C2 actualmente solo funciona en Windows. Por favor, ve a FAQ ⇗ para otros sistemas.
A pesar de que sólo funciona en Windows, el programa realiza juegos en HTML5 que pueden funcionar en
una gran variedad de ordenadores y dispositivos. Ve a la sección de Tecnología (Technology) para más
información.
Requisitos mínimos del sistema





Windows XP Service Pack 3 o superior
512MB RAM
Procesador de 1GHz
Un navegador compatible con HTML5 (ver abajo)
La última versión de tu tarjeta gráfica (drivers)
Requisitos del sistema recomendados




Windows 7 o superior
2GB RAM
Procesador 2GHz dual-core
Una tarjeta gráfica nVidia o AMD con los últimos controladores (drivers). Te recomendamos evitar el uso
de hardware gráfico Intel debido a la pésima actuación, estabilidad y características.
Los requisitos de sistema ideales
Puedes conseguir buenos resultados sin ellos, pero si puedes tenerlos sería lo mejor.






Solid State drive (SSD) para el sistema operativo y el software
Versión de 64-bit de Windows 7 o superior
4GB RAM o más
Una pantalla grande o configuración de monitor dual
Una tarjeta gráfica nVidia o AMD con los últimos drivers, al menos 512MB de memoria para video y
soporte para OpenGL 2.0+
Una conexión a internet de banda ancha
Navegadores compatibles con HTML5
Para previsualizar tus juegos en HTML5 necesitas un navegador compatible con HTML5. Los navegadores
se pueden descargar e instalar gratuitamente. HTML5 es una nueva tecnología, así que es importante
mantener tu navegador actualizado a la última versión. Los navegadores compatibles son:




Internet Explorer 9+ (sólo para Windows Vista o superior – Windows XP deben usar otro)
Mozilla Firefox
Google Chrome
Opera
Scirra recomienda Google Chrome o Mozilla Firefox.
1.5 Añadidos de terceros
Los desarrolladores externos pueden extender C2 con nuevos plugins, comportamientos y efectos
(conocidos como “añadidos”) usando el SDK Javascript. Muchos añadidos pueden encontrarse en el foro de
Plugings para C2.
Instala añadidos sólo de desarrolladores de confianza. Los añadidos pueden comprometer la seguridad de tu
proyecto o esconder características no deseadas como anuncios sorpresa o rastreo de usuarios. Además, los
añadidos escritos pueden causar errores y destellos en tu juego. Aunque los añadidos pueden ser útiles,
recuerda mantenerte alerta, en especial en los desarrolladores y si ellos actualizan su añadido para reparar
posibles problemas.
Si tienes problemas con alguno de estos añadidos, debes avisar al desarrollador que los creó. Scirra no
ofrece ayuda para ninguno de ellos.
Instalar añadidos nuevos (.c2addon files)
Añadidos desarrollados recientemente se instalan desde un archivo con la extensión .c2addon. Simplemente
descarga el archivo .c2addon y arrastralo a la ventana de C2. C2 te preguntará si quieres instalarlo. Si
apruebas la instalación, debes reiniciar C2 antes de que el añadido esté disponible.
También puedes arrastrar varios archivos .c2addon a la ventana de C2 y te preguntatá si quieres instalarlos
uno a uno.
Instalar añadidos antiguos
Algunos añadidos fueron desarrollados antes de que C2 adoptara archivos .c2addon. Se suelen distribuir
como una colección de archivos en un zip. Para instalarlos cierra C2 y copia los archivos en el lugar
adecuado:
<install path>\exporters\html5\plugins para plugins
<install path>\exporters\html5\behaviors para comportamientos
<install path>\effects para efectos
Nota que cada pluging y comportamiento tiene su propia subcarpeta en los directorios de arriba; asegúrate
de que copias el añadido a su carpeta correspondiente. Sin embargo, los efectos son simplemente archivos
.fx y .xml que van en la misma carpeta.
Reinicia C2 y los añadidos deben aparecer en el editor.
Administración de añadidos
Cuando instales los archivos .c2addon, C2 intentará copiar los añadidos en dos lugares: el directorio de
instalación y la carpeta AppData del usuario actual (%appdata%\Construct2). Esto significa que, aunque no
tengas el permiso de escritura en el directorio de instalación, puedes instalar añadidos.
Si usas C2 portable, los añadidos pueden desaparecer si sólo están en la carpeta AppData en el ordenador.
Para llevar tus añadidos contigo, lleva una carpeta contigo con los archivos .c2addon, o asegúrate de que C2
tiene permiso de escritura en su directorio de instalación cuando instales los archivos .c2addon, haciéndolo
funcionar con los privilegios del administrador.
2. Resumen
En esta sección ofrecemos un resumen de C2, incluyendo la página de inicio (start page), interfaz (interface),
estructura del proyecto, los dos formatos de guardado, exportación y publicación, la tecnología de tus juegos
y algunas buenas prácticas y consejos de actuación al usar C2.
2.1 Página de inicio
La primera vez que inicies C2 debes ver la Página de Inicio (Start page) que es algo parecido a esto:
Esta te da un punto de partida útil siempre que inicies C2. Tiene algunos enlaces útiles como Crear un
nuevo proyecto, Nuevos tutoriales en la web, tus proyectos abiertos recientemente, enlace a nuestro
Facebook, Twitter y Google+ y demás.
Tutorial para principiantes
Si eres nuevo, quizás quieras echar un vistazo al enlace al Tutorial C2, Guía para principiantes Beginner's
Guide to Construct 2 tutorial ⇗. Este es una guía paso a paso para ayudarte a crear tu primer juego.
Ejemplos
Si quieres examinar proyectos existentes para ver cómo funciona C2, puedes abrir las demos de Space
Blaster y Ghost Shooter. Estos son ejemplos avanzados así que no te agobies por sus matemáticas o su
complejidad. Sólo sirven para enseñar lo que C2 puede hacer en las manos de un usuario avanzado.
Hay muchos ejemplos más simples en el directorio de ejemplos de C2. Clica Mostrar todos los ejemplos
(Browse all examples) para verlos. Hay más de 40 que muestran cómo hacer plataformas simples y demos
físicas.
Es altamente recomendable ver todos los ejemplos. Hay varios ejemplos de soluciones a preguntas
frecuentes como “¿Cómo configuro los controles comunes?” en la carpeta de ejemplos.
Configuración
Puedes cambiar Mostrar la página de inicio cuando enciendas el ordenador (Show Start page on
startup) y Cerrar la página de inicio cuando cliques en algo (Close the start page when I click on
something) en el diálogo de preferencias (Preferences dialog).
2.2 La interfaz
El siguiente gráfico resalta las partes importantes de la interfaz de usuario de C2. También se muestra un
resumen de cada parte abajo, y más adelante el manual explica cada sección con mayor detalle.
1: Menú de archivos (File Menu) y barra de herramientas (Ribbon Tabs)
C2 utiliza una barra de herramientas, similar a la Microsoft office 2007 o superior. El botón azul con la
flecha para clicar hacia abajo es el menú de archivos, y a su derecha hay una barra de herramientas que se
despliega con varios botones y opciones.
También hay una barra de acceso rápido con los cuatro comandos más usados: Guardar (Save), Deshacer
(Undo), Rehacer (Redo) y Vista previa (Preview). Puedes añadir o quitar botones de esta barra: clicando la
flecha hacia abajo pequeña que hay a la derecha. Si quieres tener muchos comandos en esa barra puedes
optar por mantenerla visible debajo de la barra de herramientas.
2: La vista del Plano
Es un editor visual donde puedes colocar objetos para diseñar niveles, pantallas de menú y demás. Mira The
Layout View.
3: Vista de pestañas
Estas pestañas permiten usar diferentes planos y hojas de actividades, para definir la secuencia de
actividades en las que se basa el juego.
Puedes clicar y arrastrar una pestaña para ver una al lado de otra en la misma pantalla.
4: La barra de propiedades
En esta barra puedes ver una lista de propiedades en las cuales ya has clicado. Puedes ver y cambiar las
propiedades de las cosas como planos, objetos, capas y demás. Mira The Properties Bar.
5: La barra del proyecto y la barra de capa
Por defecto, la barra de proyecto y la de capa están etiquetadas aquí. La barra de proyecto contiene un
resumen de todo tu proyecto. La de capa puede usarse para añadir capas a un plano.
6: Pestañas de la Barra de proyecto/Barra de capa
Esta te permite alternar entre la barra de proyecto y la de capa.
7: Barra de objetos
Contiene una lista de objetos de tu juego. Puedes arrastrar y soltar objetos desde aquí para colocarlos en el
plano. El menú del botón derecho tiene varias opciones para filtrar o mostrar diferentes objetos. Mira The
Object Bar.
8: Barra de estado





En la parte de abajo de la ventana se encuentra la Barra de estado. Esta muestra:
Qué está haciendo C2 durante una tarea de larga duración, como exportar o guardar un proyecto.
Cuantas actividades hay en el proyecto y su tamaño aproximado
La capa activa en ese momento, que es la capa donde se colocaran los objetos
La posición del ratón en planos combinados
El nivel de zoom actual
9: Botones de la parte de arriba a la derecha
Al igual que los botones minimizar, maximizar y cerrar de Windows existe Fijar Barra (Pin Ribbon) para
mantener la barra siempre a la vista, y el botón “sobre” (About) para abrir el diálogo About con
información y los créditos de C2.
Personalización
Puedes personalizar la interfaz a tu gusto. Algunas de las barras pueden ser arrastradas y soltadas en
diferentes posiciones de la ventana. También puedes esconder barras para ahorrar espacio: clica el icono de
fijar (pin) de una barra y se convertirá en una simple pestaña. Puedes volver a convertirla en barra.
Las barras se pueden esconder y mostrar en la pestaña Vista (View) de la barra de herramientas.
Puedes crear una pantalla dividida clicando y arrastrando uno de los planos u pestaña de hoja de
actividades en la vista principal. Esto es útil en monitores grandes.
2.3 Estructura del proyecto
Los proyectos de C2 consisten en los siguientes elementos. Se pueden acceder a ellos vía la Barra del
proyecto (Project Bar), que contiene un esquema de todos los elementos del proyecto. Los elementos de la
barra del proyecto se pueden organizar en subcarpetas (sólo la versión con licencia) algo muy importante en
medianos y grandes proyectos. Para más información, mira la sección Proyectos Primitivos (Primitive
Projects).
Planos (Layouts)
Niveles, menús, los títulos de las pantallas y otros planos de objetos predefinidos. En otras herramientas
Layout puede referirse a escenas, habitaciones, marcos o etapas.
Los planos también pueden estar formados por múltiples capas (Layers), que pueden usarse para poner
objetos en las capas de fondo y primer plano. Estos se manejan con la barra de capas (Layers bar).
Hoja de eventos (Event Sheets)
Un conjunto de eventos (Events) definen la lógica del juego. En C2, los eventos son la alternativa a
programar o a crear la secuencia de comandos. Los planos tienen una hoja de eventos asociada para darle
lógica. Las hojas de eventos pueden ser reutilizadas en diferentes planos que puedan incluir una hoja de
eventos. La hoja de eventos se edita en la vista de hoja de eventos (Event Sheet View).
Para más información sobre eventos, ve a la sección de Eventos (Events), especialmente a la página Como
funcionan los eventos (How events work).
Tipos de Objetos (Object Types)
Los tipos de objeto definen la “clase” a la que pertenece un objeto. Por ejemplo, EnemigoTroll (TrollEnemy)
o EnemigoOgro (OgreEnemy) pueden ser distintos tipos de objetos. Se pueden crear distintos ejemplos para
un objeto. Es decir, puede haber tres ejemplos para el tipo de objeto EnemigoTroll (TrollEnemy) y 5
ejemplos para el tipo de objeto EnemigoOgro (OgreEnemy).
Es importante aclarar la diferencia entre tipos de objeto y ejemplos: son llamados de forma distinta en el
manual. Para más información, ve a las entradas Componentes (Plugins), Tipos de objeto (Object Types) y
ejemplos (Instances).
Los tipos de objeto pueden agruparse en familias (Families).
Sistema de Objetos (System object)
El sistema de objetos representa la funcionalidad en C2. Es lo único existente en un proyecto vacío. No
puede añadirse de nuevo ni ser quitado de un proyecto. No hay ejemplos para el sistema de objetos: está
siempre presente y provee el acceso a los aspectos del motor de C2. Sus condiciones, acciones y expresiones
están documentadas en el sistema de referencia (System reference).
Sonido y Música
Son archivos de audio usados para efectos sonoros y música en el juego. Los sonidos deben usarse para
efectos de corta duración que suenan cuando un acontecimiento como una colisión o explosión ocurre. La
música se usa para pistas musicales más largas. Es importante organizar los archivos de audio porque los
sonidos se descargan antes de poder escucharlos, pero la música es en streaming. Esto significa que si una
pista de música se pone en la carpeta Sonidos, tendrá que descargarse completamente (lo que tardará unos
minutos) antes de reproducirlo. Además el audio de la carpeta Música puede reproducirse inmediatamente
porque es en streaming.
Ambos, sonidos y música deben estar disponibles en los formatos Ogg Vorbis (.ogg) y MPEG-4 AAC
(.m4a). Esto es porque los navegadores no se ponen de acuerdo en un solo formato para web, ¡así que todos
los audios deben estar en los dos formatos! Internet Explorer y Safari usan archivos .m4a y el resto (Firefox,
Chrome y Opera) usan archivos .ogg. C2 ayuda a convertir audio a ambos formatos cuando se importan los
archivos de audio. Ve al Diálogo de Importar Audio (Import Audio dialog) y Sonido y Música (Sounds &
Music) para más información.
Archivos de Proyecto (Project Files)
Cualquier archivo externo puede ser importado al proyecto. Para más información, ve a Project Files.
Unidades comunes
A veces, en C2 necesitas introducir valores como ángulos, velocidades o tamaños. Para que haya cierta
consistencia, C2 siempre usa las mismas unidades, excepto donde se especifique otra cosa en notas o
descripciones mostradas en el editor. Las unidades comunes se describen a continuación.
Posiciones (Positions) se miden en píxeles. El origen (0,0) está arriba a la izquierda del plano y el eje Y
aumenta hacia abajo (como es habitual en los motores del juego)
Tamaños (Sizes) se miden en píxeles
Ángulos (Angles) se miden en grados. Los 0 grados empiezan a la derecha y se abre en el sentido de agujas
del reloj
Tiempos (Times) se miden en segundos
Velocidades (Speeds) se miden en píxeles por segundo
Aceleraciones (Accelerations) se miden en píxeles por segundo
Índices que empiezan en 0
Para ser coherente con el lenguaje de programación, todas las características de C2 usan un número de cosas
de una lista (índices) que empiezan desde 0 en vez de 1. Esto puede parecer complicado al principio y te
costará acostumbrarte, pero en muchos casos esto es mucho más conveniente que las listas que empiezan en
1.
Tradicionalmente las listas son numeradas 1, 2, 3… pero en C2 (y otros lenguajes de programación) se
numeran 0, 1, 2…
2.4 Guardar, compartir y colaborar
Guardar y compartir proyectos
Hay dos tipos de proyecto en los que puedes guardar tu trabajo. Ninguno afecta la funcionalidad del juego,
pero tienen ciertas ventajas y desventajas durante la edición. Debes elegir uno de los tipos cuando crees un
proyecto nuevo.
Carpetas de proyectos (Folder projects)
Los proyectos pueden guardarse en una carpeta. Esto almacena diferentes partes del proyecto en diferentes
archivos. Por ejemplo, cada plano se guarda en archivos separados en la subcarpeta de Planos (Layouts).
Las carpetas de proyectos se guardan y cargan rápidamente. Esto las hace apropiadas para medianos y
grandes proyectos.
Las carpetas de proyecto son buenas para trabajos en colaboración con un equipo, porque es fácil para
distinta gente trabajar en diferentes archivos de proyecto y más tarde, fusionarlo.
El archivo de proyecto principal tiene la extensión .caproj. Nota que este no contiene el proyecto completo:
es solamente una lista de otros archivos usados en el proyecto. Si quieres compartir un proyecto, el archivo
.caproj es inútil por si solo – guarda a un único archivo de proyecto (.capx) en su lugar.
Archivo de proyecto único (archivos .capx ) (Single-file projects (.capx files))
Los proyectos guardados en un solo archivo son más convenientes para proyectos pequeños. Sólo hay un
archivo para enviar, subir o compartir. Aunque se guardan y cargan más despacio debido a que C2 tiene
que unir y dividir el proyecto de un solo archivo. También es más difícil para colaboraciones que si
estuviese guardado en una carpeta.
Los archivos .capx son un simple ZIP de la carpeta de proyecto. Puedes renombrar un archivo .capx con .zip
para ver los archivos del proyecto.
Convertir entre tipos
Es fácil convertir un archivo de proyecto único a una carpeta de proyecto que al contrario en C2.
Simplemente abre un proyecto y elige Archivo - Guardar como Proyecto… (File - Save As Project...) para
guardarlo en un único archivo de proyecto.
Ya que los archivos .capx son ZIPs de la carpeta de proyecto, pueden también ser convertidos en una
carpeta de proyecto renombrándolo como .zip y extrayendo la carpeta de proyecto que está dentro. De igual
manera, una carpeta de archivos puede convertirse en un archivo .capx comprimiéndolo en un archivo .zip y
cambiándole la extensión a .capx.
Colaborar en proyectos
C2 no contiene características de colaboración, ya que hay buenas herramientas gratuitas para ello que
funcionan con proyectos de C2. Guarda tu proyecto como carpeta y podrás usar softwares de control para
administrar las contribuciones a tu proyecto. Puesto que los archivos de datos están en XLM, ya funcionan
con herramientas de este tipo. Para ver un tutorial de un sistema de control en un proyecto de C2 en
Windows con SVN ve a How to collaborate on projects with SVN ⇗.
2.5 Pruebas y publicación
Probando tu juego
Para probar tu juego durante su desarrollo puedes hacer una vista previa clicando “play” en la barra de
acceso rápido o barra de herramientas, presionando F5 o clicando el botón derecho del ratón en un plano en
la Barra de Proyecto y seleccionando Vista Previa (Preview). Esto usa un servidor local para mostrarte la
vista previa de tu juego.
Si tienes móvil, tablet o otros portátiles/ordenadores donde quieres probar el juego, hacer la vista previa
usando tu red local (wifi) puede ser fácil. Para más información, mirar el tutorial Como hacer una vista
previa en tu red local How to preview on a local network ⇗. Hacer vista previa sobre Wifi también es
compatible con el lanzador CocoonJS (CocoonJS Launcher) para pruebas más rápidas.
También puedes manten er pulsado shift y vista previa para hacer vistas previas continuas. Esto guarda el
juego, lo actualiza y depués carga el estado previo de nuevo. Para más información, ve al tutorial How to use
continuous preview ⇗.
El programa de depuración se puede usar para probar tu juego con información adicional y herramientas
disponibles. Además, puedes usar breakpoints en los eventos para investigar como funcionan.
Debes exportar (export) y publicar (publish) el proyecto antes de poder jugarlo. No puedes compartir la
URL en internet durante la vista previa.
Exportar
Para exportar tu proyecto, usa el Menú de archivo (File Menu), barra de herramientas o barra del proyecto
para abrir el diálogo de exportación del proyecto (Export Project dialog). C2 es compatible con muchas
plataformas; para más información mira la sección Plataformas compatibles (Suported platforms).
Nota que los proyectos exportados, incluyendo la exportación HTML5, no funcionan directamente desde el
disco. Tu proyecto debe subirse a la web (para exportación HTML5) o publicado antes de que funcione.
Si estás interesado en los detalles técnicos al exportar el proyecto, mira la sección Tecnología (Technology).
C2 realiza mucho trabajo en el momento de la exportación del proyecto para optimizarlo. Para más
información, mira el tutorial Optimizaciones de C2 en la exportación (Construct 2’s export-time
optimisation).
Para más consejos sobre publicar correctamente tu juego en la web, mira el tutorial Consejos de publicación
de juegos HTML5 en la web (Tips on publishing HTML5 games to web).
2.6 Plataformas compatibles
C2 se basa en tecnología multiplataforma HTML5, dándote la oportunidad de publicar tus proyectos a una
matriz externa de plataformas. Las plataformas compatibles se describen abajo con notas con
especificaciones de cada una de ellas.
Recuerda que es una buena práctica probar regularmente tu proyecto en todas las plataformas que pretendas
usar - especialmente en los móviles, ya que los dispositivos se consideran más flojos que los de los
ordenadores. A pesar de que HTML5 es un estándar que debe funcionar de igual forma en cualquier
plataforma, en la práctica hay diferencias, especialmente en el rendimiento, la memoria disponible, la
renderización de textos, las características compatibles (WebGL o efectos de audio avanzados),
características especiales de las plataformas (plugins específicos de plataformas de C2), métodos de entrada
y tamaños de pantalla.
Web (HTML5) para navegadores de ordenador
Los navegadores de hoy en día tienen compatibilidad y alto rendimiento con juegos de C2. Google Chrome,
Mozilla Firefox e Internet Explorer 9+ (11+ recomendado para compatibilidad con WebGL), Safari 6.0+ y
Opera 15+ (qué está basado en Google Chrome) son perfectamente compatibles.
Nota que Internet Explorer 8 y anteriores no son compatibles, están en desuso y desaparecerán en el futuro.
Para consejos sobre cómo publicar en la web, mira el tutorial Consejos para publicar juegos HTML5 en la
web.
Web (HTML5) para navegadores de móvil
Los últimos navegadores para móviles tienen buena compatibilidad con juegos C2, pero a veces hay
pérdidas de rendimiento y características respecto a sus equivalentes para ordenador. Juegos de C2 deben
funcionar bien en Safari para iOS 6+, Google Chrome para Android, Firefox para Android, Windows 8 y
Windows Phone 8, Blackberry 10+ y Firefox OS.
Nota que el navegador “Internet” de Android (el navegador por defecto de Android antes de cambiarse por
Chrome) tiene un bajo rendimiento y características, no aptas para el buen funcionamiento de los juegos de
C2. En dispositivos Android se recomienda usar Chrome, el nuevo navegador por defecto, o Firefox.
Aplicaciones de ordenador nativas
C2 permite exportar proyectos con una tecnología llamada node-webkit, paquete de Google Chrome.
Además, su rendimiento y características casan con las de Google Chrome, que es un navegador con
excelentes rendimientos. C2 puede exportar a Windows, Mac OS X, y Linux (de 32 y de 64 bits) con esta
tecnología.
Cuando hagas vista previa o exportes con node-webkit es posible utilizar aplicaciones especiales como leer
y escribir archivos al disco. Puedes hacerlo con el plugin Node-Webkit.
Otras aplicaciones de ordenador
Los juegos de C2 se pueden publicar en la Tienda de Google Chrome, donde pueden hacerse funcionar
desde el escritorio.
El mercado de Firefox ofrece capacidades similares a las de Google Chrome, También es válido para la
plataforma móvil de Firefox.
C2 puede exportarse directamente a aplicaciones Windows 8, que funciona desde la nueva interfaz de
mosaico de Windows. También funciona en dispositivos Windows RT y tabletas táctiles. Se puede acceder a
las características especiales de Windows 8, como Vista de Captura y compras en la aplicación, con el
plugin Windows 8.
Aplicaciones de móvil nativas
C2 puede exportar a PhoneGap Build que es una buena forma de empaquetar tus juegos HTML5 como
aplicaciones nativas para varias plataformas móviles. Aunque por la particular forma en la que trabaja, las
aplicaciones para iOS y Android tienden a tener rendimientos bajos.
Para exportar aplicaciones nativas de iOS y Android con mejor rendimietno, C2 es compatible con servicios
de empaquetado como CocoonJS. Éste usa diferentes tecnologías a las de PhoneGap, mucho más rápidas,
pero también puede publicar en varias plataformas. C2 tiene un plugin CocoonJS con el que puedes acceder
a características como las compras en la aplicación. Nota que CocoonJS es propiedad de Ludei, que es una
compañía separada de Scirra. Para más información mira Cómo exportar a CocoonJS.
C2 también puede exportarse directamente a un número de tiendas de aplicaciones móviles que tienen
navegadores de buena calidad, por lo que los juegos deben funcionar bien. Incluye Blackberry 10, Windows
Phone 8, Firefox OS y Tizen.
Otros
C2 puede publicarse en los juegos de Facebook, accediendo a las características especiales con el plugin de
Facebook.
También es posible publicar en Arcade de Scirra, y puedes usar el plugin de Scirra Arcade para acceder a
características como puntuación máxima.
2.6 Tecnología
C2 crea juegos HTML5. Estos funcionan online en navegadores web de gran variedad de dispositivos y
sistemas operativos, incluyendo dispositivos móviles como teléfonos y tablets, asegurándonos que tu juego
es accesible a la mayor cantidad de gente posible. Esta sección es un resumen de la tecnología usada para
ello. Esto puede ser de interés para gente que le guste la tecnología y te lo puedes saltar si estás más
interesado en saber cómo usar C2.
A pesar de que los juegos de C2 pueden trasladarse a diferentes plataformas, incluso como aplicaciones
nativas, la tecnología base sigue estando basada en HTML5.
Navegadores Web (Web Browsers)




Un navegador es el programa que carga y muestra páginas web en tu ordenador. Los más populares son:
Internet Explorer ⇗ (solo la versión 9 o superior funciona con HTML5)
Mozilla Firefox ⇗
Google Chrome ⇗
Opera ⇗
Los Macs también suelen usar Safari ⇗. Algunos de estos navegadores también están disponibles para
móviles y tablets.
HTML5
HTML ⇗ significa HyperText Markup Language. HTML es la manera estandar en la que se hacen las
páginas web desde los inicios de internet. HTML5 ⇗ es la quinta revisión de HTML y empezó a ganar fama
y difusión en 2011. Introduce algunas nuevas características, pero solo un pequeño número de ellas atañe a
los juegos. De todas formas, “HTML5” es todavía el más apropiado para la tecnología usada por C2.
Javascript es el lenguaje de programación estándar usado para programar webs y también se usa para los
juegos de C2.
De particular interés en HTML5 es la nueva etiqueta <canvas>. Esta crea una superficie rectangular en las
webs HTML donde cualquier imagen o contenido puede ser dibujado. Esto es ideal para juegos. Todos los
juegos de C2 usan canvas HTML5 para mostrar el juego.
HTML5 es compatible con la tecnología de Adobe Flash que domina los juegos de internet desde 2011.
HTML5 se diferencia por ser algo así como un acuerdo de empresas, más que un producto controlado por
una única compañía como Adobe. Flash también funciona como plugin de navegador, que debe ser
descargado e instalado de forma separada mientras que HTML5 está dentro del navegador. Esto significa
que los juegos HTML5 pueden funcionar en dispositivos donde no hay soporte para Flash, como iPhone y
iPad. Dadas sus ventajas, HTML5 reemplazará a Flash en la web.
Javascript
Javascript ⇗ es el lenguaje de programación estándar para web. Permite que las páginas web sean más
interactivas trabajando en cierto modo como aplicaciones tradicionales. Esto también es un acuerdo entre
empresas.
Javascript no es Java. Son dos lenguajes de programación no relacionados que tienen un nombre similar.
Java trabaja otra tecnología para las webs, una totalmente distinta a la de javascript. Intenta no confundir
ambos términos: los juegos de C2 no necesitan java para funcionar.
Navegadores modernos compilan Javascript a códigos de ordenador (o instrucciones de CPU). Esto asegura
que las webs (incluyendo juegos) que usan Javascript funcionan de la forma más rápida y eficiente posible.
Javascript es un tipo de lenguaje que acumula basura, por lo que hace que los juegos se entrecorte o se
pause. Los juegos de C2 están optimizados para crear la menor cantidad de basura posible, reciclando
objetos donde es posible. Incluso objetos enteros son reciclados si son destruidos y recreados. Esto ayuda a
mejorar la actuación y asegura que el juego funcione lo más fluidamente posible.
Plugin y comportamiento SDK
Los programadores de Javascript pueden extender C2 con sus propios Plugins y comportamientos. Mira
Javascript SDK documentation para más información.
Lienzos Canvas
El <canvas> de HTML5 tiene dos formas de dibujar el juego en la web: un simple contexto en 2D y el
contexto WebGL, basado en OpenGL. WebGL es dos veces más rápido que 2D y tiene más características,
incluyendo efectos de soporte, pero no funciona en todas las plataformas. La mayoría de los navegadores
funcionan con WebGL, pero no Internet Explorer. C2 funciona con las dos tecnologías. WebGL puede ser
habilitado o deshabilitado para cada juego en las propiedades del proyecto (Project Properties).
Generalmente, es recomendable habilitarlo, porque el juego funcionará más rápido y los efectos no
funcionan sin él. Si el ordenador o dispositivo del usuario no puede usar WebGL o éste está deshabilitado,
C2 volverá al contexto 2D. En este caso el juego puede seguir jugándose, pero funcionará un poco más lento
y no se verá tan bien.
Ya que Internet Explorer no soporta WebGL, si lo usas sería mejor cambiar de navegador como Firefox o
Chrome. Quizás también quiera avisar a los usuarios de que hagan lo mismo.
WebGL puede no funcionar en un ordenador aunque esté habilitado. En este caso el contexto 2D funcionará
en su lugar. Puedes comprobar que lienzo está usando el juego con la expresión del sistema lienzo
(renderer), que puede ser “canvas2d” o “webgl”.
Oscurecimiento y empequeñecimiento
El código Javascript de tu juego está minimizado y oscurecido con el Closure Compiler ⇗ de Google. Esto
reduce el tamaño y lo hace extremadamente difícil de modificar para otros usuarios.
Las imágenes del juego están comprimidas en PNG. También están comprimidos al exportar para asegurar
que la descarga es lo más pequeña posible. Para más información, mira este post Image compression in
Construct 2 ⇗.
Audio
El motor del juego de C2 soporta Web Audio API en Google Chrome para play-backs de baja latencia o
efectos de sonido. En otros navegadores se usa el estándar de audio HTML5.
Soporte Offline
A pesar de que los juegos HTML5 funcionan en un navegador web, los juegos C2 usan el HTML5
AppCache para permitirles funcionar también offline. Esto es útil para aplicaciones iOS y Chrome, ya que
algunos usuarios quizás utilicen el juego offline. También el AppCache ayuda a ahorrar ancho de banda en
los servidores que hospedan el juego: los archivos del juego solo serán descargados una vez y cada visita
después el juego se cargará desde el disco local (mientras se buscan actualizaciones). Mira el tutorial offline
support in Construct 2 ⇗ para más información. Lo más importante es que tu servidor debe estar configurado
para archivos .appcache con el tipo MIME text/cache-manifest si no el soporte offline no funcionará y
malgastarás mucha banda ancha.
2.7 Buenas Prácticas
¡Haz copias de seguridad a menudo!
Ni el hardware ni el software de tu ordenador son perfectos. Los ordenadores fallan y el software puede
estropearse. Hacer copias de seguridad de tu proyecto te protege de perder todo tu trabajo. Es esencial
mantener las copias seguridad fuera del ordenador. Si todas tus copias están en el mismo ordenador o
guardadas en discos en el mismo lugar, eventos catastróficos como fuegos, inundaciones, robos o fallos
simultáneos de hardware pueden causar la pérdida total de todo tu trabajo y copias de seguridad.
C2 tiene características para hacer copias de seguridad fácilmente, incluyendo copias externas usando
Dropbox. Para más información ve al tutorial Keep your work safe with Construct 2's backup options ⇗.
Este consejo no es solo para C2. Es vital adoptar estas prácticas para todos tus trabajos importantes. No
esperes hasta haber perdido tu trabajo para empezar a hacer esto. La gente pierde trabajos a menudo por no
realizar esto. ¡No seas uno de ellos!
Comprueba en varios navegadores y dispositivos
Es altamente recomendado probar si tu juego funciona debidamente en varios navegadores. Aunque HTML5
es el estándar y en teoría funciona en todos los navegadores, en la práctica hay algunas variaciones entre
navegadores (por ejemplo en actuación, características, renderización de textos, etc.) Debes instalar varios
navegadores y probarlo para asegurar que tu juego le funcionará a todo el mundo. Usa la vista previa en
navegadores (Preview browser) para probar los navegadores fijos y la vista previa en redes locales (preview
on a local network ⇗) para probar los navegadores móviles.
Haz uso de pantallas táctiles también
Muchos usuarios tienen pantallas táctiles sin ratón ni teclado. Si es posible, debes diseñar tu juego para
poder ser usado en estos dispositivos con controles de toque de pantalla. Para más información, ve al tutorial
touch controls ⇗.
Formatos de archive recomendados
Quizás desees crear dibujos o audio en otros programas antes de importarlos a C2. Los mejores formatos
para ello son:
32-bit PNG para imágenes. Asegúrate de elegir 32-bit si tienes elección, la versión de 8-bit o inferior son de
peor calidad. Los PNG de 32-bit no tienen pérdidas y soportan el canal de transparecia alfa (alpha-channel
transparency). Nótese que el Paint de Windows no soporta la transferencia PNG. Usa un editor distinto al
Paint, como Paint.NET ⇗.
Puedes elegir diferentes formatos de salida en C2, como JPEG, para reducir el tamaño de tu proyecto
finalizado. Aunque cuando exportas debes mantener el PNG de 32-bit si es posible, y dejar que C2 los
recomprima. Para más información ve al post Image compression in Construct 2 ⇗.
16-bit PCM WAV para audio. Estos son los típicos archivos .wav, pero nota que no todos los .wav son de
16-bit PCM. Suponiendo que estés usando Windows 7 o superior, al importar un archivo .wav de 16-bit
PCM a C2 éste se encodeará automáticamente a los dos AAC y Ogg Vorbis, los dos formatos necesarios.
Para más información ve a la sección del manual Import Audio dialog.
Seguridad
Nunca jamás escribas nombres de usuario o contraseñas en los eventos. Estos serán visibles como texto
plano en Javascript, y usuarios maliciosos podrán controlar tu cuenta fácilmente. Si necesitas conectarte a
algo como una base de datos, escribe el script que se ejecuta en el servidor y conecta con la URL o el
servidor.
Rendimiento
Hay un gran número de consejos sobre el rendimiento del juego (garantizando que el juego siempre
funcionará rápido). Lo más importante es cuando se desarrolla para móviles, hay que probar el dispositivo
móvil desde el principio. Tu ordenador funcionará 10 o 20 veces más rápido que un móvil, y algo que
funciona muy rápido en tu ordenador puede no ser imposible de jugar en el móvil por su lentitud. Para más
información Performance Tips.
Uso de memoria
Algunos diseñadores están tentados a diseñar niveles enteros como simples imágenes grandes, por ejemplo
10000x10000 píxeles. Este método debe evitarse a toda costa. No es sólo que malgaste memoria, si no que
muchos dispositivos no soportan imágenes tan grandes, por lo que no funcionará. Generalmente el mayor
tamaño que soportan todos los sistemas (incluyendo móviles) es de 2048x2048 píxeles. De todas maneras,
evita imágenes de ese tamaño también, lo más apropiado es usar fondos adosando imágenes de tamaño
medios como 512x512 que cubran todo el plano. Después, compón el diseño de nivel adosando varios
objetos. Cada objeto puede ser estirado y rotado individualmente lo que evitará una apariencia repetitiva.
Imagina una sola imagen de 10000x10000 que usa 400mb de memoria, que dejaría sin espacio a los
ordenadores más potentes. Por otra parte, un nivel compuesto por 512x512 fondos adosados y 50 objetos
diferentes de un tamaño de 200x200 usaría menos de 20mb de memoria. Sería perfecto para encajar en la
memoria de los móviles.
Efectos
Recuerda que los efectos requieren WebGL para funcionar, que no es soportado en todos los ordenadores.
Asegúrate de configurar recursos apropiados y probar tu proyecto con WebGL deshabilitado para que se vea
bien en los sistemas de otros usuarios que no puedan usarlo.
Manejar proyectos
Si trabajas en grupo, probablemente encuentres muy útil el software de control SVN para manejar las
carpetas del proyecto. Éste puede destacar y fusionar los cambios que cada persona hace. También hay un
historial de todos los cambios y restauraciones hechos en todo momento. C2 guarda los datos del proyecto
en formato XML así que es apropiado para este control.
Trabajar de forma individual
Si estás trabajando tú solo, es probable que sea más fácil usar archivos de proyecto únicos (archivos .capx).
Si el proyecto se alarga, C2 tardará más tiempo en guardar y cargar proyectos (mostrará Decompressing
CAPX... o Compressing CAPX en la barra de estado). Llegados a este punto es útil convertirlo en una carpeta
de proyecto que se salta este paso y hará que guardar y cargar sea más rápido.
2.8 Consejos de actuación
Móvil



Los ordenadores modernos son muy potentes. El principal problema es hacer funcionar tus juegos
correctamente en tablets y móviles. Es más difícil conseguir buenos resultados en estos dispositivos debido a
que:
Tienen un hardware más débil: CPUs, y chips gráficos más lentos y menos memoria.
Javascript funciona más lento en ellos
Algunos dispositivos sólo usan software de renderización, haciendo muy lento el dibujo de gráficos.
Debes probar tu juego en móviles desde el principio. Tu ordenador es unas 10 veces más rápido que tu
móvil. Para evitar sorpresas haz pruebas regulares para comprobar la velocidad. La característica Preview on
LAN ⇗ puede hacer esto fácil y rápido. Tu propósito debe ser crear juegos simples para los móviles y tener
menores expectativas de índice de frames (30 FPS es un buen objetivo para móviles).
Estos 3 consejos te ayudaran a conseguir un mejor rendimiento del juego en móviles:
1. Activa “Pixel rounding” poniéndolo en “On” en las Propiedades del Proyecto (Project Properties). Esto
evitará dibujar objetos entre píxeles, que pueden ralentizar el juego en algunos dispositivos.
2. Evita usar demasiados objetos o efectos de partícula, ya que los móviles tienen un límite más bajo.
3. Posiciona objetos usando la misma combinación o efecto en la misma capa. Por ejemplo, si tienes muchos
objetos que usan la Adición (Additive) para combinarse (comúnmente usado para explosiones, lasers y otros
efectos) asegúrate de que todos ellos están situados en su propia capa (de Adición). Asegúrate también de
que el objeto se crea en esa capa si éste se genera en tiempo de ejecución. Alternar entre efectos reduce el
rendimiento, y haciendo esto te aseguras de que objetos que usan el mismo efecto se dibujan a la vez.
Exportando vía CocoonJS ⇗ o directCanvas ⇗ puedes mejorar el rendimiento en Android y iOS si el
navegador del dispositivo es lento.
El rendimiento de los móviles mejorará con el tiempo, así que si ahora tienes problemas, los dispositivos
futuros o las actualizaciones lo mejorarán.
Causas comunes de bajo rendimiento
Algunas de las causas de esto están listadas aquí. No es una lista exhaustiva y puede haber otras razones no
listadas aquí para que tu juego vaya muy lento.
Demasiados objetos que usan Físicos (Physics)
El comportamiento físico es muy intensivo en la CPU. Usar demasiados objetos así puede causar una bajada
de velocidad. Debes diseñar tus juegos para usar unos pocos objetos que usen físicos grandes en vez de
muchos pequeños.
Crear demasiados objetos
Aunque los ordenadores modernos son muy rápidos, todavía tienen muchas limitaciones en la capacidad de
procesamiento. Crear más de 1000 objetos causará probablemente un descenso en la velocidad. Intenta
diseñar usando los mínimos objetos posibles. El contador de objetos (objectcount) te indicara cuantos estás
usando.
Usar demasiados efectos
Los efectos son impactantes a la vista, pero pueden hacer más lento el juego si los usas demasiado,
especialmente en móviles. Usar un efecto en objetos con muchos ejemplos es especialmente lento – a
menudo es más eficiente situar todos los objetos con ese efecto en la misma capa y aplicar el efecto
directamente en la capa. Esto permite al efecto procesar todo de una vez, en vez de hacerlo una y otra vez en
un solo objeto.
Uso innecesario de efectos
Nunca usas efectos para uno estático en un objeto. Por ejemplo, no uses “escala de grises” (“Grayscale”)
para hacer que un objeto aparezca así siempre. Esto ralentizará el rendimiento, cuando puedes importar el
objeto directamente en escala de grises y no usar ningún efecto.
Usar demasiadas partículas
El objeto de partículas (Particles object) puede crear cientos de partículas. Cada una es como un objeto
pequeño, así que usará capacidad de procesamiento. Evita usar más de un par de cientos de partículas para
ordenadores. Se recomienda evitar su uso para móviles siempre que sea posible; si los usas, usa el mínimo
necesario con las tasas más bajas que puedas. Usa el contador de partículas (ParticleCount) para saber
cuántas has creado.
Usar objetos pequeños (Sprites) en vez de fondos adosados
Crear demasiados objetos puede ralentizar el juego y un error común es usar cuadrículas de objetos
pequeños (Sprites) en vez de fondos adosados. Por ejemplo, una cuadrícula de Sprites de 20x20 tiene 400
objetos, que es bastante. Un único fondo adosado puede reemplazar la cuadrícula y cuenta como un solo
objeto. Éstos optimizan unas 400 veces al repetir texturas. Úsalos siempre que sea posible.
Usar un navegador lento
A veces, el lento Canvas 2D puede ser acelerado por el hardware de la tarjeta gráfica del ordenador. Otras
veces, sin embargo, no se acelera y usa un software muy lento. No hay una forma fácil de explicarlo, pero
esto es debido al peor rendimiento de un sistema. Comprueba en ordenadores distintos para ver si hay
diferencias y asegúrate de tener actualizados los drivers de tu tarjeta de memoria.
No aceleración hardware
Normalmente incluso el renderizador Canvas 2D más lento se acelera por la tarjeta gráfica del ordenador.
Sin embargo, a veces el Canvas 2D no se acelera y usa software renderizador muy lento. No hay manera
sencilla de explicar esto, pero se reconoce por un rendimiento significativamente peor en un sistema. Prueba
en varios ordenadores para ver si el bajo rendimiento es debido a esto y asegúrate de que tienes actualizada
la tarjeta gráfica.
Usar demasiados bucles (loops)
Esto es menos común, pero usar muchos bucles como para (for), para cada (for each) y repetir (repeat)
puede causar una bajada de velocidad. Bucles anidados son más propensos a esto. Para probar si hay
problemas, intenta deshabilitar temporalmente estos bucles.
Confusiones comunes
Las siguientes confusiones suelen ser acusadas de afectar el rendimiento (como en los tiempos de
ejecución), pero el efecto no es muy grande o directamente no hay:
Objetos fuera de la pantalla no se renderizan. El GPU es lo suficientemente inteligente para saber que no
debe renderizar ningún contenido de fuera de la ventana – incluso si una única imagen está parcialmente en
pantalla.
Formatos de imagen (por ejemplo, JPEG, PNG-8, PNG-32) afectan el tamaño al descargar pero no afectan
al tiempo de ejecución (se descomprimen todos en 32-bit en el programa).
Formatos de Audio solo afectan al tamaño al descargar pero nada más.
El Número de capas normalmente no afecta, a menos que la mayoría de las capas hayan cambiado su
opacidad, tengan efectos aplicados, tengan un modo de fusión distinto a “Normal” o usen “forzar una
textura” “force own texture”. Así que no hay problema en usar muchas capas con una configuración por
defecto.
El Número de Planos no tiene más efecto que el tamaño de descarga. El tamaño del plano tampoco tiene
efecto directo; los planos largos no usan más memoria o requieren más procesamiento, a menos que uses
más objetos.
Tamaño, ángulo u opacidad de sprites/fondos adosados y posiciones flotantes (por ejemplo, situar un objeto
en X=10,5) generalmente no tienen efecto, puesto que las tarjetas de memoria modernas suelen renderizar
un objeto a la misma velocidad sin tener en cuenta si es grande o pequeño, el ángulo, opacidad o posición.
Sprites muy grandes pueden ralentizar dispositivos móviles, pero en los ordenadores se renderizan tan
rápido como los sprites pequeños.
WebGL
WebGL ayuda a que el juego vaya más rápido: WebGL es unas 2 veces más rápido que Canvas 2D así que,
para mejorar la ejecución, asegúrate de que está habilitado en las propiedades del proyecto (Project
properties) Aunque WebGL no es siempre soportado, por lo que esto no es garantía de que el juego vaya a
usar WebGL. Usa la expresión del sistema Lienzo (Rederer) para determinar cual usar.
Hay muchas razones por las que WebGL no es soportado, aquí una lista:



El navegador puede no soportar WebGL. Por ejemplo, Internet Explorer actualmente no lo soporta y usa
Canvas 2. Para mejorar el rendimiento, intenta cambiar a otro navegador que sí lo soporte.
Tus drivers de la tarjeta gráfica pueden no estar actualizados. Para garantizar el funcionamiento, algunos
navegadores deshabilitan WebGL si la tarjeta gráfica está desactualizada.Actualizarla eliminará el problema.
Simplemente tu ordenador es demasiado antiguo o usa hardware que no lo soporta. Si es posible, actualiza tu
tarjeta y el resto del hardware. Aunque no debes olvidar que puede seguir funcionando con Canvas 2, solo
que más lento.
Más consejos
Para más información y consejos, mirar el post Optimisation: don't waste your time ⇗.
Medidas y pruebas
Desde el principio tu proyecto debe usar un indicador de índice de frames (framerate indicator) y controlar
el rendimiento. Esto te permite notar si, haciendo algún cambio, éste afecta al rendimiento.
Prueba tu proyecto en el máximo número de sistemas y navegadores posible.
Si crees que algo está causando problemas de rendimiento en tu trabajo, es fácil comprobar tu teoría: haz
una copia de seguridad, borra lo que pienses que está afectando y mira si el índice de frames ha mejorado. Si
es así, lo que has borrado era la causa, si no debe ser otra cosa.
Mide siempre el rendimiento. Los sistemas de un ordenador son muy complejos, y hay muchos resultados y
cambios inesperados en su rendimiento. La única forma de saber qué efecto tiene algo sobre el rendimiento
es medirlo. Si no puedes medir la diferencia, entonces el efecto no es significativo.
Como medir el rendimiento
Hay dos expresiones del sistema (system expressions) que determinan el rendimiento:
Fps – da la tasa de frames por segundo. Normalmente la velocidad máxima es de 60 frames por segundo,
pero puede cambiar dependiendo del sistema.
Lienzo (Renderer) - con canvas2d o webgl. WebGL es dos veces más rápido, pero solo funciona en
ordenadores y no en todos los navegadores. Para más información, mirar la sección tecnología.
Puedes mostrar los dos en un objeto de texto (Text object) para echarle un vistazo al rendimiento mientras
pruebas el juego, usando la acción: Configurar texto a: fps & “ FPS (“ & renderer & “)”Esto siempre
mostrará unos 60 FPS (webgl) indicando ambos, el índice de frames y el lienzo.
3. Interfaz
Esta sección trata sobre la Interfaz de usuario. Para un resumen ve a Resumen de Interfaz, de la sección
anterior.
3.1 File menu
Al menú de archivos de C2 se accede clicando el botón azul de la parte de arriba a la izquierda de la barra de
herramientas.
Los objetos abiertos recientemente aparecen a mano derecha del menú que aparece debajo.







Nuevo (New) abre Crear un nuevo diálogo de proyecto (Create New Project dialog).
Abrir (Open) abre un proyecto existente en el disco.
Guardar (Save) guarda el proyecto actual en el disco.
Guardar proyecto como (Save as project) y guardar como archivo único (sabe as single file) lo guarda en
una carpeta o archivo diferente. Ver Saving and sharing projects.
Exportar el proyecto (Export project) exporta el juego a HTML5, listo para distribución. Ver Exporting and
Publishing.
Cerrar pestaña (Close tab) cierra la pestaña que tengas abierta en ese momento. También se pueden cerrar
clicándolas en el centro.
Cerrar proyecto (Close project) Cierra el proyecto actual, preguntándote si quieres guardar los cambios.
En la parte de abajo hay cuatro botones adicionales:




Ayuda (Help) abre este manual
Sobre (About) Abre el About dialog con información sobre tu ordenador, la versión de C2 y demás.
Preferencias (Preferences) abre el diálogo de preferencias Preferences dialog con configuraciones para C2.
Salida (Exit) cierra C2.
3.2 Barra de Herramientas
Barra de Herramientas es el nombre de la barra con pestañas en la parte superior de la ventana, similar al
diseño de Office 2007 y superiores.
Por defecto esta barra está escondida hasta que clicas una de las pestañas. Puedes mostrarla de forma
permanente clicando el botón Pin de la barra arriba a la derecha.
Los accesos directos del teclado se ven o pasando sobre un botón de la barra o presionando Alt, que los
muestra todos en pantalla.
La pestaña Home (Inicio)
Estas pestañas tienen las funciones más usadas y comunes a todos los programas: Cortar (Cut), Copiar
(Copy), Pegar (Paste), Deshacer (Undo) y Rehacer (Redo).
Los botones Borrar (Delete), Seleccionar todo (Select All) y Deseleccionar todo (Select None) afectan la
selección actual en la Vista de la Hoja de Eventos o la Vista de Plano.
Configuraciones (Configurations) te permite configurar diferentes versiones de tu proyecto sin tener que
guardar varios proyectos en el disco. Configuraciónes activas (Active configurations) establece que
configuraciones están siendo editadas. Ya que solo se puede ver una configuración de una vez, se muestran
con el Mostrador de Configuraciones (Display configuration), que debe ser una configuración activa.
La sección Online contiene algunos enlaces a webs que te pueden ser útiles.
La sección Vista previa (Preview) tiene botones para hacer una vista previa del proyecto y exportarlo a
HTML5 para su distribución.
La sección Ir (Go) te permite traer la Página de Inicio si la habías cerrado.
La pestaña View (Vista)
La sección Barras (Bars) te permite mostrar o esconder las diversas barras de la interfaz de C2 clicando en
las cajas.
La sección Zoom se usa para hacer zoom en ambos, la Vista de Plano y la Hoja de Eventos.
La sección Cuadrícula de Plano (Layout Grid) sólo se aplica a la Vista de Plano. Habilitando Snap to Grid
(Ajustar a la cuadrícula) los objetos que muevas y sitúes se ajustarán a una cuadrícula invisible en la que
puedes establecer las medidas.
El Tema (Theme) te permite elegir diferentes estilos visuales a la interfaz de C2. Es sólo estético y no afecta
a la funcionalidad del editor.
La sección Mostar (Display) sólo afecta a la Vista del Plano. Mostrar colisión poligonal (Show collision
polys) renderizará los contornos de las colisiones poligonales de cada objeto en la Vista de Plano si está
habilitado. El color de las líneas de colisión se ùede cambiar en Preferencias (Preferences). El modo Volver
translúcidas las capas inactivas (Translucent inactive layers) mostrará todas las capas, excepto la activada
(Seleccionada en la Barra de Capas), a un 33% de opacidad. Éstas capas están bloqueadas por los que los
obejtos en ellas no se pueden seleccionar. Es un buen modo para editar capas de forma individual.
La pestaña Acontecimientos (Events)
Esta pestaña sólo se aplica a la Vista de la Hoja de Eventos. Si una vista de plano está activada los botones
estarán desabilitados.
El botón Add (Añadir) da formas rápidas de añadir un nuevo evento, condición, acción, sub-acontecimiento,
grupo de aeventos, variables locales o globales, incluir evento o comentario. Si tienes algo seleccionado en
la Hoja de Eventos, el nuevo item se añadirá al lado de la selección.
Deshabilitar (Disable) te permite alternar condiciones, acciones o eventos completos, activándolos o
desactivándolos. Un evento desactivado aparecerá tachado y si se ha borrado correctamente no afectará más
al juego. Pero siempre puedes volver a activarlo clicando Deshabilitar otra vez. Esto es útil para las pruebas.
La sección Favoritos (Bookmarks) te permite intercambiar favoritos al evento seleccionado, y navegar del
siguiente al previo en el proyecto. También se puede ver con la Barra de Favoritos (Bookmarks Bar).
La sección Puntos (Breakpoints) te permite intercambiar puntos en los eventos, condiciones y acciones, o
eliminar todos los puntos de un proyecto.
La sección Búsqueda (Search) te permite filtrar los eventos en las hojas actuales con una búsqueda. Si un
acontecimiento contiene el texto que has buscado, aparecerá, a no ser que lo hayas eliminado. Esto es útil
para localizar eventos relacionados con un proyecto concreto o para encontrar algo en una larga hoja de
eventos. El botón Eliminar Búsqueda (Clear Search) vuelve a mostrar todos los eventos, también pulsando
Escape.
Mostrar enlaces de “Añadir acción” (Show 'Add action' links) puede usarse para esconder o mostrar el
enlace “Añadir acción” (Add action) en cualquier evento. Esto ofrece una forma rápida de añadir acciones
nuevas. Aunque puede incrementar significativamente la altura dede la hoja de eventos, haciéndola difícila
para leer o encontrar eventos. Si quieres revisar una hoja de evento es útil quitar estos enlaces. Las acciones
se pueden seguir añadiendo a los eventos incluso aunque los enlaces estén escondidos usando el botón
Añadir acción (Add action) de la barra de herramientas o del menú del botón derecho del ratón.
3.3 Barra del Proyecto
La Barra del Proyecto (Project Bar) muestra un resumen de todo tu proyecto. Ve a Project Structure para un
resumen de los elementos que conforman tu proyecto o a la sección (Proyectos primitivos) Project
Primitives del manual para más detalles.
El nombre del proyecto aparece con un asterisco (por ejemplo Space Blaster*) si tiene cambios sin guardar.
Organizando proyectos
La Barra del Proyecto puede usarse para organizar tu proyecto en subcarpetas (solo con licencia). Las
Subcarpetas se añaden clicando con el botón derecho en una carpeta y seleccionando Añadir subcarpeta
(Add subfolder). Entonces, puedes arrastrar y soltar carpetas e ítems para organizarlos.
Manejando el proyecto
Clica con el botón derecho cualquier ítem de la Barra del Proyecto y mostrará una lista de opciones. La
mayoría de los ítems pueden ser renombrados y eliminados. Clicando una carpeta con el botón derecho te da
la opción de añadir ítems nuevos en esa carpeta, como un plano u hoja de eventos nuevos. Los objetos se
suelen añadir en la Vista de Plano, pero también puedes añadirlos a la Barra del Proyecto.
Clica con el botón derecho el nombre del proyecto en la parte de arriba para cerrar, exportar o abrir la
carpeta del proyecto en Windows Explorer.
Borrar objetos
Borrarlos de la Vista de Plano no eliminará un objeto del proyecto. La única forma de borrarlo
completamente es eliminarlo de la Barra del Proyecto.
Importar audio
Clica con el botón derecho las carpetas de Sonido o Música y selecciona Importar (Import) para abrir el
diálogo de importación de audio (Import Audio dialog). Esto te permitirá coger archivos de audio de tu
ordenador e importarlos. C2 los convertirá a los formatos necesarios. Para audio en play-back asegúrate de
que añades el Objeto de Audio (Audio object) al proyecto.
Importar archivos
Puedes importar archivos externos adicionales al proyecto. Para más información, ve a Project Files.
3.4 Barra de propiedades
La Barra de Propiedades (Properties Bar) es una parte esencial. Muestra una lista de todos los ajustes que
puedes cambiar seleccionándolos. En la imagen de abajo, un plano está seleccionado, así que se muestran las
propiedades de ese plano.
Hay demasiadas propiedades en C2 para listarlas aquí. En cambio, las propiedades de diferentes partes del
proyecto se explican en su sección del manual. Por ejemplo, las propiedades de los planos se definen en la
sección Planos.
Las propiedades están organizadas en categorías que pueden expandirse con el botón +. Hay muchos tipos
de propiedades, incluyendo campos de números y de texto, listas que se despliegan y enlaces para clicar. El
nombre de las propiedades aparece en la columna de la izquierda, y los valores editables en la columna de la
derecha.
Siempre que algo del proyecto es clicado o seleccionado, sus propiedades aparecen en la Barra de
Propiedades. Por ejemplo, seleccionando la vista de plano o clicando ítems de la Barra del Proyecto se
muestran las propiedades más relevantes.
Elementos con propiedades
Los siguientes elementos tienen propiedades:





Proyectos (Projects)
Planos (Layouts)
Capas (Layers)
Ejemplos de Objeto (Object instances)
Animaciones (Animations)
Muchos comportamientos (behaviors) tienen sus propias propiedades – ver Behavior reference
plugins tienen sus propias propiedades – ver Plugin reference
objetos también tienen efectos que tienen sus propias propiedades.
Muchos
Muchos
Mira la sección del manual referente a cada elemento. También hay un enlace de Ayuda (Help) en la parte
de debajo de las propiedades que te llevaran a la parte adecuada del manual.
Descripciones de la propiedad
Todas las propiedades tienen una descripción que ofrece información adicional sobre para qué se usa cada
una. Esto se muestra en el panel de la parte de debajo de la Barra de Propiedades. Es mejor echarle un ojo ya
que contiene información útil y consejos. Aquí se muestra un ejemplo.
3.5 Barra de objetos
La Barra de Objetos (Object Bar) es más útil en la Vista de Plano. Muestra una lista de objetos con iconos
grandes. Los objetos pueden ser arrastrados y soltados para situarlos en el plano. Esto hace que la Barra de
Objetos sea útil, ya que muestra los objetos que quieres situar, siendo más rápido en ocasiones que la Barra
del Proyecto (que lista todo, no sólo objetos). Mira la sección Objects.
La Barra de Objetos también da otra forma de acceder a las propiedades del objeto. Seleccionando un icono
en la barra puedes ver las propiedades en la Barra de Propiedades. Si una Vista de Plano está abierta,
también seleccionará todos los ejemplos de ese objeto que existan en él.
Navegando por los objetos
Por defecto, la Barra de Objetos los muestra organizados en carpetas. Si haces doble clic en una se muestra
el contenido. Clica la flecha verde Arriba (Up) para volver a la carpeta general.
Si seleccionas una carpeta en la Barra del Proyecto también aparece el contenido en la Barra de Objetos.
Los objetos también se pueden organizar arrastrándolos y soltándolos en carpetas de la Barra de Objetos,
pero la Barra del Proyecto es mejor para ello.
Mostrar opciones
El texto de arriba de la barra de título muestra el filtro o carpeta actual si hay. Por defecto sólo muestra los
objetos del plano actual (por ejemplo Todos los objetos en “MyLayout”). Esto significa que no mostrará
objetos en otros planos, ni objetos del proyecto como el Ratón o el Teclado. Se puede acceder a estos
objetos vía la Barra del Proyecto y arrastrarlos y soltarlos en el plano desde allí. Las opciones de filtro
pueden ajustarse para que muestren todos los objetos del proyecto en la Barra de Objetos (ver más abajo).
Clica el botón derecho en un espacio de la Barra de Objeto para mostrar las opciones.
Subir a la carpeta general (Up to parent folder) Un acceso directo del botón verde Subir (Up) de la parte de
arriba de la Barra de Objeto.
Subir a la raíz (Up to root) Volver a la raíz (el primer nivel) de la carpeta, como si clicaras Objects types en
la Barra del Proyecto.
Insertar un nuevo objeto (Insert new object) y Añadir subcarpetas (Add subfolder) Accesos directos de las
funciones de organizar en la Barra del Proyecto.
Mostrar ruta de la barra (Show path toolbar) Muestra o esconde el texto y el botón Arriba (Up) en la parte de
arriba de la Barra de Objetos.
Filtrar objetos (Filter objects) Configura a Plano de Objetos Actual (Current layout objetcs) para mostrar
solamente los objetos que están en el plano actual (el plano por defecto) o Todos los objetos del proyecto
(All project objects)para mostrar
Ver como (View as)
Configura la Estructura de la Carpeta (Folder Structure) para mostrar los objetos organizados en sus
subcarpetas (las subcarpetas por defectos) o Lista Simple (Simple List) para alistar todos los objetos sin tener
en cuenta su carpeta (sin subcarpetas).
Estilo de Icono (Icon style) Cambia como se muestran los iconos en la Barra de Objeto, incluyendo en qué
dirección se desplaza la barra si hay muchos objetos. Esto es útil si pierdes la Barra de Objetos en algún
lugar del editor, por ejemplo en la parte de arriba o debajo.
Tamaño de Icono (Icon size)
Cambia el tamaño de los iconos. Los iconos más pequeños encajan mejor en la ventana, pero los más
grandes son más fáciles de identificar.
3.6 Barra de Capas
La Barra de Capas se usa para añadir, editar y eliminar capas en un plano. Una capa es como un folio de
cristal donde se sitúan los objetos. Esto permite un manejo más fácil de los objetos que se superponen a
otros objetos, por ejemplo mostrar los objetos en primer plano (foreground) delante de los del fondo
(background). También permite hacer efectos de profundidad como la paralasis y las capas pueden ser
rotadas y escaladas individualmente.
Las capas pueden ser arrastradas y soltadas en la Barra de Capas para cambiar su orden. Las capas de debajo
de la lista se muestran al fondo (por ejemplo, objetos de fondo) y las capas de arriba al frente (por ejemplo,
objetos HUD).
Seleccionando una capa muestras sus propiedades en la Barra de Propiedades y también configurarla como
capa activa (active layer) en la que poder situar objetos. Mira las propiedades de la capa activa en las
propiedades de plano (layout properties) para más información.
La lista de capas



Cada capa de la lista tiene:
Una casilla para cambiar la capa visible en el editor (esto no afecta al juego en la vista previa o al exportar)
Un icono de candado. Clicando esto la capa se bloquea. Si una capa está bloqueada, los objetos que
contenga no se pueden seleccionar. Esto es útil para prevenir selecciones accidentales en capas que no se
usan casi nunca.
Un número a la derecha. Esto es un índice que empieza en 0 (la primera capa es 0, no 1). Si necesitas
introducir un número de capa en el sistema de eventos, este es el número que debes introducir. (También
puedes introducir el nombre de capa que sería más eficiente si reorganizas las capas a menudo).
La Barra de Capas
Los iconos a lo largo de la parte de arriba ofrecen accesos directos para editar las capas. Se pueden añadir
capas y hay opciones alternativas para la visibilidad y el bloqueo. También hay unos botones de Renombrar
(Rename) y Borrar (Delete), (F2 y Borrar en el teclado respectivamente). Las capas se pueden renombrar
clicando una vez sobre ella, al igual que los archivos en Windows. Finalmente, hay unos botones Mover
arriba (Move up) y Mover abajo (Move down) que ofrecen la alternativa de arrastrar y soltar para reordenar
capas.
Ordenar Objetos Z
Para modificar el orden Z (de delante a atrás) de objetos individuales en una capa, usa la Barra Orden Z.
3.7 Barra de Orden Z
La Barra de Orden Z te permite un control preciso sobre qué objetos aparecen en frente de cuales. Aunque
C2 está en 2D, el término orden Z se usa para referirse al orden en el que se muestra cada objeto.
La barra de orden Z no está disponible en la versión gratuita de C2.
Para abrir la barra de Orden Z, haz click derecho en la vista de plano y selecciona Orden Z -> Editar orden
Z… (Z order -> Edit Z order) o selecciona el cuadro Z Order en la barra de Vista de pestañas.
La lista de Orden Z
Si no se selecciona ningún objeto, La barra de orden Z muestra todos los objetos del plano. Los marcadores
de grupo aparecen para identificar cada capa en la Barra de Capas. Si el Orden Z es ascendente significa que
los objetos del final de la lista aparecerán detrás, y los objetos del principio delante.
Si se selecciona algún objeto, la lista sólo mostrará ese objeto y cualquiera por encima. Esto sirve para ver el
orden Z de un área pequeña sin tener en cuenta el resto de planos.
Identificar objetos
Con muchos ejemplos en la lista, a veces es difícil decir el lugar preciso que ocupa en la lista. Para ayudarte
a identificar cada ejemplo su UID aparece tras su nombre, por ejemplo, Player 41 (se refiere al ejemplo de
jugador con UID 41).
Los ejemplos de la lista quen están seleccionados en la Vista de Plano se destacan en negrita.
Los sprites que tienen uina imagen de inicio diferente por medio de la propiedad Frame Inicial (Initial
Frame) o Animación Inicial (Initial Animation) también tienen un icono de esa imagen inicial en la lista de
orden Z.
Finalmente, los ejemplos pueden ser clicados dos veces para hacerlos parpadear en la Vista de Plano.
También puedes hacer click con el botón derecho sobre un ejemplo y seleccionar Ejemplo Parpadeo (Flash
Instance). Esto te ayudará a identificar visualmente el ejemplo en el plano.
Editar el Orden Z
Usar la Barra de Orden Z es muy sencillo: para mover el orden de un objeto simplemente arrástralo en la
lista. También puedes mover los objetos a otras capas de esta forma. También puedes seleccionar varios
objetos sujetando Control y Shift y arrastrándolos todos como bloque a otra capa o lugar en la lista Z.
Cuando lo hagas el orden relativo a la selección previa se mantiene.
Si quieres añadir, quitar o reordenar capas, usa la Barra de Capas.
Opciones de Vista
Puedes hacer click con el botón derecho en la Barra de Orden Z y seleccionar Mostrar sólo la capa activa
(Show active layer only). Así, reduces la lista y sólo muestras los objetos que hay en la capa que tienes
activa en ese momento (la seleccionada en la Barra de Capa), lo que es útil para trabajar en una sola capa.
3. 8 Barra de Mosaico
La Barra de Mosaico permite situar Mosaicos para editarlos desde la Vista de Plano. Nos da una barra de
herramientas con varias opciones y una vista de la imagen cuadriculada.
Uso básico
Para añadir mosaicos y empezar a editarlos sigue los siguientes pasos:
1.
2.
3.
4.
Añade un Objeto Mosaico al plano y asegúrate de que está seleccionado.
Elige la herramienta Pincel o Rectángulo de la Barra de herramientas.
Selecciona una tesela en la cuadrícula que se muestra.
Haz click dentro del Objeto Mosaico para empezar a dibujar en la tesela seleccionada.
Para terminar de editar las teselas y volver a la edición normal del plano, clica sobre la barra de herramientas
del mosaico. Esto te permite mover y ajustar todas las partes del mosaico.
Si tienes varios Objetos Mosaico, sólo aquel que selecciones se podrá editar. Es útil organizar por capas los
mosaicos para que sea más fácil seleccionarlos con la Barra de Orden Z o Escondiendo/Bloqueando capas
con la Barra de Capas.
Herramientas de la Barra de Herramientas
La Barra de Herramientas de la Barra de Mosaico tiene las siguientes opciones:
Vista normal de Plano (Normal layout view selection): para terminar de editar teselas y seleccionar el
objeto como cualquier otro.
Lápiz de teselas (Pencil tile tool): dibuja teselas con el lápiz. También puedes selccionar un área de teselas
arrastrándo sobre varias de ellas y después usar esta herramienta para estampar esas teselas en otra parte del
mosaico.
Herramienta de tesela rectangular (Rectangle tile tool): dibuja un área rectangular clicando y arrastrando
en el objeto mosaico. También puedes seleccionar un área de 3x3 en el conjunto mostrado, y la herramienta
lo convertirá automáticamente en 9-patch. Esto funciona para dibujar filas o columnas individuales con
selecciones más pequeñas de 1x3 o 3x1, donde la primera y la última teselason la primera y la última de la
selección, y el resto sería la del medio repetida. Se pueden usar selecciones más grandes, como de 4x4,
dónde las teselas del medio se alternarán a lo largo del rectángulo.
Herramienta de borrar teselas (Erase tile tool): borra teselas del mosaico, apareciendo un espacio
transparente. Las áreas más grandes se pueden borrar seleccionando un área más grande del mosaico. Un
atajo para borrar teselas individuales es hacer click con el botón derecho mientras estás usando otra
herramienta.
Editar tesela en el polígono de colisión (Edit tile collision polygon): con una sola tesela seleccionada en
el mosaico, clicka esta herramienta para editar el polígono de colisión de dicha tesela. También puedes hacer
doble click sobre una tesela. Cuando pruebes colisiones con el Objeto Mosaico, el polígono de colisión se
usará en todos los lugares en los que esa tesela aparezca. Si se habilita un polígono de colisión (y no sólo
con el cuadro delimitador (bounding box) por defecto) éste será resaltado en rojo cuando pases con el ratón
sobre esa tesela en la Barra de Mosaico.
Voltea la tesela verticalmente (Flip placing tile vertically): Cuando uses la herramienta Lápiz, clica para
las teselas se volteen de forma vertical. También puedes usar el atajo de la tecla Y. Si un área de teselas está
seleccionada en el mosaico, toda la selección se volteará.
Rota la tesela en el sentido / al contrario de las agujas del reloj (Rotate placing tile
anticlockwise/clockwise): Cuando uses la herramienta Lápiz, clica para mantener la rotación de las teselas
hasta ser colocada. También puedes usar el atajo de la tecla Z. Si un área de teselas está seleccionada en el
mosaico, toda la selección rotará.
Importar TMX (Import TMX): importar un mosaico .tmx como el usado por el programa Tiled. Todas las
teselas del objeto se sustituyen por los datos del archivo TMX. En C2 el Objeto Mosaico sólo representa una
capa de teselas, así que si el archivo TMX tiene varias capas se te preguntará cual quieres importar. Para
importarlas todas crea un Objeto Mosaico por cada una de ellas e importalas por separado. Opcionalmente,
la imagen delas teselas se puede reemplazar por la imagen del archivo TMX.
Exportar TMX (Export TMX): exporta las teselas y el mosaico a un archivo .tmx como los que usa el
programa Tiled. Nota que C2 no es compatible con todas las características de Tiled, así que al importar y
exportar pueden perderse algunos datos, como la definición del terreno. Además, puesto que en C2 un objeto
representa una núnica capa de teselas, el archivo TMX exportado tendrá sólo una capa.
Objeto Mosaico
Para más información de cómo usar Mosaicos, mira la entrada del manual Objeto Mosaico
3. 9 Barra de Favoritos
La Barra de Favoritos muestra un resumen de todos los enlaces en el proyecto. Los enlaces favoritos son una
forma de marcar y moverse rápidamente entre eventos en la Vista de Hoja de Eventos. En esta hoja, los
enlaces se pueden combinar con Ctrl+F2 y navegar entre ellos con F2 y Shift+F2 (Ver atajos del teclado).
La barra de Favoritos no está disponible en la versión gratuita de C2.
Como todas las barras, la de Favoritos se puede acoplar en cualquier parte de la interfaz o dejarse flotando
como una ventana individual.
Los Favoritos están ordenados de acuerdo al orden en el que aparecen en el proyecto: primero, por hojas de
eventos en el orden en el que aparecen en la Barra del Proyecto; después por su secuencia dentro de la hoja.
Cada favorito muestra una descripción, si es posible. Por ejemplo, un grupo de favoritos mostrarán el título
del grupo, un favorito variable mostrará el nombre de la variable, y un evento favorito mostrará un texto de
la primera condición del evento. Si la posición del favorito tiene un número de eventos también se muestra,
y la hoja de eventos a la que pertenece también aparecerá.
Haz doble click sobre un enlace para navegar. Clica con el botón derecho para mostrar un menú donde
poder quitar (pulsando Borrar -Delete-) todos los favoritos del proyecto.
3. 10 Vista de Plano
La Vista de Plano (Layout View) es un diseñador visual para tus objetos. Permite configurar y preparar
planos de objetos, como un nivel, menú o título de pantalla en un juego. En otras herramientas, plano puede
significar escena, habitación, frame o periodo. Ve a la sección layouts.
El rectángulo intermitente en la parte de arriba a la izquierda indica el tamaño de la ventana en el plano.
Adding, modifying and deleting objects
Haz doble clic en un espacio del plano o clica el botón derecho y selecciona Insertar objeto nuevo (Insert
new object) para añadir un nuevo tipo de objeto. Aparecerá el diálogo Insert New Object dialog.
Para crear nuevos ejemplos de un tipo de objeto existente, otro objeto similar puede ser arrastrado usando la
tecla control, copiado y pegado, o arrastrado y soltado desde la Barra del Proyecto o la Barra de Objeto.
Asegúrate de que tienes clara la diferencia entre tipo de objeto y ejemplo, está en Project Structure).
Un acceso directo para importar archivos de imagen como objetos ligeros (Sprites) arrastrar y soltar la
imagen desde el explorador de Windows a la Vista de Plano. Esto crea automáticamente un nuevo tipo de
objeto ligero. Si arrastras varias imágenes, el objeto se convertirá en animación con las imágenes arrastradas
como frames de la animación.
Los ejemplos pueden moverse arrastrándolos y soltándolos con el ratón. Mantén presionado shift para fijar
el eje a la diagonal. También puedes empujar 1 pixel cada vez que pulsas una flecha del teclado (mantén
pulsado shift al empujar y se moverá 10 píxeles) o puedes introducir las coordenadas directamente en la
Barra de Propiedades.
La tecla Borrar o la opción Borrar del botón derecho elimina ejemplos. Borrar todos los ejemplos de un
objeto no eliminará el tipo de objeto del proyecto. Para eliminarlo completamente debes borrarlo vía la
Barra de Proyecto.
Clica objetos para seleccionarlos. No se pueden seleccionar si la capa está bloqueada. Mantén presionado
control mientras clicas para seleccionar varios objetos, o clica y arrastra un rectángulo de selección. La
Barra de Propiedades muestra las propiedades de todos los objetos seleccionados, así que si cambias alguna
propiedad será para todos.
Cuando se selecciona un simple objeto aparece con unos ajustes de tamaño alrededor:
Clica y arrastra estos ajustes para cambiar el tamaño del objeto. Mantén shift presionado para hacerlo
proporcionalmente. El tamaño de los ajustes se puede cambiar en Preferencias (Preferences).
Los objetos que se pueden rotar también tienen unos ajustes de ángulo. Estos pueden ser clicados y
arrastrados para cambiar el ángulo del objeto. También puedes introducir un ángulo en la Barra de
Propiedades.
Usar Mosaicos
Si estás diseñando un juego basado en teselas, puedes insertar el Objeto Mosaico y editar las teselas en la Vista de
Plano. Para saber más, ve a la sección Barra de Mosaico.
Desplazamiento y Zoom



Hay tres formas de desplazarse en la Vista de Plano:
Las barra de desplazamiento horizontal y vertical a los márgenes
Mantener presionado el botón central del ratón y arrastrar el ratón
Mantener presionada la barra espaciadora (útil para portátiles)
En ordenadores fijos, usar el botón central y arrastrar el ratón es lo más conveniente para moverte por el
plano.



El Zoom es útil para enfocar areas pequeñas o tener una vista completa del plano completo. Hay diversas
formas de hacer zoom:
Los botones de Zoom en la Barra de Herramientas (mantiene Shift presionado mientras clicas para ajustar)
Mantener control presionado y mover la ruleta del ratón. Mantén pulsado Control y Shift para hacer zoom en
intervalos regulares (por ejemplo, 100%, 200%, 400%...)
+ y – en el teclado (Mantén pulsado Shift para ajustar el zoom)
El zoom actual se muestra en la Barra de Estado. Presiona Control+0 para volver al zoom 100%.
Envolver selección
Si seleccionas dos o más objetos, puedes envolver la selección presionando Enter o haciendo click con el
botón derecho y seleccionando Envolver selección. Esto te permite rotar y modificar la selección de forma
conjunta.
Las selecciones envueltas aparecen con un recuadro rojo en vez de azul, como se muestra a continuación:
Usando los marcadores del tamaño rojos puedes hacer que la selección sea más grande:
La opción de rotar roja se puede usar para rotar toda la selección sobre el eje central de la selección. Si haces
click en un obejto miestras la selección está envuelta, ésta rota hacia el origen del objeto clicado. Esto te
permite rotar toda la selección sobre ese objeto, en vez de solo sobre el eje central.
Otros
Para ir a la Hoja de Eventos asociada, presiona Ctrl+E o Ctrl+Tab o clicar el botón derecho y seleccionar
Editar Hoja de Eventos (Edit Event Sheet).
El orden de objetos Z dentro de una capa puede ajustarse usando el botón derecho y seleccionando Orden Z
– Enviar a la primera capa o Enviar a la última capa (Z Order - Send to top of layer or Send to bottom of
layer).
Los objetos pueden ajustarse a la cuadrícula para hacer un mosaico. Esto se puede habilitar en la Barra de
Vista en las Herramientas.
El editor de imagen o animación se puede ver haciendo doble clic en un objeto con imagen o animación
como el Fondo Adosado (en mosaico) y los objetos pequeños o Sprite.
Vista previa de efectos
Los efectos se muestran en la Vista de Plano si WebGL está habilitado en las Propiedades del Proyecto. Si
WebGL está deshabilitado, la Vista de Plano hará una vista previa similar a la ejecución, sin mostrar efectos
ni otros recursos que han sido configurados.
3.11 Vista de la Hoja de Eventos
La Vista de la Hoja de Eventos es donde se pueden añadir, ver y editar Eventos en una Hoja usando el
sistema de eventos no programados de C2.
El sistema de Eventos tiene muchas características, así que tiene su propia sección del manual. Esta sección
solo mostrará las características básicas.
Diagrama de un Evento
Los Eventos están conformados por tres secciones:
1. El Bloque de Eventos (Event Block), que contiene las condiciones. Nótese que el margen (margin) a la
izquierda de las Condiciónes (Condition) te permite seleccionar el evento completo.
Las Condiciones (Conditions) están listadas dentro del Bloque de Eventos.
Las Acciones (Actions) están listadas en la derecha del Bloque de Eventos.
Las Condiciones y Acciones pueden seleccionarse clicando sobre ellas. El Evento completo puede
seleccionarse (seleccionando también todas sus condiciones y acciones) clicando el margen del Evento o la
parte de abajo del Bloque de Eventos. Como en la Vista de Plano, se pueden hacer selecciones múltiples
manteniendo Control cuando clicas distintos ítems. Aunque sólo puedes seleccionar eventos, condiciones o
acciones de una sola vez (no puedes seleccionar distintos tipos de ítems de una vez). También puedes
mantener pulsado Shift y clicar el evento, condición o acción para seleccionar todos los ítems entre la
selección y el evento clicado.
Creando Eventos




Hay varias formas de añadir nuevos Eventos:
Haciendo doble clic en un espacio de la Hoja de Eventos
Clicando el enlace Añadir Evento (Add event) detrás del último evento.
Clicando el botón derecho y eligiendo un ítem para añadir en el menú.
Usar la Barra de Eventos
Cuando añades un Evento nuevo, el diálogo que aparece es para añadir la primera condición (ver Diálogo de
Añadir condición, Add Condition dialog). Para añadir más condiciones la Evento, usa el botón derecho en el
margen o en una condición ya creada y selecciona Añadir otra condición (Add another condition).
Se pueden añadir acciones clicando el enlace Añadir acción (Add action) (si no ha sido escondida de la
barra), o usando el botón derecho en el margen o en una acción ya creada y seleccionando Añadir otra
acción (Add another action). Mirar también Diálogo de Añadir acción (Add Action dialog).
Modificar Eventos
Haz doble clic o selecciona y pulsa Enter en una condición o acción para editarla.
Eventos, condiciones y acciones se pueden arrastrar y soltar sobre la Hoja de Eventos. Manteniendo Control
y arrastrando se duplica un Evento, condición o acción. Los ítems de Eventos también pueden ser cortados,
copiados y pegados.
Sería conveniente organizar los eventos en Grupos de Eventos (Event Groups), que se pueden activar y
desactivar en conjunto.
Desplazamiento y zoom




Hay varias formas de desplazarse en la Vista de Hoja de Eventos:
La barra vertical a la derecha de la vista.
Usando la rueda del ratón
Manteniendo pulsado el botón central del ratón y arrastrándolo.
Manteniendo la barra espaciadora y moviendo el ratón (útil para portátiles)
Usa los botones de zoom de la Barra en la Barra de Vista o mantén pulsado control y mueve la rueda del
ratón para hacer zoom. Pulsa Ctrl+0 para volver al zoom 100%. El tamaño de fuente en la Hoja de Eventos
se puede configurar en Preferencias (Preferences).
3.12 Editor de Imágenes y Animaciones
C2 tiene un editor de imágenes dónde aparecen ventanas adicionales que te permiten crear animaciones con
los objetos. Nota: actualmente el editor de imágenes está en proceso de creación y no está completo.
Para abrir este editor, haz doble clic en un objeto con imagen o animación en la Vista de Plano. También
puedes clicar con el botón derecho en la Barra de Propiedades o Barra de Objetos y seleccionar Editar
Imagen (Edit image) o Editar Animación (Edit animations).
El editor de imagen
El Editor de imagen se usa para editar imágenes para fondos adosados y animaciones usando Sprites.
Los botones de arriba modifican la imagen completa:
Imagen transparente (Clear image) Hace que se vuelva transparente.
Abrir (Open) Importa un archivo de imagen del disco en formatos PNG, JPEG, BMP, TIF, GIF o WMF.
PNG es el recomendado ya que no tiene pérdidas, se suele comprimir bien y soporta transparencia alfa.
Guardar (Save) Exporta la imagen a un archivo del disco en formatos PNG, JPEG, BMP, TIF o GIF. PNG es
el recomendado.
Ajustar formato de exportación (Set export format) Abre el diálogo de Formato de Imagen (Image Format
dialog) permitiéndote configurar el formato de exportación a PNG-32, PNG-8 o JPEG.
Espejo (Mirror) Espeja la imagen horizontalmente. Mantén Shift para espejar la imagen completa.
Voltear (Flip) Voltea la imagen verticalmente. Mantén Shift para voltear la imagen completa.
Rotar 90 grados en el sentido de las agujas del reloj/sentido contrario (Rotate 90 degrees
clockwise/anticlockwise) rota la imagen. Mantén Shift para rotar la animación completa.
Recortar (Crop) Quita la transparencia que sobra a los márgenes de la imagen, haciendo el lienzo lo más
pequeño posible para que quepa la imagen. Se recomienda para ahorrar memoria y hacer las colisiones más
precisas y eficientes. Mantén Shift para recortar la animación entera.
Ajustar tamaño (Resize) Ajusta la imagen al tamaño del lienzo, con opciones de centrar, alinear a la
izquierda o ajustar al lienzo.
Botones de Zoom (Zoom buttons) Hacen zoom a una imagen. También puedes mantener Control y mover la
rueda del ratón.
Cambiar el brillo del fondo (Toggle background brightness) Cambia la sombra del fondo de débil a fuerte.
La sombra fuerte es más útil para editar imágenes brillantes como puntos de luz, nubes, etc.
La Vista del Editor de imagen también puede ser desplazada manteniendo el botón central del ratón y
arrastrando.
Los botones de la izquierda son herramientas:
Selección rectangular (Rectangle select) Selecciona, borra, corta, copia y pega secciones rectangulares.
Borrador (Eraser) Borra secciones de la imagen.
Lápiz (Pencil) Dibuja píxeles individuales o, arratrandolo, crea líneas de 1 píxel de grosor.
Pincel (Brush) Dibuja con un pincel redondo.
Línea (Line) Dibuja líneas de colores.
Rectángulo (Rectangle) Rellena un área rectangular de color.
Fill (Rellenar) Rellena un área completa con color.
Seleccionador de color (Color Picker) Selecciona un color primario o secundario de la imagen. Un acceso
directo es manteniendo Control y clicando la imagen, aunque estés usando otra herramienta.
Ajustar origen y puntos de la imagen (Set origin and image points) Abre el diálogo de Puntos de imagen
Image Points dialog. Esto te permite ajustar el origen de la imagen (su punto de rotación) y situar puntos
focales de la imagen como la punta de un arma. Se puede acceder a estos puntos en el sistema de eventos
para crear objetos. Algunos objetos, como fondos adosados, no usan origen no puntos de imagen.
Ajustar colisión poligonal (Set collision polygon) Ajusta la forma de una colisión para una imagen o frame.
Por defecto, C2 intuye la forma, pero no siempre es preciso. Clica y arrastra los puntos de la colisión
poligonal para delinear su forma. Clica el botón derecho para mostrar el menú con opciones adicionales para
la colisión, como añadir y borrar puntos (adding and deleting points). Algunos objetos, como fondos
adosados, no usan colisiones poligonales.
Barra de Animaciones
En la Barra de Animaciones se pueden crear varias animaciones a partir de pequeños objetos o Sprites.
Clica el botón derecho en un espacio par añadir una nueva animación o una subcarpeta para organizar
animaciones. Clica el botón derecho en una animación y selecciona Vista previa (Preview) para hacer una
vista previa de la animación en el juego.
Cuando seleccionas una animación, la Barra de Propiedades muestra sus ajustes. Estos son:
Velocidad (Speed) El número de frames por segundo. Por ejemplo, si está en 5, cada frame de la animación
durará 1/5 de segundo. Si no quieres que la animación se mueva ponlo a 0 (si un mosaico se hace con
baldosas distintas en cada frame).
Bucle (Loop) Vuelve a empezar la animación siempre que acaba.
Repetir (Repeat count) Si no hay bucle, el número de veces que quieres repetir la animación.
Repetir en (Repeat to) El número de frame (índice 0) en el que quieres repetir si hay bucle o repetición.
Ping-Pong a animación va hacia delante y hacia atrás.
Barra de Frames
La Barra de Frames muestra la lista de frames de la animación actual.
Selecciona una imagen para activar el Editor de Imagen y editar el frame de la animación. También puedes
arrastrar y soltar frames para ajustar la secuencia.
Clica el botón derecho en un espacio de la Barra de Frames para:
Añadir frame (Add frame) Añade un frame blanco al final de la secuencia.
Duplicar el último frame (Duplicate last frame) Hace una copia del último frame y lo añade a la secuencia.
Invertir frames (Reverse frames) Invierte el orden de todos los frames.
Importar frames (Import frames) Abre un diálogo para seleccionar una o más imágenes del disco. Se añaden
como frames de animación.
Importar tira de Sprites (Import sprite strip) Importa una tira de Sprites o mosaico, donde una imagen simple
contiene distintos frames alineados en una cuadrícula. Esto se hace con el diálogo de importación de tiras de
Sprites (Import Sprite Strip dialog).
Cargar archivos del disco (Reload files from disk) Carga todas las imágenes desde la carpeta del proyecto.
Esto es útil si has editado las imágenes de la carpeta del proyecto mientras C2 estaba abierto y quieres que el
programa reconozca los cambios. (Esta opción estará deshabilitada si no usas una carpeta del proyecto).
Tamaño miniatura (Thumbnail size) Ajusta el tamaño de los iconos en miniatura de cada frame de la barra.
Seleccionando un frame se muestran sus propiedades en la Barra de Propiedades: Velocidad del frame
(Frame speed) que es un multiplicador del tiempo que usa un frame. Por ejemplo, un frame a velocidad 2
usará dos veces más tiempo, 0,5 la mitad, etc. en relación con la velocidad actual de la animación.
3.13 Diálogos
Esta sección lista todos los diálogos en el editor de C2. Quizás no necesites usarlos todos, depende de las
características que uses. Cada diálogo tiene un enlace a su sección en este manual. Quizás prefieras usarlos
para leerlos cuando los necesites en vez de leerlos todos ahora.
3.13.1 Sobre (About)
Si estás buscando ayuda general en C2, intenta con la portada del manual. Esta página te describe el diálogo
Sobre (About).
El diálogo Sobre contiene:
Número de edición (Release number) Por ejemplo, Release 70
C2 no utiliza el sistema numérico a.b.c. Las versiones son un número simple en el que se incrementa 1 con
cada nueva edición. Debes mantenerte actualizado a la última versión para obtener más características,
mejor rendimiento y la mayor estabilidad.
Ingeniería de la edición (Release architecture) 32-bit o 64-bit
Esto determina si estás usando la versión de 32-bit o la de 64-bit. Si estás usando un ordenador de 64-bit es
recomendable usar la versión de 64-bit, a menos que estés usando la versión portátil. Ve a Instalando C2
Installing Construct 2 para más información.
Tipo de edición (Release Type)
Después del número y la ingeniería puede aparecer la palabra checked. Ests ediciones son para pruebas y
pueden mostrar diálogos de fallos indicando un posible problema. Debes informar de esto a Scirra.
Si la palabra checked no aparece, indica que la versión de C2 es estable y apropiada para el uso diario.
Fecha de creación (Build timestamp)
Incluye la fecha en la que esa programa C2 concreto fue creado por Scirra. Esta fecha puede ser usada por
Scirra para diagnósticos.
Información de OpenGL (OpenGL information)
Esta sección muestra tu tarjeta gráfica y las capacidades básicas.
Es importante mantener los drives de la tarjeta actualizados. Muchos fallos en el plano (como objetos que no
aparecen o secciones cortadas) son causados por los drivers. Actualizar a la última versión arregla estos
problemas casi siempre. Si no lo has hecho antes de instalar C2, te recomendamos que busques el enlace de
actualización y lo ejecutes. Quizás necesites permisos del administrador para hacerlos funcionar.
Información de la Licencia (License Information)
Contiene la información si has comprado una licencia. Ve a la sección, usar una licencia Using a license.
Página de Créditos
Lista todas las personas y organizaciones que han trabajado en la creación de C2.
3.13.2 Añadir comportamiento (Add behavior)
El diálogo de Añadir comportamiento te permite añadirlo a un tipo de objeto. Algunos comportamientos
solo se pueden añadir una vez a un objeto, así que no aparecerán en el diálogo si ya está aplicado. Puede
abrirse desde el diálogo de Comportamientos de objeto Object Behaviors dialog. Para saber sobre cada
comportamiento ve a la sección de comportamientos del manual.
Simplemente, haz doble clic en el comportamiento que quieras añadir. Selecciónalo para ver una breve
descripción bajo los iconos. Los comportamientos disponibles se pueden filtrar por nombre o tipo en el
cuadro de búsqueda arriba a la derecha.
3.13.3 Añadir condición/acción (Add condition/action)
El diálogo de Añadir condición y el diálogo de Añadir acción son muy similares. Estos te permiten añadir o
editar condiciones o acciones en una Hoja de Eventos.
Añadir una acción o condición consta de tres pasos:
1. Elegir el objeto que tendrá la condición o acción
2. Elegir la condición o acción en ese objeto
3. Introducir parámetros, si es el caso, como las coordinadas X, Y para ajustar la posición.
Los botones Siguiente (Next) y Anterior (Back) se usan para moverse adelante y atrás por estos pasos.
Paso 1: Elige el objeto
En este paso aparece una lista de todos los tipos de objeto. El Sistema de objeto (System object), que
representa la funcionalidad, siempre aparece primero y el resto de objetos están ordenados alfabéticamente.
Haz doble clic en un objeto para seleccionarlo. Escribe en el cuadro de búsqueda para un filtro rápido
cuando hay muchos objetos.
Las condiciones y acciones que cada objeto contiene se relacionan con el tipo de objeto que es (Sprite,
teclado o audio). Por ejemplo, para situar la acción Reproducir sonido (Play sound) en el diálogo, primero
haz doble clic en el objeto de Audio. Recuerda que el Sistema de objeto tiene algunas condiciones que se
pueden usar en cualquier objeto, como Recoger aleatoriamente (Pick random) y Para cada (For each).
Paso 2: Elegir una condición o acción
En este paso aparece una lista de condiciones y acciones en el objeto elegido. Están ordenados en categorías.
Abajo se muestra una lista de las condiciones del Sistema de objeto.
Haz doble clic en una condición o acción para elegirla. Como antes, escribir en el cuadro de búsqueda ayuda
a localizarlos más rápido en una lista.
Para más información de cada condición y acción, ve a Plugin reference. Si el objeto elegido tiene algún
Comportamiento, se pueden añadir condiciones y acciones extra en el diálogo.
Algunas condiciones y acciones requieren parámetros. Por ejemplo, La acción Ajustar posición (Set
position) para un Sprite requiere las coordenadas X, Y. Esto se hace en el diálogo de parámetros en el
siguiente paso. Otras no los usas, como Destruir (Destroy). En este caso el proceso ya estaría completo.
Paso 3: Introducir parámetros
Si la condición o acción elegida requiere parámetros, el diálogo de parámetros aparece. Ver Parameters
dialog para más información.
3.13.4 Añadir configuración (Add configuration)
El diálogo de añadir configuración se usa para la característica Configuraciones que está en proceso de
creación. ¡Vuelve pronto para más detalles!
3.13.5 Diálogo de efectos (Effects dialog)
El diálogo de efectos te permite añadir o quitar efectos de objetos, capas y planos. Se puede abrir desde la
Barra de Propiedades cuando las propiedades de un objeto aceptan efectos.
Los efectos se pueden añadir con la barra de arriba o clicando el botón derecho y seleccionando Añadir
efecto (Add effect). Esto abre el diálogo de Añadir Efecto. Ambas formas también te permiten renombrar
(F2) o borrar (Del) efectos.
Se pueden ordenar los efectos usando los botones Arriba (Up) y Abajo (Down) de la barra o arrastrando y
soltándolos. El orden de los efectos es importante porque define el orden en el que son procesados, lo que
puede alterar el resultado visual. Para más información, mira la sección Effects.
3.13.6 Grupo de eventos (Event group)
El diálogo de Añadir/Editar grupo de eventos (Add/Edit Event Group) contiene los ajustes de los mismos.
Nombre (Name)
Un nombre identifica un grupo de eventos y se muestra en grande en la Hoja de Eventos. Cuando habilitas o
deshabilitas un grupo de eventos, el nombre identifica qué grupo es.
Descripción Opcional (Description Optional)
Una descripción opcional da un resumen de lo que hacen los eventos del grupo, con propósitos
organizativos. Se muestra en el letrero pequeño debajo del nombre de grupo.
Activo desde el principio (Active on start)
Determina si un grupo de eventos está o no habilitado cuando se comienza el proyecto. Si no está
seleccionada, el grupo de eventos estará deshabilitado y ninguno de los eventos que contiene funcionará
hasta que se habilite seleccionando Activar grupo (Set group active) en el sistema de acción system action.
3.13.7 Variable de evento
El diálogo de Añadir/Editar Variable de evento (Add/Edit Event Variable dialog) te permite ajustar el
nombre, tipo y valor inicial de una variable local o global en una Hoja de eventos.
El Nombre (Name) identifica la variable del evento. Se escriben usando expresiones para recuperar el valor
de la variable del evento. Algunos nombres no se pueden usar, como expresiones del sistema ya que se
podrían confundir.
El Tipo (Type) especifica qué tipo de de valor tiene la variable. La variable de un evento puede almacenar
un Número o Texto (también llamado string). El tipo de variable de evento no cambia – no puedes almacenar
texto en una variable numérica ni viceversa.
El Valor inicial (Initial value) es el primer Número de una variable numérica, o la inicial de un Texto en una
no numérica. Este cuadro se puede dejar vacio. La inicial no necesita comillas. En otras palabras, Hola es
una entrada válida y si introduces “Hola” la inicial incluirá las comillas. Nota que esto es diferente a
introducir textos que requieran comillas.
La Descripción (Description) es un comentario opcional que describe brevemente para qué se usa la
variable. Se muestra al lado del nombre para recordarte el uso de la variable.
La casilla Estático (Static) solo se aplica a las variables locales. Por defecto, las variables locales vuelven a
su valor inicial en cada toque. Pero si señalas ésta casilla, el valor de la variable local se mantendrá, como
una variable global. Sólo se diferenciarán de las variables globales en que sólo pueden ser usadas dentro de
su ámbito. Las variables globales siempre mantienen su valor por lo que la opción Estático (Static) no se
aplica. Para más información sobre variables locales ve a Variables de evento.
La casilla Constante (Constant) convierte una variable en solo-lectura. Podrás comparar y recuperar datos de
la variable, pero no cambiar su valor bajo ningún concepto. Esto es útil para referirse a un número como
máximo de vidas, sin tener que repetir el número en todos los eventos. Si quieres cambiar el valor, sólo hay
un sitio en el que deberás hacerlo, lo que es más sencillo que buscar todos los lugares donde introdujiste ese
número concreto. De acuerdo a las convenciones en programación, el nombre de las constantes se muestra
en mayúsculas (MAX_LIVES).
3.13.8 Exportar proyecto (Export Project)
El diálogo de Exportar objetos (Export Project) exporta el proyecto en un formato preparado para publicar.
Para más información, ve a Exporting and Publishing.
Si estás buscando consejos para publicar tu juego, ve al tutorial Publishing and promoting your Construct 2
game ⇗.
Si estás interesado en detalles técnicos de la exportación, mira la sección Tecnología (Technology)
Exportar para (Export for)
Hay varias formas de publicar juegos en HTML5. Para más información, ve a Exporting and Publishing.
Carpeta de archivos (Folder for files)
Todos los archivos exportados se generan en esta carpeta. Incluye una variedad de archivos HTML,
Javascript, PNG y más. Se recomienda usar una carpeta nueva y vacía. La carpeta por defecto puede elegirse
en Preferencias (Preferences).
Subcarpeta de imágenes (Subfolder for images)
Todas las imágenes y frames de animación del proyecto estarán en esta subcarpeta. Déjala vacía para
exportar las imágenes a la carpeta de exportación.
Subcarpeta de archivos del proyecto (Subfolder for project files)
Todos los archivos del proyecto (audio y música) estarán en esta carpeta. Déjala vacía para exportar los
archivos a la carpeta de exportación.
Recompresión PNG (PNG recompression)
Las imágenes exportadas están en formato PNG y pueden recomprimirse sin pérdidas para reducir más el
tamaño. Esto puede tardar bastante más en exportarse. Usa Ninguno (None) para saltarse este paso – los
archivos serán más grandes pero el proceso de exportación más rápido. Se recomienda la compresión
Estándar (Standard) para asegurar que el tamaño de descarga es lo más pequeño posible. En bruto (Brute) se
puede usar si tienes objetos extremadamente grandes o si es importante ahorrar mucha banda ancha, pero el
proceso de exportación será muy largo. Para más información sobre técnicas de recompresión de C2, mira
este post Image compression in Construct 2 ⇗.
Minimizar texto (Minify script)
El código Javascript exportado se puede comprimir con el Closure Compiler de Google para reducir el
tiempo de descarga. Esto se llama minimizar. Al mismo tiempo que el código se oscurece para dificultar su
acceso. Por esta razón se recomienda minimizar el script al exportar. Esto requiere que Java esté instalado
(distinto de Javascript).
3.13.9 Panel de expresiones (Expressions panel)
El Panel de expresiones es un diccionario de todas las expresiones disponibles en tu proyecto. Se muestran
al lado del Diálogo de parámetros. Por defecto aparece semitransparente y no te distrerá mientras introduces
los parámetros. Se puede esconder o mostrar pulsando F4.
El cuadro de búsqueda en la parte de arriba se usa para filtrar objetos rápidamente.
Haz doble clic en un objeto para listar todas sus expresiones. Las descripciones se muestran también al lado
de cada expresión para indicar el valor de recuperación. Haz doble clic en una de las expresiones de la lista
para introducirla en la expresión actual en el Diálogo de parámetros. Pulsa Escape o clica el botón Atrás
(Back) para volver a la lista de objetos.
Las expresiones de comportamiento se muestran también en objetos con comportamientos. La página del
Sistema lista todas las expresiones del sistema y variables globales y locales (mira Event Variables).
3.13.10 Formato de imagen (Image format)
El diálogo de formato de imagen se abre en el editor de imágenes/animaciones para ajustar el formato de una
imagen cuando se exporta el proyecto.
Las imágenes del proyecto se guardan siempre en formato PNG-32. Este es el único formato que preserva
una imagen con el canal alfa (alpha chanel). Estos ajustes sólo se aplican cuando el proyecto se exporta. Son
principalmente para reducir el tamaño de los archivos de imagen para que el juego ocupe menos.
Las imágenes en PNG se recomprimen al exportarlas para reducir el tamaño sin afectar la calidad de imagen.
Para más información, mira el post Image compression in Construct 2 ⇗.
El diálogo de formato de imagen tiene las siguientes opciones:
Formato (Format)
El formato de la imagen al exportar. En resumen, los formatos son:
PNG-32 (por defecto) puede almacenar colores verdaderos sin pérdidas (perfectamente, sin perder calidad)
con la transparencia del canal alfa. Pero, los archivos son más grandes.
PNG-8 es una versión de 256 colores. Soporta el canal alfa pero sólo dentro de los 256 colores. Imágenes
retro o de pocos colores se verán igual en PNG-8. Imágenes con más de 256 colores se reducirán a estos y
puede degradar la calidad. Por otra parte, C2 usa un algoritmo avanzado (PNGNQ ⇗) para alcanzar esta
reducción de color. Esto significa que muchas imágenes permanecerán idénticas. Los archivos en PNG-8
son mucho más pequeños que en PNG-32, así que es una forma útil de reducir el tamaño del juego.
JPEG es un formato de imágenes de diseño para fotografía o imágenes muy detalladas. No soporta
transparencia, así que no es apropiado para imágenes que tienen transparencias o canales alfa (aparecerán
con fondo negro). Pero este formato puede conseguir los archivos más pequeños, dependiendo de los ajustes
de calidad. El formato es mejor para minimizar el tamaño de las imágenes de un fondo grande.
Para más información sobre estos formatos busca en Wikipedia PNG ⇗ o JPEG ⇗.
Calidad (Quality)
Los ajustes de calidad cuando usas el formato JPEG. La calidad va desde 0 (peor calidad, archivo más
pequeño) a 100 (mejor calidad, archivo más grande). Las calidades por encima de 85 son difíciles de
distinguir del original.75 es la recomendada en relación calidad tamaño.
Aplicar este ajuste a (Apply this setting to)
Te permite hacer el mismo ajuste de formato para muchas imágenes de una vez.
Este frame (This frame) o Esta imagen (This image) aplica los ajustes sólo a la imagen/frame actual.
Esta animación (This animation)-sólo para sprite, aplica los ajustes a todos los frames de la animación
actual.
Todas las animaciones (All animations) – solo para sprite, aplica los ajustes al objeto entero, todas sus
frames en todas sus animaciones.
El proyecto entero (Entire Project) aplica los ajustes a todas las imágenes del proyecto. Úsalo con cuidado,
ya que se modifica cualquier ajuste de formato hecho previamente en cualquier objeto del proyecto y no se
puede deshacer.
3.13.11 Importar audio (Import audio)
El diálogo de importar audio permite añadir archivos de audio al proyecto desde el disco. Se accede a él
seleccionando Importar Sonidos (Import Sounds) o Importar Música (Import Music) en el menú del botón
derecho de la carpeta de Sonidos o Música en la Barra del Proyecto. Asegúrate de que añades Objetos de
audio a tu proyecto para que tenga música y efectos de sonido.
Antes de que aparezca el diálogo, se te sugerirá seleccionar algún archivo de audio desde el disco. Puedes
seleccionar más de uno. Los archivos aparecen en el diálogo de Importar audio antes de ser realmente
importados, mostrando si esos formatos son o no válidos. También puedes clicar Añadir más archivos…
(Add more files…) para añadir más archivos a la lista.
Clica Importar (Import) para empezar a importar la lista de archivos al proyecto. Esto puede tardar si los
audios son muy largos (como canciones enteras); una barra de progreso aparecerá durante el proceso. Solo
se importarán los audios que tengan un formato válido para el programa. Una vez el proceso haya finalizado,
la lista mostrará los archivos que se hayan importado correctamente. Clica Hecho (Done) para cerrar el
diálogo.
Es recomendable importar archivos PCM .wav ya que son aceptados en la mayoría de dispositivos y C2
puede encodearlos en Ogg Vorbis y MPEG-4 AAC (sólo para Windows 7+).
Los dos formatos de audio requeridos
Los creadores de navegadores no se han puesto de acuerdo en que formato de audio usar en ellos. Internet
Explorer y Safari usan MPEG-4 ACC (.m4a) y el resto (Firefox, Chrome y Opera) usan el formato gratuito
Ogg Vorbis.
Para poder reproducir el audio en todos los navegadores, tus audios deben estar en los dos formatos. C2 te
ayuda encodeando y descomprimiendo el audio que importas al formato .m4a o .ogg automáticamente.
Aunque sólo lo hará automáticamente en Windows 7 o superior. Los usuarios de Windows XP y Vista deben
encodear ellos mismos los archivos .m4a. La extensión del archivo será .m4a. Hay encodeadores gratuitos;
busca en la web AAC encoders.
El formato Ogg Vorbis será encodeado en cualquier sistema.
C2 favorece el formato Ogg Vorbis. Cuando eliges un sonido en el sistema de eventos, sólo aparecerán los
archivos .ogg. El otro formato se considera como un apoyo para aquellos navegadores que no soportan Ogg
Vorbis. Esto significa que si importas un archivo en .m4a sin el correspondiente .ogg, este no aparecerá en el
sistema de eventos.
C2 no transformará archivos .m4a a .ogg ni viceversa; se recomienda importar archivos PCM .wav para que
C2 los encodee. Transformarlos significaría perder calidad.
Categorizar correctamente archivos de audio
Es importante organizar de forma apropiada los archivos de audio, porque los archivos de la carpeta Sonidos
se descargan completamente antes de reproducirlos pero los de la carpeta Música se reproducen en
streaming. Esto significa que si una canción se pone en la carpeta Sonidos tendrá que descargarse
completamente (lo que tardara unos cuantos minutos) antes de reproducirse, mientras que en la carpeta
Música pueden empezar inmediatamente desde el servidor.
Formatos de audio aceptados
Hay muchos formatos y muchos de ellos son aceptados a distintos niveles. Además, muchos tienen subformatos y no todos los sub-formato son aceptados. Esto hace complicado describirlos. Pero te
recomendamos que solo importes archivos PCM .wav, que son los más aceptados y pueden encodearse en
los dos formatos necesarios .m4a y .ogg. Nota que hay distintos tipos de archivos .wav a parte de PCM y
éstos pueden no ser aceptados. Cualquier buen software de codecs podrá convertirlos a PCM .wav. Intenta
evita formatos con pérdidas antes de importarlos a C2, porque la calidad empeoraría al encodearlos a .ogg y
.m4a.
La siguiente lista de formatos está ordenada por su extensión y si C2 puede o no convertirlos a Ogg Vorbis
(.ogg) o MPEG-4 AAC (.m4a).
.wav (PCM o similar): Ambos
.flac (FLAC): Ambos
.ogg (Ogg Vorbis): Se puede importar pero no convertir a .m4a
.m4a (MPEG-4 AAC): Se puede importar pero no convertir a .ogg
.aif, .aiff, .aifc (AIFF): solo a .ogg
.aac (MPEG-4 AAC): solo a .m4a
.mp3 (MPEG-1 layer 3): solo a .m4a
.wma (Windows Media Audio): solo a .m4a
3.13.12 Puntos de imagen
El diálogo de Puntos de imagen te permite hacer ajustes en el origen del objeto (el punto de rotación) y en
los puntos de la imagen (puntos arbitrarios a los que se puede acceder en eventos). Se accede a través del
editor de imágenes y animaciones.
El Origen (Origin) es un punto especial que define el cetro del objeto, o su punto de rotación. Es diferente,
de color rojo. Se incluye dentro de los puntos de imagen y tienen un índice que empieza en 0, en el que el 0
es siempre el origen. No se puede renombrar.
Los Puntos de la imagen (Image points) son útiles para crear puntos derivados en otros objetos. Ya que
puedes crear objetos en un punto de imagen en Eventos, es útil situar puntos en lugares como la punta del
arma del jugador. Estos puntos sí que pueden renombrarse, para referirse a ellos en Eventos por su nombre.
Debajo, se sitúa un punto de imagen en la punta del arma de un jugador.
Selecciona un punto de imagen de la lista para que aparezca en la imagen. Clica el botón derecho para situar
el punto bajo el ratón. Las flechas del teclado también pueden moverlo 1 píxel cada vez.
Se puede situar un punto rápidamente usando los números, 1 para la esquina izquierda y 5 para el centro.
También puede clicarse con el botón derecho el punto en el diálogo de puntos de imagen y elegir la opción
en el menú de acceso rápido.
Clicar con el botón derecho un punto de imagen en el diálogo también da la opción de Aplicar a toda la
animación (Apply to whole animation). Esto sitúa el punto en el mismo lugar en todos los frames. Si el
punto no existe en alguno de los frames, esta opción lo crea. Mantener shift mientras sitúas el punto es un
acceso directo.
3.13.13 Importación de banda de sprites (Improt sprite strip)
Este diálogo te permite importar una imagen que contenga la animación completa en una cuadricula. Se
accede a ella vía la Barra de frames de animación. Tras elegir Importar banda de sprites… (Import sprite
strip…) aparece un diálogo para seleccionar el archivo de imagen. Después de elegirlo, aparece el siguiente
diálogo para que introduzcas cuantos frames hay en la animación.
Por ejemplo, la siguiente imagen tiene 7 celdas horizontales y, puesto que solo hay una fila, una celda
vertical:
Esta imagen está en una cuadrícula que tiene 4 celdas horizontales y 4 verticales:
En ambos casos, C2 separará cada celda en un frame distinto de la animación.
3.13.14 Insertar nuevo objeto
El dialogo para importar un Nuevo objeto aparece después de hacer doble clic en un espacio de la Vista de
Plano. Te permite elegir el tipo de objeto a insertar (cada tipo se conoce como plugin). Insertando un nuevo
objeto creas un nuevo tipo de objeto. Mira Estructura del Proyecto (Project Structure) para una descripción
de la diferencia entre tipos y ejemplos de objeto. También mira Plugin Reference para más información
sobre plugings.
Los plugins se ordenan en grupos. Dentro de cada uno están ordenados alfabéticamente. Seleccionando un
ítem se muestra una breve descripción de lo que el plugin hace en el campo Descripción (Description) en la
parte baja del diálogo. Escribir en el cuadro de búsqueda de arriba filtrará rápidamente la lista para ayudarte
a encontrar lo que buscas.
El Nombre que introduces indica el nombre del tipo de objeto que aparecerá en el proyecto tras insertarlo.
Por defecto se nombrarán numéricamente como Sprite2, Sprite3, etc. Sería buena idea darles nombres
descriptivos para no confundirte más tarde. Puedes introducir un nombre descriptivo en este cuadro, pero si
no puedes renombrarlo también a través de la Barra de propiedades o la Barra del proyecto.
Haz doble clic en un ítem para insertarlo. Si el objeto puede situarse en un plano y está abierta la Vista de
plano, el cursor se convertirá en una mira para situar el primer ejemplo del objeto. Para objetos con
imágenes o animaciones, tras haber situado el ejemplo el editor de imágenes o animaciones aparecerá para
poder diseñar sobre ella.
Otros tipos de objeto (como el teclado o un objeto de audio) no necesitan ser situados en el plano. Tras
insertarlos, el diálogo se cierra sin necesidad de situarlo. En su lugar aparecerá una barra notificadora
indicando que ya está disponible en todo el proyecto. Este tipo de objetos solo pueden ser insertados una vez
y desaparecerán de la lista si vuelves a abrir el diálogo.
3.13.15 Variable de ejemplo (Instance variable)
El diálogo de Añadir/Editar Variable de ejemplo te permite ajustar el nombre, tipo y valor inicial de una
variable de ejemplo en un tipo de objeto. Puede abrirse desde el diálogo de Variable de ejemplo de objeto
(Object Instance Variables dialog).
El Nombre (Name) identifica la variable de ejemplo. Ésto se escribe como expresiones tras el nombre de
objeto (por ejemplo, Sprite.MyVariable) para poder recuperar el valor de la variable. Algunos nombres no se
pueden usar si entran en conflicto con otras expresiones o comportamientos de objeto.
El Tipo (Type) especifica qué tipo de valor tiene la variable. Una variable de objeto puede almacenar
Número (Number), Texto (Text)-(también llamado string) o Booleano (Boolean)-(un valor on/off, también
llamado flag). El tipo de una variable de ejemplo no cambia – por ejemplo, no puedes almacenar texto en
una variable numérica.
El Valor inicial (Initial value) es el primer número o inicial del texto o verdadero/falso en un Booleano. El
texto inicial se puede dejar vacio y si lo introduces no son necesarias comillas. En otras palabras Hola es una
entrada válida, pero si introduces “Hola” la inicial incluirá las comillas. Nota que eso es diferente a si la
expresión necesita comillas.
La Descripción (Description) es un comentario opcional que te describe brevemente para que se usa la
variable. Se muestra al lado del nombre en el editor para recordarte su uso. También se muestra en la Barra
de Propiedades cuando la variable está seleccionada.
3.13.16 Nuevo proyecto (New Project)
Nota: Las versiones más recientes de C2 han cambiado este diálogo por el Diálogo de Inicio (Start dialog).
El Diálogo de Nuevo proyecto aparece cuando creas un Nuevo proyecto. Te permite elegir entre distintos
tipos de proyecto.
Elige entre un proyecto de un solo archivo o una carpeta del proyecto. Ve a project types para más
información.
Un proyecto de un solo archivo puede crearse inmediatamente, pero una carpeta del proyecto requiere que se
cree la carpeta antes de empezarlo. Los proyectos de un solo archivo son mejores para proyectos pequeños y
los de carpeta para proyectos grandes. El tipo se puede cambiar en cualquier momento eligiendo Guardar
como proyecto (Save as project) o Guardar como un solo archivo (Save as single file) en el Menú de
Archivos.
3.13.17 Variables de ejemplo de objeto (Object instance variables)
El diálogo de Variables de ejemplo de objeto enumera todas las variables de ejemplo que un tipo de objeto
tiene. Se puede abrir desde la Barra de Propiedades mientras se muestran las propiedades del objeto, o
clicando el botón derecho en el objeto en la Barra del Proyecto o en la Barra de Objeto y seleccionando
Variable de ejemplo... (Instance variables...)
Las variables de ejemplo se pueden añadir con la barra superior o clicando el botón derecho y seleccionando
Añadir variable de ejemplo (Add instance variable). Esto abre el diálogo de Añadir variable de ejemplo
(Add Instance Variable dialog). La barra superior y el menú del botón derecho también te permiten
renombrar (rename)-F2 o borrar (delete)-Del variables de objeto. Haz doble clic en una variable de ejemplo
de la lista para editarla.
Las variables de ejemplo pueden reordenarse usando los botones Arriba (Up) y Abajo (Down) en la barra, o
arrastrándolas y soltándolas. El orden es solo para organización – no afecta a cómo funcionan.
Si todos los ejemplos de un tipo de objeto tienen el mismo valor inicial para una variable de ejemplo, se
mostrará en la columna Valor inicial (Initial Value). De todas formas, los ejemplos pueden tener diferentes
valores iniciales ajustados en la Barra de Propiedades. Si es así la columna Valor inicial (Initial value)
mostrará <varies>. Editar una variable de ejemplo variando los valores y cambiando el valor inicial en el
diálogo de Editar variables de ejemplo dará un nuevo valor inicial para todos los ejemplos, sobrescribiendo
los valores previos.
3.13.18 Comportamientos de Objeto (Object behaviors)
El diálogo de Comportamientos de Objeto enumera todos los comportamientos que tiene un tipo de objeto.
Se puede abrir desde la Barra de Propiedades mientras se muestran las propiedades del objeto o clicando el
botón derecho en el objeto en la Barra del Proyecto o en la Barra de Objeto y seleccionando
Comportamientos… (Behaviors…) Para información sobre los comportamientos, ve a la sección Behavior
Reference.
Los Comportamientos se pueden añadir con la barra superior o clicando el botón derecho y seleccionando
Añadir comportamiento (Add behavior). Esto abre el diálogo de Añadir Comportamiento. La barra y el
menú del botón derecho también te permiten renombrar (rename)-F2 o borrar (delete)-Del comportamientos.
El comportamiento aparece por su nombre en el sistema de eventos.
Los comportamientos se pueden reordenar usando los botones Arriba (Up) y Abajo (Down) en la barra, o
arrastrándolas y soltándolas. El orden es solo para organización – no afecta a cómo funcionan.
3.13.19 Parámetros (Parameters)
El diálogo de parámetros aparece después del diálogo de añadir condición o acción, o cuando editas una
condición o acción. Te permite introducir parámetros como las coordinadas X e Y para Ajustar la posición
(Set position) de los objetos (sprite). No aparece para acciones o condiciones que no usen parámetros, como
Destruir (Destroy). Se introducen expresiones, que pueden ser cualquier cosa, desde un único valor
numérico a una sofisticada cuenta matemática.
El panel de expresiones (expressions panel) aparece al lado del diálogo de parámetros dándote una lista de
todas las expresiones que puedes introducir. Por defecto, el panel de expresiones está difuminado a menos
que pases el ratón sobre él. También se puede esconder o mostrar pulsando F4.
Usa el panel de expresiones para localizar expresiones del sistema, expresiones de objeto, expresiones de
comportamiento, variables locales o globales o variables de ejemplo. También puedes usar autocompletar
(autocomplete): tecleas una expresión hasta el punto (por ejemplo Sprite.) y aparecerá una lista de todas sus
expresiones. Esta lista muestra las expresiones de objeto, sus variables de ejemplo y los comportamientos.
Usa las flechas arriba y abajo del teclado para seleccionar una y Enter para entrar en ella.
Algunas expresiones también tienen consejos para ayudarte a recordar cómo usarla. Aparece cuando
escribes un paréntesis abierto (al lado de la expresión. Esto es muy útil en expresiones del sistema que
suelen tener muchos parámetros.
Pulsa el tabulador para ir al siguiente parámetro o Shift + Tabulador para ir a la anterior. Enter es un acceso
directo de presionar Hecho (Done) – quizás tengas que pulsa Enter dos veces si estás usando autocompletar:
una para elegir la entrada de autocompletar y otra para cerrar el diálogo.
3.13.20 Preferencias (Preferences)
El diálogo de preferencias contiene ajustes para el editor de C2. Se puede abrir desde el Menú de archivos.
Los ajustes están organizados en 3 pestañas: General (General), Exportador HTML5 (HTML5 exporter) y
Copia de seguridad (Backup).
General
Esta sección contiene ajustes generales de C2.
Cambiar el tamaño de los controladores de tamaño (Resize handle size)
Cambia el tamaño de los controladores de tamaño en la Vista de Plano. Por defecto es Pequeño (Small).
Fuente de la Hoja de evento (Event sheet font)
Cambia la fuente usada en la Vista de Hoja de evento. Por defecto es Segoe UI, 9pt.
Mostrar la página de inicio al ejecutar (Show start page on startup)
Si lo seleccionas, la página de inicio siempre aparecerá al ejecutar C2. Si lo deshabilitas, aparecerá una
pantalla vacía al inicio.
Cerrar la página de inicio cuando clicas en algo (Close the start page when I click on something)
Si lo seleccionas, la página de inicio se cerrará en cuanto cliques alguno de los enlaces (por ejemplo, un
proyecto reciente). Si no, la página de inicio continuará abierta.
Comprobar actualizaciones (Update checking)
Elige una opción entre:
Don't for updates: C2 no accederá a internet para buscar nuevas versiones. Esto no se recomienda pues las
nuevas versiones suelen incluir mejoras significativas.
Check for beta updates: Buscará nuevas versions betas, para pruebas de Scirra.
Check for updates: Buscará nuevas versiones de Scirra que ya han sido probadas por otra gente.
Restaurar diálogos (Reset dialogs)
Clica este botón para restaurar todos los diálogos y barras en la interfaz a su posición y tamaño por defecto.
Se te preguntará para que lo confirmes, y después debes reiniciar C2 para que los cambios se apliquen. Esto
es útil si quieres volver a los valores por defecto. Si por alguna razón los diálogos tienen fallos o
simplemente no aparecen cuando los intentas abrir, restaurar con esta opción puede solucionarlo.
HTML5 exporter
Esta sección contiene ajustes para el exportador de HTML5, además de los servidores locales para la vista
previa.
Navegador por defecto de vista previa (Default previewer browser)
Elige los ajustes del navegador de vista previa de tus nuevos proyectos. Esto no afecta a ningún proyecto ya
existente.
Navegador personalizado (Custom browser)
Elige cualquier archivo ejecutable del disco para hacer una vista previa cuando el Navegador de vista previa
está en Personalizar (Custom). Por ejemplo, quizás quieras instalar un navegador en pruebas (beta) junto a
la versión estable y así tienes la opción de hacer la vista previa en el beta. Además, a veces C2 no detecta los
navegadores tradicionales aunque estén instalados, así que puedes especificarlo manualmente aquí.
Carpeta de exportación por defecto (Default export folder)
Elige la carpeta para exportar en el Diálogo de exportación de proyectos. Por este camino <project name> se
sustituye por el nombre del proyecto, o el nombre del proyecto se agregará a la ruta si no está presente. La
opción predeterminada es el escritorio.
Puerto del servidor HTTP (HTTP server port)
El puerto que usar al hacer una vista previa. Por defecto es 50000. No debes cambiarlo a menos que sepas
que hay alguien más que usa este puerto en tu ordenador. C2 también probará los siguientes 100 puertos si el
elegido está en uso. Debes reiniciar C2 antes de que se apliquen los cambios.
Vista previa de la dirección LAN (Preview on LAN address)
Introduce la dirección IP de tu ordenador en red de área local (LAN) para permitir compartir la vista previa
con cualquier dispositivo en tu LAN. Clica el botón de la derecha para ver una lista de posibles direcciones
IP de tu ordenador. Para usar esta función, también debes permitir que el puerto del servidor HTTP pase a
través del Firewall, y C2 debe funcionar con los permisos del administrador. Si no, introduciendo localhost
solo puedes ver la vista previa en tu ordenador, pero no requiere permisos. Para más información sobre
como ajustar y usar esta función, mira el tutorial How to preview on a local network ⇗.
Autoguardado (Autosave)
Esta sección contiene ajustes para hacer autoguardados.
Habilitar autoguardado (Enable autosave)
Si está activado, C2 guardará automáticamente el proyecto en un archivo .capx.autosave en la misma carpeta
en un intervalo regular de tiempo (a determinar en el apartado de abajo). En caso de fallo, corte de luz o
cerrar sin haber guardado por error, se puede recuperar el proyecto abriendo el último archivo guardado,
minimizando la pérdida de trabajo. Se recomienda guardar las copias de seguridad en otras carpetas usando
la pestaña Copia de Seguridad (Backup) además de esto, ya que desastres mayores, como fallos de disco o
fuego, pueden hacer que estos autoguardados queden inservibles.
Frecuencia del autoguardado (Autosave Frequency)
Cada cuanto tiempo hacer autoguardados, si esta opción está seleccionada. Nota que los autoguardados no
pueden hacerse en ciertas circunstancias, como cuando se están mostrando cuadros de diálogo. Se realizrá
tan pronto como sea posible. La frecuencia no debe ser muy alta como para resultar irritante (puede tardar
un rato en completar, sobre todo en proyectos grandes) ni muy baja, como para perder gran cantidad de
trabajo en caso de fallo.
Copia de Seguridad (Backup)
Esta sección contiene ajustes que te ayudan a fijar una copia de seguridad automática para tu trabajo. Esto es
esencial para mantenerlo a salvo de fallos del hardware, robos, fuegos o inundaciones. Para más
información, mira el tutorial Keep your work safe with Construct 2's backup options ⇗.
Copia de seguridad automática (Auto-backup)
Guarda copias de seguridad de archivo único (.capx) en la misma carpeta que tu proyecto siempre que
seleccionas “Guardar” (“Save”). Tienen la extensión .capx.backupN. Por ejemplo, si se han creado 3 copias,
myfile.capx.backup1 será la última guardada, myfile.capx.backup2 será la penúltima y myfile.capx.backup3
la antepenúltima. Por defecto, C2 siempre conserva una copia, permitiéndote recuperar el trabajo desde ahí.
De todas formas, puedes perder tus copias de seguridad a la vez que el proyecto, por lo que se recomienda
guardar estas copias, de vez en cuando, en un disco externo o similar.
Carpetas de copias de seguridad (Backup folders)
Para asegurar tu trabajo, es vital guardar tus copias en distintos lugares, como otro ordenador o un disco
duro. (Subiéndolas a Dropbox están totalmente protegidas). Para ayudarte a hacer esto, C2 puede guardar tus
copias en diferentes carpetas a intervalos regulares. Puedes elegir 3 carpetas y el inte4rvalo de guardado. Las
copias se guardan en un solo archivo (.capx) más un texto al azar para evitar dos archivos con el mismo
nombre que puedan sobreimprimirse (por ejemplo, myfile-abc123.capx y myfile-def456.capx). Nota: las
copias sólo se realizan si seleccionas “Guardar” (“Save”). Simplemente abriendo un archivo que otra
persona te ha enviado no crea una copia de seguridad, debes modificarlo y darle a “Guardar” (“Save”).
Manual
Esta sección trata sobre cómo se abren los enlaces de ayuda en el editor.
C2 viene con un manual offline, que puedes usar si tu ordenador no tiene conexión a internet o has perdido
la conectividad temporalmente. Sin embargo, el manual online está más actualizado, por lo que se
recomienda su uso siempre que sea posible. Nota que no todos los enlaces de ayuda aparecen en el manual
offline, como tutoriales u otras fuentes online; que se abrirán online a pesar de estar aquí. Las opciones de la
pestaña son las siguientes:
Auto-detectar (Auto-detect) abre automáticamente el manual online de C2 si detecta que hay conexión a
internet; si no, abre el offline. Se recomienda esta opción ya que el manual online está más actualizado, pero
podrás mantener el manual offline si se pierde la conexión a internet. Nota que esta opción sólo está
disponible en Windows Vista y superior.
Siempre usar manual offline (Always use offline manual) aparecen los enlaces de ayuda offline, si el
contenido está en este manual.
Siempre usar manual online (Always use online manual) aparecen los enlaces online, haya o no conexión a
internet.
Colores (Colors)
Esta sección te permite personalizar el color usado en la Vista de Hoja de eventos y en la Vista de Plano.
Puedes elegir un tema existente seleccionándolo desde la pestaña Elige tema (Choose theme) y clicar Cargar
tema seleccionado (Load selected theme). Nota que esto eliminará los ajustes actuales, así que quizás
prefieras guardarlos primero. Los temas que se ofrecen son “Por defecto” además de cualquier tema (archivo
XML en la carpeta temas (themes) del directorio de instalación. Para añadir uno nuevo, usa la opción
Guardar como tema nuevo (Save as new theme).
Clica Editar colores (Edit colors) para acceder a un diálogo donde puedes cambiar todos los colores usados
en el editor. Esto no modifica el tema, sólo los colores. Tras hacer cambios, necesitarás abrir de nuevo las
barras del editor que estuvieran abiertas para poder ver los cambios.
Clica Guardar como tema nuevo (Save as new theme) para guardar los colores elegidos con el editor de
colores en un tema XML. Si se traslada a la subcarpeta Temas (Themes) del directorio de instalación, éste
aparecerá en la pestaña de elegir tema para más rápido acceso.
La lista de plantillas, ejemplos y demos se muestra en el cuadro anterior. Las plantillas ofrecen puntos de
partida para ciertos proyectos, con ajustes y objetos ya aplicados.
Cuando creas un proyecto nuevo, siempre se crea como un archivo único (.capx). Para guardarlo como un
proyecto basado en carpetas, que es mejor para proyectos grandes o colaboraciones, usa la opción del menú
Guardar como proyecto (Save as Project). Para más información, ve a la sección Guardar y compartir
proyectos.
3.14 Accesos directos de teclado (Keyboard Shortcuts)
General
Ctrl + X Cortar (Cut)
Ctrl + C Copiar (Copy)
Ctrl + V Pegar (Paste)
Ctrl + Arrastrar el ratón con el botón derecho Duplicar (Duplicate)
Ctrl + Z Deshacer (Undo)
Ctrl + Y Rehacer (Redo)
Ctrl + A Seleccionar todo (Select all)
Ctrl + N Nuevo proyecto (New project)
Ctrl + O Abrir proyecto (Open project)
Ctrl + S Guardar proyecto (Save project)
Alt + F4 Cerrar C2 (Close Construct 2)
También puedes presionar Alt para navegar por la barra de herramientas. Cuando lo presionas, aparecen las
teclas de acceso directo de cada herramienta.
F4 Vista previa desde el primer plano (Preview project from first layout)
Ctrl+F4 Depurar desde el primer plano
F5 Vista previa del plano actual (Preview current layout) manten shift pulsado para una vista continua.
Ctrl+5 Depurar el plano actual.
F6 Exportar proyecto (Export project)
Ctrl + Rueda del ratón hacia arriba o Números del teclado + Más Zoom
Ctrl + Rueda del ratón hacia abajo o Números del teclado – Menos Zoom
Añadir shift para ajustar la distancia del zoom.
Ctrl + 0 Regreso al zoom 100% (Return to 100% zoom)
Arrastar el botón central del ratón o Mantener pulsado espacio y mover el ratón Mueve la vista (Pan the
view)
Borrar Borrar elementos seleccionados (Delete selected items)
F2 Renombrar el element seleccionado (Rename selected item)
Ctrl + clic Añade o elimina de la selección el elemento clicado
Shift + clic Como el anterior, pero en la Vista de hoja de eventos selecciona todo entre lo último
seleccionado y el clic.
Escape Cancelar el movimiento, la situación o la búsqueda de eventos.
Ctrl + Tab Ir a la siguiente pestaña a la derecha.
Ctrl + Shift + Tab Ir a la siguiente pestaña a la izquierda.
Vista de plano (Layout view)
Mirar también: Layout View
Ctrl + E o Shift + Tab Ir a la Hoja de eventos asociada.
Flechas del teclado (Arrow keys) Mueve el objeto seleccionado 1 píxel – mantén shift pulsado para 10
píxeles.
Mantén shift mientras cambias el tamaño para mantener la proporcionalidad
Mantén shift mientras rotas para girar de 5 en 5 grados.
Mantén shift mientras arrastras para mover sobre el eje (sólo a lo largo o en diagonal)
Mantén tabulador y clica un objeto seleccionado para seleccionar el siguiente objeto de la lista Z.
Mantén alt mientras mueves una selección para deshabilitar temporalmente la cuadrícula.
Mantén control mientras cambias el tamaño de la selección para ajustar el centro relativo del objeto.
Ctrl + D Deseleccionar todo (Unselect all)
Ctrl + Shift + Up Enviar al frente de la capa.
Ctrl + Shift + Down Enviar al fondo de la capa.
C Centrar horizontalmente en la ventana
T Nivelar a la parte superior de la ventana
Enter Envolver selección (para rotarla o modificarla de forma conjunta)
W Seleccionar contenedor y envolver. Por ejemplo, seleccionar un objeto dentro de un contenedor de 8
objetos, presiona W y los ocho objetos se seleccionan y se envuelven.
Para pegar objetos en un lugar (para que se peguen en su posición original, en vez de l posición relativa del
ratón), mantén shift mientras pegas. El proceso completo sería: Ctrl+C para copiar, Ctrl+V para convertir el
ratón en una cruz, mantén shift y clica, obtendrás todos los objetos pegados en sus posiciones originales y el
ratón volverá a ser un cursor.
Cuando edites mosaicos en la Barra de Mosaicos:
1 Plano normal
2 Herramienta lápiz de tesela
3 Herramienta rectángulo de tesela
4 Herramienta borrar tesela
X Voltear horizontal
Y Voltear vertical
Z Rotar 90 grados en el sentido de las agujas del reloj.
Vista de hoja de eventos (Event Sheet View)
Ver también: Event Sheet View
Ctrl + L o Shift + Tab Ir al plano asociado (si hay – algunas hojas de eventos no tienen)
Ctrl+F Abre la pestaña “Eventos” y enfoca el campo de búsqueda de eventos.
Ctrl+Inicio Va a la capa de arriba
Ctrl+Fin Va a la capa de abajo
Ctrl+F2 Alterna el favorito en el evento seleccionado
F2 Va al siguiente favorito del proyecto
Shift+F2 Vuelve al favorito anterior
F3 Alterna el punto de interrupción (breakpoint)
En el nuevo diálogo de condición/acción o el de parámetros:
Alt+ Izquierda Atrás/Cancelar
Alt+ Derecha Siguiente/Hecho
Flecha del teclado hacia arriba y hacia abajo Mueve la selección arriba y abajo en la hoja
Flecha del teclado izquierda y derecha Mueve la selección a ambos lados de la hoja entre eventos,
condiciones y acciones.
Enter Editar el elemento seleccionado
Escape Borrar la búsqueda de eventos
A Añadir acción (Add action)
B Añadir subevento vacío (Add blank subevent)
C Añadir condición (Add condition)
D Deshabilita los elementos seleccionados (Toggle selected items disabled)
E o Numeración del teclado + Añadir elemento debajo (Add event below)
Shift + E o Numeración del teclado – Añadir elemento arriba (Add event above)
G Añadir grupo (Add group)
I Invertir la selección (Invert selected conditions)
N Añadir inclusión (Add include)
Q Añadir comentario (Add comment)
S Añadir subevento (Add subevent)
V Añadir variable (Add variable)
X Añadir “Más” (“Else”) evento tras evento (Add 'Else' event following selected event)
Y Bloquear (Toggle 'Or' block)
Diálogo de parámetros (Parameters dialog)
El diálogo de parámetros es donde introduces expresiones, por ejemplo las coordenadas X e Y.
F4 Hace visible el panel de expresiones. Muestra todas las expresiones que puedes usar.
Tab Parámetro siguiente
Shift + Tab Parámetro anterior
Escape Cancelar (Cancel)
Enter Hecho (Done)
Editor de imágenes y animaciones (Image and Animations editor)
Ver también: Image and Animations editor
Asigna rápidamente el origen y los puntos de imágen:
Número del teclado 1 o Fin (End) Abajo a la izquierda
Número del teclado 2 Abajo
Número del teclado 3 o Avanzar página (Page down) Abajo a la derecha
Número del teclado 4 Izquierda
Número del teclado 5 Centro
Número del teclado 6 Derecha
Número del teclado 7 o Inicio (Home) Arriba a la izquierda
Número del teclado 8 Arriba
Número del teclado 9 o Retroceder página (Page up) Arriba a la derecha
Flechas del teclado Mover 1 píxel
Mantén Shift para aplicar estos puntos a la animación completa. Shift + Clic también lo hace.
Shift + Botón recortar (Crop button) Recorta la animación completa
Shift + Botón espejar (Mirror button) Espeja la animación completa
Shift + Botón voltear (Flip button) Voltea la animación completa
Shift + Rotar en el sentido de las agujas del reloj (Rotate Clockwise button) Rota la animación completa en
el sentido de las agujas del reloj.
Shift + Rotar en el sentido contrario a las agujas del reloj (Rotate Anticlockwise button) Rota la animación
completa en el sentido contrario a las agujas del reloj.
Sólo para animaciones:
Ctrl + Izquierda o – Frame anterior
Ctrl + Derecha o + Frame siguiente
P Hacer vista previa
3.15 Programa de depuración (Debugger)
Se refiere a los defectos del software – cosas que no funcionan como esperabas en tu juego o aplicación. El
Programa de depuración (debugger) de C2 es una herramienta que te ayuda a encontrar y arreglar estos
defectos en el juego.
Nota: el programa de depuración está disponible en la versión gratuita de C2 pero las pestañas “Ver”
(Watch) y “Perfil” (Profile), la capacidad de editar valores y la de usar puntos de equilibrio (breakpoints)
no están disponibles.
Como usar el programa de depuración
El programa se activa mediante la pestaña Home, mediante la barra de inicio rápido, haciendo click con el
botón derecho sobre o un plano o proyecto en la Barra de proyecto o con el atajo Ctrl+F5.
El programa funciona como una vista previa, excepto que hay un panel extra que muestra información y
algunos controles útiles.
Cuando lo estás usando, la dirección en el navegador termina con /debug (http://localhost:50000/debug).
También puedes intercambiar esta pantalla con la vista previa normal cambiando esta URL. También puedes
usar el programa de depuración en un dispositivo móvil usando la Vista previa con Wifi y añadiendo /debug
al final de la URL (http://192.168.1.3:50000/debug).
Personalizar el panel del programa de depuración
En el panel puedes ajustar el tamaño moviendo la agarraqdera que aparece en la barra gris del programa (a la
derecha, donde pone Inspector). Esto te permite agrandarlo para ver más información o hacerlo pequeño
para que sólo muestre las herramientas y un resumen de la información.
El programa también se puede extraerse a una ventana propia, útil cuando hay varios monitores. El juego se
mostrará usando la pantalla completa y el programa de depuración quedará en otra. Clica el botón indicado
debajo para hacerlo. Si clicas de nuevo o cierras la ventana independiente se reestablece y aparece en la
ventana principal.
Comandos principales
Además del botón para extraer a una nueva ventana, hay otras herramientas. Son las siguientes:
Pausa (Pause): pausa el juego. Es útil para inspeccionar al detalle un determinado momento. Cuando pausas
aparece el botón Reanudar (Resume); clícalo para que continue.
Paso (Step) sólo se puede usar en pausa. Hace avanzar el juego un frame. Delta-time (dt) se ajusta como si
el juego funcionara a 60 frames por segundo. Es útil para inspeccionar un momento frame por frame y ver
como funcionan los eventos como colisiones.
Guardar (Save) y Cargar (Load) hace un guardado temporal, permitiéndote guardar rápidamente el estado
de tu juego y poder volver a ese estado en cualquier momento. Es útil para repetir varias veces la misma
parte del juego. Como en los guardados normales, el estado se almacena siempre en el navegador actual, por
lo que no estará disponible en otro navegador. Sí estará en ese navegador aunque lo cierres y lo vuelvas a
abrir.
Empezar de nuevo (Restart) simplemente lo vuelve a abrir, cargándolo desde cero de nuevo.
Resumen del rendimiento
Algunos detalles sobre el rendimiento del juego aparecen en gris claro. Para más información ve a Consejos
de rendimiento. Los valores mostrados son, de derecha a izquierda:
El contador de objetos (object count): cuantos objetos hay creados. Usar demasiados objetos puede hacer
bajar el rendimiento. Este valor corresponde a la expresión del sistema objectcount.
La tasa de frames (framerate): a cuantos frames por segundo funciona el juego. La mayoría de los
sistemas funcionan a 60 Hz, así que el juego deberá estar a 60 FPS para que funcione correctamente. Este
valor corresponde a la expresión del sistema fps.
El tiempo CPU estimado (estimated CPU time): una estimación de cuanto tiempo CPU se gasta en la
lógica del juego. No es preciso, sólo una estimación, pues sólo tiene en cuenta el tiempo utilizado en el hilo
javascript principal. El analizador puede descomponer estos datos en el tiempo que se usa en cada parte del
juego, explicado más adelante en este manual. Este valor corresponde con la expresión del sistema
CPUUtilisation. Ejemplo (20% CPU).
La memoria usada en imágenes estimada (estimated image memory use): una estimación de cuanta
memoria usan las imágenes cargadas en el juego. Sólo está disponible en el modo WebGL. Las imágenes
son las que más ocupan en el juego, pero ten en cuenta que este valor excluye el resto, como la memoria
requerida para la lógica del juego y la memoria necesaria para música y efectos de sonido. Mira el post
Recuerda no malgastar memoria (Remember not to waste your memory) para más consejos en este asunto.
Este valor corresponde con la expresión del sistema ImageMemoryUsage. Ejemplo (32.5mb images).
El renderizador (renderer): si el juego usa el modo canvas2d o webGL. Éste último es más rápido y es
compatible con el efecto sombrear. Este valor corresponde con la expresión del sistema renderer.
Otros detalles del rendimiento aparecen en la sección Rendimiento (Performance) de la vista del inspector
del objeto del sistema, que aparece por defecto:
Comprobación por segundo de la colisión (Collision check<sec): Ejemplo (1144 (~22 / tick)). Cuantas
veces por segundo tiene que probar el sistema una colisión entre dos objetos. La comprobación se usa a
través de la condición de las partículas (sprite) On collision o Is overlapping, y muchos comportamientos la
hacen automáticamente. Entre paréntesis se muestra la media de comprobaciones. Por ejemplo, si hay 600
comprobaciones en el último segundo y la tasa de frames es 60 FPS, las comprobaciones estimadas por
segundo serán 10. Esto te dice que de media hay unas 10 comprobaciones por frame, aunque el valor real
normalmente varía entre un frame y otro.
Comprobación de polígonos por segundo (Poly check/sec): Ejemplo (60 (~1 / tick)). La mayoría de las
comprobaciones de colisión son muy rápidas, y el sistema te puede decir que dos objetos no se están
solapando (verificando que sus cuadros delimitadores no se solapan). Sin embargo, si los cuadros
delimitadores de dos objetos están solapados, el sistema debe hacer una comprobación más exhaustiva en los
polígonos de colisión de cada objeto. Este valor te dice cuantas comprobaciones de este tipo se han hecho en
el último segundo, así como la media, como en el apartado anterior. Normalmente este valor es menor que el
anterior, pero si es más alto indica un posible problema de rendimiento.
La pestaña Inspector (Inspector)
El programa de depuración tiene tres pestañas: Inspector (Inspector), Ver (Watch) y Perfil (Profile). La
pestaña Inspector se usa para ver y editar valores.
La Vista de inspector se divide en dos secciones: a la izquierda aparece una lista de todos los tipos de objeto
en el proyecto, incluyendo el objeto Sistema, y a la derecha una lista de los valores relativos al objeto
seleccionado, como en la Barra de propiedades.
La lista de objetos
Clica el nombre de un objeto en la lista para abrir el menú. El número de ejemplos de ese objeto aparecerá
entre paréntesis tras el nombre. Si sólo tiene un ejemplo, o es un objeto global como Sistema o Audio,
empezará a inspeccionar el objeto inmediatamente. De otro modo el menú se expandirá y aparecerán los
ejemplos del objeto, ordenados por su índice ID (IID). Cuando cliques un ejemplo lo analizará.
La vista de valores
Como en la Barra de Propiedades, la vista de valores muestra una lista de tablas que muestran la
información relativa al objeto seleccionado. Los valores mostrados dependen de lo que se esté
inspeccionando; por ejemplo el objeto Partícula muestra información sobre la animación del frame actual, el
objeto Audio sobre la música y sonido actuales y el objeto Sistema sobre planos y capas. La mayoría de las
veces los valores corresponden con los de la Barra de propiedades, además de las expresiones del objeto.
Las variables de ejemplo y los valores de comportamiento también se muestran si el objeto seleccionado los
tiene.
Suele ser útil ver estos valores mientras el juego funciona. Además, también se pueden editar. Como en la
Barra de propiedades, clica en un valor y teclea uno nuevo. Los valores editados aparecen en negrita. No
todos los valores se pueden editar - aquellos en gris claro son de sólo lectura. Es una magníofica forma de
experimentar con tu proyecto.
El icono del ojo a la derecha de los valores se puede usar para añadir valores a la pestaña Ver (Watch). Se
describe con más detalle más adelante.
La sección Herramientas (Tools) te permite destruir el objeto inspeccionado. Por defecto, el objeto
inspeccionado se destaca con un rectángulo rojo en el juego. Si te molesta, quita la marca de la casilla
Destacar (Highlight).
Los objetos en un contenedor también ofrecen una lista de enlaces para inspeccionar los otros ejemplos del
contenedor.
La pestaña Ver (Watch)
El inspector sólo te permite ver un objeto por vez y a menudo incluye demasiada información, mucha que
quizás no te interese. Clicando el icono del ojo al lado de los valores lo añades a la pestaña Ver (Watch). Te
permite así combinarn diferentes valores de diferentes objetos en un único espacio, así como reducir los
valores mostrados, dejando los que te interesen.
En esta pestaña los valores se pueden editar como en la de Inspector.
La pestaña Ver (Watch) usa cruces en vez de ojos al lado de los valores. Clica una para eliminar el valor de
la vista. Nota que si estás viendo un valor de un objeto y lo destruyes, automáticamente se destruye este
valor.
Los encabezados de las categorías tienen sus propios iconos de ojos o cruces. Si los clicas añades o quitas la
sección entera.
La pestaña Perfil (Profile)
Esta pestaña da más detalles sobre el uso de la CPU estimado. El juego debe estar en funcionamiento
continuo para que el perfil pueda recolectar y mostrar la información. Entonces mostrará una estimación del
tiempo CPU gastado en cada parte de la lógica del juego. Se actualiza una vez por segundo y los valores
mostrados son del segundo anterior.
Debes saber que es una estimacón de los anteriores valores estimados. Los detalles mostrados son en
relación al hilo principal de javascript solamente, pero la CPU puede estar ocupada en otras tareas, como
procesando audio o haciendo otros cálculos. Además, el tiempo que gasta la CPU en renderizar el juego no
se tiene en cuenta aquí. Es muy posible que la tasa de frames quede limitada por la velocidad a la que
renderiza la CPU, pero el perfil no puede identificarlo directamente. Se puede obviar si la tasa de frames es
baja y el uso de la CPU no es muy alto.
A pesar de las advertencias anteriores, el perfil se puede usar para identificar “puntos calientes” que serían
los primeros a eliminar si hay un problema de rendimiento. Para más consejos, ve a Consejos de
Rendimiento. Nota que la optimización no siempre es necesaria y es un gasto de tiempo si el juego es lo
suficientemente rápido. Para una discusión más a fondo sobre esto, ve al post Optimisation: don't waste your
time.
Divisiones de Perfil
El perfil muestra tablas que dicen cuanto tiempo CPU se está gastando en cada parte. Los elementos
analizados son:
Eventos (Events): cuanto tiempo se gasta haciendo funcionar los eventos usados en el plano. Se divide en
hojas de eventos y después en grupos de eventos. Esto te ayuda a identificar los eventos que gastan más
tiempo y que quizás quieras optimizar.
Simulación de Físicos (Physics simulation): el tiempo usado en procesar los comportamientos Físicos,
pues estós suelen gastar mucho tiempo. Si este valor es alto, intenta usar menos objetos Físicos.
Draw calls: Cuanto tarda la CPU en renderizar las redes de objetos, sin incluir el tiempo que tarda en
completarlas. En algunos casos, puede tardar mucho, especialmente cuando hay un gran número de objetos
en la pantalla. Algunos navegadores incluso mandan las draw calls a otro hilo para que se procesen de forma
paralela, en cuyo caso esta medida no será la correcta.
Motor (Engine): el tiempo gastado en el motor de C2, que es el total estimado sobre los eventos, físicos y
draw calls. Incluye el procesamiento de comportamientos y otras tareas del motor.
Puntos de fractura (Breakpoints)
Cuando usas el programa de depuración, es posible ajustar puntos para pausar la ejecución de un evento
específico, condición o acción. Para más información ve a la sección Breakpoints.
4. Proyectos primitivos
Esta sección reúne todos los primitivos (elementos básicos) de los proyectos. Estos primitivos ofrecen los
bloques con los que se forman juegos complejos. Para una vista por encima ver el apartado Estructura del
Proyecto (Project structure) de la sección Resumen.
C2 usa un sistema de eventos de programación libre para diseñar. Si no conoces el sistema de eventos, la
sección Cómo funcionan los eventos (How events work) te lo explica.
4.1 Proyectos
Un proyecto es un juego o aplicación completa hecha con C2. Los proyectos contienen todos los elementos
que componen el juego, desde eventos a archivos de sonido. Se muestra un resumen del proyecto en la Barra
del Proyecto y allí se pueden añadir, renombrar, eliminar y ordenar en carpetas los elementos. Mira la
Estructura del Proyecto (Project structure) para ver un resumen de todos los elementos. A continuación se
tratan más detalles sobre cada una de las partes.
Los proyectos se pueden abrir, cerrar y exportar desde el Menú de archivos. Mira también Guardar y
compartir proyectos (Saving and sharing projects) y Exportar y publicar (Exporting and Publishing). Si estás
interesado en aspectos técnicos ve a la sección Tecnología (Technology). Se recomienda seguir los consejos
de Buenas Prácticas (Best practices) cuando trabajas en un proyecto.
Propiedades del proyecto
Las propiedades del proyecto se pueden editar en la Barra de Propiedades tras seleccionar el nombre del
proyecto en la Barra del Proyecto o usando los accesos directos de las propiedades del proyecto en las
propiedades del plano.
El Nombre (Name), Autor (Author) y Descripción (Description) se usan en algunas opciones de exportado,
así que asegúrate de rellenarlos correctamente.
Nombre (Name)
El nombre o título del proyecto.
Versión (Version)
La versión del proyecto, cuatro números, por ejemplo 1.0.0.0, donde el primero es la versión mayor y el
último es el número de revisión. Este sistema es usado por muchos exportadores para asignar la versión de la
aplicación que quieres publicar. Es bueno practicar para incrementarlo cada vez que exportas tu proyecto.
Descripción (Description)
Una frase o dos que resuman el proyecto. Esta es usada por muchos exportadores como la descripción de la
aplicación que quieres publicar.
ID
Una ID única que identifique tu aplicación. Debe ser el formato del dominio invertido, es decir,
com.mycompany.mygame. Algunos exportadores la usan, así que asegúrate de que sea única.
Autor (Author)
El nombre de la persona o equipo que desarrolla el proyecto.
Email
Una dirección de contacto para el soporte de tu proyecto. Algunos exportadores la usan para rellenar el
campo Email al publicar el proyecto.
Website
Un enlace a la web del autor o alguna relacionada. Algunos exportadores la usan para rellenar el campo
Website al publicar el proyecto.
Primer plano (First layout)
Selecciona que plano es el primero en aparecer cunado exportes el proyecto. Cuando haces una vista previa
en el editor suele ser de un solo plano específico, así que este ajuste no se aplicará hasta la exportación.
Redondeo de píxeles (Pixel rounding)
Por defecto los objetos de C2 pueden situarse en posiciones con decimales (por ejemplo, 100,3 o 200,8). Si
el navegador usa un filtro lineal, el píxel puede verse borroso. Si seleccionas Redondeo de píxeles (Pixel
rounding) los objetos de C2 redondearan su posición a un número entero (por ejemplo, 100 o 201). Esto
evita que se vea borroso y que se solapen objetos en la cuadrícula. Nota que esto no afecta a las coordenadas
X e Y, que pueden seguir estando entre píxeles – sólo afecta cuando los objetos aparecen en la pantalla.
Usar un plano de carga (Use loader layout)
Usa un Primer plano especial que se muestre mientras el resto de planos se cargan. La expresión del sistema
proceso de carga (loadingprogress) muestra el proceso de 0 a 1 (0,5 sería la mitad). Para más información,
mira el tutorial how to make a custom loading screen ⇗.
Tamaño de la ventana (Window size)
El tamaño de la ventana en el juego, en píxeles. Solo se aplica si la Pantalla completa del navegador
(Fullscreen in browser) está apagada. Aparece una línea discontinua en la Vista de Plano indicando el
tamaño.
Navegador para la vista previa (Preview browser)
Elige que navegador se utiliza para hacer una vista previa de tu proyecto. Aparecen todos los navegadores
más usados para Windows. Marca por defecto (default) para usar el navegador por defecto de tu sistema.
Marca personalizar (custom) para usar un navegador personalizado en Preferencias (Preferences). Se
recomienda probar el proyecto en varios navegadores antes de lanzarlo.
Pantalla completa en el navegador (Fullscreen in browser)
En vez de mostrar el proyecto en un rectángulo dentro de la web (si esta opción está deshabilitada), se puede
utilizar el navegador completo. Hay dos formas: Modo de recorte (Crop mode) que simplemente hace la
ventana más grande, o Modo de escala (Scale mode) que también escala el contenido de la ventana para que
se ajuste a la pantalla. Para más información mira el tutorial supporting multiple screen sizes ⇗.
Escalar pantalla completa (Fullscreen scaling)
Sólo tiene efecto si se usa el modo pantalla completa (cuando Fullscreen in browser no aparece como Off).
El modo High Quality renderiza a la resolución completa de la pantalla. El modo Low Quality primero
renderiza al Tamaño de Ventana del proyecto y después estitra el resultado hasta llenar la pantalla. Este
último mejora el rendimiento y es compatible con juegos pixelados de estilo retro. Sin embargo, los textos,
sprites pequeños y las sombras aparecen con mejor calidad y detalle en el modo High Quality.
Mostrar DPI-Alto (Use high-DPI display)
Algunos dispositivos pueden mostrar una resolución mucho más alta, con más puntos por pulgada (DPI). Al
activar esta propiedad se usará la máxima resolución del dispositivo, aunque a veces se puede reducir el
rendimiento. Si la desactivas se tratará el dispositivo como si fuera de baja resolución, que reduce los
detalles pero mejora el rendimiento.
Orientaciones (Orientations)
Si bloqueas o no la orientación en dispositivos móviles. Cualquiera (any) permite al dispositivo cambiar
automáticamente; eligiendo vertical (portrait) u horizontal (landscape) bloqueará la orientación. No todos
los dispositivos permiten el bloqueo y en otros debes estar en pantalla completa (usando la acción Request
fullscreen del navegador) para que el bloqueo tenga efecto.
Habilitar WebGL (Enable WebGL)
Habilita el WebGL más rápido y potente que puedas. Se usará el lienzo canvas 2D se si WebGL no se puede
usar. Mira la sección Tecnología (Technology) para más información sobre lienzos. Si WebGL está
habilitado, también se podrá hacer vista previa de los efectos en la Vista de plano.
Muestra (Sampling)
Elige entre muestra linear (nítida) o point (pixelada) cuando cambies el tamaño de las imágenes. Se
recomienda linear para juegos modernos con gráficos de alta resolución y point para juegos retro que usan
bloques pixelados.
Motor físico (Physic engine)
Elige que motor activará el comportamiento físico. Las opciones son:
Box2D web: el motor por defecto con rendimiento medio y compatible con todas las características.
Box2D asm.js: motor de alto rendimiento, pero que no es compatible la acción Deshabilitar colisiones
(Disable collisions). Se recomienda este motor a menos que necesites esa acción.
CocoonJS native: motor de alto rendimiento para cuando exportes con CocoonJS. Si exportas a otra
plataforma se transforma a Box2D web automáticamente.
Estilo del cargador (Loader style)
Cambia el cargador por defecto que se muestra cuando el juego está cargando o mientras el propio plano de
carga todavía está cargando. Mira el tutorial how to make a custom loading screen ⇗.
Pausar en desenfocado (Pause on unfocus)
Si lo habilitas, la vista previa se parará cuando la ventana del navegador se desenfoque, por ejemplo, cuando
cambies de ventana para trabajar en otra. Puede ser útil cuando uses la vista previa continua. Si lo
deshabilitas la vista previa continuará a pesar de esto, pero si cambias de navegador o lo minimizas sí se
parará (como hace cuando el proyecto está publicado).
Aclarar fondo (Clear background)
Salta “aclarar fondo” al principio de cada frame. Esto es útil para mejorar el rendimiento en móviles (mira
Consejos sobre rendimiento Performance Tips). Cada vez, el frame se convierte en negro claro, después en
el color de la capa de abajo (si no es transparente) y finalmente en el suyo propio. “Aclarar fondo” indica si
hacer el primer paso. La propiedad de capa “transparente” indica si hacer el segundo paso. Si todos los
planos contienen capas opacas puedes seleccionar “No” en “Aclarar fondo” ya que la capa de fondo siempre
aclarará la pantalla. Si los planos son totalmente opacos por sprites u otros objetos, puedes ajustar todas las
capas a transparente para saltar ambos pasos. En este caso, ningún área descubierta por los objetos tendrá
fallos o estará llena de pixeles extra.
4.2 Planos
Un plano se conformas de un diseño de objetos. Puede corresponder a un nivel del juego, al menú o a una
pantalla de títulos. En otras herramientas también pude significar escenas, habitaciones, frames o etapas. Se
pueden añadir, renombrar y borrar en la Barra del Proyecto. Los planos se editan en la Vista de plano. Cada
plano tiene una hoja de eventos asociada que define como funciona.
Los planos contienen diversas capas. Los objetos que aparecen en la pantalla no pertenecen directamente al
plano, si no a la capa que está en el plano.
Los planos no tienen un fondo de color. Para asignar un color al fondo, haz que la capa de abajo sea opaca y
asígnale un color. Se puede hacer en la Barra de Capas.
También se le pueden aplicar efectos, que se aplican a todos los elementos que aparecen en la pantalla.
Añadir y quitar planos
Para añadir un plano, haz click con el botón derecho sobre una capa de planos en la Barra del proyecto y
selecciona Añadir Plano (Add Layout). Para renombrar o eliminar un plano, haz click con el botón
derecho sobre el plano en la Barra del proyecto y selecciona Renombrar (Rename) o Eliminar (Delete).
Propiedades de Layout
Las propiedades de un plano se pueden editar en la Barra de Propiedades tras clicar un espacio en el plano o
seleccionando el nombre del plano en la Barra del Proyecto.
Nombre (Name)
El nombre del plano.
Hoja de eventos (Event sheet)
La Hoja de eventos asociada que define como funciona el plano. Estas hojas se pueden usar en más de un
plano usando incluye (includes) en planos con los mismos eventos.
Capa activa (Active layer)
Esta es la capa en la que se sitúan los objetos. Se selecciona en la Barra de Capas. La activa se muestra en la
Barra de Estado mostrándose también consejos cuando introduces un nuevo objeto. Todos los objetos
nuevos se añaden a la capa activa.
Desplazamiento ilimitado (Unbounded scrolling)
Por defecto la ventana del juego no puede desplazarse más allá de los límites del plano. Selecciona “Sí”
(“Yes”) para permitir un desplazamiento sin límites, incluso fuera de los límites del plano.
Tamaño del plano (Layout size)
El tamaño, en píxeles, del área del plano. Aunque esté seleccionado el desplazamiento ilimitado, esto sigue
afectando a la parte del plano que se muestra en la Vista de plano.
Márgenes (Margins)
El tamaño, en píxeles, de los márgenes, que son las áreas grises fuera del plano. Sólo se ven en la Vista de
plano y no aparecen al hacer la vista previa.
Propiedades del proyecto (Project properties)
Un acceso rápido para ver las propiedades del proyecto.
4.3 Capas
Una capa es como una lámina de cristal en la que se sitúan los objetos. Se pueden usar para superponer
diferentes grupos de objetos, tanto en el fondo como en el primer plano. Las capas pertenecen a un plano y
se editan en la Barra de Capas. Se pueden desplazar a ritmos diferentes para crear efectos de paralaje, así
como escalar o girar, todo para conseguir efectos visualmente más poderosos en los juegos.
También son importantes para añadir interfaces estáticas (o HUDs o UIs) a juegos dinámicos. Una capa con
el paralaje a 0, 0 no se moverá, así que cualquier objeto en ella siempre estará en el mismo lugar.
Un conjunto común de capas sería:
HUD (capa superior – barra de vida del personaje, información UI, etc)
Primer plano (los objetos principales del juego)
Plano intermedio (capa de fondo con paralaje)
Fondo (última capa – el fondo)
También se pueden aplicar efectos a las capas, que afectan a todo el contenido de la capa.
Propiedades de capa
Las propiedades de la capa se pueden editar en la Barra de Propiedades tras clicar la capa en la Barra de
Capa. Nota que esto modifica cual es la capa activa – mira las propiedades de la capa activa en Propiedades
del Plano.
Nombre (Name)
El nombre de la capa, para referirte a ella en el sistema de eventos.
Visibilidad inicial (Initial visibility)
Si la capa es visible o no al inicio cuando haces la vista previa. Esto es diferente de la propiedad Visible en
el editor (Visible in editor) que sólo afecta a la Vista de plano.
Color del fondo (Background color)
El color de fondo para la capa. Este paso se ignora si la transparencia está activa.
Transparencia (Transparent)
Ignora el color de fondo y hace que la capa sea transparente.
Opacidad (Opacity)
Ajusta la opacidad (o semitransparencia) de la capa, de 0 (invisible) a 100 (opaca).
Forzar la textura (Force own texture)
Fuerza a la capa a mantener cierta textura en vez de mostrarla directamente en la pantalla. Es útil para
algunos efectos. Aunque disminuye la velocidad de renderización, así que debes seleccionar “No” a menos
que sea necesario.
Índice de escala (Scale rate)
Cambia el índice al que está escalada la capa si es el caso en la capa o plano, parecido al paralaje pero para
el zoom. Un índice de escala a 0 significa que la capa siempre estará a escala 100% aunque se aplica un
escalado. Un índice de escala 100 significa que se escalará tanto como indiques.
Paralaje (Parallaz)
Cambia el índice al cual se desplaza la capa en dirección vertical y horizontal. En un paralaje de 100,
100 significa desplazamiento normal, 0,0 significa que no se mueve (útil para UIs), 50 significa que se
mueve a la mitad de velocidad, etc. También es útil para múltiples fondos en movimiento.
Visible en el editor (Visible in editor)
Si se muestra la capa o no en la Vista de plano. Nota que esto es diferente a la Visibilidad inicial (Initial
visibility) que sólo afecta a la vista previa. Se puede acceder también a través de la Barra de capas.
Bloqueada (Locked)
Si una capa está o no bloqueada en la Vista de plano. Los objetos en capas bloqueadas no se pueden
seleccionar. Se puede acceder también a través de la Barra de capas.
Paralaje en el editor (Parallax in editor)
Si está habilitado, las propiedades del paralaje también se aplicarán a la Vista de plano, permitiéndote hacer
una vista previa de cómo se verían los efectos.
4.4 Objectos
En C2 los objetos son lo más útil en un proyecto. La mayoría de las cosas que ves en un juego de C2 son los
objetos, incluyendo los objetos ocultos con otros propósitos (por ejemplo el audio de fondo).
Cuando introduces un nuevo objeto, eliges en primer lugar un plugin en el diálogo (por ejemplo, Sprite).
Esto crea un tipo de objeto (por ejemplo, EnemigoTroll-TrollEnemy). Cuando el ratón se convierte en una
mira puedes situar el primer ejemplo y puedes duplicarlos para crear más ejemplos del mismo tipo.
Las diferencias entre tipo y ejemplo de objeto son esenciales para usarlos correctamente. Los objetos constan
de varias partes, explicadas debajo. También hay secciones del manual que dan más detalles de cada una.
Plugins
Un plugin se define como objeto. Por ejemplo, un Sprite es un tipo de objeto, y un Audio es otro distinto. Se
definen como Sprite plugin y Audio plugin respectivamente.
Los programadores de Javascript pueden crear plugins nuevos (y comportamientos) usando Javascript SDK.
Tipos de objeto (Objects type)
Los tipos de objetos definen la “clase” del objeto. Por ejemplo, EnemigoTroll (TrollEnemy) y EnemigoOgro
(OgreEnemy) pueden ser tipos distintos del plugin Sprites. Tienen animaciones distintas y se les pueden
aplicar eventos de forma individual para hacerlos parecer y actuar distintos, a pesar de pertenecer ambos a
Sprites.
Ejemplos (Instances)
Usando el ejemplo anterior, si hay cuatro objetos de EnemigoTroll en un plano, estos son ejemplos del tipo
de objeto EnemigoTroll. Sólo hay un tipo EnemigoTroll. Así mismo, puede haber múltiples ejemplos del
tipo de objeto EnemigoOgro.
Variables de ejemplo (Instances variables)
Las variables de ejemplo se añaden al tipo de objeto y almacenan números o textos por cada ejemplo. Por
ejemplo, si quieres que todos los monstruos tengan su propio contador de salud (health counter) debes añadir
la variable de ejemplo salud (health). Esto es esencial para hacer los juegos más interesantes – cada ejemplo
actuará de diferente forma.
Comportamientos (Behaviors)
Se pueden añadir comportamientos a los tipos de objeto para añadir cierta funcionalidad. Por ejemplo la
Dirección 8 (8 direction) se puede añadir a un Sprite, y podrá ser movido con las flechas del teclado. Esto
ayuda a agilizar el desarrollo e incrementa la productividad. Los comportamientos no están para hacer todo
por ti: en el sistema de eventos es donde la mayoría de la lógica del juego se define. Los comportamientos
son, básicamente, atajos. La mayoría de ellos pueden repetirse con eventos, pero así ahorras más tiempo.
Los comportamientos son muy personalizables, si uno de ellos no hace exactamente lo que quieres que haga,
puedes personalizarlo usando un evento.
Todos los ejemplos y tipos de objetos usan comportamientos. No puedes añadir comportamientos solo a
algunos ejemplos – aunque quizás puedas habilitarlos y deshabilitarlos en cada uno de ellos.
Efectos (Effects)
Los efectos cambian la apariencia visual del objeto. No funcionan en todas las plataformas, porque requiere
WebGL. Se pueden ajustar los recursos para que todo aparezca razonablemente bien aunque no funcione
WebGL. Nota que los efectos son distintos de mezclar movimientos (blend move) que funciona en todas las
plataformas.
Familias (Families)
Las familias son grupos de tipos de objeto. Te ayudan a repetir eventos en distintos tipos de objetos en
grandes proyectos.
Contenedores (Containers)
Son una característica avanzada para seleccionar un grupo de ejemplos a la vez en los eventos. Es útil para
crear objetos compuestos (como un depósito hecho a partir de sprites base y torres).
4.4.1 Plugins
Los plugings son los objetos. Por ejemplo, un Sprite es un tipo de objeto, y un Audio es otro distinto. Se
definen como Sprite plugin y Audio plugin respectivamente. Mira Referencia de plugings (Plugin reference)
para más información de cada uno.
Los programadores de Javascript pueden crear plugins nuevos (y comportamientos) usando Javascript SDK.
La mayoría de los plugings definen sus propiedades en la Barra de Propiedades. Para ver una lista completa,
sitúa el pluging en Referencia de plugings (Plugin reference).
Hay tres tipos de plugings:
Visuales (Visual plugings) como los Sprites, que aparecen físicamente en el plano y la pantalla.
Escondidos (Hidden plugings) como la Matriz (Array), que se sitúan en un plano en particular pero no
aparecen en la pantalla.
Del proyecto completo (Project-wide plugings) como el Ratón o el Audio, que se añaden a todo el
proyecto una sola vez. Solo puede haber un tipo de objeto y ejemplo de este tipo de plugings. Solamente
proporcionan una capacidad (como poder usar el ratón). Son muy útiles en el sistema de eventos.
C2 está diseñado modularmente. Esto significa que no hay mucha funcionalidad: debes insertar un plugin
antes de poder usar sus funciones. Por ejemplo, no puedes reproducir ningún audio antes de añadir el plugin
de Audio al proyecto. Hacerlo puede parecer innecesario, pero hay muchos plugings del proyecto completo
y no todos los proyectos necesitarán todos. Por ejemplo, si el plugin de Audio se aplicara automáticamente
en cada proyecto, los que no lo necesiten gastarían rendimiento, espacio en el disco y demás. Así que
recuerda que si no añades un plugin no estará realmente en el proyecto y hará que este sea más ligero y
eficiente al exportar.
Isntalar plugins de terceros
Desarrolladores externos pueden crear y distribuir sus propios plugins usando el Javascript SDK. Recuerda
que Scirra no puede ayudarte si estás usando estos plugins, debes contactar con el desarrollador para pedir
ayuda o nuevas características. Para instalar uno de estos plugins debes:
1. Cerrar C2
2. Copiar la carpeta del plugin en t <install path>\exporters\html5\plugins. Cada plugin tiene su propia
carpeta, así que añade crea una nueva y añade los archivos del plugin dentro. Para comportamientos,
copia en <install path>\exporters\html5\behaviors.
3. Enciende C2 y el plugin o comportamiento debe estar disponible en el editor.
4.4.2 Tipos de objeto
Los tipos de objeto son la parte central del diseño de juegos en C2. Definen la “clase” de un objeto. Por
ejemplo, EnemigoTroll (TrollEnemy) y EnemigoOgro (OgreEnemy) pueden ser tipos distintos del plugin
Sprites. Tienen animaciones distintas y se les pueden aplicar eventos de forma individual para hacerlos
parecer y actuar distintos, a pesar de pertenecer ambos a Sprites.
Hay múltiples ejemplos de un tipo de objeto en el proyecto. Por ejemplo, quizás quieras que haya cuatro
objetos de EnemigoTroll esperando al jugador. Estos cuatro ejemplos comparten la animación, imágenes,
comportamientos, variables de ejemplo y eventos. (En el caso de las variables de ejemplos, cada ejemplo
almacena un valor único – como la salud- y comportamientos que funcionan independientemente del resto
de ejemplos.)
Los tipos de objeto no tienen una posición, ángulo o tamaño. Estas son propiedades de los ejemplos de ese
tipo de objeto. La Barra del proyecto y la Barra de objeto muestran los diferentes tipos de objetos del
proyecto, pero no los ejemplos.
Los eventos son para añadir a un tipo de objeto. El evento filtra los ejemplos que cumplen esa condición.
Por ejemplo, el evento “Bala impacta en el Alien” ("Bullet collides with Alien") se aplica a todos los
ejemplos de los tipos de objeto “Bala” (“Bullet”) y “Alien”. Aunque cuando el evento funciona, las
acciones solo se aplican a los ejemplos específicos envueltos en el impacto. Para más información ve a
Cómo funcionan los eventos (How events work).
Los tipos de objeto pueden agruparse en familias. Te puede ayudar a evitar repetir los mismos eventos en
diferentes tipos de objeto.
4.4.3 Ejemplos
Los ejemplos son los objetos reales que puedes ver en el juego: un ejemplo de un tipo de objeto. Por
ejemplo, si hay cuatro EnemigoTroll en un plano, hay cuatro ejemplos del tipo de objeto EnemigoTroll.
Son los ejemplos los que tienen una posición, ángulo y tamaño en el plano. Los tipos de objetos no tienen
estas propiedades – solo definen la “clase” de objeto.
Se pueden crear ejemplos en el tiempo de ejecución en el sistema de eventos (por la acción Crear Objeto
(Create Object) y Generar objeto (Spawn an objet)). También puedes prepararlos de antemano en los planos
con la Vista de plano para diseñar niveles y pantallas de título.
Seleccionando un ejemplo en la Vista de plano muestras sus propiedades en la Barra de Propiedades. Hay un
conjunto de propiedades común a todos (o casi todos) los objetos, y algunas propiedades inherentes al
plugin. Las propiedades más comunes se definen abajo, y las inherentes al plugin se describen en Referencia
de plugins (Plugin reference.)
Propiedades de ejemplo communes
Las siguientes propiedades son comunes a la mayoría de los objetos, dependiendo de sus capacidades.
Nombre (Name)
El nombre del tipo de objeto al que pertenece.
Plugin
Un recordatorio del plugin al que pertenece.
Global
Por defecto, todos los ejemplos se destruyen cuando finaliza el plano (cuando se pasa al siguiente). Si está
seleccionado Global ninguno de los ejemplos de ese tipo de objeto se destruirá al cambiar.
Capa (Layer)
La capa en la que está situado el ejemplo.
Ángulo (Angle)
El ángulo en grados en el que está orientado el ejemplo. También puede cambiarse por el ángulo en la Vista
de plano.
Opacidad (Opacity)
La opacidad del objeto (o semitransparencia) de 0 (tranparente) a 100 (opaco).
Posición (Position)
Las coordenadas X e Y en el plano, en píxeles. Se mide desde el origen del objeto (mirar puntos de imagen).
También pueden cambiarse moviendo el ejemplo en la Vista de plano.
Tamaño (Size)
La altura y anchura de los ejemplos, en píxeles. También se puede modificar recortando el tamaño en la
Vista de plano cuando el ejemplo está seleccionado.
Editar variables (Edit variables)
Abre el diálogo de Variables de ejemplo de objeto.
Editar comportamietnos (Edit behaviors)
Abre el diálogo de Comportamientos de objeto.
Editar efectos (Edit effects)
Abre el diálogo de Efectos.
4.4.4 Variables de ejemplo
Las variables de ejemplo se añaden a los tipos de objeto pero almacenan números, textos o booleanos
(on/off) a cada ejemplo de forma individual. Esto los hace ideales para contadores de salud (health counters)
ya que cada ejemplo tiene su propio valor. Las variables de ejemplo se añaden con el diálogo de Variables
de ejemplo de objetos y el valor inicial de cada ejemplo puede introducirse en la Barra de propiedades.
Las variables de objeto también se pueden usar para ayudar a controlar los ejemplos. Por ejemplo, una
variable de ejemplo booleana puede usarse para determinar si un enemigo caza al jugador (verdadero-true)
o si escapa (falso-false). Si todos los ejemplos tienen diferentes valores, la condición aplicada variable de
ejemplo booleana puede usarse para aplicar acciones a enemigos que cazan al jugador. Invirtiendo la
condición (seleccionando ejemplos con el valor falso-false) se pueden usar para aplicar acciones a enemigos
que escapan. El resultado final es un número de ejemplos del mismo tipo actuando de forma independiente:
algunos cazarán y otros escaparán. Éste es un ejemplo sencillo, pero se puede aplicar a casos más
complicados.
En otras palabras, el estado de un ejemplo se puede controlar usando variables de ejemplo.
Las variables de ejemplo también pueden agruparse en familias. Todos los tipos de objeto en la familia
tendrán la misma variable de ejemplo.
4.4.5 Comportamientos
Los comportamientos dan a los tipos de objeto una funcionalidad concreta. Se pueden añadir con el
Diálogo de comportamientos de objeto. Mira la Referencia de comportamientos (Behavior reference) para
más información sobre cada uno.
Un ejemplo de comportamiento es el de 8 direcciones (8 direction). Este permite que un objeto se mueva
usando las flechas del teclado. Te ayuda a agilizar el desarrollo e incrementar la productividad. Los
comportamientos no están para hacer todo por ti: en el sistema de eventos es donde la mayoría de la lógica
del juego se define. Los comportamientos son, básicamente, atajos. La mayoría de ellos pueden repetirse con
eventos, pero así ahorras más tiempo. Los comportamientos son muy personalizables, si uno de ellos no
hace exactamente lo que quieres que haga, puedes personalizarlo usando un evento.
Todos los ejemplos de un tipo de objeto tienen comportamientos. No puedes añadir un comportamiento sólo
a ciertos ejemplos - pero puedes habilitarlos o deshabilitarlo en cada uno de ellos.
Algunos comportamientos añaden sus propiedades a la Barra de Propiedades. Ve a Referencia de
comportamientos (Behavior reference) para ver las de cada uno.
Algunos comportamientos también transmiten a los objetos a los que se les aplica sus propias condiciones,
acciones y expresiones. Así, éstas se muestran junto con las propias del objeto en el diálogo de Añadir
condición o acción y en el Panel de expresiones.
Los comportamientos se pueden agrupar en familias. Todos los tipos de objeto en la familia tendrán el
mismo comportamiento.
4.4.6 Efectos
Los efectos cambian la apariencia visual de los objetos. Se pueden añadir con el Diálogo de efectos.
También se pueden añadir a capas y planos, aunque los efectos que se combinan con el fondo no se pueden
usar en planos. Los efectos también son llamados shaders o WebGL shaders effects, ya que se estos son la
tecnología oculta que hace posibles los efectos. Debajo hay un ejemplo de Efecto agua (Water effect) en una
imagen.
C2 tiene una biblioteca con más de 70 efectos. Al añadirlos se muestran en la Vista de Plano si WebGl está
habilitado en las propiedades del proyecto. (Si WebGL está deshabilitado la Vista de plano no mostrará
ningún efecto). Se dan gran número de ejemplos de efectos en la Carpeta de Ejemplos (Examples folder) de
C2.
Se pueden aplicar varios efectos a un objeto, capa o plano. En este caso se encadenan los efectos. Los
resultados del primer efecto son procesados por el segundo, los del segundo por el tercero y así
sucesivamente.
Soporte (Support)
Para que se muestren los efectos es necesario que el dispositivo soporte WebGL. Para más información mira
la sección Tecnología (Technology) en la parte de Lienzo Canvas. En resumen, no todas las plataformas u
ordenadores soportan WebGL así que los efectos no se ven en estas plataformas. Para asegurar que tu
proyecto siga funcionando correctamente aunque el dispositivo no soporte WebGL, mira la sección
Recursos (Fallbacks).
Si se ven o no los efectos se puede comprobar con la Condición del sistema (system condition) Se muestran
efectos (Effects are supported).
Modo de mezcla (Blend mode)
La propiedad Modo de mezcla (Blend mode) funciona en todas las plataformas ya que también funciona con
el lienzo Canvas 2D. Es el único efecto que no requiere WebGL ni otros recursos para funcionar.
El Modo de Mezcla ofrece unas sencillas formas predeterminada para mezclar objetos con el fondo. Para ver
un ejemplo de cómo funciona este Modo, mira el ejemplo Blend modes.capx en la carpeta de ejemplos de
C2.
Si se usan múltiples efectos, el Modo de mezcla se aplica sólo al último efecto. Por ejemplo con tres efectos,
los efectos se encadenaran con normalidad, y el Modo de mezcla se usará solo para mezclar el resultado del
tercer efecto con el fondo.
Recursos (Fallbacks)
Si el dispositivo no soporta WebGL, puedes especificar qué hacer usando la propiedad Recursos (Fallbacks)
en la categoría Efectos (Effects) en la Barra de Propiedades.
La propiedad Recursos no aparece si no se añaden efectos, y no hay necesidad de preocuparse de si los
efectos funcionan o no.
Por defecto, la propiedad Recursos cambia el Modo de mezcla a Normal si no se pueden soportar los efectos.
(Recuerda que la propiedad Modo de mezcla siempre funciona, en cualquier plataforma u ordenador.) Esto
hará que el objeto aparezca como si no tuviera ningún efecto cuando no se soporta WebGL.
Las otras opciones de Recursos te permiten cambiar la propiedad Modo de mezcla a otra opción. Por
ejemplo, cuando usas el efecto pantalla (Screen effect) puedes conseguir un resultado similar usando Aditivo
(Additive) en el Modo de mezcla, así que puedes poner en Recursos - Aplicar mezcla “Aditivo” (Set
“Additive” blend). Si se soporta WebGL el objeto se mostrará con el efecto pantalla (Screen effect). Si no,
no funcionará este efecto pero sí el Aditivo (Additive) del Modo de mezcla, pareciendo algo similar al
efecto.
Finalmente, los recursos te permiten configurar un objeto para que se destruya (o que la capa se esconda).
Esto se puede usar en objetos opcionales con un uso meramente estético, por lo que si no puede mostrar el
efecto, simplemente no aparecerá dicho objeto.
Pruebas (Testing)
Asegúrate de probar tu proyecto con WebGL habilitado y deshabilitado en las propiedades del proyecto para
comprobar que los recursos funcionan correctamente y el contenido se muestra de una forma
razonablemente correcta. No puedes asumir que todos los usuarios tendrán soporte para WebGL, incluso si
usan un navegador que soporta WebGL, ya que un hardware antiguo o unos drivers caducados harán que no
se pueda usar WebGL. Hacer pruebas es la mejor forma de proceder.
Cambiar efectos en tiempo de ejecución (Changing effects at runtime)
Los objetos que pueden tener efectos ofrecen acciones para habilitar y deshabilitar efectos, o configurar los
parámetro del efecto. Esto te permite activar efectos o ajustar sus parámetros en tiempo de ejecución, dando
más posibilidades y usos creativos. Para habilitar y deshabilitar efectos de plano o capa, o cambiar sus
parámetros, usa las acciones del sistema pertinentes.
Rendimiento (Performance)
Usar demasiados efectos puede ralentizar el rendimiento, especialmente en móviles. Intenta usar los efectos
solamente cuando sea necesario.
Crear muchos ejemplos de un objeto que contiene efectos puede resultar ineficiente, ya que los efectos
deben procesarse muchas veces en pequeños objetos. Si muchos ejemplos necesitan usar efectos, sería más
apropiado situar todos los ejemplos en la misma capa y aplicar el efecto a la capa. Esto mejorará el
rendimiento manteniendo el mismo efecto.
Nunca uses efectos para crear un efecto estático en un objeto. Por ejemplo, no uses “Escala de grises”
(“Grayscale”) para que un objeto aparezca en escala de grises. En su lugar, aplica la escala de grises a la
propia imagen en el editor e impórtala así al proyecto. Tiene el mismo efecto visual y evitas que el efecto se
degrade al procesarlo. Los efectos como “Escala de grises” (“Grayscale”) se deben usar solamente para
transiciones o para que los objetos aparezcan en escala de grises sólo ocasionalmente.
Para más información, mira la sección del manual Consejos para el rendimiento (performance tips).
4.4.7 Familias (Families)
In C2, las Familias son agrupaciones de grupos de objetos. Todos los tipos de objeto de una familia deben
provenir del mismo plugin (p.e Sprite objetcs) y no una mezcla como Sprites o Fondo mosaico.
Las familias evitan que no repitas eventos. Por ejemplo, en vez de tener los mismos eventos para los objetos
Enemy1, Enemy2 y Enemy3, puedes añadir los eventos una sola vez a la familia Enemigos (Enemies).
Automáticamente se aplicaran a todos los tipos de objeto dentro de la familia.
El ejemplo de Families.capx en la carpeta de ejemplos de C2 te muestran las ventajas de usarlas. Hay siete
tipos de enemigos, y todos se destruyen con el laser. Sin usar familias, se necesitan siete eventos separados,
como se muestra debajo:
Usando familias sólo es necesario usar uno:
Esto hace la tarea más fácil, agrupando objetos que funcionan de la misma forma.
Cómo crear una familia (How to create a family)
Haz clic con el botón derecho en la carpeta de Familias (Families) en la Barra del Proyecto y selecciona
Añadir familia (Add family). Aparece entonces el diálogo de Editar Familia (Edit Family):
Los objetos de la izquierda son los objetos del proyecto que puedes añadir a la familia. Los de la derecha
son los que ya has añadido. Haz doble clic en un objeto para pasarlo al otro lado. Puedes seleccionar varios
objetos a la vez manteniendo pulsado Control y clicando varios de ellos, después pulsas el botón del centro
del diálogo para transferirlos.
Cuando hayas terminado, clica OK y la familia aparecerá en la Barra del Proyecto. Se puede expandir para
ver todos los objetos que contiene:
La familia, y los objetos que contiene, se pueden editar clicando el botón derecho sobre ella y eligiendo
opciones en el menú, como Quitar de la familia (Remove from family) o Editar familia (Edit family).
Se pueden añadir objetos a múltiples familias. Todos los eventos de la familia se aplicarán al objeto.
Variables de ejemplo de la familia (Family instance variables)
Las Variables de ejemplo también se pueden añadir a una familia, clicando el botón derecho en el nombre
de la familia en la Barra del Proyecto y seleccionando Variables de ejemplo de la familia (Family
instance variables).
Si añades una variable de ejemplo a una familia, todos los tipos de objetos dentro de ella adquieren esa
variable. Por ejemplo, añadiendo la variable de ejemplo Salud (Health) a la familia Enemigos (Enemies) en
el ejemplo de arriba, BladeEnemy, BugEnemy, CrescentEnemy, FighterEnemy, SaucerEnemy, ScytheEnemy
y SlicerEnemy adquirirán la variable Salud (Health). Aparecerá también en el editor, junto a esta nueva
variable, la propia de cada objeto. Pero en la Vista de hoja de eventos la familia solo mostrará su propia
variable de ejemplo (sólo los añadidos directamente a la familia). Esto significa que cualquier variable de
ejemplo que quieras habilitar para los eventos de la familia debes añadirla a la propia familia y no a los
objetos dentro de ella.
Si un tipo de objeto pertenece a distintas familias, adquiere todas las variables de las familias.
Comportamientos de la familia (Family behaviors)
También se pueden añadir comportamientos a la familia clicando con el botón derecho el nombre de la
familia en la Barra del Proyecto y seleccionando Comportamientos de la familia (Family behaviors).
Al igual que con las variables de ejemplo, si añades un comportamiento a una familia, todos los tipos de
objeto de la familia adquirirán el comportamiento. El comportamiento aparecerá en los eventos para cada
objeto y para el conjunto de la familia. Por ejemplo, si añades el comportamiento Bala (Bullet) a la familia
llamada Balas (Bullets) significa que la acción Ajustar velocidad (Set speed) de bala estará disponible para
todos los objetos de la familia o para la propia familia en conjunto.
Si un objeto pertenece a varias familias, adquirirá los comportamientos de todas ellas.
Efectos de la Familia (Family effects)
Los efectos también se pueden añadir a una familia entera clicando el botón derecho del nombre de la
familia en la Barra del proyecto y seleccionando Efectos de la familia (Family effects).
Al igual que con las variables de ejemplo y los comportamientos, si añades un efecto a una familia, todos los
tipos de objeto de la familia adquirirán el efecto. Esto es útil para aplicar objetos rápidamente a diferentes
objetos.
Si un objeto pertenece a varias familias, adquirirá los efectos de todas ellas.
Seleccionar familias en los eventos (Picking families in events)
Las familias seleccionan ejemplos de la hoja de eventos independientemente del tipo de objeto que haya en
la familia. Por ejemplo, considerando que la Familia1 (Family1) contiene SpriteA y SpriteB, las condiciones
de la Familia1 no afectarán a todos los ejemplos de los tipos SpriteA y SpriteB. Solo afectará a aquellos
ejemplos que aparezcan cuando sucede una acción para la Familia1. Así mismo, condiciones para ejemplos
de SpriteA y SpriteB no afectarán a todos aquellos contenidos en la Familia1. En otras palabras, en la hoja
de eventos se trata a las familias como tipos de objeto propios que contienen ejemplos de otros tipos de
objeto. Esto es útil si necesitas que un solo evento seleccione dos listas distintas de ejemplos del mismo tipo
objeto.
Incluir objetos en familias
Si creas muchos eventos, olvidas agruparlos en familias y quieres reemplazarlos, puedes usar el objeto
Reemplazar (Replace object) para no tener que rehacer cada evento. El prodeso se describe en How to
upgrade an object to a family ⇗.
Resumen (Summary)
Las familias son una función muy importante y esencial para ayudarte a simplificar los proyectos. Las
variables de ejemplo y los comportamientos que se añaden a las familias son adquiridos por todos los
objetos dentro de ella, lo que permite aplicar la lógica a varios objetos a la vez.
4.4.8 Contenedores (Containers)
Son una característica avanzada que facilita la creación de objetos compuestos. Por ejemplo, un tanque en un
juego de estrategia puede estar compuesto de dos partes: una base y una torre. Esto te permite que cada parte
rote de forma independiente. Y si los añades al mismo contenedor puedes trabajar con ellos como si fueran
uno solo.
Es importante familiarizarse con los eventos para entender como funcionan los contenedores.
Crear un contenedor
Para añadir un objeto, selecciónalo y clica el enlace Crear (Create) de sus propiedades (que aparece debajo
de la categoría Container al lado de la etiqueta No container). Se abrirá un diálogo que te permitirá elegir el
objeto que quieres añadir al contenedor.
Puedes añadir más objetos clicando el enlace Añadir objeto (Add object) en la categoría Container. Se puede
eliminarlos clicando el enlace Quitar (Remove).
Lo que hacen los contenedores
Poner un objeto en un contenedor tiene los siguientes efectos:
1. Si un objeto se crea en el contenedor, todos los objetos en ese contenedor se crearán
automáticamente.
2. Si un objeto se destruye en el contenedor, todos los objetos asociados en ese contenedor también se
destruirán.
3. Si una condición selecciona un objeto del contenedor, todos los objetos asociados también se
seleccionarán.
Los dos primeros puntos garantizan que hay el mismo número de ejemplos para todos los objetos del
contenedor. En otras palabras, que se crean y se destruyen como un todo. Usando el ejemplo del tanque,
sería imposible crear una base sin que se añadiera automáticamente una torre para él.
El tercer punto es el principal propósito de los contenedores. Éstos también se selccionan en los eventos
como un todo. Así funcionan como si fueran un solo objeto. Por ejemplo, una condición que seleccione la
base del tanque afectará también a su torre asociada.
Ejemplos
En los siguientes eventos ambos objetos, BaseTanque (TankBase) y TorreTanque (TankTurret) están en un
contenedor.
El ejemplo de TorreTanque (TankTurret) también se crea puesto que esta en un contenedor junto a
BaseTanque (TankBase). Es útilo añadir una acción para ajustar la posición de la torre encima de la base.
En este evento, el ejemplo asociado de la torre también se destruye por estar en el mismo contenedor.
En este evento, cuando una bala golpea la base del tanque, sólo su torre parpadea. Si no estuvieran en un
contenedor todas las torres de todos los tanques del juego parpadearían. Sin embargo, el evento selecciona la
torre a la que está asociada esa base, tratándolo como si de un único objetos se tratase. Esta es la intención
de los contenedores, puesto que en algunos tipos de juegos (como en los de estrategia) hay un gran número
de eventos que afectan a múltiples objetos por separado.
Situar contenedores en el plano
Es posible crear un ejemplo dentro de un contenedor en la vista de plano. Esto parece contradecir la regla 1
y 2 anteriores, puesto que los objetos deben crearse y destruirse conjuntamente. Sin embargo, el editor no
ejecuta la orden, si no que cualquier objeto que no esté se creará automáticamente cuando el plano
comience. Es una buena idea asegurarte de que creas suficientes objetos para poder editar su posición,
variables y otras propiedades en la vista de plano.
Almacenaje de datos de objetos en un contenedor
Es posible añadir datos de objetos como Matriz (Array) y Diccionario (Dictionary) al contenedor. A pesar
del hecho de que los objetos sean invisibles, un ejemplo del objeto se creará de ese contenedor. Esto te
permite tener una matriz o diccionario por cada ejemplo de objeto, siendo útil como sustituto de las variables
de ejemplo, si ésta es muy larga o si necesitas añadirla y borrarla de forma rápida.
4.5 Eventos
Los eventos son la principal función de C2: en vez de complicados lenguajes de programación y scripts con
una sintaxis enrevesada, en la que es fácil cometer errores, puedes definir cómo quieres que funcione el
juego usando un sistema lógico de bloques. Los bloques se refieren a los eventos, aunque hay varios bloques
que conforman una hoja de eventos.
El sistema de eventos de C2 puede no resultar familiar a los nuevos usuarios. Lee Como funcionan los
eventos (How Events Work) para ver un resumen. Los eventos no son bloques prediseñados que limitan lo
que quieres hacer. Están diseñados para darte las herramientas básicas para crear juegos sofisticados.
Los conceptos básicos de los eventos son que las condiciones filtran los ejemplos que cumplen la
condición, entonces las acciones funcionan solamente para esos ejemplos. Un malentendido común es que
todos los ejemplos deben funcionar de la misma forma. Ése no es el caso: la función de los eventos es filtrar
ejemplos de forma individual, y aplicar acciones en aquellos que cumplen cierta condición.
Los eventos se editan en la Vista de hoja de eventos usando el diálogo de Añadir condición/acción (Add
condition/action), el diálogo de Parámetros (Parameters) y el Panel de expresiones (Expressions panel).
Debajo se muestra un sencillo diagrama. (No incluye todas las funciones de los eventos – el resto están
explicados en esta sección).
Las partes que forman los eventos se resumen debajo. Revisa todas las secciones relevantes del manual para
más información de cada una. Mira también, Cómo funcionan los eventos (How events work).
Los eventos consisten en condiciones que se deben reunir, acciones que funcionan si es el caso y,
opcionalmente, más sub-eventos que prueban más condiciones, activas más acciones, etc. Por ejemplo, si la
condición Las balas impactan en el Alien (Bullet collides with alien) aparece, la acción Destruir Alien
(Destroy Alien) funcionará, y la acción de dest5ruir sólo afectará a aquellos ejemplo que tengan dicha
condición.
Las condiciones indican el criterio que se debe reunir. Filtran los ejemplos que sí los reúnen.
Las acciones hacen que sucedan cosas. Solamente afectan a los ejemplos filtrados por las condiciones.
Las expresiones pueden ser sumas que resolver para obtener valores, o recuperarlos de objetos, como lq
coordenada X de un Sprite.
Los sub-eventos siguen a los eventos, apareciendo la sangría en la Hoja de eventos.
Los grupos organizan los eventos. Se pueden habilitar o deshabilitar en conjunto.
Los comentarios te permiten escribir notas y descripciones de los eventos. Se sitúan normalmente encima
del evento que estás describiendo. Esto es importante para mantener ordenados tus proyectos.
Incluir (Includes) puede intercambiar hojas de eventos entre planos. Esto evita que tengas que copiar y pegar
los eventos de forma individual en cada plano. Añadir incluir es como hacer un copia-pega automático del
contenido de una hoja de eventos en otra.
Las variables de evento pueden almacenar números y textos de forma global (para todos los planos) o local
(para un rango específico de eventos).
Las hojas de evento son una lista de eventos. Se pueden asignar a un plano específico, o incluirlas en otra
hoja de eventos.
Scripting
C2 sólo usa el sistema de eventos y no funciona con ningún script. Esto es porque el sistema de eventos es
suficientemente potente para sustituir cualquier script. Aunque, si eres programador, quizás te interese
extender C2 usando Javascript SDK.
4.5.1 Como funcionan los eventos (How events work)
Si eres nuevo en los eventos de C2, esta sección te da un resumen de cómo funcionan. ¡Es esencial que los
principiantes lo lean! Harás juegos más eficientes si conoces bien cómo funcionan los eventos.
Los eventos están diseñados para ser fáciles de manejar y muy intuitivos. Aunque tienen ciertas formas
específicas de funcionar, que se describen aquí.
Funcionan filtrando ciertos ejemplos que reúnen cierta condición. Las acciones entonces funcionan sólo
para esos ejemplos. Por ejemplo, tenemos el siguiente ejemplo:
Cuando una Bala (Bullet) colisiona con un Monstruo (Monster) la condición tiene lugar. Los ejemplos de
Balas y Monstruos envueltos en la colisión son seleccionados por el evento. Entonces, la acción sólo
funciona para los ejemplos seleccionados por la condición. Por ejemplo, si hay otras 3 balas en la pantalla,
sólo la que esté incluida en la colisión se destruye por la acción Bala: Destruir (Bullet: Destroy). También,
sólo el Monstruo que es golpeado resta una unidad de salud (Subtract 1 from health) que es una variable de
ejemplo. ¡Sería muy difícil hacer buenos juegos si esto no funcionara así y las acciones afectaran a todos los
ejemplos de monstruos y balas! Así que recuerda que las condiciones filtran o recogen los ejemplos para
que las acciones funcionen en ellos.
Otra forma de pensar en los eventos es la de “Si todas las condiciones se reúnen en un ejemplo, entonces las
acciones funcionan”.
Varias condiciones (Multiple conditions)
Añadir más condiciones a un evento filtra los ejemplos para que las acciones funcionen. Por ejemplo:
Este ejemplo funciona así:
1. Primero, se seleccionan todos los Monstruos que hay en la pantalla (is on-screen).
2. Entonces, en esa selección, se reduce a aquellos que tienen menos de 5 unidades de salud(health <5).
3. Las acciones hacen que todos los monstruos que están en pantalla y que tienen menos de 5 unidades de
salud miran directamente al jugador (set angle toward (Player.X, Player.Y)). No afecta a los monstruos de
fuera de la pantalla o los que tienen 5 o más de 5 unidades de salud.
Usando varias condiciones puedes hacer funcionar las acciones solo en los ejemplos que cumplen todos los
criterios. Los usuarios de lenguajes de programación u otras herramientas reconocerán esto como “AND”.
Todas las condiciones de un evento deben reunirse para que se aplique la acción. Si no hay monstruos en
pantalla o ninguno de los que hay tiene menos de 5 unidades de salud la acción no funciona.
Objetos sin referencia (Unreferenced objects)
Échale un vistazo al siguiente evento:
Si el usuario presiona la barra espaciadora y el booleano del Jugador PowerupEnabled está activado, la
acción sería Monstruo: Destruir (Monster: Destroy). Nota que no hay ninguna condición para filtrar los
ejemplos de Monstruo en este evento. En este caso, todos los ejemplos de Monstruo se destruyen. En otras
palabras, si en un evento no se hace referencia a las condiciones de un efecto, las acciones se aplicarán en
todos los ejemplos.
Para empezar, piensa en condiciones que cumplan todos los ejemplos y después, progresivamente, ves
seleccionándolas y filtrándolas. Si no hubiese condiciones, entonces se seleccionarían todos los ejemplos,
afectándoles las acciones a todos.
Borrar recoger eventos entre uno y otro (Picking resets between events)
Cuando un evento finaliza, el siguiente comienza desde cero. Sus condiciones empezarán a filtrar todos los
ejemplos de nuevo.
Por otra parte, los sub-eventos (que aparecen con sangría) continúan la tarea desde donde la dejó el evento
del que provienen. Un sub-evento filtrará aún más los ejemplos dejados por el evento que venía antes de él.
Si un evento tiene dos sub-eventos, ambos recogerán ejemplos del mismo grupo del que recogía el padre (el
primer sub-evento no afecta al segundo). En otras palabras, los eventos en el mismo nivel de sangría siempre
recogen del mismo grupo de ejemplos, y los eventos de nivel más bajo siempre trabajan con los ejemplos
filtrados desde más arriba.
El objeto Sistema (The System object)
El objeto Sistema en C2 representa la funcionalidad integrada. No tiene ejemplos. Esto significa que la
mayoría de condiciones de sistema no recogen ningún ejemplo: sólo son o verdaderos o falsos. Si son falsos
el evento deja de funcionar, de lo contrario el evento continúa sin recoger los ejemplos que han sido
cambiados. Aunque hay excepciones: si una condición del sistema usa un objeto, como Recoger un ejemplo
aleatoriamente (Pick random instance), afectará a los objetos seleccionados.
Las acciones de sistema no funcionan en los objetos recogidos: solo si todas las condiciones del evento se
reúnen.
Los eventos funcionan de arriba a abajo (Events run top to bottom)
El orden de los eventos es importante. Cada evento se comprueba a menudo (sobre 60 veces por segundo en
la mayoría de ordenadores), y funcionan de arriba a abajo en la Hoja de eventos. La pantalla se crea cada vez
que funciona un nuevo evento, así que el proceso empieza de nuevo. Esto significa que si un evento hace
una cosa y el siguiente la deshace, no ocurrirá nada.
Lo mismo pasa dentro de los propios eventos: las condiciones se comprueban de arriba a abajo, y las
acciones funcionan de arriba a abajo.
Aunque hay una excepción, los detonantes (triggers). Mira la flecha verde a la izquierda de Teclado: al
presionar espacio (Keyboard: On Space pressed) en el ejemplo anterior:
Esto indica que el evento está detonado. En lugar de ejecutarse siguiendo los pasos, este evento funciona (o
se detona) cuando ocurre algo. En este caso, el evento funciona cuando el usuario pulsa la barra espaciadora
del teclado. No aparece en ningún otro momento. Los detonantes hacen que un evento no siga la secuencia
de ejecución de arriba a abajo. Esto significa que el orden de los eventos con un detonante no es relevante
(excepto en relación con otros detonantes del mismo tipo, que siguen actuando de arriba a abajo).
Sólo puede haber un detonante por evento, porque dos no pueden funcionar simultáneamente. Pero varios
detonantes sí pueden agruparse en bloques “o” (ver la explicación siguiente).
Bloques “o”
Como se ha mencionado antes, se tienen que reunir todas las condiciones para que un evento funcione. Esto
se llama “Lógica Y” (“Logica AND”), porque la condición 1 Y la condición 2 Y la condición 3... deben
cumplirse. Pero puedes modificar un evento para que funcione cuando cualquiera de las tres condiciones se
cumpla. Esto se llama “Lógica O” (“Logical OR”), porque el evento funcionará si la condición 1 O la
condición 2 O la condición 3… se cumplen.
Normalmente los bloques funcionan como bloques Y (AND). Para crear bloques O (OR), clica sobre el
bloque con el botón derecho y selecciona Crear bloque O (Make Or block). Entonces aparecerá un -orentre cada condición, como se muestra abajo.
Date cuenta que normalmente sólo puedes poner un detonante por evento, pero puedes juntar varios en un
bloque de este tipo, por lo que el evento funcionara si cualquiera de los tres se da.
Puedes combinar los tipos de bloques usando sub-eventos. Esto te permite construir una lógica más
compleja, como un bloque “O” seguido de uno “Y”.
Condiciones enlazadas
Algunos eventos se enlazan, es decir, se repiten sus acciones varias veces. Date cuenta que las flechas
circulares en el ejemplo siguiente indican esto.
Esto significa que, cuando comienza el plano, la acción Crear objeto (Create object) se repite 10 veces. El
resultado final es la creación de 10 monstruos en lugares al azar dentro del plano.
Puede haber más condiciones que sigan la condición Repetir (Repeat). Se comprueban en todas las
repeticiones y deben cumplirse para que la acción se desencadene. Puede haber más de un enlace en un
evento, pero no es frecuente.
Familias y contenedores
Date cuenta que las familias recogen sus ejemplos independientemente a los tipos de objeto que contienen.
Para más información ve a la sección Seleccionar familias en los eventos (Picking families in events).
Los contenedores son una característica avanzada que puede agrupar ejemplo y hacer que funcionen de
forma conjunta. Para más información ve a la sección Contenedores (Containers).
Resumen
Usando este sistema de eventos es posible crear una lógica sofisticada que hace juegos de forma rápida y
fácil. Es una alternativa muy poderosa a los lenguajes de programación para personas que no están
acostumbradas al uso de estas técnicas.
Aunque esta sección ha descrito las partes esenciales del sistema de eventos, todavía no ha cubierto todo. El
resto de la sección de Eventos trata más características que puedes usar. Behavior reference, Plugin
reference y System reference también hablan de las condiciones, acciones y expresiones en C2.
4.5.2 Hojas de evento
Las Hojas de Evento son simplemente listas de eventos. Se editan en la Vista de Hoja de Evento. Todas las
Hojas de Evento del proyecto aparecen en la Barra del Proyecto.
Añadir y quitar hojas de eventos
Para añadir una nueva hoja, haz click con el botón derecho en una carpeta de hojas de eventos en la Barra
del proyecto y selecciona Añadir hoja de eventos (Add event sheet).
Se pueden renombrar o borrar haciendo click co el botón derecho sobre ella en la Barra del proyecto y
selccionando Renombrar (Rename) o Borrar (Delete).
Cuando añades un plano, C2 te preguntará si también quieres crear una hoja de eventos para ese plano.
Compartir eventos entre planos
Los Planos tienen asociada una Hoja de Evento que define como funciona el plano. Hay dos formas de
compartir eventos entre capas:
1. Establecer la propiedad Hoja de Evento a varios planos en la misma hoja.
2. Crea una hoja de evento independiente con los eventos comunes e inclúyela en otras hojas.
La segunda opción es preferible ya que no estás forzado a usar los mismos eventos para diferentes planos –
sólo añades unos cuantos eventos extra para personalizarlos.
4.5.3 Condiciones
En los Eventos, las condiciones filtran los ejemplos que reúnen ciertos criterios. Aparecen a la izquierda del
evento. Todas las condiciones en un evento deben reunirse para al menos un ejemplo para que la acción
funcione. Las acciones solo se aplican a los ejemplos que tienen esas condiciones.
El sistema de condiciones no selecciona ejemplos: simplemente son verdaderos o falsos, a menos que se
refieran específicamente a un objeto, como Recoger un ejemplo al azar (Pick random instance).
Hay tres tipos de condiciones: las normales, las detonadas y las enlazadas. Mira la sección Cómo
funcionan los eventos (How events work) para más información.
Añadir y editar condiciones
Cuando añades un evento nuevo, debes pasar por el proceso de añadir la primera condición del evento. Se
describe con más detalle en la sección Vista de la hoja de eventos (Event Sheet View).
Pudedes añadir varias condiciones a un bloque de evento. Para añadir más condiciones haz click derecho
sobre una condición ya existente o sobre el margen del evento y selcciona Añadir otra condición (Add
another condition). Todas las condiciones deben ser compatibles para que el evento funcione, a menos que
selecciones que sea un bloque ‘O’, en cuyo caso ninguna condición será verdadera para que éste funcione.
Para ajustar un bloque ‘O’, haz click derecho sobre el margen del evento y selcciona Hacer bloque ‘O’
(Make ‘Or’ Block).
Para editar una condición, haz click derecho sobre ella. También puedes elegir Cambiar (Replace) o Borrar
(Delete).
Invertir condiciones
Las condiciones se pueden invertir, lo que cambia aquello que comprueba. Por ejemplo, la condición
Monstruo se superpone a Jugador (Moster is overlapping Player) es verdadera siempre que el monstruo
toca al jugador. Pero, si se invierte, aparece un icono rojo tachado que significa Monstruo no se superpone a
Jugador (Monster is not overlapping Player).
No se pueden invertir todas las condiciones (los detonadores no se pueden, ya que el evento no tendría
sentido en ese caso).
Puntos de ruptura (Breakpoints)
Es posible añadirlos a una condición, para parar la ejecución cuando se llegue a él. Para más información ve
a la sección Breakpoints.
4.5.4 Acciones
En los eventos, las acciones hacen algo, como crear un objeto o ir a otro plano. Aparecen a la derecha del
evento.
Las acciones solo afectan a los ejemplos que reúnen las condiciones del evento. Mira la sección Cómo
funcionan los eventos (How events work) para más información.
Para añadir una acción al evento, clica el enlace Añadir acción (Add action) que aparece al lado del evento
bajo cualquier acción existente. Para más información sobre añadir y editar eventos ve a la Vista de Hoja de
eventos.
Puntos de ruptura (Breakpoints)
Es posible añadirlos a una acción, para parar la ejecución cuando se llegue a él. Para más información ve a la
sección Breakpoints.
4.5.5 Expresiones
En los eventos, las expresiones se usan para calcular sumas o recuperar información de un objeto, como la
coordenada X de un Sprite. Las expresiones se introducen el Diálogo de parámetros. El Panel de
Expresiones se muestra a la vez que da un catalogo de todas las expresiones del sistema y de objeto
disponibles en el proyecto.
Algunos ejemplos de expresiones, que pueden ir desde un número simple a un cálculo complejo, son:
0
random(360)
Sprite.X
(Player1.X + Player2.X) / 2
Sprite.8Direction.Speed
Sprite.X + cos(Sprite.Angle) * Sprite.Speed * dt
Números
Los números simplememnte se introducen como dígitos con un decimal opcional separado por un punto. Por
ejemplo: 5 o 1.2.
Texto (Secuencias/Strings)
El texto, también conocido como secuencias (strings) en programación y a veces en C2. El texto en las
expresiones debe ser entrecomillado, por ejemplo “Hola” (“Hello”).
Las comillas no se incluyen como parte del texto, así que establecer que un objeto de texto muestre la
expresión “Hola” (“Hello”) hará que aparezca Hola (Hello), sin comillas. Para incluir comillas en una
secuencia deberás duplicarlas, por ejemplo “Él me dijo “”hola””” (“He said” “””hi”” to me”) se
convertirá en Él me dijo “hola” (He said “hi” to me).
Puedes usar & para crear cadenas de texto y números, por ejemplo “Tu puntuación es: ” & puntuación”
(“Your score is: ” & score)
Para añadir un salto de línea a la secuencia usa la expresión del sistema línea nueva (newline), por ejemplo,
“Hola” & línea nueva & “mundo” ("Hello" & newline & "world").
Operadores (Operators)
Puedes usar los siguientes operadores en las expresiones:
+ (suma)
- (resta)
* (multiplicación)
/ (división)
% (módulo, el resto tras la división)
^ (incrementar el poder)
& (crear secuencias)
También hay operadores de comparación =, <>, <, <=, >, >= para comparar valores. Vuelven a 1 si la
comparación es verdadera o a 0 si es falsa.
& también se puede usar en la lógica Y (AND) y | para la O (OR). Es útil usarlos junto a los comparadores,
por ejemplo puntuación < 0 | salud < 0 (score < 0 | health < 0), que vuelve a 1 si es verdadero y 0 si es
falso.
?: es un operador condicional, que te permite probar condiciones en las expresiones. Es útil usado con los
operadores de comparación y de lógica. Toma la forma de condición ¿ resultado_si_verdadero:
resultado_si_falso (condition ? result_if_true : result_if_false)
Por ejemplo, salud < 0 | puntuación < 0 ¿ “¡Fin del juego!” : “¡Vuelve a intertarlo!” (health < 0 | score
< 0 ? "Game over!" : "Keep going!").
La condición cuenta como verdadera si no es cero, y falsa si lo es.
Expresiones de objeto (Object expressions)
Los objetos tienen sus propias expresiones para comprobar la información sobre el objeto. Éstos aparecen
como Sprite.X (El nombre del objeto, un punto, y el nombre de la expresión). El Panel de expresiones
muestra todas las expresiones disponibles en el proyecto, y están más detalladas en la sección del manual
Referencia (Reference).
La expresión Mismo (Self) se puede usar como acceso directo para referirse al proyecto actual. Por ejemplo,
en una acción para el Jugador, Self.X se refiere al Jugador.X (Player.X).
Puedes añadir un índice de objeto basado en 0 para conseguir expresiones para distintos ejemplos de objeto.
Por ejemplo, Sprite(0).X consigue la primera posición X del ejemplo, y Sprite(1).X consigue la segunda.
Para más información mira el índice IDs (IIDs) en las características comunes. También puedes aprobar otra
expresión para el índice. Los números negativos empiezan en el extremo opuesto, así que Sprite(-1).X
consigue la última posición de X.
Expresiones de comportamiento (Behavior expressions)
Si un objeto tiene un comportamiento con sus propias expresiones, aparecen escritos como
Objeto.Comportamiento.Expression (Object.Behavior.Expression), por ejemplo
Sprite.Dirección8.Velocidad (Sprite.8Direction.Speed).
Expresiones del sistema (System expressions)
El sistema de expresiones fijas aparece en la referencia (reference). Estas incluyen algunas funciones
matemáticas básicas como sqrt (raíz cuadradra).
4.5.6 Sub-eventos
Los sub-eventos aparecen detrás de otros eventos. Estos continúan recogiendo ejemplos del evento “padre”.
Siguen funcionando tras el término de la acción que activa el evento “padre”. Debajo un ejemplo.
Este evento funciona así:
1. Comprueba que todos los ejemplos de Monstruo están superpuestos al Jugador. Si es así, los ejemplos
involucrados se recordarán.
2. Las acciones del evento superior funcionarán después, pero en este caso no tiene.
3. El segundo evento (que está sangrado) comprueba entonces si la variable de ejemplo Escudo del Jugador
está activado (Player’s ShieldEnable). Si es así, sustrae 1 punto de salud del Monstruo que se solapa con el
Jugador.
4. El tercer evento (también sangrado) comprueba si el Escudo del Jugador no está activado (Player’s
ShieldEnable) (mira invertir condiciones). Si es así sustrae 1 punto de salud del Jugador.
En otras palabras, los monstruos hieren al jugador al tocarlo, a menos que el jugador habilite su escudo, en
cuyo case el herido será el monstruo.
Esto funciona porque el objeto seleccionado por el evento superior se recuerda y se usa también para los
sub-eventos. Si el segundo y el tercero no fueran sub-eventos (no aparecerían sangrados) el segundo evento
sustraería 1 punto de salud de todos los Mostruos, ya que no habría referencia alguna en el evento. (Mira
Objetos sin referencia (Unreferenced objects) en la sección de cómo funcionan los eventos para más
información).
Los sub-eventos pueden tener sus propios sub-eventos también, que hacen que sean más poderosos y
flexibles para ajustar la lógica de avance del juego.
Nota que los sub-eventos funcionan después de las acciones solamente si las hay – en el ejemplo de arriba, si
ningún monstruo se solapa con el jugador, ni la acción ni el evento o sub-evento funcionan.
Detonadores en los sub-eventos
Si hay un detonador en un sub-evento todas las condiciones del evento principal deben cumplirse al tiempo
que el detonador se activa, de otra forma no funcionará.
Puede haber solamente un detonador en un conjunto de sub-eventos. En otras palabras, los eventos que
estén sobre el detonador no pueden contener otro.
Añadir y quitar sub-eventos
Para añadirlo, haz click derecho sobre el margen del evento y selcciona Añadir sub-evento (Add sub-event).
También puedes usar la pestaña eventos o usar el atajo de teclado S.
Añadir y editar condiciones a sub-eventos funciona igual que hacerlo sobre eventos. Puedes crear subeventos más completos añadiendo sub-evento a sub-evento.
Para borrar un sub-evento, selcciónalo clicando en el margen del evento y presionando Borrar (Delete).
4.5.7 Grupos
Los grupos de eventos sirven principalmente para organizar eventos. Se pueden abrir y cerrar usando los
botones + o -. Se editan con el Diálogo de grupo de evento. Para añadir un grupo de eventos, haz click
derecho sobre un evento o sobre un espacio vacío en la hoja de eventos y selcciona Añadir grupo (Add
group). También puedes usar la pestaña de eventos o el atajo del teclado G.
Los eventos se pueden arrastrar y soltar dentro y fuera del grupo. Grupos enteros también pueden ser
habilitados y deshabilitados con la acción del sistema Activar Grupo (Set Group Active), lo que es útil en
pausas del juego.
4.5.8 Comentarios
Los comentarios del evento son notas que te ayudan a recordar cómo funcionan los eventos y qué hacen.
¡Son muy importantes para ayudarte a recordar cómo funcionan las cosas en grandes proyectos! Los
comentarios tienen el fondo amarillo y aparecen sobre el evento que están describiendo.
Se pueden editar haciendo doble clic sobre ellos. Puedes hacer un comentario con un salto de línea
manteniendo pulsado shift y pulsando Enter.
Si usas C2 muy a menudo, encontrarás esenciales los comentarios para ayudar a organizarte y entender el
funcionamiento de trabajos grandes. Volver a un proyecto tras unos pocos meses sin ningún comentario
sería difícil, así que no los subestimes.
Los comentarios no afectan en absoluto al funcionamiento de tu proyecto. Sólo son informativos. Nada que
escribas allí se exportará al juego.
4.5.9 Adjunto
La Hoja de eventos adjunta te permite incluir una hoja de evento en otra. Es como un copia-pega
automático del contenido de una hoja a otra. Esto es útil para compartir eventos comunes en varios planos.
Por ejemplo, puedes usar diferentes hojas de eventos para distintas partes de la lógica del juego. Puedes
tener hojas de eventos llamadas Entrada del Jugador (Player input), Control del enemigo (Enemy control),
Efectos (Effects) y demás. Entonces cada nivel del juego puede incluir estos eventos habituales en la propia
hoja de evento de ese plano. Esto te permite compartir eventos entre múltiples planos sin tener que copiar y
pegar todos los eventos una y otra vez.
Los adjuntos pueden añadirse haciendo doble clic en un espacio de la Hoja de eventos, o usando la Barra de
Eventos.
C2 evita los adjuntos cíclicos de forma automática. Si dos hojas de eventos se incluyen la una a la otra, C2
usara ambas pero solo una vez.
4.5.10 Variables
Las Variables de Evento son los valores numéricos o textuales para el proyecto global o local, para un
conjunto de eventos. Se modifican con el Diálogo de Variables de evento. Para añadir una variable haz click
derecho en un evento o en un espacio vacío de la hoja de eventos y selcciona Añadir variable global (Add
global variable) o Añadir variable local (Add local variable). Las variables en la raíz del evento (que no
tienen nada por encima) se convierten en variables globales, mientras que las variables en grupos se
convierten en locales.
Las Variables de evento se modifican con el sistema de acciones en la categoría de Variables Globales y
Locales (Global & local variables). Se pueden recuperar usando su nombre en expresiones (expressions).
Variables globales
Las variables globales aparecen con el icono un globo terráqueo (como en la imagen de arriba). Están en el
nivel más alto de la hoja de eventos- no son sub-eventos ni están dentro de un grupo.
Almacenan sus valores entre planos. Los eventos en cualquier plano pueden acceder a las variables globales.
Las vaiables globales se pueden mover aotra hoja de eventos cortándolas y pegándolas. Después de cortarla
las referencias de la variable desaparecerán; esto es normal, no hay que preocuparse. Cuando la pegues
reaparecerán.
Variables locales
Las variables locales se sitúan tras otros eventos o dentro de un grupo. Aparecen con un icono diferente al de
las globales.
La principal diferencia entre las globales y estas es que las variables locales solo son accesibles en su
radio de alcance. El radio de alcance es una variable local es su nivel de sub-eventos. El resto de eventos a
su nivel, o a más bajos, pueden acceder a la variable local. Los eventos por encima (menos sangrados) no
pueden acceder a ellas.
Por ejemplo, si una variable de evento está en un grupo de eventos se convierte en una variable local.
Entonces, solo aparecerá como opción para los eventos de ese grupo. En otros grupos o en otras hojas de
eventos no aparecerá por lo que no podrá ser accedida. Esto hace que el radio de alcance sea el lugar en el
que está contenida la variable.
Las variables locales se aplican a un rango pequeño de eventos sólo de forma temporal, para, por ejemplo,
calcular la media de un valor. También ayudan a mantener el proyecto más simple, pues no se requiere de
más variables globales.
El radio de alcance de las variables locales está diseñado para imitar el lenguaje real de programación.
Variables estáticas y constantes
Por defecto, las variables locales vuelven a su valor inicial cuando entran en su radio de lacance, como las
variables locales en los lenguajes de programación. Si la variable es estática (static) en el diálogo de
variables de evento mantendrá su valor, como una variable global.
Ambas, locales y globales, pueden marcarse como constantes (constant) convirtiéndose en sólo lectura: se
pueden comparar y cotejar, pero no cambiar.
4.5.11 Puntos de rotura (Breakpoints)
Los puntos de rotura son una caracterísitca avanzada que te permite parar la ejecución de una hoja de evento
en una deteriminada condición o acción cuando trabajas con el programa de depuración. Es de gran ayuda
aquí pues puedes usar cualquier capacidad del programa de depuración mientras pasas por los eventos,
condiciones y acciones; una por una.
Nota: los puntos de rotura no están disponibles en la versión gratuita.
Ajustar un punto de rotura
Se puede avanzar por ellos hciendo click derecho sobre ellos, usando la pestaña Eventos o presionando F3
en el teclado. Se pueden usar en el programa de depuración.
Cuando aplicas un punto en un evento, condición o acción, aparece un icono al lado.
Pausar en un punto de rotura
Cuando usas el programa de depuración, el juego parará automáticamente justo antes de que el evento,
condición o acción marcados con un punto comiencen.
Para los eventos, significa que se pausa antes de se compruebe la primera condición, parando desde el
principio. Es más útil usar los puntos en los sub-eventos ya que se parará sólo en ese, habiendo hecho
funcionar el evento padre. Una vez parado, el evento tendrá un recuadro intermitente y el icono ahora será
una flecha.
Para condiciones, se para justo antes de que se pruebe. Ya que todavía no ha sido comprobada, el programa
de depuración no sabe si ésta será verdadera o falsa; debes continuar la ejecución para saberlo. Nota que C2
desecha rápidamente el evento si la condición es falsa. Esto significa que el punto en la segunda condición
no parará el juego si la primera es falsa, ya que C2 saltará automáticamente al siguiente evento. Cuando
estés pausado en una condición también se marcará con un recuadro, una flecha verde y un cambio del color
del fondo.
Para acciones, significa que se parará justo antes de que esta empiece. Si situas el punto en la primera de un
evento será más útil que ponerlo sobre ese evento, pues parará tras comprobar las condiciones pero antes de
ralizar las acciones. Ya pausado en una acción, se señalizará omo las condiciones.
Continuar la ejecución
Cuando estés pausado, el programa de depuración se puede usar para inspeccionar y editar valores. Los
botones Pausa (Pause) y Paso (Step) cambian a Continuar y Siguiente.
Si pulsas Continuar (Continue) reaundarás hasta el siguiente punto de rotura. Recuerda que puedes pasar
entre puntos mientras estás pausado.
Si pulsas Siguiente (Next) pasarás al siguiente evento, condición o acción. También puedes pulsa F10
cuando estés en la ventana del navegador. Esto es útil para pasar por un evento acción por acción y viendo
qué ocurre en el inspector del programa de depuración.
Limitaciones
Desafortunadamente, debido al motor de C2, los puntos de rotura no pueden situarse en los siguientes
lugares:


En ningún lado dentro de un evento con detonador, incluyendo sus sub-eventos.
En ningún lado dentro de un evento enlazado (como Repetir o Para cada), incluyendo sus subeventos.
En otras palabras, sólo los eventos que no se enlacen y que se comprueben en cada tick pueden tener puntos
de rotura.
Usar puntos de rotura
Pueden ser increíblemente útiles para aprender más sobre como funcionan tus eventos y ayudarte a
solucionar problemas. Cuesta acostumbrarse a ellos y sacarles el máximo rendimiento, pero una vez te son
familiares, son indispensables.
Es especialmente útil tener varios monitores cuando usas estos puntos, o con el programa de depuración en
general. Te permite ver los datos del evento que tienes en pantalla a la vez que el juego funcionando.
4.6 Archivos
Cualquier archive externo puede ser importado a tu proyecto usando la Barra del Proyecto. Es útil para
incluir cualquier otro recurso que tu proyecto pueda necesitar, como videos, imágenes extras, datos JSON,
datos XML, datos de texto, documentos, o otros archivos generales que quieras permitir descargar a los
usuarios.
Para ver ideas sobre usos de archivos en tu proyecto, mira el tutorial Using project files in Construct 2 ⇗.
Se pueden importar archivos clicando el botón derecho en la carpeta de archivos (files) en la Barra del
Proyecto y seleccionando Importar archivos (Import files).
Por defecto puedes añadir cualquier tipo de archivo a tu proyecto, pero también puedes filtrar los archivos
para mostrar sólo aquellos del tipo que buscas.
Importar archivos del proyecto tiene los siguientes efectos:
1. El archivo se copia en tu carpeta del proyecto o se almacena dentro del archivo .capx (No hay referencia
del lugar de almacenamiento del archivo, así que si cambias el archivo original, no se actualizará en el
proyecto).
2. Cuando haces la vista previa, también se puede acceder al archivo desde el servidor de vista previa
(localhost), que te ayuda a probar los archivos dentro del proyecto.
3. El archivo se exporta junto al proyecto.
4. Cuando lo publiques, el archivo estará disponible para su uso offline junto con el resto del proyecto. Para
más información mira el tutorial Offline games in Construct 2 ⇗.
Los archivos del proyecto pueden ser solicitados por AJAX en tiempo de ejecución mediante la acción
Request project file de objetos AJAX. Esto es útil para datos XML o JSON en tiempo de ejecución.
4.7 Sonido y Música
Los Sonidos y la Música en C2 son archivos de audio. Cualquier archivo de sonido que use el proyecto será
exportado junto con él. Ya que los creadores de navegadores no se ponen de acuerdo en un formato de audio
para la web, se debe encodear en dos formatos: Ogg Vorbis (.ogg) y MPEG-4 AAC (.m4a).
Para importar y reproducir audio en C2, debes seguir los siguientes pasos:
1. Importa sonidos clicando el botón derecho en las carpetas de Sonido (Sound) y Música (Music) en la
Barra del Proyecto y seleccionando Import sounds o Import music.
2. Importa el audio mediante el diálogo de Importar audio.
3. Añade el objeto de audio al proyecto y añade eventos para reproducir el audio.
Para más información a la hora de importar audio, ve a la sección Diálogo de Importar audio Import Audio
dialog.
Tipos MIME (MIME types)
Para que tu servidor envíe los archivos de audio correctamente, deben estar configurados los siguientes tipos
MIME:
.ogg como audio/ogg
.m4a como audio/mp4
Sin estos tipos MIME quizás no puedas escuchar el audio tras subir el proyecto al servidor, o al entrar a la
URL del archivo de audio te aparecerá 404 Not Found error.
5. Referencia de Comportamientos
Está sección nos da una referencia de todos los comportamientos oficiales que vienen con C2. Cada uno
tiene un resumen de su uso, una lista de propiedades y una detallada lista de acciones, condiciones y
expresiones específicas del comportamiento. Los comportamientos transmiten sus condiciones, acciones y
expresiones al objeto al que son añadidos, apareciendo junto a las propias características del objeto en el
Diálogo de Añadir Condición/Acción y en el Panel de expresiones.
Los comportamientos se pueden añadir y quitar a un objeto vía Barra de Propiedades, que abre el Diálogo de
Comportamientos de objeto y el de Añadir comportamiento.
Personalizar controles
Por defecto, los movimientos del comportamiento controlados por el usuario usan unos controladores
estándares ya fijados (normalmente basados en las flechas del teclado). Para cambiarlos, cambia la
propiedad Controles por defecto (Default controls) a No, y configura algunos eventos usando la acción
Control simulado (Simulate control). Para un ejemplo, ve al ejemplo Paltform 4 (custom controls).capx en
la carpeta de ejemplos en el directorio de instalación de C2. Utiliza los siguientes eventos para cambiar las
flechas del teclado a W, A y D:
La acción Control simulado (Simulate control) no tiene que manejarse con el teclado. Por ejemplo, se puede
usar con un toque para crear controles de toque de pantalla o con un mando. También puedes configurar
eventos para que controlen ejemplos automáticamente con la acción Control simulado (Simulate control).
Esto te permite configurar enemigos controlados por el ordenador o personajes sin jugador (NPCs), a veces
referidos como “AI”.
5.1 8 direcciones
El comportamiento de 8 direcciones permite que un objeto se mueva arriba, abajo, izquierda, derecha o en
las diagonales, controlado por las flechas del teclado por defecto. Suele ser útil para controlar al jugador en
juegos con vista cenital. También se puede simplificar a 4 direcciones (arriba/abajo, izquierda/derecha) útil
para deslizarse o para nadar.
El comportamiento de 8 direcciones está bloqueado para cualquier objeto que contenga el comportamiento
Sólido (Solid).
Para configurar los controles, mira el resumen de referencias de comportamiento (behavior reference
summary).
Propiedades de las 8 direcciones
Velocidad Máxima (Max speed)
La velocidad máxima a la que un objeto puede viajar en cualquier dirección, en píxeles por segundo.
Aceleración (Acceleration)
La tasa a la que acelera el movimiento, en píxeles por segundo por segundo. Al invertir el movimiento
actual, la aceleración y la deceleración contribuyen a disminuir la velocidad.
Deceleración (Deceleration)
La tasa a la que decelera el movimiento para descansar cuando no hay movimiento, en píxeles por segundo
por segundo. Al invertir el movimiento actual, la aceleración y la deceleración contribuyen a disminuir la
velocidad.
Direcciones (Directions)
Ajusta cuantas direcciones tiene el movimiento. Por defecto son 8, incluyendo las diagonales. Las 4
direcciones no usan las diagonales y, Arriba&Abajo e Izquierda&Derecha solo permiten el movimiento a lo
largo de esos ejes.
Ajustar ángulo (Set angle)
Si hay o no movimiento afectará al ángulo del objeto. 360 grados siempre establece el ángulo del objeto en
el ángulo actual del movimiento. Los intervalos de 45 grados ajustarán el objeto en las 8 direcciones
posibles. Los intervalos de 90 grados lo ajustarán en las 4 direcciones posibles. No significa que el
comportamiento no ajustará el ángulo del objeto, lo que es útil si quieres controlarlo tú mismo con eventos
(para hacer que el objeto se encare al según el cursor del ratón).
Controles por defecto (Default controls)
Si Sí, el movimiento se controla con las flechas del teclado. Cámbialo a No para customizarlos usando la
acción Control simulado (Simulate control). Para más información ve a Personalizar controles en el
resumen de referencias de comportamiento (behavior reference summary).
Condiciones de las 8 direcciones
Cotejar velocidad (Compare speed)
Coteja la velocidad del objeto en pixeles por segundo.
Se está moviendo (Is moving)
Verdadero si el objeto tiene una velocidad distinta de cero (no está parado). Inviértelo para comprobar si el
objeto está parado.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Acciones de las 8 direcciones
Opuesto (Reverse)
Invierte la dirección del movimiento. Una forma sencilla de rebotar el objeto para evitar un obstáculo.
Ajustar aceleración (Set acceleration)
Ajustar deceleración (Set deceleration)
Ajustar velocidad máxima (Set max speed)
Estos ajustan las propiedades correspondientes, descritas en las propiedades de las 8 direcciones.
Habilitar (Set enable)
Habilita o deshabilita el movimiento. Si está deshabilitado, el movimiento no tendrá efecto en el objeto.
Selecciona ignorar entrada (Set ignoring input)
Establece si se ignora la entrada, Si se ignora, el presionar las teclas de control no tendrá efecto. Pero, al
contrario que deshabilitar el comportamiento, el objeto podrá continuar moviéndose.
Ajustar velocidad (Set speed)
Ajusta la velocidad del objeto, en píxeles por segundo.
Ajustar vector X
Ajustar vector Y
Ajusta los componentes X e Y del movimiento, en píxeles por segundo.
Simular control (Simulate control)
Simula uno de los controles de movimiento mientras se mantiene pulsado. Es útil cuando ajustas los
Controles por defecto a No. Mira los Controles personalizados en el resumen de referencias de
comportamiento (behavior reference summary) para más información.
Parada (Stop)
Un acceso directo para poner la velocidad a cero.
Expresiones de las 8 direcciones
Aceleración (Acceleration)
Deceleración (Deceleration)
Velocidad máxima (MaxSpeed)
Restablece las propiedades correspondientes, descritas en las propiedades de las 8 direcciones.
Mover ángulo (MovingAngle)
Da el ángulo del movimiento (que puede ser diferente al ángulo del objeto) en grados.
Velocidad (Speed)
Da la velocidad del movimiento del objeto, en píxeles por segundo.
VectorX
VectorY
Da la velocidad del objeto en cada eje, en píxeles por segundo. Por ejemplo, si el objeto se mueve a la
izquierda a 100 píxeles por segundo, el VectorX es -100 y el VectorY es 0.
5.2 Ancla (Anchor)
El comportamiento Ancla es útil para posicionar objetos automáticamente en relación al tamaño de la
ventana. Importante para soportar varios tamaños de pantalla. Para más información de las características
que soportan múltiples tamaños de pantalla, mira el tutorial Supporting multiple screen sizes ⇗.
Este comportamiento sólo tiene un efecto útil cuando la propiedad pantalla completa en el navegador está
activada tanto en On (crop mode) como en On (scale mode).
Los objetos que usan el Ancla deben estar en una capa cuyo paralaje sea 0,0. De otra forma, mientras el
juego avanza el objeto podría quedarse atrás en la pantalla.
Posicionar objetos en relación al tamaño de la ventana
En la parte superior izquierda de la Vista del plano, un cuadro intermitente representa el tamaño por defecto
de la pantalla del juego. Los objetos anclados deben posicionarse dentro del área del cuadro de puntos, como
se muestra a continuación.
Ahora, si la ventana cambia su tamaño durante la vista previa, los objetos mantendrán sus posiciones
relativas, como se muestra abajo:
Esto es útil para elementos de la interfaz como notificaciones y pantallas de visualización frontal (HUDs).
Posiciones relativas
El Borde izquierdo (Left edge) y el Borde derecho (Right edge) posicionan el objeto en relación a las
esquinas de la ventana, sin cambiar el tamaño del objeto. Por ejemplo, si el borde izquierdo (left edge) se
ajusta a la ventana derecha, (window right) el objeto siempre estará a la misma distancia del borde derecho
de la ventana.
El Borde derecho (Right edge) y el Borde del fondo (Bottom edge) ajustan el tamaño del objeto en
relación a las esquinas de la ventana. Por ejemplo, si quieres que un Fondo adosado (mosaico) se extienda
más allá del ancho de la ventana, ajusta el borde derecho (right edge) a la ventana derecha (window right).
Condiciones, acciones y expresiones del Ancla
El Ancla solo tiene una acción:
Habilitar (Set enabled)
Ajusta si el comportamiento está habilitado o deshabilitado. Si está deshabilitado, el comportamiento no
alterará el tamaño o posición del objeto.
5.3 Atado al plano (Bound to layout)
El comportamiento Atado al plano solo evita que el objeto desaparezca por los bordes del plano. Es más
útil en objetos que se mueven pero no deben salir del área del plano.
No tiene condiciones, ni acciones ni expresiones, solo la siguiente propiedad:
Atado por (Bound by)
Ajusta al Borde (Edge) para evitar que cualquier parte del objeto se salga del plano. El objeto se parará en
esa posición como se muestra a continuación:
Ajusta al Origen (Origin) sólo para evitar que el objeto salgo completamente del plano. El resultado
depende de donde hayas marcado el origen del objeto, pero con un origen centrado se parará en una posición
similar a la siguiente imagen:
5.4 Bala (Bullet)
El comportamiento Bala simplemente mueve el objeto hacia delante en un ángulo. Pero también tiene
opciones extra como gravedad o rebotar lo que te permite usar el objeto como una pelota que rebota. Como
el nombre sugiere, es ideal para proyectiles y balas, pero también es útil para controlar automáticamente otro
tipo de objetos como enemigos que caminan hacia delante constantemente.
Para dos ejemplos del comportamiento Bala ve a Bouncing balls.capx y Bouncing bullets.cap en la carpeta
de ejemplos en el directorio de instalación de C2.
Propiedades de Bala
Velocidad (Speed)
La velocidad inicial de la bala, en píxeles por segundo.
Aceleración (Acceleration)
La tasa de aceleración de la bala en píxeles por segundo por segundo. Cero mantendrá una velocidad
constante, los valores positivos la acelerarán y los negativos la decelerarán hasta pararse (el objeto no puede
volver).
Gravedad (Gravity)
La fuerza de la gravedad que hace que la bala descienda, en píxeles por segundo por segundo. Cero
deshabilita la función de la gravedad que es útil en juegos con vista cenital. Los valores positivos hacen que
la bala dibuje una parábola mientras avanza, por efecto de la gravedad.
Rebotar contra sólidos (Bounce off solids)
Si lo ajustas a Sí, la bala rebotará en cualquier objeto con el comportamiento Sólido (Solid). También
calculará en ángulo de reverberación para que sea realista dependiendo de la forma y el ángulo del objeto.
Ajustar ángulo (Set angle)
Si está en No, el comportamiento nunca cambiará el ángulo del objeto. Si está en Sí, el comportamiento
siempre ajustará el ángulo del objeto al del movimiento.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de la Bala
Cotejar velocidad (Compare speed)
Coteja la velocidad actual de la bala, en píxeles por segundo.
Cotejar la distancia viajada (Compare distance travelled)
Coteja la distancia total que la bala ha recorrido, en píxeles. Esto no tiene en cuenta la alteración de la
posición del objeto llevada a cabo por otras acciones como Ajustar posición (Set position).
Acciones de la Bala
Rebotar en objeto (Bounce off object)
Hace que la bala rebote en un objeto si lo toco. Ya que la bala solamente toca el objeto, es útil usar el evento
Colisión (On collision). También calculará el ángulo de reverberación para rebotar de forma realista
dependiendo de la forma y ángulo del objeto. Si la bala no se solapa al objeto, o se queda atascada dentro,
está acción no tendrá efecto.
Ajustar aceleración (Set acceleration)
Ajusta la aceleración de la bala en píxeles por segundo por segundo.
Ajustar ángulo de movimiento (Set angle of motion)
Ajusta el ángulo al que se mueve la bala, en grados.
Habilitar (Set enabled)
Habilita o deshabilita el movimiento. Si está deshabilitado, el comportamiento dejará de mover la bala, pero
recordará la velocidad, aceleración, etc. si la vuelves a habilitar.
Ajustar gravedad (Set gravity)
Ajusta la aceleración causada por la gravedad, en píxeles por segundo por segundo.
Ajustar velocidad (Set speed)
Ajusta la velocidad de movimiento de la bala, en píxeles por segundo.
Expresiones de la Bala
Aceleración (Acceleration)
Da la aceleración actual en píxeles por segundo por segundo.
Ángulo de Movimiento (AngleOfMotion)
Da el ángulo al que la bala se está moviendo (que puede ser distinto al del objeto), en grados.
Distancia viajada (DistanceTravelled)
Da la distancia total que la bala ha recorrido desde su creación en píxeles. No tiene en cuenta movimientos
del objeto realizados por otras acciones como Ajustar posición (Set position).
Velocidad (Speed)
Da la velocidad de movimiento de la bala en píxeles por segundo.
5.5 Coche (Car)
El comportamiento Coche permite que un objeto acelere hacia delante y hacia atrás pudiéndose manejar.
También tiene una función de “deriva” con la que el objeto puede “derrapar” en las esquinas (señalando a
una dirección diferente a la que se está moviendo). Para un ejemplo del comportamiento Coche ve a Car
behavior.capx en la carpeta de ejemplos de C2.
Por defecto el objeto se controla con las flechasd el teclado (Arriba para acelerar, Abajo para frenar,
Izquierda y Derecha para moverse). Para customizar los controles ve al resumen de referencias de
comportamientos behavior reference summary.
El comportamiento coche rebotará en cualquier objeto con el comportamiento Sólido. El efecto en el
movimiento depende del ángulo de impacto – colisiones de refilón moverán al coche de su ruta, mientras
que colisiones de frente lo pararán. La cantidad de velocidad perdida dependerá de la propiedad Fricción
(Friction).
Propiedades de coche
Velocidad máxima (max speed)
La velocidad máxima, en píxeles por segundo, a la que el coche puede acelerar.
Aceleración (Acceleration)
La tasa a la que el coche acelera, en píxeles por segundo por segundo.
Deceleración (Deceleration)
La tasa a la que el coche frena, en píxeles por segundo por segundo.
Velocidad de manejo (Steer Speed)
La tasa a la que el coche rota cuando conduces, en grados por segundo.
Recuperación de la deriva (Drift recover)
La tasa a la que el coche se recupera cuando se va a la deriva, en grados por segundo. En otras palabras, la
tasa del ángulo de movimiento se actualiza con el ángulo del objeto. El ángulo de movimiento no puede ser
nunca más de 90 grados respecto al ángulo del objeto. Si la recuperación de la deriva (Drift recover) es
superior o igual a la Velocidad de manejo (Steer Speed) el coche no se irá a la deriva. Cuanto más despacio
se recupere de la deriva, más derrapará en las esquinas.
Fricción (Friction)
La cantidad de velocidad perdida cuando se colisiona con un sólido, de 0 (parada) a 1 (no afecta a la
velocidad). Por ejemplo, para bajar la velocidad a la mitad cuando se colisiona, ajusta la Fricción a 0,5.
Ajustar ángulo (Set angle)
Si Sí, el comportamiento ajustará el ángulo del objeto. Si No, el comportamiento nunca cambiará el ángulo.
Controles por defecto (Default controls)
Si Sí, el movimiento del coche se controla con las flechas del teclado. Si No, con controles personalizados.
Para más información ve al resumen de la referencia de comportamientos behavior reference summary.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de coche
Cotejar velocidad (Compare speed)
Coteja la velocidad actual del coche, en píxeles por segundo.
Se está moviendo (Is moving)
Verdadero si la velocidad del momento es distinta de cero. Inviértelo para comprobar que el coche está
parado.
Acciones de coche
Ajustar aceleración (Set acceleration)
Ajustar deceleración (Set deceleration)
Ajustar recuperación de la deriva (Set drift recover)
Ajustar fricción (Set friction)
Ajustar velocidad máxima (Set max speed)
Ajustar velocidad de manejo (Set steer speed)
Ajustan las propiedades correspondientes. Mira las propiedades de coche para más información.
Habilitar (Set enabled)
Habilita o deshabilita el movimiento. Si está deshabilitado, el movimiento no tendrá efecto sobre el objeto.
Selecciona ignorar entrada (Set ignoring input)
Ajusta si se ignorará la entrada. Si se ignora, presionar las flechas del teclado no tendrá efecto. Pero, si
deshabilitas el comportamiento, el objeto continuará moviéndose.
Ajustar velocidad (Set speed)
Ajusta la velocidad actual a la que el objeto se mueve, en píxeles por segundo.
Simular control (Simulate control)
Simula uno de los controles de movimiento mientras se mantiene pulsado. Es útil cuando ajustas los
Controles por defecto a No. Mira los Controles personalizados en el resumen de referencias de
comportamiento (behavior reference summary) para más información.
Parada (Stop)
Un acceso directo para poner la velocidad a cero.
Expresiones de coche
Aceleración (Acceleration)
Deceleración (Deceleration)
Recuperación de la deriva (DriftRecover)
Fricción (Friction)
Velocidad máxima (MaxSpeed)
Velocidad de manejo (SteerSpeed)
Dan las propiedades correspondientes. Mira las propiedades de coche para más información.
Ángulo de movimiento (MovingAngle)
Da el ángulo de movimiento actual (que puede ser distinto del ángulo del objeto), en grados.
Velocidad (Speed)
Da la velocidad actual del objeto, en píxeles por segundo.
VectorX
VectorY
Da la velocidad del objeto en cada eje, en píxeles por segundo. Por ejemplo, si el objeto se mueve a la
izquierda 100 píxeles por segundo, VectorX será -100 y VectorY 0.
5.6 Personalizar movimiento (Custom movement)
El comportamiento Personalizar movimiento no implica ningún movimiento para el objeto. Pero tiene
funciones que hacen más fácil incluir tus propios movimientos “personalizados” (basados en eventos).
Los diferentes movimientos no se pueden explicar en esta sección del manual. Pero sí que se hará un
resumen de los comportamientos básicos de movimiento y lo que hacen. Para un ejemplo de movimiento
estilo asteroides usando movimientos personalizados, ve al ejemplo Custom movement (asteroids).capx en la
carpeta de ejemplos de C2.
Para muchos juegos, los comportamientos predefinidos como Platafora (Platform) y las 8 Direcciones (8
Direcction) son suficientes. Modificar comportamientos existentes con la herramienta de personalizar se
debe evitar, ya que son más difíciles de hacer funcionar correctamente. Los predefinidos han sido probados
concienzudamente y tienen más funciones de las que puedas imaginar (como la detección de inclinación en
Plataforma), y son más rápidos y fáciles de usar que los personalizados.
Resumen de los movimientos personalizados
La mayoría de los movimientos en C2 funcionan manipulando dos valores: la velocidad en el eje X (dx) y la
velocidad en el eje Y (dy). También se llaman VectorX y VectorY en algunos comportamientos. Por ejemplo,
si un objeto se mueve a la izquierda 100 píxeles por segundo, dx será -100 y dy 0. El objeto se puede
acelerar a la derecha añadiendo a dx. Esta es el funcionamiento de la mayoría de los comportamientos de C2
(como Plataforma y 8 Direcciones).
El comportamiento de movimiento personalizado almacena los valores de dx y dy, y proporciona funciones
para añadir los algoritmos y la matemática necesarios para el movimiento.
A cada vez, el movimiento personalizado ajusta la posición del objeto dependiendo de los valores dx y dy.
Esto se llama paso. También puede usar múltiples pasos por vez, lo que ayuda a detectar colisiones de forma
más precisa si el objeto se mueve muy rápidamente. Cada paso detonará En el paso (On step), En el paso
horizontal (On horizontal step) o En el paso vertical (On vertical step) dependiendo en la propiedad Modo
de paso (Stepping mode).
Propiedades de movimiento personalizado
Modo de paso (Stepping mode)
Como avanzar un paso en el movimiento por cada vez. El número de pasos dado depende de la propiedad
Píxeles por paso (Pixels per step).
None mueve el objeto un paso por vez de acuerdo a su velocidad.
Linear moverá el objeto en una línea recta hacia su posición de destino, detonando On step (En el paso).
Horizontal then vertical moverá el objeto a su destino primero en el eje X (detonando On horizontal step) y
después en el eje Y (detonando On vertical step).
Vertical then horizontal lo hará al contrario que el anterior.
Píxeles por paso (pixels per step)
Si el modo de paso está en None, esta es la distancia en píxeles a la que avanzará por vez y por paso. Por
defecto es 5, lo que significa que se moverá 20 píxeles por vez, se moverá en pasos de cuatro o cinco
píxeles.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de movimiento personalizado
Cotejar velocidad (Compare speed)
Coteja la velocidad actual del movimiento, en píxeles por segundo. Horizontal y Vertical cotejan la
velocidad de dx y dy respectivamente y Total (Overall) coteja la magnitud del vector (dx, dy) (la cantidad
total).
Se está moviendo (Is moving)
Verdadero si dx o dy son distintas de cero. Invierte para comprobar si está parado.
On horizontal step
On vertical step
Detonados para cada paso a lo alrgo de un eje cuando el modo de paso está en Horizontal then vertical o en
Vertical then horizontal. Se usa para detectar colisiones de forma precisa si hay solapamiento (Is
overlappeing).
On step
Detonado para cada paso cuando el modo de paso está en Linear. Se usa para detectar colisiones de forma
precisa si hay solapamiento (Is overlappeing).
Acciones de movimiento personalizado
Habilitar (Set enabled)
Habilita o deshabilita el comportamiento. Si está deshabilitado no modificará la posición del objeto.
Rotar en el sentido de las agujas del reloj (Rotate clockwise)
Rotar en el sentido contrario a las agujas del reloj (Rotate counter-clockwise)
Ajustar (Set)
Ajusta el ángulo de movimiento. Calculará nuevos valores para dx y dy reflejando un nuevo ángulo de
movimiento con la misma velocidad total.
Acelerar (Accelerate)
Acelera el movimiento total o el movimiento en un eje específico.
Acelerar hacia ángulo (Accelerate toward angle)
Acelerar hacia posición (Accelerate toward position)
Acelera el movimiento hacia el ángulo o la posición.
Apartar sólido (Push out solid)
Sólo válido cuando el comportamiento se solapa con un objeto con el comportamiento sólido. Mueve
automáticamente el objeto hasta que no se solape con el sólido. No tiene efecto si el objeto no se solapa. Se
pueden usar las siguientes técnicas:
Ángulos opuestos (Opposite angles) invierte (o recalcula) el objeto desde el ángulo de movimiento actual
hasta que no se solape.
Más cercano (Nearest) mueve el objeto en una espiral dentro de las 8 direcciones un píxel por vez hasta que
no se solape. El objetivo es que el objeto acabe en el espacio libre más cercano, pero como se usan sólo 8
direcciones el resultado será una aproximación.
Arriba, Abajo, izquierda y derecha (Up, down, left and right) mueven el objeto a través de un eje específico
hasta que no se solape.
Apartar sólido en el ángulo (Push out solid at angle)
Sólo válido cuando el comportamiento se solapa con un objeto con el comportamiento sólido. Mueve el
objeto con un ángulo dado hasta que no se solape con el sólido. No tiene efecto si el objeto no se solapa.
Invertir (Reverse)
Invierte el movimiento volteando los valores de dx y dy.
Ajustar velocidad (Set speed)
Ajusta la velocidad del movimiento en píxeles por segundos del eje horizontal, del vertical, o del total.
Ajustando la velocidad horizontal o vertical das valores a dx y dy directamente. Si la ajustas al total se
calculan nuevos valores para dx y dy para que se reflejen la nueva velocidad total manteniendo el mismo
ángulo de movimiento.
Parada (Stop)
Un acceso directo para poner la velocidad a cero.
Parar pasos (Stop stepping)
Sólo válido para On step, On horizontal step y On vertical step. Para el modo de pasos en esa vez. El objeto
puede volver a su Antigua posición (dónde estaba la vez anterior) o mantenerse en su posición actual
(probablemente a medio camino entre las dos posiciones).
Expresiones de movimiento personalizado
dx
dy
Da los valores de movimiento dx y dy, que es la velocidad en píxeles por segundo de cada eje.
Movimiento de ángulo (MovingAngle)
Da el ángulo de movimiento, en grados, calculado como el ángulo de vector (dx, dy).
Velocidad (Speed)
Da la velocidad total en píxeles por segundo, calculados como la magnitud del vector (dx, dy).
5.7 Destruir fuera del plano (Destroy outside layout)
El comportamiento Destruir fuera del plano destruye automáticamente cualquier objeto que salga del área
del plano. Sólo lo destruye si sale completamente (ninguna parte de su cuadro delimitador está dentro del
plano). Este comportamiento no tiene propiedades, condiciones, acciones ni expresiones.
Este comportamiento es útil para evitar que balas y otros proyectiles permanezcan todo el tiempo volando
sobre el plano. Por ejemplo, sin el comportamiento, si el usuario dispara a un enemigo y falla, la bala
continuaría volando fuera del plano para siempre. Con el avance del juego, más y más balas se añadirían,
todas moviéndose más lejos y continuamente, lo que usaría más y más memoria haciendo que el ordenador y
el juego vayan más despacio. Esto se puede evitar fácilmente añadiendo Destruir fuera del plano a las
balas, para que se vayan eliminando de forma gradual cuando salen del plano.
5.8 Arrastar y Soltar (Drag & Drop)
El comportamiento Arrastrar y Soltar hace que los objetos puedan ser arrastrados y soltado con el ratón o
tocándolos en una pantalla táctil. En dispositivos multi-táctiles varios objetos se pueden arrastrar y soltar a la
vez.
Un objeto se arrastra clicando sobre él con el ratón o con el dedo. La acción finaliza cuando se suelta el
ratón o se deja de tocar.
Propiedades de Arrastrar y Soltar
Ejes (Axes)
Opcionales, limitan el movimiento, por ejemplo permitiendo solamente que el objeto se arrastre
horizontalmente o verticalmente. Por defecto está en Ambos (Both), que permite la libertad de movimiento
del objeto.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de Arrastrar y Soltar
Se está arrastrando (Is dragging)
Verdadero si el objeto está siendo arrastrado en ese momento.
Comenzando a arrastrar (On drag start)
Detonado cuando el objeto es clicado o tocado.
Soltando (On drop)
Detonado cuando el objeto se está arrastrando y se suelta.
Acciones de Arrastrar y Soltar
Habilitar (Set enable)
Habilita o deshabilita el comportamiento Arrastrar y Soltar. Si está deshabilitado, al clicar o tocar el objeto
no habrá ningún efecto y el objeto no se podrá arrastrar. Además, se vuelve “transparente” al tocarlo,
haciendo que objetos por debajo puedan ser arrastrados y soltados. Si el objeto se arrastra cuando está
deshabilitado, se cancelará y no se detonará la condición Soltando (On drop).
Soltar (Drop)
Deja de arrastrar el objeto si lo estaba haciendo. También detona Soltando (On drop).
Expresiones de Arrastrar y Soltar
El comportamiento Arrastrar y Soltar no tiene expresiones.
5.9 Desvanecerse (Fade)
El comportamiento Desvanecerse aumenta o disminuye la opacidad del objeto haciendo que aparezca y
desaparezca. Por defecto, hace que el objeto se desvanezca 1 segundo antes de destruirse.
Desvanecerse funciona en el orden siguiente. Si alguno de los tiempos es 0, el paso se salta:
1. El objeto aparece desde invisible a la opacidad seleccionada, en el tiempo de fundido (fade in time).
2. El objeto mantiene su opacidad durante el tiempo de espera (wait time).
3. El objeto se desvanece hasta hacerse invisible, en el tiempo de desvanecimiento (fade out time).
4. Si Destruir (Destroy) se establece tras Después de desvanecerse (After fade out), el objeto se destruirá.
Por ejemplo, si cada paso está ajustado a 1 segundo, el objeto aparecerá desde invisible durante 1 segundo,
esperará durante 1 segundo y se desvanecerá durante 1 segundo.
Se recomienda establecer Destruir (Destroy) tras Después de desvanecerse (After fade out). Si lo estableces
a No, el objeto seguirá existiendo tras desvanecerse, pero invisible. Si muchos objetos usan este
comportamiento, puede haber muchos objetos invisibles lo que ocupará memoria y el juego irá lento.
Propiedades de desvanecerse
Activar al inicio (Activate at start)
Si Sí, el objeto empezará a desvanecerse tan pronto como sea creado. Si No, el desvanecimiento no
empezará hasta que uses la acción Empezar (Start).
Tiempo de fundido (Fade in time)
Tiempo, en segundos, de aparecer desde invisible. Si está a 0 se salta este paso.
Tiempo de espera (Wait time)
Tiempo, en segundos, de espera entre aparecer y desvanecerse. Si está a 0 se salta este paso.
Tiempo de desvanecimiento (Fade out time)
Tiempo, en segundos, de desvanecerse hasta invisible. Si está a 0 se salta este paso.
Destruir (Destroy)
Si se establece tras Después de desvanecerse (After fade out), el objeto será automáticamente destruido tras
la acción. Si No, el objeto no se destruirá con el comportamiento. Asegúrate de destruir los objetos cuando
no sean necesarios, ya que aquellos que están siendo invisibles pueden causar que el juego se ralentice.
Condiciones de desvanecerse
Terminar desvanecerse (On fade out finished)
Detonado cuando se termina el desvanecimiento.
Acciones de desvanecerse
Comenzar desvanecimeinto de nuevo (Restart fade)
Hace funcionar el desvanecimiento otra vez desde el principio.
Comenzar desvanecimiento (Start face)
Si Activo en el inicio (Active on start) está en No, esto detonara el desvanecimiento.
Expresiones de desvanecerse
No hay expresiones para este comportamiento.
5.10 Flash
El comportamiento Flash hace que un objeto parpadee cambiando su visibilidad de forma intermitente
durante un periodo de tiempo. No tiene propiedades ni expresiones.
Solamente añadiendo Flash a un objeto no haces nada. Debes usar una acción de Flash para hacerlo
funcionar.
Condiciones de Flash
Esta haciendo flash (Is flashing)
Verdadero si el objeto está en dentro de un periodo de flash.
Flash terminado (On flash ended)
Detonado cuando se llega al final del periodo de flash, y el objeto es visible de nuevo.
Acciones de Flash
Flash
Hace que el objeto parpadee cambiando su visibilidad de forma intermitente. El “On” es el tiempo en
segundos en el que el objeto está visible. El “Off” es el tiempo en segundos en el que es invisible. El objeto
alternará entre estos dos estados durante los segundos establecidos. El objeto siempre volverá a ser visible
tras la acción.
Parar flash (Stop flashing)
Si el objeto está flasheando, esto lo para y vuelve el objeto visible. Si el objeto no está flasheando en ese
momento esta acción no tendrá efecto.
5.11 Saltar a través (Jump-thru)
El comportamiento Saltar a través permite que al comportamiento Plataforma estar sobre el objeto, y
saltar sobre él desde abajo. Este es diferente al comportamiento sólido, sobre el que el comportamiento
plataforma puede estar, pero no saltar desde abajo. La imagen siguiente ilustra la diferencia.
Nota que este comportamiento no es compatible con pendientes o cuestas. Cualquiera que exista en tu juego
debe usar el comportamiento Sólido en vez de este.
Propiedades de Saltar a través
Estado inicial (Initial State)
Si el comportamiento está habilitado o deshabilitado en el inicio. Si está deshabilitado, el objeto ya no podrá
actuar con Saltar a través por lo que el comportamiento Platafora siempre caerá sobre él.
Condiciones de Saltar a través
Habilitado (Is enabled)
Verdadero si el comportamiento está habilitado. Se puede cambiar en la propiedad Estado Inicial o con la
acción Habilitar.
Acciones de Saltar a través
Habilitar (Set enabled)
Habilita o deshabilita el comportamiento para el objeto.
5.12 Línea de vista (Line-of-sight)
El comportamiento Línea de Vista (LOS) te permite comprobar si dos objetos pueden “verse” el uno al
otro. Para ser más precisos, comprobará si hay algún obstáculo bloqueando la línea entre los dos objetos.
Para ver un ejemplo de como funciona, ve al ejemplo Line-of-sight en el diálogo de inicio.
Propiedades de Línea de Vista
Obstáculos (Obstacles)
Si usar Sólidos (Solids) para bloquear la línea de vista, o Personalizar (Custom), donde se añadirá el objeto
que bloquee la vista usando la acción Añadir obstáculo (Add obstacle).
Rango (Range)
La distancia máxima en píxeles que la línea de vista puede alcanzar. SI un objeto está más allá de esa
distancia no se le podrá aplicar la línea, incluso si el espacio entre ambos está despejado.
Cono de vista (Cone of view)
El ángulo de vista en el que el objeto puede “verse” con otros, relativo al ángulo del objeto. Por ejemplo, a
180º el objeto tendrá línea de vista con cualquier objeto en frente de él, pero nunca detrás. A 360º podrá ver
objetos en cualquier ángulo.
Condiciones de Línea de Vista
Tiene línea de vista hacia un objeto (Has LOS to object)
Comprueba si tiene línea de vista hacia otro objeto. Para que la condición sea verdadera, el objeto debe estar
dentro de su rango, cono de vista y sin ningún obstáculo en el camino. Esta condición también recoge los
ejemplos del objeto elegido que están en la línea.
Tiene línea de vista hacia una posición (Has LOS to position)
Comprueba si tiene línea de vista hacia una posición en el plano. Para que la condición sea verdadera, el
objeto debe estar dentro de su rango, cono de vista y sin ningún obstáculo en el camino.
Acciones de Línea de Vista
Añadir obstáculo (Add obstacle)
Si la propiedad del obstáculo es Personalizada (Custom), añade un tipo de objeto que hará de obstáculo a la
vista.
Eliminar obstáculo (Clear obstacle)
Si la propiedad del obstáculo es Personalizada (Custom), eliminará cualquier tipo de objeto que haga de
obstáculo a la vista.
Establecer cono de vista (Set cone of view)
Establecer rango (Set range)
Ajusta el comportamiento correspondiente. Para más información ve a las propiedades de Línea de Vista.
Expresiones de Línea de Vista
Cono de Vista (ConeOfView)
Rango (Range)
Muestra las propiedades correspondientes al comportamiento. Para más información ve a las propiedades.
5.13 No Guardar (No save)
Este comportamiento simplemente hace que los objetos queden fuera del guardado al usar las acciones del
sistema Guardar (Save) y Cargar (Load).
Normalmente todos los objetos se guardan y se cargan con estas acciones. Si añades este comportamiento no
se guardarán datos de los objetos al guardar y no afectará a dicho objeto cuando se cargue el juego,
permaneciendo siempre igual al inicio.
Es bueno usar No Guardar a objetos que no necesitan guardado, como el escenario y los objetos del fondo.
También se puede usar sobre objetos actualizados automáticamente, como la interfaz y los textos. Esto hará
que el proceso de guardado y cargado sea más corto y que el tamaña del archivo sea menor.
Para más información mira el tutorial Como hacer guardados en el juego.
No guardar también es útil cuando usas la vista previa continua.
5.14 Explorar (Pathfinding)
El comportamiento Explorar usa el algoritmo de búsqueda A* para encontrar el camino más corto al sortear
obstáculos. Puede mostrarlo a través de nodos de expresiones o moviendo automáticamente el objeto por la
ruta seleccionada.
Para ver ejemplos de como usar este comportamiento, busca Pathfinding en el diálogo de inicio.
La cuadrícula de Explorador
El comportamiento funciona dividiendo el plano con una cuadrícula. Ya que trazar el camino sobre los
píxeles sería un proceso muy lento, con la cuadrícula el camino se muestra de forma más eficiente. El
tamaño de celda se puede ajustar en las propiedades, cuanto más grande más eficiente es el proceso. Sin
embargo, ajustar el tamaño de celda puede causar algunos problemas: la celda debe estar completamente
libre o será tomada como obstáculo. Como ejemplo, mira el siguiente uso de este comportamiento con una
celda a tamaño 32:
Parece que el objeto debe poder moverse libremente entre los objetos. Sin embargo, si destacamos en rojo
las celdas que el Explorador marcará como obstáculo, vemos lo siguiente:
Algunos espacios se han cerrado debido a que el tamaño de celda es demasiado grande en relación con el
espacio. Esto hará que el explorador marque la ruta rodeando todos los objetos pero nunca a través de ellos.
Podemos arreglarlo ajustando el tamaño de celda a 20:
Ahora vemos que se puede establecer una ruta entre los obstáculos, pero el proceso gastrá más CPU. Intenta
encontrar la celda de mayor tamaño que no interfiera con los obstáculos existentes.
La propiedad Borde de celda (Cell border) puede ajustar cuántas celdas se marcan como obstáculo. Si el
borde es mayor que 0, las celdas cercanas al obstáculo, aunque no lo toquen, se marcarán como obstáculo. Si
el valor es negativo, incluso celdas que toquen al obstáculo pueden marcarse como libres. La imagen
siguiente muestra el efecto de diferentes bordes usando un tamaño de celda de 20:
Para una mayor eficiencia, usa el mismo tamaño y borde de celda para todos los objetos que usen el
comportamiento Explorador. Si usas distintos valores, Explorador tendrá que generar múltiples cuadrículas
en su memoria y clacularlas de forma separada. También puedes evitar que se explore en cada vez o tick, ya
que usará mucho CPU y será más lento.
La cuadrícula de obstáculos solo se determina una vez al inicio. Si los objetos se mueven en el plano, la
cuadrícula no se actualiza, manteniendo los valores de la posición de los objetos. Para actualizar la
cuadrícula usa la acción Regenerar el mapa de obstáculos (Regenerate obstacle map), pero es una operación
muy intensa para la CPU que sólo debe usarse en ocasiones contadas.
Nota que todas las celdas fuera del plano se marcan siempre como obstáculo. Estas áreas no se pueden
incluir en la cuadrícula del Explorador, ya que la memoria requerida sería infinita.
Encontrar caminos
Calcular un camino lleva un largo tiempo, especialmente en celdas pequeñas. Para evitar que reduzca la tasa
de frames del juego, los caminos se calculan en el fondo (usando un Web Worker). Esto significa que tras
usar la acción Encontrar camino (Find path), el resultado no estará disponible de forma in mediata. Debes
esperar al detonador Camino encontrado (On path found) para que funcione. Sólo así puedes mover el
objeto por el camino o acceder a una lista de nodos en las expresiones del comportamiento. El juego puede
seguir funcionando durante una fracción de segundo entre Encontrar camino (Find path) y Camino
encontrado (On path found).
El camino resultante es usa secuencia de nodos sobre la cuadrícula. La imagen siguiente muestra un camino
de 4 nodos (nodos del 0 al 3).
Los nodos se pueden mostrar (después del detonador) usando las expresiones Contador de Nodos
(NodeCount) y NodoXAt/NodeYAt. También, la acción Moverse por camino (Move along path) se puede
usar para mover automáticamente el objeto por los nodos, usando la tasa de velocidad, aceleración y
rotación ajustada en las propiedades del comportamiento.
Nota que puede ser imposible encontrar un camino, como intentar ir a un destino dentro de un círculo de
obstáculos. En este caso, se detonará Fallo al encontrar camino (On failed to find path).
Si le pides al Explorador que encuetre un camino a un destino dentro de un obstáculo, simplemente
encontrará el área libre más cercana a ese punto.
Propiedades de Explorador
Tamaño de celda (Cell size)
El tamaño de celda, en píxeles, de la cuadrícula de obstáculos. Mira arriba para más detalles.
Borde de celda (Cell border)
La cantidad, en píxeles, en la que se expande el tamaño de celda cuando se buscan obstáculos. Mira arriba
para más detalles de su uso.
Obstáculos (Obstacles)
Si el objeto usa Sólido (Solid), el comportamiento marcará automáticaente las celdas que toquen al objeto
como obstáculo. Si usa Personalizar (Custom), debes definir que objetos son obstáculos usando la acción
Añadir obstáculo (Add obstacle).
Velocidad máxima (Max speed)
Si se usa la acción Moverse sobre camino (Move along path) la velocidad máxima a la que se mueve el
objeto en píxeles por segundo.
Aceleración (Acceleration)
Si se usa la acción Moverse sobre camino (Move along path) la tasa de aceleración en píxeles por segundo
por segundo.
Deceleración (Deceleration)
Si se usa la acción Moverse sobre camino (Move along path) la tasa de deceleración en píxeles por segundo
por segundo cuando se acerque al nodo final.
Velocidad de rotación (Rotate speed)
Si se usa la acción Moverse sobre camino (Move along path) la tasa a la que el objeto rota en grados por
segundo. Nota que puede afectar a la velocidad del objeto: si la velocidad de rotación es baja, el objeto
tendrá que bajar su velocidad en curvas cerradas.
Rotar objeto (Rotate object)
Si ajustar el ángulo del objeto automáticamente al ángulo de movimiento al usar este comportamiento.
Diagonales (Diagonals)
Si se permite el uso de movimientos diagonales. Si lo deshabilitas, los nodos sólo cambiarán en ángulos de
90º (arriba, abajo, derecha e izquierda). Si lo habilitas también podrá usar diagonales.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de Explorador
Cotejar velocidad (Compare speed)
Si se está moviendo, muestra la velocidad del objeto en píxeles por segundo.
Diagonales habilitadas (Diagonals are enabled)
Verdadero si la propiedad Diagonales permite el movimiento diagonal entre celdas. Se puede modificar
también con la acción Habilitar diagonales (Set diagonals enabled).
Calculando camino (Is calculating path)
Verdadero si el objeto está calculando, entre la acción Encontrar camino y los detonadores Camino
encontrado o Fallo al encontrar camino.
La celda es obstáculo (Is cell obstacle)
Comprueba si la celda está marcada como obstáculo en la cuadrícula. Es útil para depurar o mostrar la
cuadrícula de obstáculos. Nota que la posición se toma en coordinadas de las celdas y no en las del plano.
Se está moviendo sobre el camino (Is moving along path)
Verdadero tras usar la acción Moverse sobre el camino hasta que se detone En destino (On arrived).
En destino (On arrived)
Detonado tras la acción Moverse sobre el camino cuando el objeto llega a su destino.
Fallo al encontrar camino (On failed to find path)
Detonado tras la acción Encontrar camino si no se ha podido encontrar, porque el destino está cercado.
Camino encontrado (On path found)
Detonado tras la acción Encontrar camino una vez ha concluido la búsqueda. Los nodos están disponibles
en las expresiones NodeCount, NodeXAt y NodeYAt, y se puede usar la acción Moverse sobre el camino.
Acciones de Explorador
Añadir obstáculo (Add obstacle)
Si la propiedad de los obstáculos es Personalizar añade un objeto a la cuadrícula. Si se hace tras el inicio del
plano, debes usar Regenerar mapa de obstáculos (Regenerate obstacle map) para que funcione.
Añadir valor al camino (Add path cost)
Añade objetos que hacen más compleja la cuadrícula. Puede usarse para simular terreno pedregoso – el
comportamiento intentará encontrar caminos alrededor de ellos cuando sea posible. Mira el ejemplo
Pathfinding path cost en el diálogo de inicio. Si se hace tras el inicio del plano, debes usar Regenerar mapa
de obstáculos (Regenerate obstacle map) para que funcione.
Eliminar valor (Clear cost)
Elimina todos los objetos añadidos con la acción anterior. Debes usar Regenerar mapa de obstáculos
(Regenerate obstacle map) para que funcione.
Eliminar obstáculos (Clear obstacles)
Elimina todos los objetos añadidos con Añadir obstáculo (Add obstacle). Debes usar Regenerar mapa de
obstáculos (Regenerate obstacle map) para que funcione.
Encontrar camino (Find path)
Comienza a calcular un camino hacia un destino del plano. Los resultados no se aplican inmediatamente,
debes esperar a que se detone Camino encontrado o Fallo al encontrar camino. Si se usa mientras Está
calculando camino (Is calculating path) es verdadera, comenzará a calcular el nuevo camino.
Regenerar mapa de obstáculos (Regenerate obstacle map)
Determina si cada celda de la cuadrícula marcada como obstáculo sigue siéndolo. Esta acción usa mucha
CPU y no debe usarse muy a menudo. Tras su uso, los cambios hechos con otras acciones tendrán efecto.
Habilitar (Set enabled)
Si el comportamiento está habilitado. Si está deshabilitado no calculará nada ni moverá ningún objeto.
Moverse sobre el camino (Move along path)
Mueve automáticamente el objeto sobre el camino encontrado. Sólo se puede usar después de Camino
encontrado (On path found).
Ajustar velocidad (Set speed)
Ajusta la velocidad a la que se mueve el objeto en píxeles por segundo. No puede ser negativa o mayor que
la máxima del comportamiento.
Parar (Stop)
SI el objeto se está moviendo, lo para.
Ajustar aceleración (Set acceleration)
Ajustar deceleración (Set deceleration)
Habilitar diaginales (Set diagonals enabled)
Ajustar velocidad máxima (Set max speed)
Ajustar velocidad de rotación (Set rotate speed)
Ajusta las correspondientes propiedades. Ve a la sección de propiedades para más información.
Propiedades de Explorador
Nodo Actual (CurrentNode)
Cuando se mueve, el índice basado en 0 del nodo que se está siguiendo. Puede saltar antes de llegar al
siguiente para ayudar a redondear el movimiento.
Mover Ángulo (MovingAngle)
El ángulo de movimiento actual en grados.
Contador de Nodos (NodeCount)
El número de nodos en el camino encontrado. Sólo se actualiza tras detonarse Camino Encontrado.
NodeXAt
NodeYAt
Da la posición del nodo en coordenadas del plano, usando el índice basado en 0 del nodo.
Velocidad (Speed)
La velocidad actual de movimiento sobre el camino en píxeles por segundo.
Aceleración (Acceleration)
Tamaño de Celda (CellSize)
Deceleración (Deceleration)
Velocidad Máxima (MaxSpeed)
Velocisas de Rotación (RotateSpeed)
Da los valores de cada propiedad. Para más información ve a la sección de Propiedades.
5.15 Persistir (Persist)
El comportamiento Persistir hace que el objeto recuerde su estado cuando vas al siguiente plano y vuelves.
Si hay objetos con este comportamiento, deben referirse a un plano persistente. Para un ejemplo interactivo
de su uso ve al ejemplo Persistent layouts en el diálogo de inicio.
Normalmente, si te vas de un plano y vuelves, todos los objetos no globales vuelven a su diseño inicial en la
Vista de Plano. Sin embargo, hay juegos en los que se necesita que se mantengan. Simplemente añade
Persistir a aquellos objetos que necesites: si los destruiste que no vulevan a aparecer, si lo creaste que está y
que las variables de ejemplo se mantengan. Esto es importante para hacer que el jugador vuelva a ciertas
áreas sin tener que volver a jugar una sección completa.
5.16 Físicos (Physics)
El comportamiento Físicos simula la física de un objeto de forma realista. Funciona por Box2DWeb ⇗ .
Para un ejemplo, mira Physics example on the Arcade ⇗ . Para más ejemplos, hay varios en la carpeta de ejemplos
de C2.
El comportamiento Física es relativamente complejo. Los siguientes tutorial se recomiendan para entender
las bases sobre como usar el comportamiento y algunos puntos importantes a tener en cuenta antes de usarlo:
Physics in Construct 2: The basics ⇗
Physics in Construct 2: Forces, impulses, torque and joints ⇗
Esta sección del manual no repetirá la información contenida en estos tutoriales. Simplemente describirá
cada una de las características del comportamiento Física. Los tutoriales describen como funciona, que tipos
de conjuntos hay, la diferencia entre impulsos y fuerzas, y otras cosas en caso de que su uso no te sea
familiar.
Usar Físicos en C2
El comportamiento Física simula las física en un plano separado. C2 mantendrá los dos “mundos”
sincronizados si uno cambia y el otro no, pero esto es impredecible. Por ejemplo, ajustar la posición o el
ángulo de un objeto hace que C2 traspase los nuevos datos del objeto correspondiente a la simulación física,
cosa que a veces no se hace de forma adecuada con las colisiones. También pasa eso al usar otros
comportamientos de C2 a la vez que el de Física.
Por lo tanto es altamente recomendado controlar los objetos de Física directamente desde el comportamiento
Física (ajustando fuerzas, impulsos, torsiones, etc.) más que intentar manipularlos con Ajustar posición (Set
position), Ajustar ángulo (Set angle), etc.
Otra consecuencia es que Física no responderá a objetos con los comportamientos Sólido (Solid) o Saltar a
través (Jumptrhu). Estos comportamientos son redundantes cuando usas Física y no tienen efecto. A cambio,
usa la propiedad Inmovible (Immovable).
Elegir un motor de físicos
El motor se puede elegir en las Propiedades del Proyecto. Se recomienda usar Box2D asm.js para un mejor
rendimiento, a menos que necesites usar la acción Deshabilitar colisiones (Disable collisions).
Propiedades de Físicos
Inmovible (Immovable)
Si Sí, simula que el objeto tiene masa infinita. Su densidad se ignora y nunca se moverá.
Máscara de collision (Collision mask)
Usar máscara de colisión (Use collision mask) usa el polígono de colisión del objeto del editor de imágenes
para colisiones físicas. Si no hay polígono de colisión usará el cuadro delimitador.
Cuadro delimitador (Bounding box) ignora el polígono de colisión del objeto si hay y el comportamiento
considera el objeto como si fuera un rectángulo.
Círculo (Circle) ignora el polígono de colisión del objeto si hay y el comportamiento considera el objeto
como si fuera un círculo. Esto permite que los objetos rueden suavemente (por ejemplo, un barril). Esto es
útil cuando el polígono de colisión está formado por líneas rectas y no se puede crear un círculo.
Evitar rotación (Prevent rotation)
Bloquea el ángulo del objeto para que la colisión física no cause rotación.
Densidad (Density)
La densidad del objeto físico. Solo se usa si la Inmovilidad está en No. La masa del objeto se calcula como
su densidad multiplicada por el área de su máscara de colisión. El valor de la densidad exacta usada no es
importante y no tiene unidades específicas – sólo la densidad relativa es relevante (un objeto con densidad 6
será dos veces más denso que otro con densidad 3).
Fricción (Friction)
El coeficiente de fricción del objeto físico de 0 (sin fricción) a 1 (fricción máxima). Esto ajusta como los
objetos se mueven unos contra otros cuando se tocan.
Elasticidad (Elasticity)
La elasticidad (también llamada restablecimiento o flexibilidad) del objeto físico, de 0 (inelástico, como una piedra) a
1 (elasticidad máxima, como una pelota de goma). Esto afecta a como los objetos rebotan cuando golpean el suelo.
Amortiguación linear (Linear damping)
La tasa a la que el objeto disminuye su velocidad cuando se mueve, desde 0 (no decelera) a 1 (deceleración
máxima).
Amortiguación angular (Angular damping)
La tasa a la que el objeto disminuye su velocidad cuando gira, desde 0 (no decelera) a 1 (deceleración
máxima).
Bala (Bullet)
Habilita una mejor detección de la colisión para objetos que se mueven muy rápido. Puede afectar al
rendimiento, así que no lo habilites a menos que el objeto se mueva tan rápido que la detección de la
colisión estándar no sea fiable.
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de física
Cotejar velocidad de ángulo (Compare angular velocity)
Coteja la velocidad actual del cuerpo físico, en grados por segundo. Un valor positivo indica rotación en el
sentido de las agujas del reloj y uno negativo en el sentido contrario.
Cotejar masa (Compare mass)
Coteja la masa del cuerpo físico. La determina la multiplicación de la Densidad por el área del polígono de
colisión del objeto.
Cotejar velocidad (Compare velocity)
Coteja la velocidad actual del cuerpo físico en píxeles por segundo. Se puede cotejar en un eje individual, X,
o la velocidad total que se puede usar.
Habilitado (Is enabled)
Verdadero si el comportamiento está habilitado. Cuando lo deshabilitas el cuerpo físico se elimina de la
simulación, por lo que otros objetos físicos pasaran a través de él.
Está durmiendo (Is sleeping)
Verdadero si el objeto ha estado descansando y no ha sido movido por un tiempo, por lo que el motor de
física no lo estará procesando. Nota que los objetos pueden estar moviéndose de forma imperceptible lo que
evitará que “se queden durmiendo” aunque den la sensación de estarlo.
Acciones de física: Fuerzas
Aplicar fuerza (Apply force)
Aplicar fuerza al ángulo (Apply force at angle)
Aplicar fuerza hacia la posición (Apply force towards position)
Aplica una fuerza sobre el objeto, ángulo, hacia la posición, o fuerzas en los ejes X e Y personalizadas.
Aplicando una fuerza haces que el objeto se acelere en la dirección de la fuerza. Las fuerzas se pueden
aplicar en un punto de la imagen o en el origen del objeto.
Aplicar impulse (Apply impulse)
Aplicar impulse al ángulo (Apply impulse at angle)
Aplicar impulse hacia la dirección (Apply impulse towards position)
Aplica un impulso sobre el objeto, ángulo, hacia la posición, o impulso en los ejes X e Y personalizados.
Aplicando un impulso simulas que el objeto se estrella, como golpear con un bate. Los impulsos se pueden
aplicar en un punto de la imagen o en el origen del objeto.
Ajustar velocidad (Set velocity)
Ajusta la velocidad del objetivo, dándola en píxeles por segundo en los ejes X e Y.
Acciones de física: Ajustes globales
Estas acciones afectan al comportamiento Física en general, no solo donde se han establecido.
Habilitar/Deshabilitar colisiones (Enable/disable collisions)
Por defecto, todos los objetos con Física colisionan unos con otros. Puedes deshabilitar las colisiones entre
los objetos con Física y los que no lo tengan para que pasen unos sobre otros. Esto afectará a todos los
ejemplo de ambos tipos de objeto. Nota: habilitar las colisiones otra vez cuando los objetos se solapan puede
causar inestabilidad en la simulación.
Ajustar iteraciones (Set stepping iterations)
Ajusta el número de iteraciones de la velocidad y de la posición usadas en el motor de física. Por defecto son
8 y 3 respectivamente. Valores más bajos harán que vaya más rápido pero son menos precisos, y los más
altos reducirán el rendimiento pero darán una simulación más realista.
Ajustar modo de paso (Set stepping mode)
Elige si los tiempos de Física usan dt (delta time, para una tasa de frames independiente) o un valor fijado
(fixed). Por defecto usa un tiempo fijado para eliminar cualquier aleatoriedad que venga de dt, asegurando
que las simulaciones se reproducen exactamente todas las veces. Ajusta a tasa de frames independiente
(framerate independent) para ajustar el tiempo de a cuerdo a la tasa de frames (framerate), que puede causar
que la misma simulación de distintos resultados si se vuelve a reproducir. Para más información ve a Deltatime and framerate independence ⇗.
Ajustar gravedad del mundo (Set world gravity)
Ajusta la fuerza de la gravedad que afecta a los objetos físicos. Por defecto, es una fuerza de 10 puntos
descendentes.
Acciones de física: Uniones
Crear unión de distancia (Create distance joint)
Fija dos objetos físicos a una distancia fijada, como si estuviesen conectados por un polo.
Crear unión mecánica (Create revolute joint)
Crear unión mecánica limitada (Create limited revolute joint)
Crea una articulación entre dos objetos físicos, para que puedan rotar libremente como si estuviesen
conectados por un alfiler. Si es limitada solamente permite la rotación hasta cierto ángulo, como el badajo de
una campana.
Quitar todas las uniones (Remove all joints)
Quita todas las uniones de un objeto. Cualquier objeto que esté unido a otro por esta acción se verá afectado.
Nota que algunas uniones deshabilitan automáticamente colisiones entre objetos, así que quizás quieras
deshabilitar las colisiones manualmente de nuevo tras quitar las uniones. De otra forma los objetos que se
solapen podrían “teletransportarse” a otro lugar (ya que el motor físico intenta evitar los solapamientos).
Acciones de física: Ajustes de objeto
Estas ajustan las propiedades correspondientes. Para más información, ve a las propiedades de Física.
Acciones de física: Rotaciones
Aplicar rotación (Apply torque)
Aplicar rotación hacia ángulo (Apply torque towards angle)
Aplicar rotación hacia posición (Apply torque towards position)
Aplica una rotación (aceleración rotacional) al objeto, directamente o hacia un ángulo o posición.
Ajustar velocidad angular (Set angular velocity)
Ajusta la velocidad angular (tasa de rotación) directamente, en grados por segundo.
Expresiones de Física
Velocidad angular (AngularVelocity)
La velocidad angular actual (tasa de rotación) del objeto físico, en grados por segundo.
Centro de Masa X (CenterOfMassX)
Centro de Masa Y (CenterOfMassY)
La posición del centro de la masa del objeto físico, calculado por el motor físico. Depende de la propiedad
máscara de colisión (collision mask) y no tiene por qué coincidir con el centro del objeto.
Masa (Mass)
La masa del objeto físico, calculada por el motor físico. Es el área de la máscara de colisión del objeto
multiplicada por su densidad.
Velocidad X (VelocityX)
Velocidad Y (VelocityY)
La velocidad actual del objeto físico, en píxeles por segundo.
Amortiguación angular (AngularDamping)
Densidad (Density)
Elasticidad (Elasticity)
Fricción (Friction)
Amortiguación linear (LinearDamping)
Da las propiedades correspondientes. Para más información, ve a las propiedades de Física.
5.17 Pin
El comportamiento Pin posiciona un objeto a una distancia y ángulo relativo a otro, dando la impresión de
estar “atado” a ese objeto. Para un ejemplo, ve a Pin behavior.capx en la carpeta de ejemplos de C2.
Añadir simplemente el comportamiento al objeto no hará nada. Debes usar alguna de las acciones de Pin
para unir un objeto a otro.
Condiciones de Pin
Está atado (Is pinned)
Verdadero si el objeto está atado a otro.
Acciones de Pin
Atar a objeto (Pin to object)
Ata un objeto a otro. La distancia y el ángulo relativo entre los objetos usados en el momento de la acción se
recordará. El parámetro Modo (Mode) elige como se mueve el objeto en relación al otro:
Posición y ángulo (Position & angle) (por defecto): mantiene ambos objetos a su distancia y ángulo relativo.
El objeto aparecerá unido y estará en el lugar mientras el otro se mueve y rota.
Sólo posición (Only position): como antes, pero el ángulo del objeto no cambia; solo mantiene la distancia
relativa.
Sólo ángulo (Only angle): el objeto solamente rota en relación con el otro, y no cambia su posición.
Estilo cuerda (Rope style): el objeto no rota, pero se mantiene a la distancia máxima del otro.
Estilo barra (Bar style): el objeto no rota, pero se mantiene a una distancia fijada del otro objeto.
Para más ejemplos, ve a los ejemplos Pin rope style.capx y Pin chain style.capx de la carpeta de ejemplos de
C2.
Desatar (Unpin)
Desata el objeto, así que ya no será situado por el comportamiento Pin.
Expresiones de Pin
Atado UID (PinnedUID)
Da la UID del objeto al que está atado, o a -1 si no está atado. Para más información sobre UID, ve a
características comunes (common features).
5.18 Plataforma (Platform)
El comportamiento Plataforma da un estilo de movimiento “salta y corre” a juegos de vista lateral.
Soporta inclinaciones, plataformas móviles, plataformas para “saltar a través” y ángulos arbitrarios de
gravedad. Hay varios ejemplos de este comportamiento en la carpeta de ejemplos de C2.
El comportamiento Plataforma se aplicará en cualquier objeto con el comportamiento Sólido o Saltar a
través. Saltar a través es diferente ya que se puede saltar a la plataforma sobre un objeto desde abajo,
mientras que al saltar a un Sólido desde abajo el jugador rebota. La siguiente imagen ilustra la diferencia.
Por defecto, el movimiento de la Plataforma se controla con las flechas del teclado (arriba para saltar). Para
personalizar los controles, ve al resumen de referencia de comportamientos (behavior reference summary).
Crear movimientos de plataforma fiables
Para los movimientos más fiables se recomienda usar un sprite de rectángulo invisible sin animaciones.
Entonces, el jugador podrá situarse encima de él. De otra forma, la forma cambiante del polígono de colisión
y su animación podrían interferir con el movimiento sobre el suelo de la plataforma, muro o inclinación,
causando temblores o movimientos extraños. Para más información y una guía completa, mira el tutorial
How to make a Platform game ⇗.
Espejar al jugador
No es necesario duplicar el dibujo de tu jugador para poder usar los dos perfiles, el izquierdo y el derecho.
Simplemente dibuja al jugador mirando a la derecha y usa la acción Espejar (Set mirrored). Ajusta que el
jugador se espeje cuando presionas las teclas de control del movimiento. Abajo un ejemplo.
Una pregunta frecuente es como hacer que el jugador dispare a la izquierda y a la derecha, ya que incluso
cuando los espejas el jugador seguirá disparando a la derecha. Para solucionar esto usa la condición Está
espejado (Is mirrored) y si es verdadera, que dispare a la izquierda.
Propiedades de la Plataforma
Velocidad máxima (Max speed)
La velocidad máxima del suelo en píxeles por segundo.
Aceleración (Acceleration)
La aceleración del movimiento horizontal en píxeles por segundo por segundo.
Deceleración (Deceleration)
La deceleración del movimiento horizontal en píxeles por segundo por segundo. Cuando se mueve en la
dirección contraria al movimiento aceleración y deceleración se combinan.
Fuerza del salto (Jump strength)
La velocidad vertical del salto al inicio en píxeles por segundo cuando se pulsa la tecla de saltar.
Gravedad (Gravity)
La aceleración causada por la gravedad, en píxeles por segundo por segundo.
Velocidad máxima de caída (Max fall speed)
La velocidad máxima en píxeles por segundo a la que el objeto puede acelerar cuando hace caída libre.
Controles por defecto (Default controls)
Si Sí, el movimiento se controlará con las flechas izquierda y derecha del teclado y el salto con la flecha de
arriba. Ajústalo a No para usar controles personalizados usando la acción Simular control (Simulate control)
en el resumen de referencia de comportamientos (behavior reference summary).
Estado inicial (Initial state)
Si el comportamiento esta habilitado o deshabilitado en el inicio. Si está deshabilitado, se puede habilitar
durante el juego usando la acción Habilitar (Set enabled).
Condiciones de la Plataforma
Cotejar velocidad (Compare speed)
Coteja la velocidad del objeto en píxeles por segundo.
Hay un muro (Is by wall)
Comprueba si hay un sólido que bloquee el movimiento horizontal en el objeto inmediatamente a la
izquierda o derecha. Saltar a través no cuenta como pared.
Está cayendo (Is falling)
Verdadero si el objeto está en caída libre.
Está saltando (Is jumping)
Verdadero si el objeto se está moviendo hacia arriba.
Está en el suelo (I son floor)
Verdadero si el objeto está sobre un objeto sólido o sobre un saltar a través.
En caída (On fall)
En salto (On jump)
En tierra (On landed)
En movimiento (On moved)
En parade (On stopped)
Estos son detonadores de animación que se detonan cuando hay movimiento entre los estados. Si tu objeto
tiene animación para alguno de estos estados, debes establecer la animación apropiada para cada detonador.
Esto te ayuda a ahorrar lógica que detecta estados de transición.
Acciones de Plataforma
Caer a través de (Fall through)
Si el jugador está sobre una plataforma con Saltar a través, esta acción lo hará caer a través de ella. Es útil
para añadir otro control, la flecha hacia abajo, para bajar de las plataformas.
Ajustar aceleración (Set acceleration)
Ajustar deceleración (Set deceleration)
Ajustar gravedad (Set gravity)
Ajustar fuerza del salto (Set jump strength)
Ajustar velocidad máxima de caída (Set max fall speed)
Ajustar velocidad máxima (Set max speed)
Ajusta las propiedades correspondientes. Para más información, mira las propiedades de Plataforma.
Ajustar ángulo de gravedad (Set angle of gravity)
Cambia el ángulo de gravedad, en grados. Por defecto es 90 (hacia abajo en la pantalla). Esto puede
interactuar de forma interesante con la rotación de la capa.
Habilitar (Set enabled)
Habilita o deshabilita el movimiento de la Plataforma. Cuando está deshabilitado, el comportamiento no
afecta al objeto.
Establecer ignorar entrada (Set ignoring input)
Determina si se ignora una entrada. Si se ignora, presionar cualquiera de las teclas de control no tendrá
efecto. Pero, a diferencia de deshabilitar el comportamiento, el objeto continuará moviéndose (por ejemplo,
si está en caída libre).
Ajustar vector X (Set vector X)
Ajustar vector Y (Set vector Y)
Ajusta los componentes de los movimientos horizontales y verticales manualmente, en píxeles por segundo.
Por ejemplo, ajustando el vector Y a -1000 hará que se salte con una fuerza de 1000, lo que puede ser útil
para añadir muelles.
Simular control (Simulate control)
Simula el control de movimiento que se está pulsando. Útil cuando estableces No en los Controles por
defecto. Ve a Controles personalizados en el resumen de referencia (behavior reference summary) de
comportamientos para más información.
Expresiones de Plataforma
Aceleración (Acceleration)
Deceleración (Deceleration)
Gravedad (Gravity)
Fuerza del salto (JumpStrength)
Velocidad máxima de caída (MaxFallSpeed)
Velocidad máxima (MaxSpeed)
Da las propiedades correspondientes. Para más información, ver las propiedades de Plataforma.
Ángulo de movimiento (MovingAngle)
Da el ángulo de movimiento en grados, que puede ser distinto del ángulo del objeto.
Velocidad (Speed)
Da la velocidad total en píxeles por segundo.
VectorX
VectorY
Da los componentes de movimiento de X e Y, en píxeles por segundo.
5.19 Rotar (Rotate)
El comportamiento Rotar simplemente hace que el objeto gire.
Propiedades de Rotar
Velocidad (Speed)
La tasa de rotación, en grados por segundo. Usa un valor positivo para rotación en el sentido de las agujas
del reloj y negativo para el sentido contrario.
Aceleración (Acceleratio)
La tasa a la que cambia la velocidad de rotación, en grados por segundo por segundo. Usa un valor positivo
para acelerar en el sentido de las agujas del reloj y negativo para el sentido contrario.
Condiciones de Rotar
El comportamiento Rotar no tiene condiciones.
Acciones de Rotar
Ajustar aceleración (Set acceleration)
Ajustar velocidad (Set speed)
Ajusta las propiedades correspondientes. Mira las propiedades de Rotar.
Expresiones de Rotar
Aceleración (Acceleration)
Da la propiedad Aceleración correspondiente.
Velocidad (Speed)
Da la velocidad de rotación, en grados por segundo. Un valor positivo indica rotación en el sentido de las
agujas del reloj y negativo en el sentido contrario.
5.20 Desplazarse a (Scroll to)
El comportamiento Desplazarse a simplemente centra la vista en el objeto con el comportamiento. Es un
acceso directo para la acción del sistema Desplazarse al objeto (Scroll to object). Además, da la opción de
Agitar la pantalla, y si varios objetos tienen el comportamiento es centrará la vista entre todos ellos.
Si necesitas un desplazamiento más avanzado, como limitado a ciertas regiones o siguiendo al jugador tras
un retraso, desplázate a un objeto invisible que controles por eventos.
Para desplazarte, el tamaño del plano debe ser mayor que el de la ventana, o la propiedad de desplazamiento
ilimitado (Unbounded scrolling) seleccionada. De otra manera no habría donde desplazarse y el
comportamiento no tendría efecto.
Desplazarse a no tiene propiedades, condiciones no expresiones.
Acciones de Desplazarse a
Habilitar (Set enabled)
Habilita y deshabilita el comportamiento. Si se deshabilita, el desplazamiento no tendrá efecto.
Agitar (Shake)
Agitar la pantalla durante un periodo de tiempo, compensando la posición de la pantalla aleatoriamente cada
vez. La Magnitud (Magnitude) es la distancia máxima en píxeles de la posición del desplazamiento hasta
que se compensa vista. La Duración (Duration) es cuánto durará el movimiento en segundos. En el modo
Reducir magnitud (Reducing magnitude), la Magnitud se reducirá gradualmente hasta cero una vez llegados
al fin el movimiento. En el modo Magnitud Constante (Constant magnitude) la Magnitud permanecerá
estable hasta el final del movimiento y parará de forma abrupta.
5.21 Seno (Sine)
El comportamiento Seno puede ajustar las propiedades de un objeto (como su posición, tamaño o ángulo)
de menos a más usando una onda sinusoidal que puede oscilar. Se puede usar para crear efectos visuales más
interesantes. A pesar del nombre, la función alternativa de la onda “Triángulo” se pude usar para crear
distintos efectos. Puedes encontrar en Wikipedia ⇗ diferentes tipos de ondas.
Para ejemplos de este comportamiento en distintos modos ve a Sine behavior - types.capx en la carpeta de
ejemplos del directorio de instalación de C2.
Propiedades de Seno
Activo desde el inicio (Active on start)
Si No, el comportamiento no tendrá efecto hasta que se use la acción Activar (Set active).
Movimiento (Movement)
El comportamiento tiene 8 modos diferentes:
Horizontal mueve el objeto de izquierda a derecha en el eje X.
Vertical mueve el objeto arriba o abajo en el eje Y.
Tamaño (Size) hace que el objeto crezca o se reduzca.
Amplitud (Width) hace el objeto más ancho o más estrecho.
Altura (Height) hace el objeto más alto o más bajo.
Ángulo (Angle) rota el objeto en el sentido de las agujas del reloj o al contrario.
Opacidad (Opacity) cambia la opacidad del objeto. Va de 0 a 100.
Sólo valor (Value only) no modifica el objeto. Simplemente almacena los valores cambiantes a los que
acceder con la expresión Valor (Value). Puede ser útil para crear efectos personalizados o modificar
cualquier propiedad del objeto o comportamiento basándote en el comportamiento Seno.
Siguiente/Anterior (Forwards/Backwards) mueve el objeto en línea recta sobre el ángulo al que está
enfrentado el objeto, como un modo horizontal pero en ángulo.
Onda (Wave)
Esta función se usa para calcular el movimiento. Para verlo ve a este diagrama en Wikipedia (this Wikipedia
diagram ⇗).
Seno (Sine) - una suave oscilación del movimiento basada en la onda sinusoidal.
Triángulo (Triangle) - un movimiento linear de adelante a atrás.
Diente de sierra (Sawtooth) - movimiento linear con un salto al volver al inicio.
Diente de sierra invertido (Reverse Sawtooth) - lo anterior invertido.
Cuadrado (Square) - alternar entre los dos valores máximos.
Periodo (Period)
La duración, en segundos, de un ciclo completo que se repite.
Periodo aleatorio (Period random)
Una cantidad aleatoria de segundos añadidos al periodo en cada ejemplo. Te puede ayudar a variar la
apariencia cuando muchos ejemplos usan el comportamiento Seno.
Periodo compensado (Period offset)
El tiempo inicial en segundos del ciclo. Por ejemplo, si el periodo es de 2 segundos y el periodo compensado
es de 1, el comportamiento Seno empezará a la mitad del ciclo.
Periodo compensado aleatorio (Period offset random)
Una cantidad aleatoria de segundos añadidos al periodo compensado. Te puede ayudar a variar la apariencia
cuando muchos ejemplos usan el comportamiento Seno.
Magnitud (Magnitude)
El cambio máximo de la posición, tamaño o ángulo del objeto. Está en píxeles para posición y para el
tamaño y en grados para el ángulo.
Magnitud aleatoria (Magnitude random)
Un valor aleatorio añadido a la magnitud para cada ejemplo. Te puede ayudar a variar la apariencia cuando
muchos ejemplos usan el comportamiento Seno.
Condiciones de Seno
Cotejar magnitud (Compare magnitude)
Coteja la magnitud actual del movimiento.
Cotejar movimiento (Compare movement)
Coteja la propiedad Movimiento actual del comportamiento.
Cotejar periodo (Compare period)
Coteja el periodo de movimiento actual, en segundos.
Cotejar onda (Compare wave)
Coteja la propiedad Onda actual del comportamiento.
Está activo (Is active)
Verdadero si el comportamiento está activo.
Acciones de Seno
Activar (Set active)
Habilita o deshabilita el comportamiento. Cuando está deshabilitado el comportamiento no afecta al objeto.
Ajustar magnitud (Set magnitude)
Ajusta la magnitud del ciclo. Está en píxeles cuando modifica la posición o el tamaño y en grados cuando
modifica el ángulo.
Ajustar movimiento (Set movement)
Cambia el tipo de movimiento del comportamiento, por ejemplo, de Horizontal a Tamaño.
Ajustar periodo (Set period)
Ajusta la duración de un único ciclo completo, es segundos.
Ajustar onda (Set wave)
Cambia la propiedad Onda, eligiendo una función distinta para calcular el movimiento.
Expresiones de Seno
Posición de Ciclo (CyclePosition)
Da el valor de 0 a 1 que representa el progreso a través del ciclo actual. Por ejemplo, será 0,5 cuando el ciclo
esté a la mitad.
Magnitud (Magnitude)
Da la magnitud del ciclo actual. Está en píxeles cuando modifica la posición o el tamaño y en grados cuando
modifica el ángulo.
Periodo (Period)
Da el periodo de un único ciclo completo en segundos.
Valor (Value)
Da el valos cambiante u oscilante. Se alternará como valores positivos y negativos centrados en 0. Es útil
para crear efectos personalizados cuando está en modo Sólo valor (Only value).
5.22 Sólido (Solid)
El comportamiento Sólido hace que otros comportamientos reaccionen como si fuera un obstáculo
infranqueable. Los objetos con este comportamiento se llaman Sólidos. Afecta a los siguientes
comportamientos:




8 Direcciones, que queda bloqueado por los sólidos.
Bala, que puede rebotar en los sólidos, opcional.
Coche, que rebota en los sólidos.
Plataforma, que puede posarse sobre un sólido. Plataforma no puede saltar sobre sólidos desde abajo, para
esto usa el comportamiento Saltar a través.
Nota que al comportamiento Física no le afectan los objetos sólidos. A cambio, usa el comportamiento con
Inmovible (Immovable) activado, Yes.
El comportamiento Sólido no tiene propiedades, condiciones, acciones ni expresiones a parte de la acción
Habilitar (Set enabled). Por esto, también se le llama atributo. Este comportamiento es fundamental en C2, y
otras muchas funciones del programa interactúan con él. Por ejemplo, el comportamiento de Movimientos
personalizados tiene acciones para empujar el objeto fuera de sólidos.
Evita bloquear/ atrapar objetos con Sólidos
Los comportamientos que responden al Sólido normalmente se bloquean o se quedan atrapados en el interior
del objeto Sólido. En este caso no hay solución para continuar el movimiento. Las únicas tres opciones son
1) dejarlo atascado, 2) permitir al objeto moverse dentro de los sólidos o 3) teletransportar el objeto al
espacio libre más cercano, que en algunos casos puede estar muy lejos. Ya que las opciones 2 y 3 pueden
causar comportamientos extraños, C2 hará de forma deliberada que el objeto quede incapacitado para
moverse. Así que es tu tarea diseñar juegos de tal forma que el jugador no se pueda quedar atascado o
atrapado moviendo objetos Sólidos. Debes tener especial cuidado cuando mueves Sólidos contra otros
Sólidos.
Es sólo por mover (o rehabilitar) Sólidos, o usar Ajustar posición (Set position), que el objeto pueda quedar
atrapado. Si ninguno de los Sólidos de tu juego se mueven y no “teletransportas” al jugador usando Ajustar
posición (Set position), será prácticamente imposible que el jugador se quede atrapado.
Propiedades de Sólido
Estado inicial (Initial State)
Si el comportamiento está habilitado en el inicio. Si está deshabilitado, el objeto no será sólido y el resto de
objetos podrán pasar a través de él.
Propiedades de Sólido
Habilitado (Is enabled)
Verdadero si el comportamiento está habilitado. Se puede cambiar en la propiedad Estado Inicial o en la
acción Habilitar.
Acciones de Sólido
Habilitar (Set enabled)
Habilita o Deshabilita Sólido de ese objeto. Ten cuidado de no atrapar objetos habilitando el sólido otra vez
cuando se están solapando, mira las secciones anteriores.
5.23 Temporizador (Timer)
El comportamiento temporizador simplemente acciona la condición On timer de forma regular o tras una
pausa. Es como usar la condición del sistema Cada X segundos, o la acción Esperar; excepto porque
funcionan para ejemplos individuales. La tasa a la que se detona On timer tiene que ver con la escala de
tiempo. Este comportamiento es una buena alternativa a añadir dt a un ejemplo variable cada vez.
Etiquetas (Tags)
Un único comportamiento Temporizador puede manejar varios temporizadores. Para poder distinguirlos se
usan las etiquetas, que son simplemente secuencias. Por ejemplo, usar un temporizador con la etiqueta
“attack” detonará On timer “attack”, pero no On timer “defend”.
Cuando se para un temporizador, o tras un detonador, no vuelve a existir y la información de las expresiones
del temporizador no se puede recuperar.
Condiciones de Temporizador
Temporizador usado (On timer)
Detona de forma regular o una vez concreta, tras finalizar la cuenta atrás de un temporizador con la misma
etiqueta.
Acciones de Temporizador
Iniciar temporizador (Start timer)
Establece un nuevo temporizador, o si ya existe, lo reinicia con nuevas opciones. Duración (Duration) es el
tiempo hasta que On timer se activa. Si el Tipo (Type) es Una vez (Once), On time funcionará una vez y no
más, hasta que esta acción se vuelva a usar; si es Regular (Regular), On timer seguirá funcionando cada
tiempo marcado en Duración. Las etiquetas permiten el uso de varios temporizadores a la vez. La condición
On time correspondiente debe usar la misma etiqueta.
Parar temporizador (Stop timer)
Para un temporizador con una etiqueta determinada. On timer no se volverá a detonar tras esta acción.
Expresiones de Temporizador
TiempoActual(etiqueta) (CurrentTime(tag))
El tiempo en segundos desde la última vez que On timer se detonó, para una etiqueta concreta.
Duración(etiqueta) (Duration(tag))
La duración en segundos de un temporizador con una etiqueta concreta.
TiempoTotal(etiqueta) (TotalTime(tag))
El tiempo en segundos desde que un temporizador concreto comenzó con la acción Iniciar temporizador.
Sólo es útil con tiempos regulares, ya que en los otros siempre será igual a la expresión TiempoActual
(funcionan y ya no vuelven a existir, por lo que la expresión vuelve a 0).
5.24 Torreta (Turret)
Este comportamiento puede detectar automáticamente objetos dentro de un cierto rango y rotar sobre ellos.
De forma opcional incluye características para determinar cuando disparar, además de puntería predictiva.
Para ejemplos de cómo funciona Torreta, búscalos en el Diálogo de Inicio.
Como funcionan las torretas
Antes de que una torreta apunte a algo, debes uasr la acción Añadir objeto al objetivo, para saber que objeto
buscar. Con señalarlo una vez al inicio del plano es suficiente. También puedes señalar una Familia de
objetos, para permitir que tenga varios objetos como objetivo.
Una vez que estos objetos entran en el rango de la Torreta (la distancia entre objetos es menor que la
propiedad Rango (Range)), y si todavía no tiene un objetivo asignado, éste objeto será el objetivo de la
torreta. Se detona Objetivo encontrado y si Rotar (Rotate) está en Sí, el objeto rotará sobre el objetivo. Una
vez la torreta está apuntando al objetivo, Disparar se detonará a la frecuencia determinada por la propiedad
Tasa de disparos (Rate of fire). Si quieres que la torreta dispare sobre el objetivo, genera un proyectil en el
evento Disparar (On shoot).
Si el objetivo sale del rango, la torreta lo perderá y dejará de disparar y esperará hasta que encuentre un
nuevo objetivo. Nota que si Modo Objetivo (Target mode) está en El más cercano (Nearest), la torreta podrá
cambiar de objetivo aunque éste siga en el rango, si el segundo está más cerca.
Puntería predictiva (Predictive aim)
Para una demostración interactiva ve a Ejemplo: Turret predictive aim en el Diálogo de Inicio.
Normalmente la torreta apuntadirectamente a un objetivo. Esto significa que no podrás disparar a objetivos
en movimiento, ya que para cuando el proyectil llegue el objeto ya no estará allí. La puntería predictiva
soluciona este problema, haciendo que la torreta apunte al lugar en el que el objeto estará cuando el proyectil
llegue, si mantiene la misma velocidad. Para que esto funcione, el comportamiento debe tener la velocidad
de proyectil ajustada en la propiedad Projectile speed, para determinar cuanto tardará en llegar. También
debe ser una velocidad fija, sin aceleraciones o decelerqaciones.
Aún así, sigue siendo posible que los objetivos esquiven la puntería predictiva, cambiando de dirección o de
velocidad. Sin embargo, es más difícil que si no la usara, pues mejora considerablemente la precisión.
Propiedades de torreta
Rango (Range)
El rango, en píxeles, al que la torreta detecta el objetivo. Objetivos fuera de él serán ignorados.
Tasa de disparo (Rate of fire)
La tasa a la que activar Disparar, cuando la torreta ha encontrado un objetivo y rotado en su dirección.
Rotar (Rotate)
Si ajustar automáticamente el ángulo del objeto al ángulo de la torreta.
Velocidad de rotación (Rotate speed)
La velocidad a la que se rota, en grados por segundo.
Modo objetivo (Target mode)
Si Primero en el rango está activado, la torreta siempre cargará contra el mismo objetivo hasta que salga del
rango, aunque entre otro objeto. Si está El más cercano, podrá cambiar de objetivo dependiendo de la
distancia.
Puntería predictiva (Predictive aim)
Si está habilitada, se debe ajustar la velocidad del proyectil en píxeles por segundo para que funcione
correctamente. Para más información, ve a la sección de la puntería predictiva de arriba.
Estado Inicial (Initial State)
Si el comportameinto está habilitado en el inicio. Si no, puede habilitarse durante el juego usando la acción
Habilitar (Set enabled).
Condiciones de torreta
Tiene objetivo (Has target)
Verdadero si la torreta tiene un objetivo en ese momento.
Disparar (On shoot)
Detonado a la frecuencia dada en la propiedad Tasa de disparo, cuando la torreta tiene un objetivo y ha
rotado para apuntar. Si va adisparar sobre el objeto, debes generar un proyectil en este detonador.
Objetivo encontrado (On target acquired)
Detonado cuando la torreta no tiene un objetivo y entra uno en su rango.
Acciones de torreta
Encontrar objetivo (Acquire target)
Lo busca en cualquier objeto que esté en su rango. Si está fuera, la acción se ignora. Si está dentro, la torreta
cambiará para apuntarlo, incluso si ya tiene un objetivo diferente. Nota que si el Modo objetivo está en
Nearest, la torreta cambiará para apuntar al más cercano.
Añadir objeto al objetivo (Add object to target)
Úsala en el inicio para decirle a la torreta que objetos debe buscar. Usa una Familia para hacer objetivo a un
grupo de objetos.
Eliminar objetivos (Clear targets)
Quita todos los objetivos añadidos usando la anterior acción. La torreta no volverá a apuntar a ningún
objeto.
No encontrar objetivo (Unacquire target)
Le dice a la torre que ignore su objetivo, aunque esté en el rango. Esto lo libera para apuntar a objetos
diferentes, pero puede elegir apuntar al siguiente objetivo si la acción Acquire target se usa inmediatamente
después.
Habilitar (Set enabled)
Habilita o deshabilita el comportamiento. Si está deshabilitado, no se detectarán objetivos, ni se rotará, ni
funcionará ningún detonador.
Habilitar puntería predictive (Set predictive aim)
Ajustar velocidad de proyectil (Set projectile speed)
Ajustar rango (Set range)
Ajustar tasa de disparo (Set rate of fire)
Habilitra rotar (Set rotate)
Ajustar velocidad de rotación (Set rotate speed)
Ajustar modo objetivo (Set target mode)
Ajusta las propiedades correspondientes. Para más información ve a las propiedades de torreta.
Expresiones de torreta
Rango (Range)
TasaDeDisparo (RateOfFire)
VelocidadRotación (RotateSpeed)
Da las propiedades correspondientes. Para más información ve a las propiedades de torreta.
UIDObjetivo (TargetUID)
Consigue la UID del objetivo actual, si lo hay. Para más información sobre UIDs, ve a Características
Comunes.
5.25 Rodear (Wrap)
El comportamiento Rodear simplemente reposiciona el objeto en el lado contrario del plano, si éste sale de
él. No tiene propiedades, condiciones, acciones ni expresiones.
El objeto solo rodea una vez haya salido completamente del plano, ninguna parte de su cuadro delimitador
estará dentro del plano.
6. Referencia de Plugins
El objeto solo rodea una vez haya salido completamente del plano, ninguna parte de su cuadro delimitador
estará dentro del plano. Esta sección da una referencia a todos los plugins oficiales que hay en C2. Cada uno
tiene un resumen de su uso, una lista de propiedades y una detallada lista de acciones, condiciones y
expresiones.
Muchos plugings comparten acciones, condiciones y expresiones. Se describen como Características
comunes en
vez de repetir la información en cada plugin.
6.1 Características Comunes (Common features)
Muchos plugings comparten acciones, condiciones y expresiones; como el tamaño y la posición del objeto.
Aquí se describen todas en vez de repetir la información en cada plugin.
No todos los objetos usan todas las características comunes, algunos usan sólo unos pocos de los listados.
Esta lista es una referencia de las características que puedes encontrar en C2, sin describirse ningún plugin
en particular.
IDs unicas (UIDs)
Todos los objetos en tiempo de ejecución tienen asignada una única ID, que es un número que empieza por 0
para el primer ejemplo y que va sumando 1 para los siguiente ejemplos. Viene dado por la expresión UID.
Este número se puede utilizar para identificar únicamente un ejemplo en todo el juego. Por ejemplo, puede
almacenarse en las variables de ejemplo y en las variables de evento y luego recogerlas de nuevo usando la
condición Recoger por ID única (Pick by unique ID).
Índice de IDs (IIDs)
Todos los objetos en tiempo de ejecución tiene asignado un índice de ID, que es el número de ejemplo
dentro del tipo de objeto. Viene dado por la expresión IID del objeto. Por ejemplo, los primeros ejemplos de
dos tipos distintos de objeto tendrán, ambos un IID 0, los segundos 1 y así sucesivamente. Por ello, el IID no
identifica a un único ejemplo como lo hace UID, ni se refiere de forma constante al mismo grupo de
ejemplos (si se destruye IID 0, el siguiente ejemplo adquirirá IID 0). Pero puede ser útil para que los
usuarios avanzados se beneficien del índice de expresiones de objeto y de la condición del sistema Recoger
ejemplo Nth (Pick Nth instance).
6.1.1 Condiciones communes
Las siguientes condiciones son comunes a varios plugins.
Ángulo (Angle)
Nota que los ángulos en C2 empiezan en 0 grados mirando hacia la derecha y avanzan en el sentido de las
agujas del reloj.
Está entre ángulos (Is between angles)
Verdadero si el ángulo actual del objeto está entre los dos ángulos dados en grados. El primer y el segundo
ángulo deben estar en el sentido de las agujas del reloj. Está entre 0 y 45 grados (Is between 0 and 45
degrees) es verdadero si el objeto está en un área de 45 grados, pero Está entre 45 y 0 grados (Is between 45
and 9 degrees) es verdadero si el objeto está en un área de 315 grados desde los 45 hasta los 0.
Está en el sentido de las agujas del reloj (Is clokwise from)
Verdadero si el ángulo actual del objeto está en el sentido de las agujas del reloj respecto al ángulo dado en
grados. Invierte para comprobar si el objeto está en el sentido contrario. Por ejemplo, un objeto a 45 grados
está en el sentido de las agujas del reloj con respecto a 0 grados, pero otro a 0 grados estaría en el sentido
contrario con respecto a 45 grados.
Está dentro del ángulo (Is within angle)
Verdadero si el ángulo actual del objeto está dentro del número de grados de otro ángulo. Esto es más fiable
que comprobar si el ángulo del objeto es exactamente igual al otro ángulo. Está dentro de 0,5 grados en 90
grados (Is within 0.5 degrees of 90 degrees) es probablemente mejor que Ángulos iguales a 90 grados
(Angle equals 90 degrees), ya que hay muchos casos en los que el objeto puede estar muy cerca, pero no
medir exactamente 90 grados.
Apariencia (Appearance)
Cotejar opacidad (Compare opacity)
Coteja la opacidad del objeto, de 0 (transparente) a 100 (opaco).
Es visible (Is visible)
Verdadero si el objeto es visible en ese momento. Invierte para comprobar si es invisible. Esto sólo
comprueba la visibilidad establecida por la acción Hacer visible (Set visible); so le afecta si el objeto está
fuera de la pantalla, si tiene opacidad 0 o si está en una capa invisible.
Variables de ejemplo (Instance variables)
Cotejar variable de ejemplo (Compare instance variable)
Coteja el valor actual de una de las variables de ejemplo del objeto.
La variable de ejemplo booleana esta activa (Is boolean instance variable set)
Comprueba si una variable de ejemplo booleana es verdadera. Invierte la condición para comprobar si es
falsa.
Recoger la más alta/baja
Recoge el ejemplo con el valor de ejemplo variable más alto o bajo de todos los ejemplos. Nota que esto sólo
selecciona un único ejemplo auqnue varios de ellos tengan el mismo valor; se selecciona arbitrariamente.
Miscelanea (Misc)
Creado (On created)
Destruido (On destroyed)
Detonados para cada ejemplo que se crea o se destruye durante el juego. Por ejemplo, un efecto de partículas
se puede activar siempre que un objeto se crea, y una explosión siempre que se destruye. Estas condiciones
son análogas a los constructores y los destructores en un lenguaje de programación tradicional (comandos
que funcionan en la creación y destrucción de objetos). Ten cuidado de no crear un objeto del mismo tipo en
un evento Creado (On created) (On Sprite2 created: create Sprite2) ya que creará un bucle infinito y el
juego se enganchará.
Recoger (Pick)
Recoger por ID única (Pick by unique ID) (UID)
Recoge el ejemplo que coincide con el número de ID dado.
Recoger el más cercano/lejano (Pick nearest/furthest)
Recoge el ejemplo más cercano o lejano de una posición del plano dada.
Tamaño y Posición (Size & Position)
Cotejar amplitude (Compare width)
Cotejar altura (Compare height)
Coteja el tamaño actual del objeto, en píxeles.
Cotejar X (Compare X)
Cotejar Y (Compare Y)
Coteja la posición del objeto en el plano, en píxeles. Nota que los objetos se pueden posicionar entre píxeles
(5,5 o 10,33333). Por ello es una mala idea confiar que un objeto este en una posición exacta.
Está en pantalla (Is on-screen)
Verdadero si una parte del cuadro delimitador del objeto está dentro del área de la pantalla. La visibilidad o
la opacidad no lo afectan.
Está fuera del plano (Is outside layout)
Verdadero si el cuadro delimitador del objeto está completamente fuera del área del plano.
Orden Z (Z Order)
Está en la capa (Is on layer)
Recoge todos los ejemplos de una capa dada, especificados por su nombre o por su índice basado en cero.
Recoger de arriba/abajo (Pick top/bottom)
Recoge el ejemplo de más arriba o de más abajo, teniendo en cuenta las capas y el índice Z. Por ejemplo, el
ejemplo del frente de la capa más cercana es el ejemplo de arriba.
6.1.2 Acciones communes
Las siguientes acciones son comunes a varios plugins.
Ángulo (Angle)
Nota que los ángulos en C2 empiezan en 0 grados mirando hacia la derecha y avanzan en el sentido de las
agujas del reloj.
Rotar en el sentido de las agujas del reloj (Rotate clockwise)
Rota el objeto en un número de grados en el sentido de las agujas del reloj.
Rotar en el sentido contrario a las agujas del reloj (Rotate counter-clockwise)
Rota el objeto en un número de grados en el sentido contrario a las agujas del reloj.
Rotar hacia ángulo (Rotate toward angle)
Rota el objeto en un número de grados hacia otro ángulo. Si el objeto está cerca del ángulo objetivo no lo
sobrepasará (Acabará exactamente en el ángulo objetivo).
Rotar hacia posición (Rotate toward position)
Rota el objeto en un número de grados hacia la posición. Si el objeto está cerca del ángulo objetivo no lo
sobrepasará (Acabará exactamente en el ángulo objetivo).
Ajustar ángulo (Set Angle)
Ajusta el ángulo del objeto en grados, de 0 a 360. 0 grados miran a la derecha y aumenta en el sentido de las
agujas del reloj.
Ajustar ángulo hacia la posición (Set angle toward position)
Ajusta el ángulo del objeto para que se posicione en un sitio concreto del plano.
Apariencia (Appearance)
No todos los objetos soportan las acciones en relación con los efectos. Para más información ve a Efectos.
Ajusta modo de fusión (Set blend mode)
Cambia la forma en la que el objetos se funde con el fondo alterando la propiedad del objeto Modo de fusión
(Blend Mode).
Habilita efecto (Set effect enabled)
Habilita o deshabilita uno de los efectos añadidos la objeto.
Ajusta parámetro de efecto (Set effect parameter)
Cambia el valor de uno de los parámetros de un efecto añadido al objeto. El parámetro que se cambia se
especifica por su índice basado en 0, es decir, 0 para cambiar el primer parámetro, 1 para cambiar el segundo
y así sucesivamente.
Ajustar opacidad (Set opacity)
Ajusta la opacidad del objeto (o semitransparecia) de 0 (transparente) a 100 (opaco).
Hacer visible (Set visible)
Hace el objeto visible o invisible (escondido).
Variables de ejemplo (Instance variables)
Añadir a (Add to)
Quitar de (Subtract from)
Modifica el número de la variable de ejemplo.
Ajustar (Set)
Ajusta un número o texto a la variable de ejemplo.
Ajustar booleano (Set boolean)
Ajusta la variables de ejemplo booleana, que puede tener un valor verdadero a falso.
Alternar booleano (Toggle boolean)
Alterna una variable de ejemplo booleana, que cambia de verdadera a falsa y viceversa.
Miscelanea (Misc)
Destruir (Destroy)
Elimina el objeto del juego.
Ajustar desde JSON (Set from JSON)
Ajusta el estado del objeto desde una secuencia de datos en formato JSON. Debe venir de un uso anterior de
la expresión AsJSON.
Tamaño y Posición (Size & Position)
Mover al ángulo (Move at angle)
Mueve el objeto un número de píxeles hacia un ángulo dado en píxeles.
Mover adelante (Move forward)
Mueve el objeto un número de píxeles hacia adelante en el ángulo actual del objeto.
Ajustar amplitud (Set width)
Ajustar altura (Set height)
Ajustar tamaño (Set size)
Ajustan el tamaño actual el objeto en píxeles.
Ajustar X (Set X)
Ajustar Y (Set Y)
Ajustar posición (Set position)
Ajusta la posición del objeto en el plano, en píxeles. El origen (0,0) es la parte de arriba a la derecha del
plano y el eje Y se incrementa hacia abajo.
Ajustar posición a otro objeto (Set position to another object)
Posiciona el objeto de acuerdo a otro. También puede posicionarse en relación a un punto de imagen de un
objeto dado.
Orden Z (Z Order)
Mover abajo (Move to bottom)
Mover arriba (Move to top)
Posiciona el objeto en la parte de arriba o de abajo de la capa actual.
Mover a capa (Move to layer)
Mueve el objeto a la parte de arriba de la capa dada, por su nombre o por su índice basado en 0. Si el objeto
ya está en la capa dada la acción no tendrá efecto.
Mover a objeto (Move to object)
Mueve el objeto al lado de otro objeto en el orden Z. Puedes elegir que se situe delante o detrás. Si el objeto
seleccionado está en una capa diferente, éste se moverá a la capa del objeto objetivo y se situará a su lado en
el orden Z.
6.1.3 Expresiones comunes
Las siguientes expresiones son comunes a varios plugings.
Ángulo (Angle)
Ángulo (Angle)
El ángulo actual del objeto en grados. 0 grados comienza a la derecha y se incrementa en el sentido de las
agujas del reloj.
Apariencia (Appearance)
Opacidad (Opacity)
La opacidad actual del objeto (semitransparencia), de 0 (transparente) a 100 (opaco).
Miscelanea (Misc)
AsJSON
Guarda el estado del objeto en una secuencia de datos en formato JSON y lo da. Puede ser descargado o
almacenado, y más tarde el estado del objeto se reestablecerá usando la acción Set from JSON.
Conteo (Count)
El número de ejemplos de ese tipo de objeto
Conteo recogido (PickedCount)
El número de ejemplos que reúnen la condición del evento. Por ejemplo, si el evento tiene la condición “El
Ratón está sobre el Sprite” (“Mouse is over Sprite”), Sprite.PickedCount dará el número de ejemplos sobre
los que está el ratón.
IID
Da el índice del ejemplo (IID). Ver características comunes.
UID
Da la ID única del ejemplo (UID). Ver características comunes.
Tamaño y Posición (Size & Position)
Cuadro derecha (BBoxLeft)
Cuadro Izquierda (BBoxRight)
Cuadro Arriba (BBoxTop)
Cuadro Abajop (BBoxBottom)
Da las coordenadas del plano del cuadro delimitador del eje del objeto. Éste es el cuadro más pequeño que
encierra al objeto, teniendo en cuenta cualquier rotación o estrechamiento.
Amplitud (Width)
Altura (Height)
Da el tamaño del objeto en píxeles.
Punto de Imagen X (ImagePointX)
Punto de Imagen Y (ImagePointY)
Da la posición de un punto de imagen de un objeto en las coordinadas del plano. Da tanto el nombre del
punto como su número.
X
Y
Da la posición del objeto en el plano, en píxeles. El origen (0,0) es la parte de arriba a la derecha del plano y
el eje Y se incrementa hacia abajo.
Tiempo (Time)
dt
Da el tiempo delta (delta-time) de acuerdo a la propia escala de tiempo del objeto. Ve a Delta-time and
framerate independence ⇗ para más información.
Orden Z (Z Order)
Nombre de capa (LayerName)
El nombre de la capa en la que el objeto está actualmente.
Número de capa (LayerNumber)
El índice basado en cero de la capa en la que el ejemplo está actualmente.
Índice Z (ZIndex)
Da el índice basado en 0 del orden Z de ese ejemplo dentro de la capa actual. 0 es el ejemplo de abajo,
incrementándose hasta el ejemplo de arriba.
6.2 9-parches (9-patch)
El plugin 9-parches permite ajustar el tamaño de una imagen estrechando, ensanchando o pixelando los
bordes y esquinas, para rellenarlos aparte. Es útil para hacer ventanas ajustables o elementos de la interfaz
que se puedan ajustar y que se vean correctamente. La imagen de abajo demuestra como se ve el plugin
comparado con un objeto Sprite, que ensancha su imagen al completo.
El objeto 9-parches usa una única imagen, pero la corta en 9 secciones usando márgenes establecidos en las
propiedades del objeto. Ajustando los márgenes superior, inferior, derecho e izquierdo, el plugin funciona y
ajusta el tamaño y posiciona las 9 secciones.
Los bordes a rellenar pueden ensancharse o pixelarse de forma independiente, permitiendo una mejor
apariencia al ajustar el tamaño. Ten cuidado de no establecer márgenes que se solapen o tengan tamaño 0, ya
que puede causar que el objeto se muestre de forma errónea.
Para una demo interactiva del plugin ve al Ejemplo: 9-patch object en el Diálogo de Inicio.
Propiedades de 9-parches
Imagen (Image)
Clica el enlace Editar (Edit), o haz doble click sobre el objeto en la Vista de plano, para editar la imagen con
9-parches.
Margen izquierdo (Left margin)
Margen derecho (Right margin)
Margen superior (Top margin)
Margen inferior (Bottom margin)
Los márgenes de cada lado, en píxeles. Ve a la imagen superior para visualizarlos.
Bordes (Edges)
Usa Estirar (Stretch) para ampliar el borde hasta el tamaño del objeto. Usa Tesela (Tile) para repetir el
borde.
Rellenar (Fill)
Usa Estirar (Stretch) para ampliar el borde hasta el tamaño del objeto. Usa Tesela (Tile) para repetir el borde
como un Fondo de mosaico. Usa Transparente (Transparent) si no quieres rellenar la imagen.
Visibilidad Inicial (Initial visibility)
Establece si el objeto es visible o invisible al inicio del plano.
Punto caliente (Hotspot)
Elige si el punto caliente (origen) del objeto está en el centro o en la esquina superior derecha.
Uniones (Seams)
Para asegurar una renderización sin uniones bajo cualquier circunstancia, por defecto los parches se solapan
internamente en 1 píxel (usando el ajuste Overlap). Sin embargo, en parches semitransparentes pueden verse
las uniones; en este caso es preferible usar el ajuste Exact.
Condiciones, acciones y expresiones de 9-parches
No tiene ninuna por sí mismo. Mira las características comunes para saber las que comparte con otros
plugins.
6.3 AJAX
El plugin AJAX permite que se soliciten páginas web durante el juego. Su nombre se deriva de
“Asynchronous JavaScript and XML” una técnica usual en la mayoría de desarrolladores web. El objeto
AJAX se diseña para el uso de desarrolladores web ya familiarizados con la técnica - esta referencia no
describirá los principios de AJAX, solo mostrará cómo usarlo en C2 con el objeto AJAX. Normalmente, usar
el objeto AJAX también requiere scripts del lado del servidor personalizados (custom server-side scripting)
que están fuera del alcance de este manual.
Como hacer una solicitud
El uso básico del objeto AJAX consiste en:
1. Uso de la acción Solicitud (Request) para cargar la URL.
2. Un momento después de que la solicitud se complete, se detona Completado (On completed).
3. La expresión Último Dato (LastData) se puede usar para acceder al contenido de la respuesta.
La expresión del sistema tokenat puede ser útil para dividir respuestas simples. También puedes cargar
Último dato (LastData) en el plugin XML para leerlo en un documento XML.
Etiquetas (Tags)
Se puede crear una etiqueta diferente para cada solicitud. Es una secuencia simple que se usa para separar
solicitudes distintas. Por ejemplo, en el arranque quizás solicites ambos foo.php con la etiqueta “foo” y
bar.php con la etiqueta “bar”. Cuando se completa la primera solicitud, se detona “foo” completado (On
“foo” completed); cuando la segunda se completa, se detona “bar” completado (On “bar” completed). Las
solicitudes se pueden completar en distinto orden al que se realizaron, así que sin etiquetas sería imposible
decir cual se ha completado.
Hacer solicitudes AJAX entre dominios o en la vista previa
Por defecto, los navegadores bloquean las solicitudes AJAX entre dominios. Esto significa, por ejemplo, que
un juego en scirra.com puede solicitar otras páginas en scirra.com, pero no puede solicitar en facebook.com.
Esta es una característica de seguridad importante paras los navegadores (no es específica de C2 o del objeto
AJAX).
Además, cuando haces vista previa en C2 el juego funciona en localhost. Esto cuenta como un dominio
diferente para el resto de internet así que las solicitudes de AJAX a cualquier página fallarán, a menos que el
servidor permita específicamente solicitudes entre dominios.
Si quieres que las solicitudes de AJAX funcionen para cualquier dominio, o en la vista previa, puedes
configurarlo para enviar el siguiente encabezado HTTP:
Access-Control-Allow-Origin: *
Esto habilitará las solicitudes AJAX para cualquier dominio, pero debes tener en cuenta las implicaciones de
ello en tema de seguridad. Para más información ve a HTTP access control on MDN ⇗.
Nodo-webkit (In node-webkit)
Cuando exportas aplicaciones de escritorio con Nodo-webkit, el objeto AJAX también puede cargar desde la
carpeta de la aplicación. Simplemente usa la acción Request URL e introduce el nombre de un archivo con el
mismo directorio que la aplicación, por ejemplo “example.txt”. Nota que si un proyecto existe con el mismo
nombre, cargará el proyecto en vez del archivo.
Condiciones de AJAX
Completado (On completed)
Detonado cuando la solicitud con la misma etiqueta se ha completado satisfactoriamente. La expresión
Último dato (LastData) contiene la respuesta.
Error (On error)
Detonado cuando la solicitud falla. Esto puede ser por numerosas razones, como que el servidor haya caído o
que se haya acabado el tiempo de la respuesta. (La expresión LastData no se ajusta puesto que no hay
respuesta.)
En progreso (On progress)
Para solicitudes de larga duración (descargar un archivo grande), esta condición se detona periódicamente y
actualiza el estado de la solicitud en la expresión Progreso (Progress). Es útil para crear barras de progreso
para las solicitudes AJAX.
Acciones de AJAX
Publicar en URL (Post on URL)
Envía una solicitud de PUBLICACIÓN (POST) a una URL y recupera la respuesta. Se da una etiqueta que
coincida con los detonadores Completado (On completed), En progreso (On progress) y Error (On error).
C2 no codifica en URL los datos del post - usa la expresión del sistema URLEncode para asegurar que los
datos están en el formato correcto para publicarlos.
Solicitud (Request)
Envía OBETENER respuesta para recuperar los contenidos de una URL. Se da una etiqueta que coincida
con los detonadores Completado (On completed), En progreso (On progress) y Error (On error).
Solicitud de archivo de proyecto (Request project file)
Solicita los contenidos de un archivo de proyecto. Se da una etiqueta que coincida con los detonadores
Completado (On completed), En progreso (On progress) y Error (On error).
Expresiones AJAX
Último Dato (LastData)
El contenido de la última respuesta. Se activa en el detonador Completado (On completed). Si se vuleve a
usar en un evento distinto, contendrá la respuesta de la última solicitud completada. La expresión del sistema
tokenat pude ser útil para dividir en respuestas simples.
Progreso (Progress)
Da el progreso de la solicitud AJAX en un evento En progreso (On progress). El progreso se representa
como un número de 0 a 1 (0,5 para la mitad completada).
6.3 appMobi
El plugin appMobi proporciona integración con el servicio de publicación móvil de appMobi ⇗. Para más
información ve al tutorial How to export to appMobi ⇗.
Condiciones de appMobi
Está en AppMobi (Is in AppMobi)
Verdadero si el juego está funcionando dentro de appMobi. Será falso si el juego está funcionando en otro
lugar, como en la web abierta (open web).
Almacenar habilitado (Caching enabled)
(Para usuarios avanzados) Verdadero si el servicio de almacenamiento de appMobi ha sido habilitado.
Cotejar orientación inicial (Compare initial orientation)
Comprueba si la orientación del dispositivo al inicio fue alguna particular.
Cotejar orientación (Compare orientation)
Comprueba si la orientación actual del dispositivo es alguna particular.
Impulsar habilitado (Push enabled)
(Para usuarios avanzados) Verdadero si el servicio de notificaciones de impulso (push notifications) de
appMobi están habilitadas.
Streaming habilitado (Streaming enabled)
(Para usuarios avanzados) Verdadero si el servicio de streaming de appMobi está habilitado.
Actualizaciones habilitadas (Updates enabled)
Verdadero si el servicio de actualizaciones en la nube (cloud update) está activado.
Tecla “atrás” presionada (On “back” button pressed)
Se detona cuando se presiona la tecla “atrás” del dispositivo, si la hay. Nota que algunos dispositivos (como
iOS) no la tienen. Antes de que este detonador funciones, debes añadir una página virtual usando la acción
Añadir página virtual (Add virtual page).
Código de barras escaneado (On barcode scanned)
Detonado cuando el dispositivo escanea un código de barras satisfactoriamente.
Datos remotos (On remote data)
Detonado cuando se reciben datos de la acción Obtener datos remotos (Get remote data).
Sitio remoto cerrado (On remote site closed)
Detonado cuando una ventana emergente del navegador que está mostrando contenido remoto es cerrada por
el usuario. Se abre con la acción Mostrar sitio remoto (Show remote site).
Acciones appMobi
Registrar evento (Log event)
Registra un evento con nombre para el servicio analítico de appMobi. Los parámetros se pueden ser
proporcionados en formato URL (foo=bar&baz=ban).
Añadir a almacenamiento de medios (Add to media cache)
Descarga un archivo desde Internet y lo almacena en un dispositivo de almacenamiento local, permitiendo
usar el juego offline en el futuro.
Borrar todas las cookies (Borrar todas las cookies)
Elimina todas las cookies guardadas con la acción del dispositivo Establecer cookie (Set cookie). (No afecta
a las cookies del navegador del usuario).
Borra almacenamiento de medios (Clear media cache)
Borra todos los archivos descargados con Añadir a almacenamiento de medios (Add to media cache).
Eliminar cookie (Remove cookie)
Elimina una cookie establecida con la acción Establecer cookie (Set cookie). (No afecta a las cookies del
navegador del usuario).
Establecer cookie (Set cookie)
Establece una cookie en el dispositivo. Ésta es un sustituto del almacenamiento local. No afecta al navegador
del usuario; el almacenamiento es sólo para la aplicación.
Cerrar sitio remoto (Close remote site)
Cierra un sitio remoto que está mostrándose con la acción Mostrar sitio remoto (Show remote site).
Conseguir datos remotos (Get remote data)
Crea el fondo de una solicitud AJAX usando el servicio appMobi. El detonador Datos remotos (On remote
data) se activará cuando se complete.
Instalar actualización (Install update)
Instala una actualización pendiente cuando esté preparada.
Lanzar a sitio externo (Launch external site)
Abre una URL en el navegador por defecto del dispositivo del usuario. El usuario dejará la app, no como en
la acción Mostrar sitio remoto (Show remote site).
Escanear código de barras (Scan barcode)
Abre un lector de códigos QR a pantalla completa. Se detonará Código de barras escaneado (On barcode
scanned) cuando se escanee satisfactoriamente.
Ajustar auto-rotar (Set auto-rotate)
Evita que un dispositivo rote automáticamente la pantalla cuando se cambia la orientación. Esto puede forzar
una orientación específica cuando lo usas con Ajustar orientación (Set orientation).
Mostrar sitio remoto (Show remote site)
Muestra una URL remota en el navegador de la aplicación. El usuario no sale de la app, puede darle al botón
de cerrar y volver a la app, no como en la acción Lanzar a sitio externo (Launch external site).
Actualizar conexión (Update connection)
Comprueba si el tipo de conexión del dispositivo ha cambiado (3G, Wifi, etc.).
Añadir página virtual (Add virtual page)
Úsalo para abrir una pantalla nueva que quieras que se pueda cerrar con la tecla “atrás”. La siguiente vez que
se presione tras esta acción evitará que la acción por defecto del dispositivo y detonará Tecla “atrás”
presionada (On “back” button pressed).
Eliminar página virtual (Remove virtual page)
Elimina la página añadida previamente, por ejemplo, si cancelas la pantalla.
Expresiones appMobi
Cookie
Da los datos almacenados por la acción Ajustar cookie (Set cookie).
Almacenamiento local URL (LocalMediaCacheURL)
Da el camino local para los archivos almacenados de Internet por la acción Añadir a almacenamiento de
medios (Add to media cache).
Versión AppMobi (AppMoviVersion)
Da la versión actual del software appMobi.
Datos del dispositivo Código de barras (DeviceBarcodeData)
Da los datos escaneados de un código de barras. Sólo aparece en Código de barras escaneado (On barcode
scanned) tras la acción Escanear código de barras (Scan barcode).
Conexión del dispositivo (DeviceConnection)
El tipo de conexión disponible más adecuado para el dispositivo: “wifi”, “cell” o “none”.
Modelo del dispositivo (DeviceModel)
El nombre del modelo del dispositivo.
Versión de SO del dispositivo (DeviceOSVersion)
Información de la versión de SO del dispositivo.
Plataforma del dispositivo (DevicePlatform)
“iOS” o “Android” dependiendo de cual esté usando.
Cadena de consulta del dispositivo (DeviceQueryString)
Da cualquier cadena de consulta que pasa a la aplicación cuando se inicia con un controlador de protocolo
(protocol handler).
Datos remotos del dispositivo (DeviceRemoteData)
Los datos dados por los detonadores Conseguir datos remotos (Get remote data) y Datos remotos (On
remote data).
Estado remoto del dispositivo (DeviceRemoteStatus)
Puede ser “abierto” (“open”), “cerrado” (“closed”) o “inactivo” (“idle”).
UUID del dispositivo (DeviceUUID)
Da el Identificador Universal Único (UUID), que es un código que identifica únicamente a ese dispositivo.
Orientación inicial (InitialOrientation)
La orientación del dispositivo en el inicio, dado en grados (0, -90, 90 o 180).
Orientación (Orientation)
La orientación actual del dispositivo, dado en grados (0, -90, 90 o 180).
6.4 Matriz (Array)
El objeto Matriz almacena listas de valores (cifras o texto). Es análogo a las matrices en los lenguajes de
programación tradicionales.
Sobre las Matrices
La matriz tiene 3 dimensiones. Por ejemplo, una lista simple de diez valores sería una matriz de 10 x 1 x 1.
Nota que no debes usar el valor 0 en ninguna dimensión porque la matriz entera quedará vacía; hay que usar
1 para dimensiones no usadas.
Cada elemento de la matriz puede almacenar una cifra o texto. La cifra o el texto se pueden cambiar con las
acciones de Ajuste (Set) y se puede acceder a ellas con la expresión En (At). Por ejemplo, una matriz de 10 x
10 x 1 es igual a una cuadrícula 2D con un total de 100 valores. Se puede almacenar un número en la
posición (3,7) con la acción Ajustar en XY (Set at XY), y se puede acceder mediante Matriz.En(3,7)
(Array.At(3,7)). Nota que, al igual que el resto de C2, los índices comienzan en 0, así que el primer elemento
será 0. En este ejemplo, Matriz.En(0,0) (Array.At(0,0)) dará el primer número de la cuadrícula.
La matriz puede almacenar tanto cifras como texto con cualquiera de sus elementos. Incluso se pueden
mezclar números y letras dentro de ella.
Las matrices no cambian su tamaño automáticamente. Si accedes a un valor fuera de la matriz, te dará el
número 0. Si ajustas un valor fuera de ella, no tendrá efecto.
Manipular matrices
Una matriz de una dimensión, de tamaño N x 1 x1, funciona como una lista simple de valores N. Las
acciones de la categoría Manipular (como Push (Insertar), Pop (Quitar)) permiten que las matrices de una
dimensión se usen como otras estructuras de datos. (Estas acciones funcionan con matrices
multidimensionales pero están hechas específicamente para las de una sola).



Por ejemplo, el siguiente esquema usa una fila (último en entrar, primero en salir o “LIFO”):
Añade nuevos ítems con Insertar al frente (Push front).
Recupera el siguiente valor con Matriz.AlFinal (Array.Back).
Elimina el valor recuperado con Quitar al final (Pop back).



El siguiente esquema usa una pila (primero en entrar, primero en salir o “FIFO”)
Añade nuevos ítems con Insertar al final (Push back).
Recupera el siguiente valor con Matriz.AlFinal (Array.Back).
Elimina el valor recuperado con Quitar al final (Pop back).
Propiedades de Matriz
Amplitud (dimension X) (Width (X dimension))
Altura (dimension Y) (Height (Y dimension))
Profundidad (dimensión Z) (Depth (Z dimension))
El tamaño de la matriz. Si quieres que sea de 1 dimensión (una lista de valores) usa A x 1 x 1. Si quieres que
sea de 2 (una cuadrícula de valores) usa A x B x 1.
Condiciones de Matriz
Cotejar en X (Compare at X)
Cotejar en XY (Compare at XY)
Cotejar en XYZ (Compare at XYZ)
Coteja un valor en una posición de la matriz. Los índices están basados en 0. Todos los valores fuera de la
matriz dan 0. Si se usa Cotejar en X (Compare at X) los índices de Y y Z serán 0. Si se usa Cotejar en XY
(Compare at XY) el índice Z será 0.
Para cada elemento (For each element)
Una condición de repetición que funciona una vez para cada elemento de la matriz. Esto, por lo tanto,
funciona anchura x altura x profundidad veces.
Cotejar valor actual (Compare current value)
Sólo válido para el bucle Para cada elemento (For each element), ya sea como la condición siguiente a ella
como un sub-evento.
Contiene valor (Contains value)
Busca en la matriz entera para comprobar si alguno de los elementos contiene el valor dado. Por ejemplo,
puedes usarlo para comprobar que la secuencia “espada” (“sword”) está almacenada en alguna parte de la
matriz.
Esta vacia (Is empty)
Comprueba si la matriz está vacía. Estará vacía cuando el número total de sus elementos sea 0, calculado
como anchura x altura x profundidad. Por ello, la matriz estará vacía si cualquiera de sus ejes mide 0. Es útil
cuando usas matrices como estructura de datos (cuando insertas y quitas valores).
Acciones de Matriz
Borrar (Clear)
Pone a 0 todos los elementos de la matriz.
Ajustar en X (Set at X)
Ajustar en XY (Set at XY)
Ajustar en XYZ (Set at XYZ)
Escribe un valor en una posición en la matriz. Los índices están basados en 0. Escribir valores fuera de la
matriz no tendrá efecto. Si se usa Ajustar en X (Set at X) los índices de Y y Z serán 0. Si se usa Ajustar en
XY (Set at XY) el índice Z será 0.
Ajustar tamaño (Set size)
Ajusta las dimensiones de la matriz. Los valores se guardan, pero si la nueva matriz es más pequeña se
truncan. Si la nueva matriz es más grande, los elementos nuevos almacenarán el valor 0. Si alguna de las
dimensiones es 0 la matriz completa quedará vacía, así que deben ser al menos 1.
Descargar (Download)
Abre una nueva pestaña en el navegador con un enlace de descarga del contenido de la matriz como un
archivo en formato JSON. Se usa para desarrollo offline (como crear editores de nivel). Ya que funciona
abriendo una pestaña nueva, puede no aparecer si tienes activado el bloqueo de ventanas emergentes asegúrate de que el localhost permite estas ventanas para que la acción funcione.
Cargar (Load)
Carga los contenidos de la matriz de una secuencia en formato JSON. Debe recuperarse de la acción
Descargar (Download) o de la expresión AsJSON. También se puede recuperar del objeto AJAX.
Insertar (Push)
Añade un nuevo valor al principio (al frente) o al final de un eje. Ya que la matriz es un cubo de valores en
3D, técnicamente esto insertará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de
1 dimensión esto añade un único elemento, y en una de 2 dimensiones insertará una fila de elementos.
Quitar (Pop)
Borra el valor al principio (al frente) o al final de un eje. Ya que la matriz es un cubo de valores en 3D,
técnicamente esto quitará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1
dimensión esto quita un único elemento, y en una de 2 dimensiones quitará una fila de elementos.
Introducir (Insert)
Inserta un nuevo valor en un índice específico de un eje. Ya que la matriz es un cubo de valores en 3D,
técnicamente esto insertará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1
dimensión esto añade un único elemento, y en una de 2 dimensiones insertará una fila de elementos.
Borrar (Delete)
Borra el valor en un índice específico de un eje. Ya que la matriz es un cubo de valores en 3D, técnicamente
esto quitará un nuevo plano de elementos 2D con los valores dados. Pero en matrices de 1 dimensión esto
quita un único elemento, y en una de 2 dimensiones quitará una fila de elementos.
Invertir (Reverse)
Invierte el orden de elementos en un eje. Nota que en matrices multidimensionales solo invierte un eje. Por
ejemplo, en el eje X de una matriz 2D se invertirá el orden de las columnas guardando el contenido de cada
una de ellas.
Sort (Ordenar)
Ordena el orden de los elementos de un eje en sentido ascendente. Nota que en matrices multidimensionales
se ordena desde el primer elemento del eje. Por ejemplo, en el eje X de una matriz 2D se clasificará el orden
de columnas basándose en los elementos de la coordenada Y, guardando el contenido de cada columna.
Expresiones de Matriz
En (X) (At(X))
En (X, Y) (At(X, Y))
En (X, Y, Z) (At(X, Y, Z))
Recupera el valor de una posición en la matriz. Los índices están basados en 0. Los valores de fuera de la
matriz serán 0. Si no se dan los índices Y o Z se usará el 0.
CurX
CurY
CurZ
El índice basado en 0 actual de cada dimensión en un bucle Para cada elemento (For each element).
Valor actual (CurValue)
El valor actual en el bucle Para cada elemento (For each element). Esto es un acceso directo para
Array.At(Array.CurX, Array.CurY, Array.CurZ).
Amplitud (Width)
Altura (Height)
Profundidad (Depth)
Da el tamaño de cada dimensión de la matriz.
Al frente (Front)
Acceso directo para acceder al primer valor de la matriz, que es lo mismo que At(0, 0, 0).
Al final (Back)
Acceso directo para acceder al último valor del eje X, que es lo mismo que At(Self.Width - 1, 0, 0).
Índice de (IndexOf)
Último Índice de (LastIndexOf)
Busca en el eje X de la matriz un valor dado y da el índice en el que se encuentra, o -1 si no se encuentra.
IndexOf encuentra en primer elemento que coincide y LastIndexOf en último que coincide.
AsJSON
Da el contenido de la matriz como una secuencia en formato JSON. Esto puede cargarse luego en la matriz
con la acción Cargar (Load).
6.5 Audio
El objeto Audio reproduce archives de audio que has importado al proyecto. Debe insertarse a todos los
proyectos que necesiten reproducción de audio. Se importan haciendo clic con el botón derecho en las
carpetas de Sonido o Música en la Barra del Proyecto y seleccionando Importar… (Import…), lo que hace
que aparezca el Diálogo de importar audio. Ve a las secciones relacionadas con la importación de archivos
de audio para más información.
Actualmente, el soporte de audio en los navegadores es irregular. No todas las características funcionaran en
todos los navegadores. Por ejemplo, ajustar la tasa de playback no funcionará en muchos dispositivos
móviles. Esto es un problema del navegador y no del objeto Audio de C2. Se recomienda probar tu proyecto
en varios navegadores para identificar que características funcionan en cada navegador. Sin embargo, este
área está en pleno desarrollo para futuros navegadores y el problema podría resolverse pronto.
Categorizar correctamente los archives de audio
Es importante organizar los archivos de audio apropiadamente, ya que los archivos en la carpeta Sonidos se
descargan completamente antes de reproducirse, pero los de la carpeta Música se reproducen en streaming.
Esto significa que si una pista de música acaba en la carpeta de Sonidos tendrá que descargarse
completamente (lo que podría tardar varios minutos) antes de reproducirse. Sin embargo, audio en la carpeta
de Música empezará la reproducción inmediatamente desde el servidor.
El Audio se descarga según demanda
Para agilizar el tiempo de carga y comenzar el juego lo antes posible, el audio se descarga o se reproduce
según la demanda durante el juego. En otras palabras, nada se descarga hasta que la acción Reproducir
(Play) se activa. Entonces, si el audio está en la carpeta de Música se reproducirá desde el servidor; y si está
en la de Sonidos empezará a descargarse y se reproducirá al terminar la descarga. Esto ayuda a preservar
ancho de banda en el servidor, ya que no se descarga audio innecesario. Sin embargo, puede haber un retraso
antes de que el audio se reproduzca la primera vez. El retraso de la primera vez es único, porque después el
sonido ya estará descargado y se reproducirá inmediatamente el resto de las veces.
Puedes usar también la acción Precargar (Preload) para descargar antes el audio sin necesidad de
reproducirlo en ese momento. Esto se puede hacer en el Inicio del Plano (Start of layout) para empezar a
descargar unos pocos efectos de sonido importantes para que no haya retraso en la primera reproducción. Sin
embargo esto es opcional (todos los juegos funcionan sin Precargado) y no debe usarse demasiado pues
puede ralentizar la descarga del resto y encontrarte con un tiempo sin ningún efecto de sonido.
Etiquetas de Audio
Algunas acciones afectan a parámetros de audio como el volumen al reproducirse. Sin embargo, puede haber
varios sonidos sonando a la vez. Para identificar a qué sonido quieres que afecte, se reproducen con una
etiqueta asociada. Es una secuencia que identifica al sonido. Por ejemplo, el sonido del arma del jugador se
reproducirá con la etiqueta “ArmaJugador” (“PlayerWeapon”) y la de su enemigo con “Arma Enemigo”
(“EnemyWeapon”). Entonces, la etiqueta puede usarse en la acción Ajustar Volumen (Set Volume) para
especificar a qué sonido quieres ajustar el volumen. Las etiquetas no diferencian mayúsculas y minúsculas.
Varios sonidos pueden reproducirse a la vez usando la misma etiqueta. En este caso, las acciones como
Volumen (Set Volume) afectaran a todos los sonidos con esa etiqueta.
Una etiqueta con una secuencia vacía (“”) tiene un significado especial: se refiere sólo al último sonido
reproducido con la acción Reproducir (Play). Es útil para reproducir un sonido inmediatamente después de
ajustarlo.
Limitaciones móviles
Safari para iOS y Chrome para Android tienen limitaciones al reproducir música. Mientras los efectos de
sonido se pueden reproducir en cualquier momento, la música sólo comienza cuando el usuario toca la
pantalla. Como resultado, si pones música en el plano de inicio, ésta no comenzará a sonar hasta que se
toque la pantalla.
Safari para iOS también tiene más limitaciones, ningún audio se puede reproducir hasta el primer toque. En
otras palabras, el audio empieza en silencio y el primer toque se lo quita.
Normalmente, no necesitas encargarte de esto en tus eventos. Si intentas reproducir sonidos o música en
“inicio de plano”, el objeto de audio se preparará para comenzar la siguiente vez que el usuario toque la
pantalla. Sin embargo, debes ser consciente de esto cuando diseñes tu juego. Si el primer toque cambia de
plano o para la música, el audio nunca se reproducirá. Quizás quieras comenzar la reproducción y después
animar al usuario a tocar la pantalla con un icono de “Play” o algo similar.
Audio avanzado
El objeto audio es compatible con algunas características avanzadas, como posicionar sonidos. Pero depende
del Web Audio API que no es compatible con todos los navegadores. Puedes detectar si las características
están disponibles usando la condición Audio avanzado compatible (Advanced audio supported). Si no, las
características avanzadas no modificarán el audio.
Los sonidos posicionados permiten reproducir los sonidos en una posción, o en un objeto del plano. Usando
un motor de audio 3D, el volumen y el tono se ajustan de acuerdo a la posición relativa hacia el usuario. Es
una forma fácil de dar realismo a tu juego.
Propiedades de audio
Escala de tiempo de audio (Timescale audio)
La escala de tiempo puede usarse para acelerar o ralentizar la reproducción, para algunos efectos como
cámara lenta. Ve a Delta-time and framerate independence ⇗ para más información. Esta propiedad controla
si la escala de tiempo afecta al audio.
Off reproducirá el audio sin tener en cuenta la escala de tiempo.
On (sounds only) reproducirá el audio de la carpeta Sonidos a una tasa distinta dependiendo de la escala de
tiempo, pero lo hará de la carpeta de Música sin tenerla en cuenta.
On (sounds and music) reproducirá el audio de ambas carpetas a una tasa distinta dependiendo de la escala
de tiempo.
Algunos navegadores pueden no soportar las escalas de tiempo de audio; prueba en varios navegadores.
Además, diferentes navegadores pueden usar distintos algoritmos de tiempo de audio. También puede alterar
el tono, tomando tonos más bajos para escalas más bajas, lo que puede sonar como una cinta de casete a
velocidades distintas; también puede cambiar la velocidad sin afectar el tono. Prueba en varios navegadores
para establecer el efecto deseado.
Guardar/cargar (Save/load)
Cuando guardas el juego, el estado del audio también debe hacerlo. Si marcas Todos (All), tanto audio como
música se guardarán y cargarán después, comenzando en el punto en el que se quedaron.
Si Sólo Sonidos (Sounds only) cargará los efectos de sonido, y no afectará a la música.
Si Sólo Musica (Music only), será el efecto contrario al anterior.
Si Ninguno (None) no guardará ningún audio.
Modelo de formación (Panning model)
Como se forman los sonidos posicionados. HRTF usa un modelo realista del oído humano, mientras que
equal powers es un método más simple que usa un canal estéreo.
Modelo de distancia (Distance model)
La fórmula para determinar el volumen de estos sonidos en relación con la distancia del usuario. Las
opciones son:
Lineal (Linear), usando la ecuación 1 - rolloffFactor * (distance - refDistance) / (maxDistance refDistance)
Inverso (Inverse), usando la ecuación refDistance / (refDistance + rolloffFactor * (distance - refDistance))
Exponencial (Exponential), usando la ecuación pow(distance / refDistance, -rolloffFactor).
Altura Z del usuario (Listener Z height)
La altura del usuario sobre el plano, en píxeles del plano, determina el volumen relativo y los sonidos
posicionados. Una altura Z baja tendrá cambios intensos en pequeñas distancias, mientras que uno alto
tendrá cambios más pequeños en largas distancias.
Distancia de referencia (Reference distance)
La distancia a la que el volumen de los sonidos posicionados empieza a disminuir. Para mejores resultados
debe ser al menos tan alta como la altura Z.
Distancia máxima (Maximum distance)
La distancia máxima en píxeles a la que los sonidos posicionados ya no pueden reducir su volumen.
Factor cambio (Roll-off factor)
La velocidad a la que el volumen se reduce cuando el ususario se aleja. Un factor alto significa que la
velocidad será rápida, mientras que una baja será lenta y el sonido no perderá mucho volumen.
Velocidad del sonido (Speed of sound)
La velocidad del sonido, en píxeles por segundo, usada para determinar el cambio de los sonidos
posicionados.
Factor Doppler (Doppler factor)
Cuanto cambio hay en el tono debido al efecto doppler. Un valor de 0 deshabilitara el efecto por completo, y
los valores mayores que 1 lo exagerarán.
Condiciones de Audio
Audio avanzado compatible (Advanced audio supported)
Si es verdadero, el navegador actual activará todas las características avanzadas del objeto Audio. Si es falso,
estas características no tendrán efecto en la reproducción.
Está sonando (Is any playing)
Verdadero si algún sonido se está reproduciendo.
Está en silencio (Is silent)
Verdadero si el objeto se ha silenciado usando la acción silenciar (Set silent).
Esta reproduciéndose una etiqueta (Is tag playing)
Verdadero si algún audio con etiqueta se está reproduciendo.
Finalizado (On ended)
Detonado cuando un sonido con cierta etiqueta finaliza su reproducción. No se detona para sonidos en bucle.
Precargas completas (Preloads complete)
Ya que el audio se descarga de acuerdo a la demanda, los archivos sólo se descargan cuando se usan las
acciones Precargar (Preload) o Reproducir (Play). Esta condición será verdadera cuando todos los audios
hayan descargado lo suficiente para reproducirse hasta el final. Se puede usar para precargar ciertos sonidos
en el plano inicial e ir al siguiente cuando hayan terminado, eliminando los retrasos de la primera
reproducción.
Acciones de Audio: General
Reproducir (Play)
Reproducir (por nombre) (Play (by name))
Reproduce un archivo de audio con cierta etiqueta. La segunda acción te da la oportunidad de usar una
expresión para el nombre del archivo de audio. Se pude establecer que se haga una reproducción en bucle.
Precargar (Preload)
Precargar (por nombre) (Preload (by name))
Empieza a descargar el archivo de audio par que no haya retrasos al reproducirlo. Mira la sección El Audio
se descarga según demanda para más información. No es necesario precargar los archivos para que se
reproduzcan - sólo sirve para reducir la posibilidad de retraso en la primera reproducción. Sólo se deben
precargar dos o tres sonidos de una vez.
Buscar (Seek to)
Busca un audio que se está reproduciendo en un lugar distinto en el archivo de audio. El tiempo de búsqueda
se da en segundos.
Establecer bucle (Set looping)
Establece que un sonido se reproduzca en bucle (repitiéndose cuando acabe) o no (para cuando acaba). No
todos los navegadores soportan esta característica; prueba en varios de ellos.
Establecer volumen maestro (Set master volumen)
Ajusta el volumen general de todos los audios.
Enmudecer (Set muted)
Establece si un sonido es audible o no.
Pausar (Set paused)
Pausa o reinicia algún audio mediante su etiqueta.
Ajustar tasa de reproducción (Set playback rate)
Cambia la tasa a la que se reproduce el sonido. Diferentes navegadores pueden usar diferentes algoritmos de
tiempo (alternado o no el tono) o pueden no soportar la opción; prueba en varios navegadores para conseguir
el efecto deseado. Si la propiedad Escala de tiempo de audio (Timescale audio) está habilitada, combina con
la tasa de reproducción establecida para esta acción.
Silenciar (Set silent)
Habilita, deshabilita o alterna el Modo silencio (Silent mode). En este modo los sonidos reproducidos son
mudos y no se sonarán. Es útil para crear rápidamente una alternación de audio en un título de pantalla.
Ajustar volumen (Set volume)
Cambia el volumen de un sonido. El volumen viene dado en decibelios (dB). El volumen de 0 dB es el
origen, se amplifica a partir de ahí y por debajo de 0 dB se atenúa. Por ejemplo, introduciendo un valor de 10 hará el sonido 10 unidades más flojo (aproximadamente la mitad de fuerte).
Parar (Stop)
Para inmediatamente un sonido reproduciéndose.
Parar todo (Stop all)
Para todos los sonidos reproduciéndose.
Acciones de Audio: Sonidos posicionados
Reproducir en un objeto (Play at object)
Reproducir en un objeto (por nombre) (Play at object (by name))
Como las acciones de reproducción normales pero posicionado en en un objeto. Si el objeto se mueve o rota
durante la reproducción, el sonido lo seguirá. La velocidad del objeto se usa para determinar el efecto
doppler. Se puede crear un cono para sonidos direccionales, que seguirá el ángulo del objeto.
Reproducir en una posición (Play at position)
Reproducir en una posición (por nombre) (Play at position (by name))
Como la acción anterior pero el sonido no se moverá. Simplemente se reproducirá en la posición o ángulo
delm plano. El efecto doppler se puede dar basado en la velocidad realitva del ususario y el sonido.
Establecer usuario Z (Set listener Z)
Ajusta la propiedad Usuario Z del objeto audio.
Acciones de Audio: Efectos
Se puede añadir una amplia selección de efectos usando las acciones Añadir efecto (add effect). Cada
etiqueta tiene su propio efecto, pudiendo ser varios. Todo el audio que contenga esa etiqueta se procesará
usando esos efectos. Se pueden usar para crear efectos de ambiente y otros audios creaativos. El procesador
de audio es un tema complejo y a veces fuera del alcance de este manual, así que no se detallará de forma
exhaustiva. Todo el mundo con un mínimo de experiencia en la grabación o producción de audio debe poder
manejar estos efectos. Para ejemplos interactivos, busca Audio en el Diálogo de inicio de C2. Un resumen de
cada efecto sería:











Analizador (Analyser): no cambia el audio, pero da datos de la frecuencia del dominio.
Compresor (Compressor): reduce o aumenta automáticamente el volumen incluso más allá
del volumen general.
Circunvolución (Convolution): efecto avanzado que se usa otro sonido como respuesta al
proceso del audio. Esto permite el uso de sonidos reales y la reverberación ambiental.
Retraso (Delay): un bucle con retraso. Haciendo un pequeño eco.
Distorsión (Distorsion): al estilo de un amplificador de guitarra.
Filtro (Filter): reduce o aumenta ciertas frecuencias, útil para atmosféricos simples, ajustes de
bajo, etc.
Flanger: atrasa el sonido unos pocos milisegundos y lo mezcla consigo mismo. Oscilando el
atraso se puede crear un efecto de barrido.
Aumento (Gain): un simple control del volumen, que es útil para efectos en cadena. El efecto
Mute es un efecto de este tipo al 0 que se usa después de los analizadores (para que se analice
el audio pero no se escuche).
Phaser: espacia el sonido y después lo mezcla consigo mismo. Oscilándolo también puedes
conseguir efectos de barrido.
Tremolo: oscila el volumen automáticamente, también conocido como amplitud de
modulación. Se peuden crear efectos interesantes moviendo la modulación dentro del espectro
audible (sobre 20Hz).
Ring modulator: como tremolo, pero oscila toda la fase.
Eliminar todos los efectos (Remove all effects) te permitirá suprimir todos los efectos y añadir nuevos.
Establecer parámetro de efecto (Set effect parameter) te permitirá modificarlos para que se diluyan.
Expresiones de Audio
AnalyserFreqBinAt(Tag, Index, Bin)
Da la magnitud de la energía en un contenerdo de análisis de la frecuencia. Debe ser compatible con las
características avanzadas y debe haberse añadido un efecto de análisis a la etiqueta. Índice (Index) debe ser
el índice del efecto (0 si es el primero de la etiqueta, 1 si es el segundo y así). Contenedor (Bin) es la
frecuencia del contenedor al que se refiere.
AnalyserFreqBinCount(Tag, Index)
Da el número de contenedores de frecuencia que da el analizador. Debe ser compatible con las
características avanzadas y debe haberse añadido un efecto de análisis a la etiqueta. Índice (Index) debe ser
el índice del efecto (0 si es el primero de la etiqueta, 1 si es el segundo y así).
AnalyserPeakLevel(Tag, Index)
Da el nivel máximo de audio en la última ventana FFT del analizador. Índice (Index) debe ser el índice del
efecto (0 si es el primero de la etiqueta, 1 si es el segundo y así). El valor se da en dBFS (0 dB para el
máximo y los valores negativos para los más bajos). Si intentas usar este valor se recomienda usar un tamaño
FFT de 1024, porque en una tasa del sistema de 44,1 KHz el valorse actualizará sobre 43 veces por segundo.
Los juegos suelen funcionar a 60 FPS, y los FFT más pequeños pueden causar que las ventanas FFT
desaparezcan al cambiar más rápido que la tasa de frames.
AnalyserRMSLevel(Tag, Index)
Da el nivel RMS de audio en la última ventana FFT de un analizador (la raíz cuadrada de la media de los
cuadrados de los valores). Índice (Index) debe ser el índice del efecto (0 si es el primero de la etiqueta, 1 si
es el segundo y así). El valor se da en dBFS (0 dB para el máximo y los valores negativos para los más
bajos). Si intentas usar este valor se recomienda usar un tamaño FFT de 1024, porque en una tasa del sistema
de 44,1 KHz el valorse actualizará sobre 43 veces por segundo. Los juegos suelen funcionar a 60 FPS, y los
FFT más pequeños pueden causar que las ventanas FFT desaparezcan al cambiar más rápido que la tasa de
frames.
EffectCount(Tag)
Da el número de efectos en la cadena de efectos de una etiqueta.
Duration(Tag)
Da la duración en segundos de una muestra de audio con una etiqueta.
VolumenMaestro (MasterVolume)
Da el volumen maestro actual usando la acción Establecer volumen maestro (Set master volumen).
PlaybackTime(Tag)
Da el tiempo de reproducción actual en segundos de uno con etiqueta. Empieza en 0 y cuenta hacia arriba,
excepto para sonidos en cadena que continúan contando.
Volume(Tag)
Da el volumen de un sonido con etiqueta,
6.6 Browser
El objeto Navegador accede a las características del navegador web que ejecuta el juego HTML5. También
cambia el modo a pantalla completa, detecta si el juego tiene actualizaciones y determina si la página es
visible.
A veces, las limitaciones de seguridad evitan acciones de Navegador. Por ejemplo, la acción de la ventana
Cerrar (Close) sólo se puede usar cuando la ventana se crea con javascript window.open.
Riesgos con la ejecución de secuencias Javascript
El Navegador da dos formas de hacer funcionar una secuencia en código Javascript: la acción Ejecutar
Javascript y la expresión Exec JS. Aunque son útiles, suelen resultar peligrosas.
Aquí hay un par de problemas que puedes experimentar:
 Si ejecutas una secuencia que contiene información del usuario, es posible que el usuario no pueda
introducirlo para su ejecución. Puede causar vulneración de seguridad, romper el juego, o permitir al
usuario hacer trampas.
 Si usas una característica solo compatible con algunas plataformas, tu juego se romperá en otras
plataformas. C2 te proteje porque está probado en numerosas plataformas, pero puede haber un error
si tú ejecutas los Javascript. Algunas plataformas como CocoonJS tienen muy pocas características
por lo que es fácil que se rompa.
 Por defecto, el código se minimiza al exportar. Si no escribes un Javascript compatible con el modo
avanzado del compilador de Google (Google Closure Compiler’s ADVANCED mode), también
puede romperse al exportar.
 Al ejecutar secuencias Javascript para los eventos puede resultar un código denso e ilegible que es
difícil de modificar en el futuro.
Usar el Javascript SDK oficial es siempre una forma más correcta de incluir Javascripts personalizados en
C2. Si es posible, escribe tu javascript en un plugin usando el SDK.
Condiciones de Navegador
Cookies habilitadas (Cookies enabled)
Verdadero si el usuario tiene habilitadas las cookies del navegador. (Normalmente es raro que estén
deshabilitadas ya que muchas páginas web funcionan con ellas).
Está en línea (Is online)
Verdadero si el navegador tiene activa una conexión a internet. Los juegos de C2 pueden funcionar offline para más información ve a Offline games ⇗.
Cambio de tamaño (On resized)
Detonado cuando la ventana del navegador que muestra el juego cambia de tamaño. Esto incluye el cambio
de orientación del dispositivo. La expresión del sistema Amplitud de Ventana (WindowWidth) y Altura de
Ventana (WindowHeight) se actualizarán para reflejar el nuevo tamaño si se usa el modo pantalla completa.
Tiene conexión (On went online)
No tiene conexión (On went offline)
Detonado si la conexión a internet está disponible o no durante el juego. Es común en dispositivos móviles
que pueden moverse a zonas donde no llegue la señal. La condición Está en línea (Is online) también cambia
para reflejar el estado de la conexión.
Está en vertical/horizontal (Is portrait/landscape)
Determina si se muestra en vertical (mayor altura que anchura) o en horizontal (anchura mayor que altura).
Funciona echando un simple vistazo al tamaño de la ventana del navegador.
Tecla Atrás (On back button)
Detonado cuando el usuario presiona la tecla Atrás. Nota que no todos los dispositivos tienen este botón
(como iOS, que solo tiene la tecla “Home”) y no todas las plataformas son compatibles con este detonador.
Tecla menú (On menu button)
Sólo disponible cuando exportas a PhoneGap.
Detonado cuan el usuario presiona la tecla “Menú” del dispositivo. Nota que no todos los dispositivos tienen
este botón (como iOS, que solo tiene la tecla “Home”) y no todas las plataformas son compatibles con este
detonador.
Tecla buscar (On search button)
Sólo disponible cuando exportas a PhoneGap.
Detonado cuan el usuario presiona la tecla “Buscar” del dispositivo. Nota que no todos los dispositivos
tienen este botón (como iOS, que solo tiene la tecla “Home”) y no todas las plataformas son compatibles con
este detonador.
Está descargando una actualización (Is downloading update)
Verdadero si el juego está funcionando con lo almacenado, pero descargando y actualizando la versión al
mismo tiempo. Se puede usar un auto-actualizador. Para más información ve a Offline games ⇗.
Actualización descargada (On update ready)
Detonado cuando un juego está funcionando con lo almacenado, pero una versión actualizada ha terminado
su descarga. Si el usuario todavía está en el menú del juego o en la página de créditos quizás quieras
preguntar al usuario si quiere recargar la página para cargar la nueva versión (o simplemente hacerlo
automáticamente). Para más información ve a Offline games ⇗.
Está en pantalla completa (Is fullscreen)
Verdadero si el navegador está en modo pantalla completa.
Página visible (Page is visible)
Verdadero si la página en la que el juego HTML5 está funcionando está visible actualmente. La página
cuenta como escondida si la ventana está minimizada, si está en una pestaña distinta a la que se está viendo
o, en un dispositivo móvil, cuando la página está en segundo plano. Cuando es así la página se pausa
automáticamente.
Suspendido (On suspended)
Reanudado (On resumed)
Detonado cuando la visibilidad de la página cambia o cuando, en un dispositivo móvil, la página está en
segundo plano o en primero. Cuando es invisible la aplicación se suspende: todos los eventos se paran y los
sonidos se silencian.
Acciones de Navegador
Ejecutar Javascript (Execute Javascript)
Hace funcionar una secuencia Javascript. Se necesita mucha precaución para hacerlo correctamente, ve
a la sección “Riesgos con la ejecución de secuencias Javascript”.
Empezar grupo (Start group)
Terminar grupo (End group)
Empieza o termina un grupo en la consola de error del navegador. El navegador puede dar la opción de
expandir/colapsar en grupo fácilmente. En ocasiones se les puede dar un nombre. Para crear un grupo, usa
Empezar, después una serie de acciones de Registro (Log) y finalmente Terminar.
Registro (Log)
Registra un mensaje, advirtiendo o señalando un error en la consola de error del navegador. Puede ser útil
para depurar, probar y diagnosticar.
Ir atrás (Go back)
Ir adelante (Go forward)
Se mueve por el historial de navegación como si clicaras en los botones Atrás y Adelante del navegador.
Ir al inicio (Go home)
Va a la página de inicio del navegador.
Ir a la URL (Go to URL)
Va a una URL dada. Nota que usa la misma ventana/pestaña en la que se está mostrando el juego, así que
esta acción finalizará el juego.
Activar descarga (Invoke download)
Activa una URL como un archivo de descarga del navegador. Incluso si se trata de una web o documento, se
descargará como un archivo en la interfaz del navegador. La URL puede ser de cualquier web de internet, o
el nombre de un archivo importado del proyecto, o una URL de datos (para descargar capturas de pantalla).
El parámetro nombre de archivo te permite elegir el nombre que el navegador le dará a la descarga, que
puede ser distinto del nombre de la fuente de descarga.
Activar descarga de secuencia (Invoke download of string)
Como la acción anterior, pero en vez de una URL, descargará una secuencia. Se crea un dato URI que
combina MIME type y datos, y después pasa al navegador para descargar. Es una buena forma de descargar
secuencias en formato JSON, por ejemplo, datos de objeto de la expresión AsJSON.
Abrir URL en una ventana nueva (Open URL in new window)
Va a una URL dada en una nueva ventana (o pestaña, según la configuración del navegador). El juego
continua en la ventana/pestaña anterior.
Recargar (Reload)
Fuerza que la página se recargue. El juego se reinicia.
Alerta (Alert)
Hace que surja un mensaje de “alerta” en un cuadro.
Desenfocar (Blur)
Desenfoca la ventana del navegador.
Cancelar pantalla completa (Cancel fullscreen)
Vuelve al modo pantalla normal si el navegador está en pantalla completa.
Cerrar (Close)
Cierra la ventana actual si el script da permiso para ello.
Enfocar (Focus)
Enfoca la ventana del navegador.
Bloquear orientación (Lock orientation)
Desbloquear orientación (Unlock orientation)
Bloquea la vista del juego a modo vertical u horizontal solamente, si la plataforma lo permite. Sólo tiene
efecto en dispositivos móviles. El juego puede estar en pantalla completa antes de requerir esto (usando la
acción Pedir pantalla completa). Si desbloqueas la orientación restauras lo anterior, como mover la
orientación de acuerdo a la posición del dispositivo.
Solicitar pantalla completa (Request fullscreen)
Solicita que el navegador entre en el modo pantalla completa. Nota que el navegador puede ignorar la
solicitud a menos que la acción la haga el usuario con un clic del ratón, presionando una tecla o tocando algo
en la pantalla. Hay tres modos de pantalla completa:
Centro (Center) - centra la pantalla completa en la ventana del juego.
Estirar (Stretch) (crop) - extiende la ventana del juego para que ocupe la ventana completa.
Estirar (Stretch) (scale) - escala (hace zoom) en la ventana del juego para que ocupe la ventana completa.
Las dos últimas opciones corresponden a la propiedad del proyecto Pantalla completa en el navegador
(Fullscreen in browser). Para más información ver supporting multiple screen sizes ⇗.
Expresiones de Navegador
Nivel de batería (BatteryLevel)
Da el nivel de carga desde 0 (descargado) a 1 (lleno). Por ejemplo, para obtener el nivel de batería en
porcentaje, usa round(Browser.BatteryLevel * 100). Si el dispositivo no tiene batería o no se sabe el nivel da
1.
Tiempo de batería restante (BatteryTimeLeft)
Si el dispositivo tiene batería y se sabe el tiempo que le queda, da la estimación en segundos hasta que el
dispositivo se quede sin ella. Si no hay o no se sabe el tiempo marcará infinito.
ExecJS
Hace funcionar una secuencia Javascript y da su valor. Se necesita mucha precaución para hacerlo
correctamente, ve a la sección “Riesgos con la ejecución de secuencias Javascript”.
Idioma (Language)
Da el idioma configurado en el navegador. Ejemplo, en-US.
Nombre (Name)
Da el nombre que el navegador se da a sí mismo. Este puede ser inexacto por razones de compatibilidad
anteriores, como Google Chrome que se llama Netscape.
Plataforma (Platform)
Da la plataforma en la que el navegador se ejecuta, como Win32 para Windows.
Producto (Product)
Da el nombre del producto del navegador. Este puede ser inexacto por razones de compatibilidad anteriores,
como Google Chrome, cuyo producto se llama Gecko.
Agente de usuario (UserAgent)
Da la secuencia completa del agente de usuario para el navegador, por ejemplo Mozilla/5.0 (Windows NT
6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63.
Vendedor (Vendor)
Da el vendedor del navegador, como Google Inc. para Google Chrome.
Versión (Version)
Da la versión actual del navegador como una secuencia. Puede ser simplemente un subtexto en la secuencia
del agente de usuario.
Ratio de Píxeles del Dispositivo (DevicePixelRatio)
El número de píxeles físicos por los píxeles CSS. Es un indicador de la densidad de la vista. Por ejemplo,
“retina” da un valor de 2, mientras que las vistas normales dan 1.
Anchura de Pantalla (ScreenWidth)
Altura de pantalla (ScreenHeight)
Da las dimensiones de la pantalla del dispositivo disponible para el sistema operativo.
Título (Title)
El título del documento HTML actual.
Dominio (Domain)
El dominio actual, como scirra.com.
Almohadilla (Hash)
La secuencia tras la almohadilla al final de la URL, incluyendo la almohadilla. Por ejemplo, si la URL es
http://scirra.com/mygame/index.html#teapot, esto da #teapot.
Nombre de Trayectoria (PathName)
La trayectoria relativa al dominio de la URL. El nombre de la trayectoria para
http://scirra.com/mygame/index.html#teapot sería /mygame/index.html.
Protocolo (Protocol)
El protocolo actual, normalmente http: o https:.
Parámetro de pregunta (QueryParam)
Da un parámetro de secuencia de pregunta por el nombre. Por ejemplo, si la URL termina con
index.html?foo=bar&baz=wan, QueryParam("foo") da bar y QueryParam("baz") da wan.
Secuencia de pregunta (QueryString)
Da la secuencia de pregunta completa de la URL incluyendoel símbolo de interrogación. Por ejemplo, si la
URL termina con index.html?foo=bar&baz=wan, da ?foo=bar&baz=wan.
Referencia (Referrer)
Da la página anterior que enlaza a la actual, si la hay.
URL
Da la URL actual completa en la barra de direcciones del navegador, incluyendo el protocolo.
6.7 Botón (Button)
El objeto Botón crea un botón que el usuario puede clicar para realizar una acción. También puede ser un
cuadro para marcar. La imagen de abajo muestra los dos modos de este objeto en Google Chrome.
Los controles de formulario son elementos HTML que flotan sobre el lienzo del juego en la página HTML.
Por lo tanto, no se puede mostrar nada por encima de un control, aparte de otros controles.
Los controles se posicionan ellos solos de acuerdo al paralaje de la capa, su escala y otros. Sin embargo, no
están realmente en el juego (ya que flotan encima) por lo que se recomiendo evitar el uso de
desplazamientos, paralaje y escalas, de otra forma no quedaría natural.
Estilo de Botón
Los botones se pueden personalizar de un gran número de formas usando CSS (Hojas de estilo en cascada).
En vez de tener muchas acciones para ajustar todas las posibles propiedades, tiene una sola acción Ajustar
estilo CSS (Set CSS style). CSS ahorra trabajo, es sencillo para usar con propiedades simples. Aquí algunos
ejemplos:
Hacer el texto rojo (Make the text red): Ajusta el "color" a "rojo".
Hacer el fondo amarillo (Make the background yellow): Ajusta el "color del fondo" a "amarillo".
Hacer el borde gris claro y fino (Make the border a thick light grey: Ajusta el "borde" a "3px solid
#AAAAAA".
Hacer la letra más grande (Make the font bigger): Ajusta el "tamaño de letra" a "2em".
Hacer un borde rojo y discontinuo (Make a dashed red border): Ajusta el "borde" a "2px dashed red".
Propiedades de Botón
Tipo (Type)
Si se trata de un botón para pulsar o un cuadro para marcar. Ve a la imagen anterior para verlos.
Texto (Text)
El texto que aparecerá en el botón.
Consejo de Herramienta (Tooltip)
Aparece en la mayoría de los navegadores si el usuario pasa el ratón por encima de una herramienta y para.
Déjalo en blanco si no quieres poner ningún consejo.
Visibilidad Inicial (Initial Visibility)
Si el botón se muestra o no en el inicio. Si es Invisible el botón aparecerá con la acción Hacer visible (Set
visible).
Habilitado (Enabled)
Si el botón está habilitado en el inicio. Si No, el botón estará deshabilitado y no podrá pulsarse.
Tamaño de letra automático (Auto font size)
Ajusta la propiedad de tamaño de letra automáticamente de acuerdo a la escala del plano y la capa. Esto
evitará que tengas que usar manualmente la propiedad de tamaño de letra de CSS. Establece No si quieres
usar los estilos de CSS para ajustar la letra.
ID (Opcional)
Una id adicional para el elemento en el DOM (Modelo de Objetos del Documento). Puede ser útil para
acceder al valor del elemento desde scripts externos, o dar estilo con CSS en la página HTML.
Marcado (Checked)
Si el tipo es Cuadro para marcar (Checkbox), esto hace un control inicial del estado.
Condiciones de Botón
Marcado (Is checked)
Si el Tipo es Cuadro para marcar (Checkbox) es verdadero si está marcado.
Clicado (on clicked)
Detonado cuando el usuario presiona el botón, con el teclado, ratón o tocándolo.
Acciones de Botón
Ajustar estilo CSS (Set CSS style)
Ajusta un estilo CSS (Hojas de estilo en cascada) en el elemento Botón. Para más información ver la sección
anterior Estilo de Botón. Nota que si la propiedad Tamaño de letra automático (Auto font size) está activada,
cualquier cambio a la propiedad tamaño de letra se sobrescribirá.
Marcar (Set checked)
Si el tipo es Cuadro de marcar (Checkbox), marca el cuadro actual.
Habilitar (Set enabled)
Habilita o deshabilita el botón. Cuando está deshabilitado no puede ser pulsado.
Enfocar (Set focused)
Enfoca el botón.
Ajustar texto (Set text)
Ajusta el texto del botón.
Ajustar consejo de herramienta (Set tooltip)
Ajusta el texto que aparece en el consejo. Déjalo en blanco si no quieres que haya consejo.
Desenfocar (Set unfocused)
Quita el enfoque del botón.
Alterna marcado (Toggle checked)
Si el tipo es Cuadro de marcar (Checkbox), alterna el marcado del cuadro actual.
Expresiones de Botón
El objeto Botón no tiene expresiones.
6.8 Diccionario (Dictionary)
El objeto Diccionario almacena secuencias y números. Cada valor tiene asociada una clave, que es una
secuencia. Es un objeto de almacenamiento de datos – no hace ninguna corrección ortográfica ni por
características especiales del idioma.
Los nombres clave en Diccionario distinguen siempre entre mayúsculas y minúsculas. Esto significa que
“SCORE” se considera diferente a “score”.
Ejemplo
Suponemos que el número 100 se almacena con la clave “puntuación” (“score”) y la secuencia “Joe” se
almacena con la clave “nombre” (“name”). El resultado del almacenaje sería así:
“name”: “Joe”
“score”: 100
Reuperar la clave “nombre” con Dictionary.Get("name") dará “Joe”, y recuperar “puntuación” dará 100. Al
ajustar “puntuación” a 50 cambiará el valor de la clave.
Esto es como almacenar datos en variables de ejemplo o en variables de evento, pero ya que puedes usar
secuencias como claves puedes almacenar cualquier número de valores.
Condiciones de Diccionario
Cotejar valor (Compare value)
Coteja el valor almacenado para una clave.
Tiene clave (Has key)
Comprueba si hay alguna clave almacenada
Está vacía (Is empty)
Verdadero cuando no hay claves almacenadas.
Para cada clave (For each key)
Repite el evento una vez para cada clave almacenada. Las expresiones Clave actual (CurrentKey) y Valor
actual (CurrentValue) dan las claves respectivas.
Cotejar valor actual (Compare current value)
Sólo válido en un evento Para cada clave (For each key). Coteja el valor de la clave actual.
Acciones de Diccionario
Añadir clave (Add key)
Añade una nueva clave para almacenar, con un valor dado. Si la clave ya existe el valor se actualiza.
Borrar (Clear)
Elimina todas las claves almacenadas, haciendo que el objeto quede vacío.
Eliminar clave (Delete key)
Elimina una clave y su valor almacenado. Si la clave no existe no tiene efecto.
Establecer clave (Set key)
Actualiza el valor de una clave que ya existe. Si la clave no existe no tiene efecto. (No como Añadir clave
(Add key), con esta acción no se creará).
Descargar (Download) (JSON)
Abre una nueva pestaña del navegador con un enlace para descargar los contenidos de Diccionario en
formato JSON. Sólo sirve para desarrollo. Quizás te aparezca una ventana emergente con un aviso.
Cargar (Load) (JSON)
Carga todas las claves y valores de datos JSON previamente recuperados del objeto Diccionario usando la
acción Descargar (Download) o la expresión AsJSON.
Expresiones de Diccionario
Conseguir (Get)
Da el valor almacenado de una clave, Dictionary.Get("score"). Si la clave no existe da 0.
Contador de Clave (KeyCount)
Da el número de claves almacenadas.
Clave actual (CurrentKey)
Valor actual (CurrentValue)
En el evento Para cada clave (For each key), esto da la clave y su valor (respectivamente) de la clave actual
que está siendo repetida.
AsJSON
Da los contenidos del objeto Diccionario en formato JSON. Puede ser cargado más tarde con la acción
Cargar (Load), enviada a un servidor mediante AJAX, guardada en un disco, etc.
6.9 Facebook
El objeto Facebook (FB de ahora en adelante) te permite integrar tu juego con FB. El tutorial How to make
a Facebook game trata sobre como publicar juegos en FB y tiene una guía paso a paso para usar el objeto
Facebook. Esta sección del manual simplemente describe sus características.
El objeto FB se pude usar en cualquier juego, no solo para juegos de FB. Puedes tener tu juego funcionando
en tu propio servidor. El objeto te permitirá conectar con la cuenta de FB del usuario incluso cuando este
esté jugando en tu web. Sin embargo, es necesario conectar la aplicación con FB para guardar la ID de la
aplicación. Se pueden conectar a FB mediante Facebook Developers.
El objeto FB hace solicitudes asíncronas. Esto significa que el juego sigue funcionando mientras operaciones
que pueden durar varios segundos (como enviar una puntuación) se completan. Por ello, el objeto funciona
con una acción que activa una tarea (como Publicar puntuación (Publish scoore)), que, al completarse,
detona una condición (como Puntuación enviada (On score submitted)). Esto tardará unos segundos
mientras el juego sigue funcionando, en vez de congelarlo y esperar a que se completen las acciones. Como
muchas solicitudes asíncronas, las acciones pueden completarse en un orden distinto del que fueron hechas.
Preparación
El objeto Facebook tarda un rato en cargarse. No intentes usarlo antes de que se haya detonado Preparado
(On ready) o que sea verdadero Está preparado (Is ready), ya que si no la acción se ignorará.
Debes introducir una App ID para que funcione correctamente, incluso en la prueba. Si no lo haces, el objeto
no se preparará. Esto es porque Facebook no permite el uso de API a menos que tenagas uan App ID real.
Registro
El usuario debe debe registrarse en su cuenta de Facebook para usar las características del objeto Facebook,
como escribir en el muro del usuario. Se lleva a cabo con la acción Registrar (Log in) y se debe esperar
unos segundos hasta que se detone Usuario registrado (On user logged in).
Propiedades de Facebook
ID de la aplicación (App ID)
La ID dada a la aplicación en la sección de Programadores de FB (FB Developers).
Aplicación Secreta (App Secret)
Sólo necesario si piensas usar Puntuaciones API (Scores API). Si no, no uses esta propiedad. La aplicación
secreta se puede encontrar en los Programadores de FB y es necesaria para habilitar las Puntuaciones API
(Scores API).
Condiciones de Facebook
Está preparado (Is ready)
Verdadero si el objeto FB está preparado para usarse. Cuando es Falso es que todavía está cargando los
scripts necesarios.
Usuario registrado (Is user logged in)
Verdadero si el usuario ha iniciado sesión en su cuenta de FB.
Nombre disponible (On name available)
Detonado inmediatamente tras Usuario ha iniciado sesión (Is user logged in) cuando la expresión que
obtiene el nombre de usuario está disponible.
Preparado (On ready)
Detonado cuando el objeto está preparado para usarse. Antes de que se detone, el objeto estará preparando
los datos necesarios, por lo que cualquier otra acción será ignorada.
Usuario registrado (On user logged in)
Detonado cuando el usuario ha iniciado sesión satisfactoriamente. También se detona al principio si el
usuario ha iniciado sesión anteriormente y vuelve a la aplicación con la contraseña recordada. Además, se
detona al principio de cada plano mientras el usuario siga registrado.
Usuario ha cerrado sesión (On user logged out)
Detonado si el usuario cierra sesión durante el juego.
Puntuación alta (On hi-score)
Detonado una vez por cada puntuación alta conseguida tras la acción Solicitar tabla de puntuaciones altas
(Request hi-score board). Las expresiones Nombre (HiscoreName), Posición (HiscoreRank) y Puntuación
(Score) contienen la información.
Puntuación enviada (On score submitted)
Detonado cuando la acción Publicar puntuación (Publish score) se ha completado satisfactoriamente.
Puntuación más alta del usuario disponible (On user top score available)
Detonado cuando la acción Solicitar puntuación más alta del usuario (Request user top score) se ha
completado satisfactoriamente. La expresión Puntuación (Score) tiene esta puntuación.
Acciones de Facebook
Iniciar sesión (Log in)
Abre una ventana emergente pidiendo al usuario que se registre. Esto sólo se activa por voluntad del usuario,
como presionar una tecla, hacer clic o tocar la pantalla. El usuario puede cancelar el registro por lo que esto
no está garantizado su éxito. Se pueden pedir dos permisos: publicar automáticamente (permitiendo que las
publicaciones automáticas en el muro del usuario) y publicar puntuaciones (permitiendo el uso del sistema
de puntuaciones altas). Puedes pedir al usuario escribir en el muro mediante un diálogo sin tener que pedir
permiso cada vez - hacerlo siempre automáticamente. No pidas permisos que tu aplicación no necesite.
Cerrar sesión (Log out)
Cierra la sesión el usuario de FB.
Pedir compartir enlace (Prompt to share link)
Abre un diálogo pidiendo al usuario que comparta la URL que tú quieras en su muro. Se pueden usar
descripciones o imágenes opcionalmente. No requiere permisos, pero los usuarios pueden cancelar la acción.
Pedir compartir la aplicación (Prompt to share this app)
Abre un diálogo pidiendo al usuario que comparta la URL de la aplicación en su muro. Se pueden usar
descripciones o imágenes opcionalmente. No requiere permisos, pero los usuarios pueden cancelar la acción.
Pedir escribir en el muro (Prompt wall post)
Abre un diálogo pidiendo al usuario escribir en su muro. No se añadirá contenido ni enlaces - sólo un cuadro
de texto vacío para que el usuario escriba lo que quiera. No requiere permisos, pero los usuarios pueden
cancelar la acción.
Publicar enlace (Publish link)
Publica de forma automática una URL en el muro del usuario sin preguntárselo. Se pueden usar
descripciones o imágenes opcionalmente. Requiere que el usuario haya aceptado Publicar automáticamente
(Publish to stream).
Publicar en el muro (Publish wall post)
Publica de forma automática un mensaje en el muro del usuario sin preguntárselo. Requiere que el usuario
haya aceptado Publicar automáticamente (Publish to stream).
Publicar puntuación (Publish score)
Publica una puntuación numérica en la tabla de puntuaciones altas del juego. Requiere que el usuario haya
aceptado Publicar puntuaciones (Publish scores). Cuando la acción se completa se detona Puntuación
enviada (On score submitted).
Solicitar tabla de puntuaciones altas (Request hi-score board)
Solicita las puntuaciones altas del juego. Requiere que el usuario haya aceptado Publicar puntuaciones
(Publish scores). Esta acción detonará Puntuación alta (On hi-score) una vez por cada puntuación que
aparezca en la tabla. Es de tu elección elegir la manera de mostrar estas puntuaciones; una forma sencilla es
anexando cada puntuación a un objeto de texto.
Solicitar la puntuación más alta del usuario (Request user top score)
Solicita la puntuación más alta del jugador hasta el momento en el juego. Requiere que el usuario haya
aceptado Publicar puntuaciones (Publish scores). Cuando se completa la acción se detona Puntuación más
alta del usuario disponible (On user top score available).
Expresiones de Facebook
Nombre (FirstName)
El nombre actual del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name available).
Nombre completo (FullName)
El nombre completo actual del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name
available).
Apellidos (LastName)
Los apellidos actuales del usuario. Sólo se ajusta tras la detonación de Nombre disponible (On name
available).
ID de usuario (UserID)
La ID actual del usuario, que se usa para distinguir diferentes usuarios con el mismo nombre. Sólo se ajusta
después de que el usuario se haya registrado.
Nombre para Puntuación alta (HiscoreName)
El nombre en la tabla de Puntuaciones Altas. Se ajusta en el evento Puntuación Alta (On hi-score).
Posición en Puntuaciones Altas (HiscoreRank)
La posición actual en la tabla de Puntuaciones Altas, desde 1 hacia abajo. Se ajusta en el evento Puntuación
Alta (On hi-score).
ID de usuario en Puntuaciones Altas (HiscoreUserID)
Da la ID actual del usuario en la tabla de Puntuaciones Altas. Es único aunque dos personas en la tabla
tengan el mismo nombre.
Puntuación (Score)
La puntuación más alta actual en el evento Puntuación Alta (On hi-score) o la puntuación actual del usuario
en Puntuación más alta del usuario disponible (On user top score available).
6.10 Función (Function)
El objeto Función puede hacer funcionar un evento diferente (Función (On function)) en una acción (Llamar
función (Call function)). Es análogo a la función en los lenguajes de programación tradicionales. Usar
funciones puede ayudarte a organizar eventos y evitar tener grupos de acciones o eventos duplicados.
Sobre funciones
El propósito principal de este objeto es usar la acción Llamar función (Call function). Esta toma el nombre
de una función (por ejemplo: Llamar función “CrearEnemigo” (Call function “CreateEnemy”)). La acción
detona el evento Función (On function) correspondiente (por ejemplo: Función “CrearEnemigo” (Function
“CreateEnemy”)), activando las acciones del evento y cualquier sub-evento, antes de activar la acción
original Llamar función y continuar desde donde estaba.
Otro ejemplo, supón que creas un enemigo con estado aleatorio cada 5 segundos usando este evento:
Supón que hay otros dos eventos donde quieres crear el mismo tipo de enemigo: uno cuando el jugador entra
en una trampa y otro cada 4 segundos en una lucha con el “jefe”. Sin este objeto, tendrías que copiar y pegar
las acciones muchas veces, como esto:
Nota que esto supone un inconveniente. Hay veces que necesitas repetir acciones en varios lugares. SI
quieres hacer un cambio, tienes que encontrarlas todas y cambiarlas una a una. Podemos quitar repeticiones
usandi Función. Al crear una Función CrearEnemigo (CreateEnemy) que tiene acciones repetidas, podemos
sustituirlas todas con la acción Llamar función (Call function):
Funciona de igual forma que el evento anterior, pero es mucho más corto y conveniente. Podemos usar la
acción “CreateEnemy” cada vez que necesitemos crear enemigos.
También es útil dividir en varias funciones tus eventos para que puedas volverlas a usar en otras hojas.
Parámetros
Cuando usas una función, puedes usar también parámetros, que son números o secuencias. Por ejemplo, la
función “CreateEnemy” del ejemplo anterior se puede modificar para tener dos paráetros: las coordenadas X
e Y a las cuales aparecerá el enemigo. Esto ayuda a añadir información extra al usar las funciones.
Para añadir un parámetro, clica el enlace Añadir parámetro (Add parameter) que aparece en el diálogo de
parámetros cuando editas la acción Call function. Es un enlace especial que solo aparece para esta acción del
objeto Función. Dentro del evento On function puedes usar la expresión Param con el índice 0 del parámetro
para que te de el valor correspondiente.
Características avanzadas de las funciones
Como en los lenguajes de programación, el objeto Función es compatible con:




Funciones llamando a otras funciones.
Funciones llamándose a sí mismas (recursión).
Obtener valores de las funciones.
Llamar funciones desde expresiones (que también da el valor).
Nota que los dos primeros guiones crean una nueva “pila” de variables locales. En otras palabras, como en
los lenguajes de programación, las variables locales son únicas en cada nivel de la función. No se aplica a
variables locales estáticas o a variables globales.
Nota también que el objeto Función te lleva a la consola del navegador si se usa incorrectamente, como
llamar una función inexistente o acceder a un parámetro que no ha sido aprobado. Esto te puede ayudar a
identificar problemas en grandes proyectos. Para más información acerca de la consola del navegador ve a
Checking for errors in browsers.
Obtener valores de funciones
Por ejemplo, una función factorial puede calcular el resultado matemático y darlo. En un evento On function
el valor dado puede ajustarse usando la acción Set return value.
Si el evento fue llamado mediante la acción Call function, el valor obtenido estará disponible más adelante
usando la expresión ReturnValue. Las funciones pueden ser llamadas directamente usando la expresión Call;
en el que aparecerá el valor automáticamente como resultado de dicha expresión.
Condiciones de Función
Cotejar parámetro (Compare parameter)
Coteja el valor de uno de los parámetros de una llamada de función. Sólo se debe usar en un evento On
function, ya que fuera de él no hay parámetros establecidos.
Función (On function)
Detonado cuando la acción correspondiente Llamar función (Call function) se usa.
Acciones de Función
Llamar función (Call function)
Detona el evento On function. Se pueden usar parámetros adicionales mediante la expresión Param.
Ajustar valor dado (Set return value)
En un evento, ajusta el valor que se dará en la llamada. Se puede obtener mediante la expresión Call o
ReturnValue.
Expresiones de Función
Llamada (Call)
Llama una función directamente desde la expresión. Da el valor ajustado en la función, o 0 si no hay
ninguno. Se pueden añadir parámetros adicionales tras el nombre de la función, por ejemplo
Function.Call(“CreateEnemy”, 123, 456).
Param
Muestra un parámetro aprobado para una función mediante su índice basado en 0. Por ejemplo
FunctionParam(0) da el valor del primer parámetro.
Contador de Parámetros (ParamCount)
Da el número de parámetros aprobados para una función.
Dar Valor (ReturnValue)
Da el valor usando la acción Set return value de la última llamda de función. Si no se usa, dará 0.
6.11 Mando (Gamepad)
El objeto Mando te permite detectar la entrada de un mando de consola, teclado de PC o joystick. Si bien
debe funcionar con varios dispositivos, está diseñado para funcionar mejor con mandos de la XBox 360 o los
diseñados de forma similar (con los mismos botones).
Desafortunadamente, si un dispositivo es válido o no depende de muchos factores, incluyendo el sistema
operativo, los drivers disponibles y el soporte del navegador. Esto hace difícil saber de antemano si un
dispositivo específico funcionará. Los mandos de la XBox 360 funcionan con un sistema Windows y con el
navegador Google Chrome. Los de la Playstation 3 no funcionan sin instalar ciertos drivers. Por esta razón
se recomienda la primera opción siempre habilitando un método alternativo como el teclado.
La mayoría de los dispositivos móviles no tienen una toma física para conectar un controlador. Por ello,
normalmente sólo se habilita el uso de mandos en ordenadores de mesa. Para móviles con pantalla táctil,
céntrate en el diseño de controles táctiles touch controls ⇗.
Para evitar que las páginas web hagan un seguimiento a través de tus controladores disponibles, la mayoría
de los navegadores que los soportan dirán que no hay controladores conectados hasta que se pulse un botón
de uno de los dispositivos.
Asignación de teclas (Key mapping)
Diferentes controladores tienen distintas disposiciones de los botones, o estos tienen distintos nombres. Por
ejemplo, los de la Playstation 3 usan cuadrado, círculo, triángulo y X mientras que los de la XBox 360 usan
A, B, X e Y (La X aparece en distinto lugar en ambos controladores). El objeto Mando se refiere al
controlador de la XBox 360 únicamente.
El objeto Mando también asignará otros botones al diseño del controlador de la XBox 360 para asegurar que
el mismo botón detone siempre el mismo evento. Sin embargo no es práctico ajustar esto para cada
dispositivo, así que algunos botones pueden detonar distintos eventos. Por ello es por lo que se recomiendan
los controladores de la XBox 360. Si estás interesado en usar otros asegúrate de probarlos.
Las entradas en bruto se obtienen, evitando la asignación de teclas, usando la expresión En bruto (Raw).
Controlar comportamientos con Mando
Para controlar comportamientos con entradas de Mando, usa la acción Control Simulado (Simulate control).
Abajo se muestra un ejemplo de cómo controlar el comportamiento Plataforma con el stick izquierdo y el
botón A para saltar.
Para más información, ver la sección Controles personalizados en la Referencia de Comportamientos.
Varios Mandos
Varios Mandos se pueden conectar a un solo ordenador. Para diferenciar entre ellos, la mayoría de las
acciones, condiciones y expresiones de este objeto toman unos parámetros. Es un índice basado en 0 del
controlador. Por ejemplo, 0 identifica al primer controlador, 1 al segundo y así sucesivamente. Esto te
permite jugar en multijugador.
Propiedades de Mando
Zona sin cobertura analógica (Analog deadzone)
Los dispositivos con joysticks analógicos son extremadamente sensibles. Esto te permite controlar los juegos
de forma precisa, pero el joystick registrará también un leve movimiento cuando no se toque. Si no se
ignoraran ciertos valores, el jugador controlado por el usuario se movería de forma incorrecta cuando este no
tocara el joystick. Para resolver el problema los valores por debajo de cierto límite se ignoran. El
movimiento del joystick tiene un rango de -100 a 100 en cada eje, y si la magnitud está por debajo del valor
Zona sin cobertura analógica (Analog deadzone) dará 0. Por ejemplo, por defecto es 25, así que valores
desde -25 a 25 contarán como 0. Se recomienda este valor para asegurar que no haya movimientos no
intencionados.
Condiciones de Mando
Cotejar ejes (Compare axis)
Coteja la posición de un joystick analógico en un mando específico. Los valores dentro de la Zona sin
cobertura analógica (Analog deadzone) dan 0. El rango de valores de los ejes es de -100 a 100.
Tiene Mandos (Has gamepads)
Verdadero si hay algún mando conectado y activado. Para evitar que sitios web te controlen en base a los
mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta que se pulsa un
botón.
Botón presionado (Is button down)
Verdadero si un botón se presiona en un mando específico. Los botones se denominan de acuerdo a los
controladores de la XBox 360, y se pueden asignar como se explica en Asignación de Teclas.
Mando conectado (On gamepad connected)
Detonado cuando un dispositivo de mando se conecta al ordenador. Para evitar que sitios web te controlen
en base a los mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta
que se pulsa un botón, cuando también funcionará esta condición.
Mando desconectado (On gamepad disconnected)
Detonado cuando un dispositivo de mando se desconecta del ordenador, como quitándole el cable.
Botón índice apagado (Is button index down)
Verdadero si el botón seleccionado por su número de índice está apagado en un mando específico. El índice
es suceptible de mapeo como se describe en Claves de mapeo (Key mapping).
Cualquier botón presionado (On any button pressed)
Detonado cuando cualquier botón se presiona en un mando específico. La expresión LastButton se ajusta con
el índice del botón.
Cualquier botón soltado (On any button released)
Detonado cuando cualquier botón se suelta en un mando específico. La expresión LastButton se ajusta con el
índice del botón.
Botón índice presionado (On button index pressed)
Detonado cuando un botón seleccionado por su índice numérico se presiona en un mando específico. El
índice es suceptible de mapeo como se describe en Claves de mapeo (Key mapping).
Botón índice soltado (On button index released)
Detonado cuando un botón seleccionado por su índice numérico se suelta en un mando específico. El índice
es suceptible de mapeo como se describe en Claves de mapeo (Key mapping).
Botón presionado (On button pressed)
Detonado cuando un botón dado se presiona en un mando específico. Los botones se refieren al mando de la
Xbox 360 y son suceptibles de mapeo como se describe en Claves de mapeo (Key mapping).
Botón soltado (On button released)
Detonado cuando un botón dado se suelta en un mando específico. Los botones se refieren al mando de la
Xbox 360 y son suceptibles de mapeo como se describe en Claves de mapeo (Key mapping).
Acciones de Mando
El objeto Mando no tiene acciones.
Expresiones de Mando
Eje (Mando, Índice) (Axis(Gamepad, Index))
Recupera la posición actual de un joystick analógico. Índice (Index) especifica a la izquierda y a la derecha
en los ejes X e Y, de acuerdo a la Asignación de Teclas. EL rango de valores de los ejes va desde -100 a 100.
Los valores dentro de la Zona sin cobertura analógica (Analog deadzone) dan 0.
Botón (Mando, índice) (Button (Gamepad, Index))
Recupera el valor al pulsar un botón. Índice (Index) especifica el índice basado en 0 del botón en el menú
desplegable de la condición Botón presionado (Is button down) (0 da el valor para el botón A). El valor dado
depende de las características del botón: si el botón es sensible a la presión, puede dar valores entre 0 y 100,
de otra forma dará 0 para no presionado y 100 para presionado. Los botones que no son sensibles a la
presión son más fáciles de detectar usando la condición Botón presionado (Is button down).
Cantidad de Mandos (GamepadCount)
Da el número de mandos conectados y activados. Para evitar que sitios web te controlen en base a los
mandos que tengas, la mayoría de los navegadores no envían los datos del controlador hasta que se pulsa un
botón.
ID de Mando (Mando) (GamepadID (Gamepad))
Una secuencia que representa el modelo y la manufactura de un mando específico, por ejemplo “XBox 360
controller”. Sin embargo, en la práctica varía de acuerdo al sistema y al navegador usado.
Último Botón (LastButton)
Da el índice numérico del último botón presionado en un mando específico. Es útil con los detonadores On
any button pressed y On any button released, para personalizar los controles.
Eje en bruto (Mando, Índice) (RawAxis(Gamepad, Index))
Recupera la entrada en bruto del eje. Da el valor sin asignar la tecla o aplicar la zona sin cobertura. El rango
de valores del eje será de -100 a 100.
Cuenta de Eje en bruto (Mando) (RawAxisCount(Gamepad))
Da el número de ejes disponible en la entrada en bruto. Da el valor sin asignar teclas.
Botón en bruto (Mando, Índice) (RawButton (Gamepad, Index))
Recupera la entrada del botón en bruto para un mando y un índice específico. Da el valor sin asignar teclas.
Cuenta de Botón en Bruto (Mando) (RawButtonCount(Gamepad))
Da el número de botones disponibles en la entrada en bruto. Da el valor sin asignar teclas.
6.12 Geolocalización (Geolocation)
El objeto Geolocalización permite estimar la localización geográfica del usuario. No todos los dispositivos
son compatibles con esto (usa la acción Es compatible (Is supported) para comprobarlo), y en aquellos que
sí, la precisión puede variar de forma significativa. Por ejemplo, un ordenador de mesa puede no tener
número de localización y sólo reportar una localización de radio 50 km basado en su conexión a internet. Sin
embargo, esto al menos permite saber la zona horaria, país o incluso la ciudad del usuario. Por otra parte,
muchos teléfonos móviles y tablets vienen con GPS y pueden dar su localización de forma muy precisa, así
como registrar movimientos en tiempo real.
Para un ejemplo de este objeto ve al ejemplo Geolocation en el Diálogo de Inicio.
Pedir permisos
Cuando necesitas la localización del usuario, por razones de privacidad la mayoría de plataformas le
preguntarán por su permiso. Cada plataforma tiene su propia forma de hacerlo. El usuario puede delinar el
permiso, en cuyo caso se detonará Error (On error). Tus proyectos deben preveer esto en la medida de lo
posible. Normalmente cada navegador o plataforma tiene una forma de garantizar el permiso cuando ya se
ha rechazado, pero implica preguntar de nuevo, o hacer cambios en el navegador o app. Algunas plataformas
fallarán sin siquiera preguntar al usuario tras una única declinación.
Uso de la batería
Usar la geolocalización implica activar el GPS que utiliza bastante batería. Cuanto más precisa sea la
localización más batería gastará. Intenta pedir la localización únicamente cuando sea necesario, o de baja
precisión, o pedirla en un momento concreto y no por un tiempo largo.
Condiciones de Geolocalización
Es compatible (Is supported)
Verdadero si el dispositivo es compatible con el objeto. Si es falso no funcionará ninguna de las
características.
Está viendo localización (Is watching localtion)
Verdadero tras la acción Watch location si se aprueba, hasta que se use la acción Stop watching.
Error (On error)
Detonado si ocurre un error cuando se pide permiso para la localización. La expresión ErrorMessage
contiene más información sobre el problema.
Actualizando localización (On location update)
Detonado tras las acciones Request location o Watch location si se han aprobado y si se actualiza la
posición. Sólo se detona una vez tras la primera acción, pero se puede detonar de forma regular tras la
segunda.
Acciones de Geolocalización
Pedir localización (Request location)
Hace una petición al usuario, que debe aprobar antes de ver más información; si la declina se detonará On
error. La precisión (accuracy) se puede ajustar a Alta (High), que tardará más tiempo y gastará más batería.
Timeout es el tiempo máximo en segundos que el dispositivo usará antes de dar la posición o detonar On
error. Maximum age es el máximo resultado que puede dar. Si 0, el dispositivo intentará determinar la
posción del usuario en ese momento. Si es distinto de 0, y el sistema operativo ha pedido antes la
información, los resultados previos se darán inmediatamente. Esto es más rápido y gasta menos batería, pero
el resultado no será en tiempo real. Si un resultado se obtiene con éxito, se detonará On location update.
Ver localización (Watch location)
Como en la acción anterior, pero se irá moviendo. On location update se detonará siempre quen haya una
nueva posición, hasta que se use la acción Stop watching. Consume más batería.
Dejar de mirar (Stop watching)
Para la acción anterior y la posición no se volverá a actualizar.
Expresiones de Geolocalización
Las expresiones sólo se actualizan cuando se detona On location update.
Precisión (Accuracy)
PrecisiónAltitud (AltitudeAccuracy)
La precisión estimada en metros de la latitud y longitud para la primera o altitud para la segunda. Si no se
conoce dará 0.
Altitud (Altitude)
La altitud estimada en metros sobre el nivel del mar, o 0 si no se conoce.
Mensaje de Error (ErrorMessage)
Una secuencia con información adicional cuando ocurre un error.
Dirección (Heading)
Velocidad (Speed)
Mientras se ve una posición, la dirección del viaje en grados relativos al norte y la velocidad en metros por
segundo. Será 0 si no se conoce.
Latitud (Latitude)
Longitud (Longitude)
La latitud y longitud determinada, sujeta a la precisión.
Sello de tiempo (Timestamp)
Un sello del tiempo al que se dan los detalles. Se mide en milisegundos desde la medianoche del 1 de Enero
de 1970.
6.13 IAP
IAP significa Compras en Aplicación. El plugin IAP te permite acceder a la compra en varias tiendas. No
está disponible en la versión gratuita, ya que se necesita una licencia para usarlo.
Tiendas compatibles
En la actualidad son las siguientes:





Windows Store (Windows 8+ apps)
CocoonJS
Blackberry 10
Amazon Appstore
Tizen
Uso básico
Para acceder a las características debes seguir los pasos siguientes:
1. En el plano de inicio, usa la acción Añadir producto ID (Add product ID) para añadir un productor
que podrás usar, por ejemplo, “product1.product2.product3”.
2. Tras esto (todavía en el plano de inicio), usa la acción Pedir lista de tienda (Request store listing).
Esto descarga los nombres y precios de los productos dados. Algunas plataformas requieren esta
información para poder usar las características de IAP.
3. Cuando se detona Lista de tienda descargada (On store listing success), los nombres y precios de los
productos están disponibles, y las compras se pueden hacer con la condición Hay producto (Has
product).
Terminología
El plugin usa una ID de producto (ProductID) para referirsea un ítem concreto disponible para la compra. Es
una secuencia corta y única, por ejemplo “myitem”. Algunas tiendas ser refieren a ellos de distinta forma,
como “SKU”. Esto no importa; puedes introducirlo como una ID, tan largo como la secuencia que identifica
al ítem. También suele ser diferente al nombre del producto.
Compra de aplicaciones
La tienda de Windows permite que la aplicación misma se pueda comprar, por ejemplo, para desbloquear
características Premium. Esto se realiza mediante la acción Compra de aplicaciones (Purchase app). Sin
embargo, otras plataformas no pueden hacer esto. Para asegurarte de que tus eventos son compatibles con
otras tiendas, comprar la app se traducirá en comprar un producto con la ID “app”.
Usar modo de prueba
La propiedad Modo de prueba (Test Mode) del objeto debe estar en Sí durante el desarrollo, pero debes
ponerla en No antes de publicarlo. En este modo las compras son simuladas. Varias tiendas tienen
diferente terminología para esto, incluyendo “Test mode", "Sandbox mode", o "Developer mode”. Cada una
también lo maneja a su manera; en la mayoría de los casos las compras se olvidarán cada vez que reinicies la
app, permitiendo que la vuelvas a probar.
Publicar
Cuando publiques tu aplicación, será necesario que ajustes la lista de ítems de la tienda que quieras que estén
disponibles. El proceso es distinto para cada tienda. Asegúrate de guardar bien la ID de cualquier producto
que uses en los eventos y añade un producto por cada ID al publicar. Nota que, como se señala en el
apartado anterior, si quieres que se pueda comprar la propia app debes añadir la ID “app” a cualquier tienda
que no sea la de Windows.
Propiedades de IAP
Modo de prueba (Test mode)
Ve a la sección Usar modo de prueba.
ID de grupo de ítems (Item group ID)
Este ajuste se aplica solo a las apps publicadas en la tienda Tizen. Cuando la publiques, crea un grupo de
ítems para los que queiras incluir en la app, y después introduce una ID en esta propiedad.
Condiciones de IAP
Hay producto (Has product)
Comprueba si la ID del producto ha sido comprada correctamente por el usuario. Nota que en algunos casos
esto será falso en los primeros segundos, y se volverá verdadero cuando la tienda termine de cargar su
estatus. Intenta evitar usar esta condición antes de que se detone On store listing success.
Se ha comprado la app (Is app purchased)
En la tienda de Windows, comprueba si la propia app se ha comprado. En otras plataformas, comprueba si la
ID del producto “app” se ha comprado.
Tienda disponible (Is store available)
Verdadero si la tienda está disponible y se puede hacer la compra. Falso en plataformas no compatibles o si
no hay ninguna tienda disponible.
Cualquier compra realizada (On any purchase success)
Cualquier compra no realizada (On any purchase failed)
Detonado tras cualquier compra e indica si se ha realizado o no.
Compra realizada (On purchase success)
Compra realizada (On purchase failed)
Detonado tras la compra de un producto concreto e indica si se ha realizado o no.
Lista de tienda descargada (On store listing success)
Lista de tienda no descargada (On store listing failed)
Detonado tras la acción Request store listing e indica si se ha descargado o no. Tras la descarga puedes
comprobar que productos se han comprado, hacer nuevas compras y añadir más detalles.
Acciones de IAP
Añadir ID de producto (Add product ID)
En el plano de inicio para indicar todas las IDs de los productos que usará la app. Se puede usar muchas
veces añadiendo las Ids de una en una, o se puede crear una lista de Ids separadas por comas para añadir
varias a la vez. Ve a la sección Uso básico para más información.
Comprar app (Purchase app)
En la tienda de Windows, compra la app. En otras plataformas, se pide la ID “app”.
Comprar producto (Purchase product)
Pide la ID de un producto para comprarlo.
Pedir lista de tienda (Request store listing)
Pide los detalles de los ítems disponibles y comprados de la tienda. Debe usarse en el plano de inicio. Ve a la
sección Uso básico para más información.
Restaurar compras (Restore purchases)
Actualiza el estatus de los ítems comprados en la tienda.
Expresiones de IAP
Nombre de aplicación (AppName)
Precio de aplicación (AppPrice)
Da el nombre y el precio de la propia aplicación en la tienda de Windows. En otras plataformas, da el
nombre y el precio del producto con ID “app”.
Mensaje de error (Error message)
Si hay un error, el mensaje de texto que aparece.
ID de producto (ProductID)
La ID del producto en un detonador, por ejemplo, On any purchase succes.
Nombre de producto (ID de producto) (ProductName(productid))
Precio de producto (ID de producto) (ProductPrice(productid))
Da el nombre o el precio de un producto disponible para compra por su ID. La información solo está
disponible tras el detonador On store listing success.
6.14 Intel XDK
El plugin Intel® XDK proporciona integración con el servicio de publicación móvil de Intel XDK. Para más
información ve al tutorial How to export to the Intel XDK.
Condiciones de Intel XDK
Está en Intel XDK (Is in Intel XDK)
Verdadero si el juego está funcionando dentro de Intel DXK. Será falso si está funcionando en otro sitio,
como open web.
Caching habilitado (Caching enabled)
(Para usuarios avanzados) Verdadero si el servicio caching de Intel XDK se ha habilitado.
Cotejar orientación inicial (Compare initial orientation)
Comprueba si la orientación del dispositivo en el inicio es alguna en particular.
Cotejar orientación (Compare orientation)
Comprueba si la orientación del dispositivo es alguna en particular.
Push habilitado (Push enabled)
(Para usuarios avanzados) Verdadero si el servicio de notificaciones push de Intel XDK está habilitado.
Streaming habilitado (Streaming enabled)
(Para usuarios avanzados) Verdadero si el servicio streaming de Intel XDK está habilitado.
Actualizaciones habilitadas (Updates enabled)
Verdadero si el servicio de actualizaciones de Itels XDK está habilitado.
Botón “atrás” presionado (On “back” button pressed)
Se detona cuando el botón de “atrás” del dispositivo se presiona, si lo tiene. Nota que algunos dispositivos
como iOS no tienen este botón. Antes de que este detonador funcione, debes haber añadido una página
virtual usando la acción Add virtual page.
Código de barras escaneado (On barcode scanned)
Detonado cuando el dispositivo lee con éxito un código de barras.
Datos remotos (On remote data)
Detonado cuando se ha recibido la información de la acción Get remote data.
Sitio remoto cerrado (On remote site closed)
Detonado cuando se cierra una ventana pop-up del navegador. Se abre con la acción Show remote site.
Acciones de Intel XDK
Registrar evento (Log event)
Registra el nombre de un evento para el servicio de analíticas de Itel XDK. Los parámetros se dan en
formato URL, por ejemplo, foo=bar&&baz=ban.
Añadir a media cache (Add to media cache)
Descarga un archivo media desde Internet y lo almacena en el almacenamiento local del dispositivo,
permitiendo su uso sin conexión.
Borrar las cookies (Clear all cookies)
Elimina todas las cookies guardadas con la acción Set cookie. (No afecta a las cookies del navegador del
usuario).
Borrar media cache (Clear media cache)
Elimina todos los archivos media descargados con Add media cache.
Eliminar cookie (Remove cookie)
Quita una cookie establecida con la acción Set cookie. (No afecta a las cookies del navegador del usuario).
Eliminar de media cache (Remove form media cache)
Quita un archivo añadido con Add to media cache.
Establecer cookie (Set cookie)
Establece una cookie en el dispositivo. Es un sustituto del almacenamiento local. No afecta al navegador del
usuario; sólo a la aplicación.
Cerrar sitio remoto (Close remote site)
Cierra un sitio remoto mostrado con la acción Show remote site.
Conseguir datos remotos (Get remote data)
Hace una petición a AJAX usando el servicio Intel XDK. On remote data se detona cuando se completa,
Instalar actualización (Install update)
Instala una actualización pendiente si la hay.
Lanzar sitio externo (Launch external site)
Abre una URL en el navegador por defecto del dispositivo. El usuario saldrá de la aplicación, no como en la
acción Show remote site.
Escanear código de barras (Scan barcode)
Abre un lector QR. Se detonará On barcode scanned cuando la acción se haya completado con éxito.
Establecer auto-rotar (Set auto-rotate)
Previene que la vista del dispositivo gire automáticamente si cambia su orientación. Puede forzar una
orientación concreta cuando lo usas con Set orientation.
Mostrar sitio remoto (Show remote site)
Muestra una URL en el navegador detro de la app. El usuario no sale de ella y puede pulsar el botón cerrar
para volver a ella.
Actualizar conexión (Update connection)
Comprueba si el tipo de conexión del dispositivo ha cambiado (3G, Wifi, etc.).
Añadir página virtual (Add virtual page)
Úsala cuando quieras que una página abierta en una nueva pantalla se pueda cerrar con el botón “atrás”. La
siguiente vez que se pulse tras esta acción evitará la acción por defecto del dispositivo y detonará On “back”
button pressed.
Eliminar página virtual (Remove virtual page)
Elimina una página virtual previamente añadida, por ejemplo, si cancelas una pantalla.
Expresiones de Intel XDK
Cookie
Da los datos almacenados por la acción Set cookie.
LocalMediaCacheURL
Da el camino local para un archivo media cache desde Internet via la acción Add to media cache.
AppMobiVersion
Da la versión actual del software Intel XDK. Nota que usa el nombre “AppMobi” viejo por razones de
compatibilidad.
DeviceBarcodeData
Da los datos escaneados del código de barras. Sólo están disponibles en On barcode scanned tras la acción
Sacn barcode.
DevideConnection
El tipo de conexión mejor de las disponibles, “wifi”, “cell” o “none”.
DevideModel
El nombre del modelo de dispositivo.
DeviceOSVersion
La información del sistema operativo del dispositivo.
Device Platform
“iOS” o “Android”, la plataforma actual.
DevideQueryString
Da cualquier secuencia query de la aplicación cuando se lanza con un protocolo de operario informático.
DeviceRemoteData
Los datos dados desde Get remote data tras la detonación de On remote data.
DeviceRemoteStatus
Uno entre “open”, “closed” o “idle”.
DeviceUUID
Da el Identificador Único Universal (UUID) del dispositivo, que es un código que identifica únicamente a
ese dispositivo.
InitialOrientation
La orientación del dispositivo en el inicio, dada en grados (0, -90, 90 o 180).
Orientación (Orientation)
La orientación actual del dispositivo, dada en grados (0, -90, 90 o 180).
6.15 Teclado (Keyboard)
El objeto Teclado permite que el objeto responda a entradas del teclado.
Nota que hoy en día es ingenuo asumir que todos los usuarios tendrán teclado. Muchos ahora manejan las
redes con pantallas táctiles. (Este objeto no responde a teclados en pantalla u otras formas de pantalla táctil).
Por ello, si tu juego usa exclusivamente el ratón o el teclado, es imposible que se use en dispositivos táctiles.
Mira el tutorial Touch controls para ver un sistema de control alternativo.
Ten en cuenta también que hay gran variedad de teclados internacionales. Por ejemplo, si sólo usas las teclas
“WASD” como controles de dirección, será difícil manejar tu juego con lo teclados AZERTY. Para ellos
tendrás que usar “ZQSD”, pero hay otras muchas posibilidades de teclados. En este caso, usar las flechas
para el control de dirección lo hará apto para gran variedad de teclados, pero ten en cuenta que otros
controles que utilizan teclas concretas también pueden tener este problema.
Accesos directos del navegador
En algunos navegadores, algunas teclas son accesos directos para acciones del navegador. Por ejemplo, la
barra espaciadora desplaza la página hacia abajo. Si hay algún evento para “Tecla pulsada” (“On key
pressed”) según una tecla dada, C2 bloqueará la acción normal del navegador. Por ejemplo, si quieres evitar
que la barra espaciadora desplace la página hacia abajo, deja vacío el evento “Tecla pulsada” (“On key
pressed”).
Códigos de Teclas
Es posible identificar teclas por su código numérico con el objeto Teclado. Un código es simplemente un
número asignado a cada tecla. Puede ser útil para personalizar controles, ya que los códigos se pueden
almacenar en las variables.
Condiciones del Teclado
Código de tecla presionado (Key code is down)
Verdadero si una tecla con un código concreto está siendo presionada.
Clave de tecla presionada (On key code pressed)
Detonado cuando se presiona un código de tecla concreto.
Clave de tecla soltada (On key code released)
Detonado cuando se suelta un código de tecla concreto.
La Tecla está presionada (Key is down)
Verdadero si una tecla está siendo presionada.
Cualquier tecla presionada (On any key pressed)
Detonado cuando cualquier tecla del teclado está presionada. Útil para la pantalla de títulos o para escenas de
corte. El código correspondiente se ajusta en la expresión LastKeyCode.
Cualquier tecla soltada (On any key released)
Detonado cuando cualquier tecla del teclado se suelta. Útil para la pantalla de títulos o para escenas de corte.
El código correspondiente se ajusta en la expresión LastKeyCode.
Tecla presionada (On key pressed)
Detonado cuando una tecla específica se está presionando.
Tecla soltada (On key released)
Detonado cuando una tecla específica se suelta.
Acciones de Teclado
El objeto Teclado no tiene acciones.
Expresiones de Teclado
ÚltimoCódigoTecla (LastKeyCode)
Da el código de la última tecla presionada. Es útil con On any key pressed y On any key released para
determinar la tecla usada y así ajustar los controles.
SecuenciaDesdeCódigoTecla (StringFromKeyCode)
Convierte un código numérico en una secuencia. Por ejemplo, convierte el código 65 en la secuencia “A”.
6.16 Lista (List)
El objeto Lista (List) crea una lista descendente (dropdown list) o un cuadro de lista (list box). Una lista
descendiente solo muestra un ítem pero se puede extender para mostrar la lista completa; un cuadro permite
mostrar varios ítems a la vez. La imagen siguiente muestra los dos tipos:
Estos formularios son elementos HTML flotando sobre el juego en la página HTML. Por ello, no se puede
mostrar nada en la parte de arriba del formulario, aparte de otros controles.
Los formularios se posicionan de acuerdo al paralaje, escala y demás de la capa. Sin embargo, no está
realmente en el juego (ya que flotan) por lo que se recomienda evitar usar paralaje y escalas con estos
formularios, pues no quedaría bien.
Estilo de Lista
Se pueden personalizar de un gran número de formas usando CSS. Más que añadir acciones para ajustar
todas las posibles propiedades, el objeto Lista se expone a una acción llamada Set CSS style. CSS será una
ventaja fácil de usar. Aquí tienes algunos ejemplos:
Hacer el texto rojo (Make the text red): Ajusta el "color" a "rojo".
Hacer el fondo amarillo (Make the background yellow): Ajusta el "color del fondo" a "amarillo".
Hacer el borde gris claro y fino (Make the border a thick light grey: Ajusta el "borde" a "3px solid
#AAAAAA".
Hacer la letra más grande (Make the font bigger): Ajusta el "tamaño de letra" a "2em".
Hacer un borde rojo y discontinuo (Make a dashed red border): Ajusta el "borde" a "2px dashed red".
Propiedades de Lista
Ítems (Items)
Una lista de la cantidad de ítems iniciales que mostrará el objeto. Por ejemplo, One;Two;Three mostrará tres
elecciones separadas.
Herramientas (Tooltip)
Un consejo del uso de herramientas que aparecerá cuando posas el ratón sobre una de ellas, en la mayoría de
los navegadores. Déjalo en blanco si no quieres usarlos.
Visibilidad inicial (Initial visibility)
Si el control es visible o no en el inicio del plano.
Habilitado (Enabled)
Si en control está habilitado en el inicio. Si No, el control aparecerá en gris y no se podrá seleccionar.
Tipo (Type)
Elige entre lista descendente (dropdown list) o un cuadro de lista (list box). Ve a la imagen de arriba.
Selección múltiple (Multi-select)
Permite que se pueda elegir más de un ítem de la lista cuando el tipo es cuadro de lista.
Tamaño de fuente automático (Auto Font size)
Establece de forma automática el tamaño de fuente de acuerdo a la escala del plano y la capa. Si pretendes
ajustarlo con la acción Set CSS style deja esta propiedad en No.
ID (opcional)
Un atributo opcional de identificación para el elemento en en el DOM (Modelo de documento de objetos).
Puede ser útil para acceder al valor del elemento desde scripts externos, o modificarlo con CSS en la página
HTML.
Condiciones de Lista
Cotejar texto de ítem en (Compare ítem text at)
Comprueba el texto de un ítem de la lista.
Cotejar texto de un ítem seleccionado (Compare selected ítem text)
Comprueba el texto de un ítem ya seleccionado de la lista.
Cotelar selección (Compare selection)
Comprueba el índice basado en 0 del ítem seleccionado.
Clicado (On clicked)
Detonado cuando se clica el control.
Doble click hecho (On double-click)
Detonado cuando se hace doble click sobre el control.
Selección cambiada (On selection changed)
Detonado cada vez que la selección del control se cambia, sea cual sea la forma (click del ratón, tecla o
toque táctil).
Acciones de Lista
Ajustar estilo CSS (Set CSS style)
Ajusta el estilo CSS en la lista de elementos. Para más información ve a la sección Estilo de Lista. Nota que
si la propiedad Auto Font size está activada, cualquier cambió será sobreescrito.
Añadir ítem (Add ítem)
Añade un nuevo ítem al final de la lista.
Añadir ítem en (Add ítem at)
Inserta un nuevo ítem en un cierto índice basado en cero.
Eliminar (Clear)
Elimina todas las opciones de una lista.
Borrar (Remove)
Elimina un ítem específico.
Ajustar texto de ítem (Set ítem text)
Cambia el texto de un ítem con un índice específico.
Ajustar selección (Set selection)
Selecciona un ítem con un índice específico.
Habilitar (Set enabled)
Habilita o deshabilita el control. Si está deshabilitado aparecerá gris y no se podrá seleccionar.
Ajustar consejo de herramientas (Set tooltip)
Ajusta la propiedad Tooltip.
Enfocar (Set focused)
Desenfocar (Set unfocused)
Si aplicar o no el foco a este control. Cuando está enfocado, el teclado le afecta.
Expresiones de Lista
Cuenta de Items (ItemCount)
El número de ítems en la lista.
Texto de ítem en (ItemTextAt)
Da el texto de un ítem por su índice basado en cero.
Cuenta Seleccioandos (SelectedCount)
El número de ítems seleccionados. Será siempre 0 o 1, a menos que uses la Selección múltiple.
Índice Seleccionado (SelectedIndex)
El índice basado en cero del ítem seleccionado. Para listas con multiselección usa SelectedIndexAt.
Índice Seleccionado en (SelectedIndexAt)
El índice de un ítem seleccionado entre todos aquellos seleccionados.
Texto seleccionado (SelectedText)
El texto del ítem seleccionado. Para listas con multiselección usa SelectedTextAt.
Texto Seleccionado en (SelectedTextAt)
El texto de un ítem seleccionado entre todos aquellos seleccionados.
6.17 Ratón (Mouse)
El objeto Ratón permite que el proyecto responda a entradas del ratón.
Nota que hoy en día es ingenuo asumir que todos los usuarios tendrán teclado. Muchos ahora manejan las
redes con pantallas táctiles. (Este objeto no responde a teclados en pantalla u otras formas de pantalla táctil).
Por ello, si tu juego usa exclusivamente el ratón o el teclado, es imposible que se use en dispositivos táctiles.
Mira el tutorial Touch controls ⇗ para ver un sistema de control alternativo.
Si sólo usas el botón izquierdo, considera usar el objeto Táctil (Touch) con el Uso de entrada de Ratón (Use
Mouse Input) en Sí. Esto permitirá que tu juego funcione en dispositivos táctiles sin tener que hacer muchos
cambios.
Seleccionar elementos en la página
Por defecto el navegador selecciona elementos en la página web cuando el usuario clica y arrastra. C2
bloquea el lienzo para que el juego no se vea afectado por clicados y arrastrados rápidos. Sin embargo, si tu
juego está incrustado dentro de otra página, el usuario pude seleccionar elementos de otra página por
accidente. Puedes añadir el siguiente atributo a cualquier elemento HTML para evitar que se pueda
seleccionar:
onselectstart="return false;"
Puedes añadirlo a la etiqueta <cuerpo> (<body>) para evitar selecciones en toda la página, pero te
advertimos que puede causar dificultades a los usuarios si hay algo que éste quiera seleccionar.
Condiciones de Ratón
El cursor está sobre el objeto (Cursor is over object)
Verdadero si el cursor del ratón está sobre algo.
El Botón del Ratón está pulsado (Mouse button is down)
Verdadero si un botón dado (izuqierdo, derecho o centro) están siendo pulsados.
En cualquier clic (On any click)
Detonado cuando cualquier botón del ratón está pulsado. Útil para la pantalla de títulos y escenas de corte.
Botón soltado (On button released)
Detonado cuando un botón del ratón dada se suelta.
Clicado (On click)
Detonado cuando un botón dado está presionado. Se puede usar para detectar dobles clics.
Rueda del Ratón (On mouse wheel)
Detonado cuando la ruleta del ratón (si la hay) se desliza arriba o abajo. Nota: añadir este detonador en
cualquier parte de tu juego evitará que la rueda se deslice en el navegador, así que úsalo con cuidado.
Objeto clicado (On object clicked)
Detonado cuando un botón dado se presiona mientras en cursor está sobre un objeto. Se puede usar para
detectar dobles clics en objetos.
Acciones de Ratón
Ajustar cursor de un Sprite
Ajusta el cursor de la imagen de un objeto Sprite. Esto es preferible a ajustar las coordinadas del ratón,
puesto que el retardo de la entrada es bastante más bajo. Se aplican varias limitaciones: se usa la imagen que
aparece en el editor, sin tener en cuenta el tamaño o la rotación en le plano; la imagen no puede ser
demasiado grande (el límite suele ser 64x64); y el soporte varía dependiendo del navegador y el SO.
Ajustar estilo de cursor (Set cursor style)
Ajusta el tipo de cursor que se muestra en el lienzo de la página HTML. Se puede ocultar completamente
eligiendo None.
Expresiones de Ratón
X absoluta (AbsoluteX)
Y absoluta (AbsoluteY)
Da la posición del cursor del ratón sobre el lienzo. Es (0,0) en la parte de arriba a la izquierda y crece de
acuerdo al tamaño de la ventana. No se ve afectado por ningún desplazamiento o escala en el juego.
X
Y
Da la posición del cursor en coordinadas. Es (0,0) en la parte de arriba a la izquierda. Cambia según
desplazamientos y escalas. Sin embargo, si una capa individual se ha desplazado, escalado o rotado, no se
tiene en cuenta en la expresión - para ese caso, usa las versiones de capa de abajo.
X (“capa”) (X("layer"))
Y (“capa”) (Y("layer"))
Da la posición del cursor en coordinadas, con desplazamientos, escalas y rotaciones teniendo en cuenta la
capa dada. La capa se puede identificar por una secuencia de su nombre o por el índice basado en 0
(Ratón.X(0) ((Mouse.X(0))).
6.18 Nodo-Webkit (Node-Webkit)
El objeto Nodo-Webkit permite el acceso a características específicas del exportador de nodo-webkit, como
leer y grabar archivos en el disco local (local disk drive).
Nota que el objeto AJAX puede leer archivos desde la carpeta de aplicaciones (pero no grabarlos) cuando
exportas a nodo-webkit. Esto te permite que la lectura del archivo sea posible en muchas plataformas.
También ten en cuenta que el objeto AJAX lee archivos de forma asíncrona, mientras que este objeto realiza
todas las operaciones sincronizadamente.
Qué es Nodo-Webkit
Es esencialmente una versión autónoma del navegador Google Chrome, pero que parece una aplicación de
escritorio corriente (no hay pestañas, barra de dirección, botones de atrás/delante, etc.) Exportar usando
Nodo-Webkit permite que tu proyecto funcione de forma autónoma en Windows, Mac y Linux, sin necesitar
la instalación de otro navegador.
Vista previa
Ya que está basado en Google Chrome, la vista previa en este naveador funcianará de forma idéntica. Sin
embargo, características propias del objeto (como acceso al archivo) no funcionarán. Para probar estas
características es posible elegir Nodo-Webkit para la propiedad del proyecto Navegador para la vista previa
(Preview browser).
Nota que hacer esto es hacer funciona el nodo-webkit directamente desde el directorio de instalación de C2.
Como consecuencia, la expresión AppFolder dará <install path>\exporters\html5\node-webkit\win32. Si
esto supone un problema para ti, haz lo siguiente: coge una secuencia de variable global; si “Está en vista
previa” (“Is in preview”) es verdadero, muévelo a una carpeta de desarrollo en otro lugar, si no hazlo a
NodeWebkit.AppFolder. Entonces usa la variable global en vez de la expresión AppFolder.
Usar caminos de archivos correctamente
Nunca uses una acción para escribir en un camino de archivo como “C:\MyGame\MyFile.txt", ya que resulta
poco profesional, desordenado y llena de basura el sistema del usuario. Además, a veces ni siquiera
funciona, ya que no todos los usuarios tienen permisos de lectura o escritua en carpetas fuera de su
directorio.
Se puede resolver esto escribiendo los archivos en la carpeta de la aplicación. Sin embargo, esto puede no
funcionar tampoco; en muchas versiones de Windows, la carpeta Archivos de programa requiere el permiso
del administrador para escribir, aunque sí puedas leer.
La solución es escribir en la carpeta del usario, en la que seguro que tendrá permiso de escritura. Se consigue
con la expresión UserFolder. La forma correctya de determinar el camino es la carpeta del usuario es así:
NodeWebkit.UserFolder & "myfile.txt"
Si solo necesitas leer archivos, y no escribirlos, puedes usar tranquilamente la carpeta de aplicación
(NodeWebkit.AppFolder) en vez de esta.
Encodear archivos de texto
Este objeto tiene la habilidad de leer y escribir archivos de texto en el disco. Para ser compatible con todos
los idiomas posibles, siempre lee y escribe con el encodeo UTF-8. Para asegurar que el plugin lee tu propio
archivo de texto, usa el mismo encodeo.
Condiciones de Nodo-Webkit
Diálogo de carpeta OK (On folder dialog OK)
Detonado tras la acción Show folder dialog, cuando el usuario ha seleccionado OK. La expresión
ChosenPath contiene la carpeta seleccionada.
Diálogo de apertura OK (On open dialiog OK)
Detonado tras la acción Show open dialog, cuando el usuario ha seleccionado OK. La expresión ChosenPath
contiene el archivo a abrir.
Diálogo guardado OK (On save dialog OK)
Detonado tras la acción Show save dialog, cuando el usuario ha seleccionado OK. La expresión ChosenPath
contiene el archivo a guardar.
Archivo soltado (On file dropped)
Detonado después de que el usario haya arrastrado y soltado el archivo en la ventana de la aplicación. La
expresión DroppedFile contiene el camino hasta el archivo soltado, permitiendo su carga para leer su
contenido.
Existe camino (Path exists)
Comprueba si existe el camino hacia una carpeta o archivo en el sistema del usuario.
Acciones de Nodo-Webkit
Borrar portapapeles (Clear clipboard)
Elimina cualquier corte o copia en el portapapeles. El usuario no podrá pegar nada de forma inmediata tras la
acción.
Ajusta texto en portapapeles (Set clipboard text)
Copia un texto en el portapapeles. Tiene el mismo efecto que si el ussario seleccioara un texto y lo copiara.
Después puede pegar el texto en otra aplicación.
Mostrar diálogo de carpeta (Show folder dialog)
Abre un diálogo permitiendo que el usuario seleccione una carpeta de su sistema local. Si pulsa OK, On
folder dialog OK se detonará y la expresión ChosenPath contendrá dicha carpeta.
Mostrar diálogo de apertura (Show open dialog)
Abre un diálogo permitiendo que el usuario elija un archivo a abrir de su sistema local. Si pulsa OK se
detonará On open dialog OK y la expresión ChosenPath contendrá el archivo seleccionado. El parámetro
Aceptar (Accept) es una lista separada por comas de las extensiones del archivo o los tipos MIME que el
diálogo puede usar para filtrar los archivos posibles. Por ejemplo, ".txt,.json" filtrará todos los archivos .txt
y.json; y "text/*" filtrará cualquier archivo con un tipo de texto MIME.
Mostrar diálogo de guardado (Show save dialog)
Abre un diálogo permitiendo que el usuario elija un archivo para guardar en su sistema local. Si pulsa OK se
detonará On save dialog OK y la expresión ChosenPath contendrá el archivo seleccionado. El parámetro
Aceptar (Accept) es una lista separada por comas de las extensiones del archivo o los tipos MIME que el
diálogo puede usar para filtrar los archivos posibles. Por ejemplo, ".txt,.json" filtrará todos los archivos .txt
y.json; y "text/*" filtrará cualquier archivo con un tipo de texto MIME.
Archivo apéndice (Append file)
Añade texto al final del archivo. Es más rápido que escribir el archivo completo de nuevo con nuevo
contenido.
Copiar archivo (Copy file)
Hace una copia binaria idéntica del archivo en una nueva locaclización.
Crear carpeta (Create folder)
Crea una nueva carpeta en el sistema local del usuario.
Borrar archivo (Delete file)
Borra un archivo del sistema local. Usa esto con cuidado, ya que un error puede borrar el archivo incorrecto.
Lista de archivos (List files)
Lee una lista de cada subcarpeta y archivo en una carpeta dada. Tras esta acción las expresiones ListCount y
ListAt se pueden usar para dar los ítems en la lista.
Mover archivo (Move file)
Hace una copia binaria exacta de un archivo en una nueva localización, pero después borra el archivo
antiguo. Nota que debes usar Renombrar archivo (Rename file) antes que esta acción si pretendes cambiar el
nombre en la misma carpeta.
Abrir navegador (Open browser)
Abre el navegador por defecto para escribir una URL.
Renombrar archivo (Rename file)
Da un nuevo nombre a un archivo existente.
Hacer funcionar archivo (Run file)
Hace funcionar un archivo en un camino concreto. Es análogo a hacer doble click en el archivo. Abrirá y
hará funcionar programas ejecutables y abrirá el resto de archivos con el programa asociado por defecto,
como el visor o editor de imágenes si es un archivo de imagen.
Escribir archivo (Write file)
Escribe un archivo de texto en el sistema local del usuario. Si no existe el archivo, se crea. Si ya existe, el
contenido se sobreescribe.
Maximizar (Maximize)
Maximiza la ventana en el escritorio del usuario. Usará casi toda (o toda) la vista.
Minimizar (Minimize)
Minimiza la ventana a la barra de tareas o similar.
Pedir atención (Request attention)
Realiza una actividad para buscar la atención del usuario, como parpadear.
Restaurar (Restore)
Restaura la ventana para mostrarla de nuevo tras la minimización.
Ajustar siempre arriba (Set always on top)
Ajusta la ventana para que aparezca siempre encima de otras ventanas.
Ajustar anchura (Set width)
Ajustar altura (Set height)
Ajusta las dimensiones de la ventana. Nota que incluye la barra de título y los bordes, así que el área en la
que se muestra el juego será menor.
Establecer tamaño máximo (Set maximum size)
Establecer tamaño mínimo (Set minimum size)
Ajusta los tamaños máximos y mínimos a los que se puede mostrar la ventana.
Establecer ajustar tamaño (Set resiable)
Habilita o deshabilita el ajuste delm tamaño de la ventana.
Ajustar título (Set title)
Establece el texto que aparecerá en la barra de título.
Ajustar X (Set X)
Ajustar Y (Set Y)
Ajusta la posición de la ventana en el escfritorio, en píxeles relativos la la esquina superior izquierda del
monitor principal.
Mostrar herramientas de desarrollador (Show dev tools)
Ya que está basado en Chromium, esta acción mostrará las herramientas de Chromium (como en el
depurador Javascript y en la consola). Puede ser útil para inspeccionar mensajes de la consola o para
desarrollar plugins con Javasript SDK.
Deshacer maximizar (Unmaximize)
Deshace la maximización de la ventana, restaurando el tamaño previo.
Expresiones de Nodo-Webkit
TextoPortapapeles (ClipboardText)
El texto que el usario ha copiado en portapapeles, si lo hay. Te permite pegar datos automáticamente.
CaminoElegido (ChosenPath)
Da el camino seleccionado tras On folder dialog OK, On open dialog OK o On save dialog OK.
CarpetadeAplicación (AppFolder)
Da el capino a la carpeta de la aplicación. Se espera que haya permiso de lectura, pero el de escritura no está
garantizado (por ejemplo la carpeta de programas de Windows requiere permiso del administrador para
escritura).
ArchivoSoltado (DroppedFile)
En On file dropped, el camino al archivo que ha sido soltado en la ventana de la aplicación.
TamañodeArchivo(camino) (FileSize(path))
Da el tamaño de un archivo dado, en bytes.
ListaEn(índice) (ListAt(index))
Tras la acción List files, da el nombre del archivo o carpeta con su índice basado en cero de la lista.
CuentaLista (ListCount)
Tras la acción List files, da el número de archivos o carpetas en la lista.
LeerArchivo(camino) (ReadFile(path))
Abre el archivo dado y da el texto que contiene como secuencia. Nota que cada vez que se usa esta expresión
el archivo se abre y se lee desde el disco. Si una expresión se usa dos veces, el archivo se abre y lee dos
veces, lo que puede afectar al rendimiento. Si es necesario primero lee el archivo en una variable y después
refiere a esa variable todas las veces que lo necesites.
CarpetadeUsuario (UserFolder)
Da el camino a la carpeta del usuario, que es donde sus documentos y otros archivos personales se guardan.
Se espera que haya permiso de lectura y escritura.
AnchuraVentana (WindowWidth)
AlturaVentana (WindowHeight)
Da el tamaño de la ventana en píxeles. Nota que incluye la barra de título y los bordes, por lo que el espacio
donde se muestra el juego será menor.
TítuloVentana (WindowTitle)
Da el texto que se muestra en la barra de título.
VentanaX (WindowX)
VentanaY (WindowY)
Da la posición de la ventana en píxeles en relación a la esquina superior izquierda del monitor principal.
6.13 Partículas (Particles)
El objeto Partículas puede crear efectos visuales de forma rápida, creando y moviendo muchas imágenes
pequeñas de forma independiente. Es un objeto versátil capaz de muchos tipos de efectos. Hay 6 demos en la
carpeta de ejemplos de C2, que incluyen desde fuego a fuentes. La imagen abajo muestra un ejemplo de
efecto de partículas:
El objeto Partículas tiene varios parámetros para cambiar el comportamiento de cada partícula. Además,
requiere el uso de una textura para dibujar cada partícula. Normalmente un simple punto balnco sobre un
fondo negro es suficiente.
El Modo de Fusión aditivo (Additive blend
mode) funciona especialmente bien con este
objeto. Hace que cada partícula ilumine el fondo
en vez de pegarse sobre él y permite que se fundan
unas con otras en vez de solaparse. Hace que
parezcan fuentes de luz. La imagen siguiente
muestra el efecto cuando la textura es un punto blanco en un fondo negro.
Los efectos de colores se crean usando partículas de colores. Nota que ya que el efecto Aditivo ilumina el
fondo, cualquier objeto que use este efecto no se verá en un fondo blanco. Funciona mejor en fondos
oscuros.
Para más información sobre modos de fusión y efectos, ve a la sección Efectos de este manual.
Partículas en la Vista de Plano
El objeto se representa en la Vista de Plano con dos líneas rojas que representan el cono de pulverización
(spray cone) (que es el ángulo en el que se expanden las partículas), con la textura de partícula en el centro.
El origen del objeto es donde se crean las partículas. Abajo se muestra un ejemplo con el efecto que se
mostraría durante la ejecución.
El tamaño del objeto partículas en el plano no es importante. Se reajustará él mismo en tiempo de ejecución
para encajar todas las partículas creadas.
Cómo funcionan los efectos de partículas
Los efectos de partículas funcionan de forma similar a usar el comportamiento Bala en cada partícula. Las
partículas iniciales se disparan a una velocidad y ángulo dado en el cono de pulverización (spray cone). Cada
partícula se controla individualmente alterando su velocidad, ángulo, opacidad y tamaño durante el tiempo
que aparecen. El moverse de forma independiente es lo que hace interesante el efecto visual. Las
propiedades del objeto controlan como cambian las partículas y que alteraciones aleatorias se hacen. Vale la
pena pasar algún tiempo cambiando los parámetros para ver el efecto que tienen.
Hay tres ajustes diferentes para hacer que las partículas se destruyan, dadas por la propiedad Modo de
destrucción (Destroy mode). La que se aplica por defecto Desvanecerse hasta invisible (Fade to invisible)
disminuye la opacidad de cada partícula hasta 0 durante el Tiempo de espera (Timeout) destruyendo la
partícula cuando es invisible. Tiempo de espera acabado (Timeout expired) simplemente destruye la
partícula tras un tiempo, sin cambiar su opacidad. Partícula parada (Particle stopped) destruirá la partícula
cuando su velocidad sea 0, ¡pero debes tener cuidado de asegurar que la partícula decelere hasta llegar a
valores negativos ya que si no no se destruirá nunca!
Optimización
Los efectos de partículas son más eficientes que crear el efecto con objetos Sprite, pero no a gran escala. Lo
mismo que con los sprites, debes tener cuidado de no crear un gran número de partículas, ya que el
rendimiento bajaría, especialmente en móviles. Usa la expresión Contador de partículas (ParticleCount)
para saber cuántas has creado. En móviles, el uso de este objeto no está recomendado ya que la tasa de
frames es muy limitada; pero si es necesario, mantén el número por debajo de 50.
Para reducir mantener a raya el contador de partículas, intenta reducir la tasa o acortar el tiempo de espera.
Para compensar, puedes intentar hacer la partícula más grande para que el efecto no se quede muy vacío.
Propiedades de Partícula
El objeto Partículas tienes bastantes propiedades, que están divididas en tres grupos: Propiedades del espray
de partículas (relativas al propio objeto Partículas), Propiedades de las partículas iniciales (relativas a la
creación de cada partícula de forma individual) y las Propiedades de la duración de la partícula (relativas a
cómo se comportan las partículas tras su creación).
Propiedades del espray de partículas
Tasa (Rate)
El número de partículas creadas por segundo. Si el Tipo es Caso único (One-shot) será cuantas partículas se
han creado en total. Nota que el modo Espray continuo (Continuous spray) el número total de partículas
puede ser mayor que la tasa, ya que depende de otras propiedades.
Cono de pulverización (Spray cone)
El número de grados en que las partículas son pulverizadas. Se representa con líneas rojas en la Vista de
Plano. Usa 360 para pulverizarlas en todas las direcciones.
Tipo (Type)
Las partículas pueden funcionar de dos modos:
Espray continuo (Continuous spray) creará un espray constante (por defecto).
Caso único (One-shot) creará una única explosió de partículas, el número total ajustado en la Tasa. Una vez
han sido todas destruidas, el propio objeto se destruye. Es útil para efectos como explosiones o impactos.
Imagen (Image)
Clica para abrir el editor de imágenes y editar la partícula. Prueba un punto en un fondo transparente o en un
fondo negro con el efecto Aditivo.
Propiedades de las partículas iniciales
Velocidad (Speed)
La velocidad inicial a la que se dispara cada partícula, en píxeles por segundo.
Tamaño (Size)
El tamaño inicial de cada partícula, en píxeles. Las partículas se muestran siempre como cuadrados.
Opacidad (Opacity)
La opacidad inicial de cada partícula, desde 0 (transparente) a 100 (opaca).
Tasa de crecimiento (Grow rate)
La tasa de crecimiento inicial (cambio de tamaño a través del tiempo) de cada partícula, en píxeles por
segundo. 0 significa que la partícula mantendrá siempre su tamaño. Un valor positivo hará que crezca y uno
negativo que decrezca.
Randomizador X (X randomizer)
Randomizador Y (Y randomiser)
El desplazamiento inicial de la partícula. Puedes hacer que sigan una línea o una caja con estas propiedades.
Randomizador de velocidad (Speed randomiser)
Un ajuste al azar de la velocidad inicial de cada partícula. Por ejemplo, un valor 100 cambiará la velocidad
inicial de cada partícula hasta 50 píxeles por segundo más rápida o más lenta.
Randomizador de tamaño (Size randomiser)
Un ajuste al azar del tamaño inicial de cada partícula. Por ejemplo, un valor 20 cambiará el tamaño inicial de
cada partícula hasta 10 píxeles más grande o más pequeño.
Randomizador de tasa de crecimiento (Grow rate randomiser)
Un ajuste al azar de la tasa de crecimiento inicial de cada partícula. Por ejemplo, un valor 10 cambiará la tasa
de crecimiento inicial de cada partícula hasta 5 píxeles por segundo mayor o menor.
Propiedades de la duración de la partícula
Aceleración (Acceleration)
Cambia la velocidad de la partícula a través del tiempo, en píxeles por segundo por segundo. Un valor
positivo hará que las partículas aceleren y uno negativo que deceleren.
Gravedad (Gravity)
La aceleración hacia abajo causada por la gravedad, en píxeles por segundo por segundo. Útil para hacer
efecto fuente o similares. Establece 0 para evitar que la gravedad tenga efecto en el movimiento de la
partícula.
Randomizador de ángulo (Angle randomiser)
Máximo cambio al azar del ángulo de cada partícula durante su vida, en grados por segundo. Por ejemplo,
establece 0 para evitar que cambien de dirección o 10 para permitir que cambien 5 grados por segundo a la
derecha o a la izquierda.
Randomizador de velocidad (Speed randomiser)
Máximo cambio al azar de la velocidad de cada partícula durante su vida, en píxeles por segundo por
segundo. Por ejemplo, establece 0 para evitar que cambien la velocidad o 100 para permitir que aceleren o
deceleren 50 píxeles por segundo por segundo.
Randomizador de opacidad (Opacity randomiser)
Máximo cambio al azar de la opacidad de cada partícula durante su vida. Útil para crear efectos “titilantes”.
Modo de destrucción (Destroy mode)
Cómo se destruye cada partícula. Hay tres modos:
Desvanecer hasta invisible (Fade to invisible) disminuirá la opacidad de cada partícula hasta 0 durante el
tiempo de espera (timeout). Cuando sean invisibles se destruirán.
Tiempo de espera acabado simplemente destruye la partícula al finalizar el tiempo de espera (timeout), sin
cambiar su opacidad.
Partícula parada (Particle stopped) destruirá la partícula cuando su velocidad sea 0, ¡pero debes asegurar
que la partícula use una Aceleración negativa ya que si no no se destruirá nunca!
Tiempo de espera (Timeout)
El tiempo en segundos que la partícula dura hasta que se destruye, dependiendo del Modo de destrucción
(Destroy mode).
Condiciones, acciones y expresiones de Partículas
La mayoría de las acciones o expresiones de este objeto simplemente ajustan o dan las propiedades de arriba.
Mira la sección propiedades para más información. Las otras condiciones, acciones y expresiones se
describen a continuación.
Para características comunes a otros objetos ve a Características Comunes.
Condiciones de Partículas
Está pulverizando (Is spraying)
Verdadero si el espray está habilitado.
Acciones de Partículas
Ajustar pulverización (Set spraying)
Habilita o deshabilita el espray, cuando está en modo Espray continuo (Continuous spray). Cuando está
deshabilitado no se crean nuevas partículas.
Expresiones de Partículas
Contador de partículas (ParticleCount)
El número de partículas actual que tiene el objeto Partículas. Es importante para asegurar que no creas
demasiadas para el buen funcionamiento del juego; ve a la sección Optimización. Nota que debido a cómo
funcionan las expresiones en C2, si tienes varios ejemplos del objeto, esto solo dará el número de partículas
de un ejemplo - usa Para Cada bucle (For Each loop) para contar varios ejemplos.
6.20 Scirra Arcade
El plugin Scirra Arcade permite que se publiquen los hi-scores de juegos alojados en Scirra Arcade. Es
muy sencillo publicar una puntuación o tiempo al final del nivel. Una vez que varias puntuaciones se han
publicado, la página Scirra Arcade debe empezar a mostrar la tabla de puntuaciones de forma automática. El
objeto también da una forma de mostrar la puntuación del jugador dentro del juego.
Los juegos pueden publicar solo puntuaciones o tiempo (para juegos de carreras) o una mezcla (se ordenará
por puntuación, pero para puntuaciones iguales se medirá el tiempo). Si es posible, se recomienda usar este
último, pues es más completo.
Para saber más acerca de publicar en Scirra Arcade ve al tutorial Uploading to the Scirra Arcade.
Condiciones de Scirra Arcade
Hi-score recibido (On hi-scores received)
Detonado tras usar la acción Request hi-scores una vez se ha recibido la información.
Acciones de Scirra Arcade
Pedir hi-scores (Request hi-scores)
Pide una lista de hi-scores para ese juego desde el servidor de Scirra Arcade. Cuando se ha recibido se
detona On hi-scores received y se usa la expresión Hi-score.
Publicar mejor tiempo (Submit best time)
Publica el tiempo en segundos de un jugador que ha terminado el juego.
Publicar puntuación (Submit score)
Publica la puntuación de un jugador que ha terminado el juego.
Publicar tiempo y puntuación (Submit timed score)
Publica la puntuación con tiempo en segundos de un jugador que ha terminado el juego.
Expresiones de Scirra Arcade
HiScoreCount
Da el número de hi-scores en la tabla recibidos desde la petición de hi-scores.
HiScoreAt
Nombre (HiScoreNameAt)
Posición (HiScoreRankAt)
Tiempo (HiScoreTimeAt)
Da los detalles del hi-score con el índice basado en 0 en la tabla de hi-scores recibidos.
6.14 Sprite
El objeto Sprite es una imagen inimitable que aparece en el juego. Es uno de los objetos más importante en
la mayoría de los juegos de C2. Se usa para hacer elementos más visuales, como el jugador, los enemigos,
proyectiles, explosiones y escenarios sin mosaico (los escenarios de mosaicos es mejor hacerlos con el
objeto Fondo Adosado (Tiled Background)).
Si un Sprite tiene una animación sencilla con un solo frame, simplemente mostrará una imagen sin animar.
Sin embargo, se pueden añadir animaciones más complejas al objeto con el Editor de imágenes y
animaciones.
Todos los ejemplos de este objeto comparten la animación. En otras palabras, un único conjunto de
imágenes conforman una animación que pertenece al tipo de objeto, los ejemplos son referencias a este
objeto.
Se pueden aplicar efectos a los Sprites. Para más información ver Efectos.
Propiedades de Sprite
Animaciones (Animations)
Clica el enlace Editar (Edit) para abrir el Editor de imágenes y animaciones. Todos los ejemplos del tipo de
objeto compartirán esta animación.
Tamaño (Size)
Clica el enlace Hacer 1:1 (make 1:1) para ajustar la selección a tamaño real (100%). Esto hace que la altura
y la anchura del objeto sea la misma que las del primer frame de la animación.
Visibilidad inicial (Initial visibility)
Ajusta si el objeto se muestra (visible) o está escondido (invisible) cuando comienza el plano.
Frame inicial (Initial Frame)
Muestra el primer frame de la animación. Usa un índice basado en cero, así que el primero será el 0. Puede
ser útil para almacenar diferentes partes de un mosaico o escenario en diferentes frames de la animación de
un único tipo de Sprite.
Colisiones (Collisions)
Habilita o deshabilita las colisiones para el objeto. Si está deshabilitado significa que no se registrarán
efectos ni comportamientos de colisión con objetos sólidos o a través.
Condiciones de Sprite
Para condiciones comunes a varios objetos, ver Condiciones Comunes.
Cotejar frame (Compare frame)
Coteja el número del frame actual, que tiene un índice basado en cero (el primer frame es 0).
Cotejar velocidad (Compare speed)
Comprueba la velocidad de la animación actual, en frames por segundo. Las animaciones reproducidas hacia
atrás (por ejemplo, animaciones ping-pong) tienen velocidad negativa.
Está volteado (Is flipped)
Está espejado (Is mirrored)
Verdadero si el objeto ha sido volteado o espejado con las acciones Voltear (Set flipped) y Espejar (Set
mirrored).
Está reproduciéndose (Is playing)
Verdadero si una animación dada funciona en ese momento. Las animaciones se identifican por su nombre
(sin diferenciar mayúsculas y minúsculas).
Cualquiera terminada (On any finished)
Detonado cuando cualquier animación termina. Si estableces un bucle no terminarán.
Terminada (On finished)
Detonado cuando una animación dada termina. Si estableces un bucle no terminarán. Las animaciones se
identifican por su nombre (sin diferenciar mayúsculas y minúsculas).
Frame cambiado (On frame changed)
Detonado si la animación cambia a otro frame mientras la animación se está reproduciendo.
Colisiones habilitadas (Collisions enabled)
Verdadero si las colisiones del objeto están habilitadas.
Se está solapando con otro objeto (Is overlapping another object)
Se está solapando en el desplazamiento (Is overlapping at offset)
Verdadero si cualquier ejemplo está solapándose con cualquier ejemplo de otro objeto. Se tienen en cuenta
los polígonos de colisión, además del tamaño y la rotación del objeto. La variante “desplazamiento”
comprobará los posibles solapamientos cuando se dé el desplazamiento. Por ejemplo, en una prueba de
superposición en un de desplazamiento (100, 0) el objeto se moverá temporalmente a la derecha 100 píxeles,
probará la superposición y volverá atrás de nuevo.
Colisionando con otro objeto (On collision with another object)
Detonado la primera vez que cualquier ejemplo se solapa con cualquier ejemplo de otro objeto. El polígono
de colisión se tiene en cuenta para ello, además del tamaño y la rotación del objeto.
Imagen URL cargada (On image URL loaded)
Detonado cuando Cargar imagen de una URL (Load image from URL) termina su descarga de la imagen y
ésta está lista para mostrarse.
Acciones de Sprite
Para acciones comunes a varios objetos, ver Acciones Comunes.
Ajustar animación (Set animation)
Cambia la animación que se está reproduciendo a otra. Las animaciones se identifican por su nombre (que no
distingue mayúsculas y minúsculas). La nueva animación puede empezar desde el principio o desde el
mismo frame en el que se quedó la imagen anterior (frame actual (current frame)).
Voltear (Set flipped)
Ajusta si el objeto aparece volteado verticalmente o normal. Esto también afecta a los puntos de la imagen
en el polígono de colisión.
Espejar (Set mirrored)
Ajusta si el objeto aparece espejada horizontalmente o normal. Es útil para juegos de plataforma. Espejar
también afecta a los puntos de la imagen en el polígono de colisión.
Ajustar frame (Set frame)
Ajusta el número de frame de la animación siguiendo el índice basado en 0. La animación continuará
reproduciéndose de igual forma.
Ajustar velocidad (Set speed)
Ajusta la tasa de reproducción de la animación actual, en frames por segundo. Los ejemplos pueden tener
distintas velocidades de animación.
Empezar (Start)
Si la animación actual se para, esto hará que se reproduzca de nuevo desde el frame en el que se quedó
(current frame) o desde el principio.
Parar (Stop)
Detiene la animación. El objeto dejará de mostrar el frame actual.
Generar otro objeto (Spawn another object)
Crea un nuevo ejemplo del tipo de objeto. El nuevo ejemplo se crea en la misma posición y ángulo que el
objeto actual. Puede estar en cualquier capa (elegida por su nombre o por su índice basado en 0). Si se crea
una familia, un tipo de objeto al azar se recogerá en la familia.
Escalar (Set scale)
Ajusta la altura y la anchura a un múltiplo del tamaño actual del objeto, similar a hacer zoom de forma
proporcional. Por ejemplo, si el objeto es 50x100 Escalar a 2 (Set scale to 2) lo convertirá en 100x200 y
Escalar a 0,1 (Set scale to 0,1) lo convertirá en 5x10.
Cargar imagen de una URL (Load image from URL)
Carga una imagen de una URL dada. El frame actual de la animación se sustituirá por esa imagen. No se
muestra hasta que la imagen se ha terminado de cargar, cuando se detona Imagen URL Cargada (On image
URL loaded). Las imágenes cargadas de diferentes dominios están sujetas a las restricciones entre dominios
de las solicitudes AJAX – para más información ve a la sección del objeto AJAX. Los datos de URI se
pueden pasar a imagen, de una captura de pantalla o desde la webcam. El parámetro Tamaño (Size) ajusta si
el objeto Sprite se ajustará al tamaño de la imagen cuando se cargue o si mantiene su tamaño original y se
estrecha la imagen.
Habilitar colisiones (Set collisions enabled)
Habilita o deshabilita las colisiones del objeto. Si las deshabilitas significa que no se registrará ningún efecto
ni evento de colisión con objetos sólidos o a través.
Expresiones de Sprite
Para expresiones comunes a varios objetos, ver Expresiones Comunes.
Frame de animación (AnimationFrame)
El número de índice basado en cero del frame actual.
Contador de frames (AnimationFrameCount)
El número de frames que contiene la animación actual.
Nombre de Animación (AnimationName)
Una secuencia que contiene el nombre de la animación actual.
Velocidad de Animación (AnimationSpeed)
La tasa de reproducción de la animación actual, en frames por segundo.
Anchura de la imagen (ImageWidth)
Altura de la imagen (ImageHeight)
Las dimensiones originales del objeto (el tamaño del frame de la animación actual) en píxeles. Ya que el
objeto puede estrecharse en tiempo de ejecución cambiando los valores Anchura (Width) y Altura (Height),
esto se puede usar para saber el tamaño original sin tener en cuenta el nuevo tamaño.
ImagePointCount
Da el número de puntos de imagen mostrados en el frame de la animación.
ImagePointX
ImagePointY
Da la posición de los puntos de imagen mostrados en el frame de la animación. Puedes usar su índice basado
en 0 o la secuencia de su nombre para identificar puntos.
6.22 Fuente de Sprite (Sprite font)
Este objeto usa una imagen para mostrar texto. La “fuente de sprite” es un objeto de imagen que contiene
una cuadrícula con cada carácter que puede ser dibujado. Dibujando partes de esta imagen en secuencia se
pueden crear textos. Esto permite un control artísitico sobre la apariencia del texto, más que elegir sobre
fuentes preestablecidas.
Comparación con el objeto Texto
Ambos pueden mostrar texto en el juego. Texto puede mostrar caracteres monocromos de fuentes existentes,
que puede usar un rango de tamaños y las opciones negrita y cursiva. Por otro lado, Fuente de Sprite usa
imágenes paran cada carácter. Se puede usar cualquier imagen para el texto, permitiendo texto multicolor,
pero tiene el inconveniente de que solo es compatible con el tamaño y opción al que fueron dibujados.
Otra diferencia importante es que las fuentes tradicionales suelen ser compatibles con caracteres Unicode.
Esto te permite usar una gran cantidad de caracteres, incluyendo diversos alfabetos de otras lenguas. Es muy
difícil crear una fuente sprite que cubra los cientos de caracteres unicode posibles. Si una Fuente Sprite se
usa para mostrar un texto que contiene un carácter que no contempla, mostrará un espacio en blanco. Ten
esto en mente si permites que el usuario introduzca texto, como el nombre; o si desea traducir el juego en el
futuro, para esto es mejor el uso del objeto Texto.
Propiedades de Fuente de Sprite
Fuente Sprite (Sprite Font)
Clica el enlace Editar (Edit) para editar la fuente de la imagen que quieras que el texto tenga. La imagen
puede ser de cualquier tamañom pero debe caber el carácter que quieras mostrar completamente y es
preferible que sea cuadrado (por ejemplo, 128x128, 256x256, 512x512, etc.). Los carácteres empiezan en la
parte superior izquierda y se mueven hacia la derecha, dibujando la siguiente línea debajo de la primera. Si el
carácter es más estrecho que la celda y cambias su anchura usando la acción Set character width, la imagen
debe dibujarse alineada a la izquerda de la celda.
Anchura de carácter (Character width)
Altura de carácter (Character height)
El tamaño de cada celda en la Fuente de Sprite. Los caracteres individuales pueden mostrar se con una
anchura diferente usando la acción Set character width. En este caso, la imagen debe dibujarse alineada a la
izquerda de la celda.
Ajuste de carácter (Character set)
Una secuencia de caracteres que describe las letras de la fuente de sprite en una imagen. Por defecto empieza
con el alfabeto inglés, pero se puede cambiar a otras lenguas. Nota que la fuente de sprite solo puede mostrar
caracteres ajustados; cualquiera que no aparezca quedará con un espacio vacío.
Texto (Text)
El texto mostrado inicialmente.
Escala (Scale)
Una escala multiplicadora, como 0,5 para la mitado o 2 para el doble. Se usa para simular tamaños de fuente,
pero sólo ensancha las imágenes; quizás prefieras dibujar la fuente en otro tamaño en vez de escalar.
Visibilidad inicial (Initial visibility)
Si el objeto es visible o no en el plano de inicio.
Alineación horizontal (Horizontal alignment)
La alineación horizontal del texto dentro de su rectángulo.
Alineación vertical (Vertical alignment)
La alineación vertical del texto dentro de su rectángulo.
Hotspot
Donde situar el “punto caliente” (origen del objeto) en la parte de arriba a la izuierda o en el centro.
Envolver (Wrapping)
Elige palabra (Word) para no partir palabras enteras cuando llegues al final de la línea. Elige carácter
(Character) para dividir en cualquier letra, apropiado para algunos lenguajes.
Espaciar caracteres (Character spacing)
Añade espacio extra en píxeles entre caracteres de forma horizontal.
Altura de línea (Line height)
Añade espacio extra en píxeles entre caracteres de forma vertical, entre líneas. 0 es el tamaño por defecto,
los valores negativos acercaran y los positivos alejaran.
Condiciones de Fuente de Sprite
Cotejar texto (Compare text)
Comprueba el texto que está mostrando el objeto.
Acciones de Fuente de Sprite
Texto apéndice (Append text)
Añade texto al final del ya existente.
Ajustar espaciar caracteres (Set character spacing)
Ajustar altura de línea (Set line height)
Ajustar escala (Set scale)
Ajustar alineamiento horizontal (Set horizontal alignment)
Ajustar alineamiento vertical (Set vertical alignment)
Ajusta la correspondiente propiedad. Para más información ve a Propiedades.
Ajustar anchura de carácter (Set carácter width)
Ajusta la anchura de ciertos caracteres. Por ejemplo, “i” suele ser más estrecho que “w”, pero por defecto
ambos se muestran ocupando el mismo espacio. Esto hace que parezcan espaciados de forma extraña. Para
resolver esto, la acción puede establecer la anchura de “i” en menos del espacio de la celda. También puedes
introducir varios caracteres y ajustar su anchura a la vez, por ejemplo “iIjl1”. Cuando la anchura del carácter
es menro que la de la celda, la parte izquierda de la celda se muestra, por lo que éstos deben ser dibujados
alineados a la izquierda. Nota que también se puede ajustar la anchira del espacio del carácter, incluso si no
está dibujado en la imagen de la fuente de sprite – simplemente usa una secuencia con un espacio en ella.
Ajustar texto (Set text)
Cambia el texto actual por una nueva secuencia.
Expresiones de Fuente de Sprite
AlturaCaracter (CharacterHeight)
Da la altura de la celda de la fuente de sprite.
EscalaCaracter (CharacterScale)
EspacioCaracter (CharacterSpacing)
AlturaLínea (LineHeight)
Da las correspondientes propiedades. Para más información ve a propiedades.
AnchuraCaracter (CharacterWidth(char))
Da la anchura del caracter. Un caracter debe ser convertido a secuencia para que la acción Set character
width sea tomada en cuenta. Ya que la expression solo puede dar un valor, si hay varios caracteres en la
secuencia solo usará el primero.
Texto (Text)
Da el texto del objeto.
AnchuraTexto (TextWidth)
AlturaTexto (TextHeight)
Da el tamaño del texto detro de su rectángulo.
6.23 Texto (Text)
El objeto Texto puede mostrar texto en el juego usando fuentes. Nota que no hay muchas fuentes comunes a
todos los ordenadores - mira this page ⇗ para ver algunas fuentes comunes a todas las webs. El objeto
soporta estas Fuentes de Web usando la acción Ajustar fuente de web (Set web font). Para más información
mira el tutorial Using Web Fonts in the Text object ⇗ .
El objeto Texto no muestra nada si el rectángulo de texto es demasiado pequeño para que quepa una sola
letra. Si el texto desaparece prueba a agrandar el rectángulo.
Renderizar texto
Diferentes navegadores renderizan el texto de distintas formas, y la Vista de Plano de C2 también lo hace
distinto a los navegadores. Esto significa que debes esperar que la apariencia del texto sea algo distinta
cuando se juega en distintos navegadores.
Debes probar tu juego en varios de ellos para asegurarte que el texto se ve como tú pretendías. Para más
información ve a la sección Buenas prácticas.
Fuentes no soportadas en el editor
Por razones técnicas, algunas fuentes no son compatibles con C2. Sólo afecta la editor y no tiene por qué
significar que no se vaya a ver en algún navegador - asegúrate de probar todos los navegadores. Para
garantizar que la fuente que utilizas es visible para todos, se recomienda usar las Fuentes de Web.
Propiedades de Texto
Texto (Text)
El texto que mostrará el objeto.
Initial visibility (Visibilidad inicial)
Si el objeto se muestra (visible) o se esconde (invisible) cuando comienza el plano.
Fuente (Font)
La fuente en la que el objeto muestra el texto. Clica el botón a la derecha del nombre de fuente “…” para
abrir un diálogo y seleccionar la fuente. Las fuentes elegidas deben estar instaladas en el ordenador del
usuario para que se muestren correctamente. Por esta razón se recomienda usar Fuentes de Web en vez de
elegir fuentes poco comunes.
Color
Elige el color del texto.
Alineamiento horizontal (Horizontal alignment)
Elige si el texto se muestra alineado a la izquierda, centrado o a la derecha dentro del rectángulo de texto.
Origen (Hotspot)
Elige si el origen del objeto estará en la parte de arriba a la izquierda del rectángulo de texto (por defecto) o
centrado (centered). Esto sólo es importante si se quiere rotar el texto.
Ajustar (Wrapping)
Elige como se ajusta el texto al final de la línea. Palabra (Word) ajustará palabras enteras separadas por
espacios o guiones. Carácter (Character) se cambiará a la siguiente línea en cualquier carácter, lo que podría
partir palabras en Idiomas Occidentales, pero que es útil en idiomas como el chino.
Interlineado (Line height)
Cantidad de espacio entre una línea y otra del texto, en píxeles. Usa 0 para que sea por defecto, -5 para 5
píxeles menos que el defecto, 10 para 10 píxeles más que el defecto y así sucesivamente.
Condiciones de Texto
Para condiciones comunes a otros objetos ve a Condiciones comunes.
Cotejar texto (Compare text)
Comprueba si el objeto está mostrando cierta secuencia de texto. Puede diferenciar mayúsculas de
minúsculas (“TEXT” sería distinto de “text”) o no (“TEXT” sería lo mismo que “text”). Para comprobar que
el objeto no está mostrado cierto texto invierte la condición.
Acciones de Texto
Para acciones comunes a otros objetos ve a Acciones comunes.
Ajustar color de fuente (Set font color)
Ajusta el color del texto. Usa expresiones como rgb(red, green, blue).
Ajustar fuente (Set font face)
Cambia la fuente en la que se muestra el texto. Las fuentes elegidas deben estar instaladas en el ordenador
del usuario para que se muestren correctamente. Por esta razón se recomienda usar Fuentes de Web en vez
de elegir fuentes poco comunes.
Ajustar tamaño de fuente (Set font size)
Ajusta el tamaño del texto en puntos (pt).
Ajustar fuente de web (Set web font)
Establece una fuente de web cargada online. Para más información ve al tutorial Using Web Fonts in the
Text object ⇗.
Texto apéndice (Append text)
Añade texto al final del texto actual. Por ejemplo si el objeto contiene Hola y tiene Mundo como apéndice, el
objeto de texto contendrá entonces HolaMundo.
Ajustar texto (Set text)
Establece que el objeto de texto se está mostrando en ese momento. Usa el operador & para combinar texto y
números. Para más información ve a Expresiones.
Expresiones de Texto
Para expresiones comunes a otros objetos ve a Expresiones comunes.
Texto (Text)
Da la secuencia que contiene el objeto de texto actual.
Anchura de Texto (TextWidth)
Altura de Texto (TextHeight)
Da el tamaño del contenido actual dentro del rectángulo de texto.
6.24 Cuadro de texto (Textbox)
El objeto Cuadro de Texto crea un campo de texto en el que el usuario puede escribir.
Los controles de formulario son elementos HTML que flotan sobre el lienzo del juego en la página HTML.
Por lo tanto, no se puede mostrar nada por encima de un control, aparte de otros controles.
Los controles se posicionan ellos solos de acuerdo al paralaje de la capa, su escala y otros. Sin embargo, no
están realmente en el juego (ya que flotan encima) por lo que se recomiendo evitar el uso de
desplazamientos, paralaje y escalas, de otra forma no quedaría natural.
Estilo de Cuadro de Texto
Los botones se pueden personalizar de un gran número de formas usando CSS (Hojas de estilo en cascada).
En vez de tener muchas acciones para ajustar todas las posibles propiedades, tiene una sola acción Ajustar
estilo CSS (Set CSS style). CSS ahorra trabajo, es sencillo para usar con propiedades simples. Aquí algunos
ejemplos:
Hacer el texto rojo (Make the text red): Ajusta el "color" a "rojo".
Hacer el fondo amarillo (Make the background yellow): Ajusta el "color del fondo" a "amarillo".
Hacer el borde gris claro y fino (Make the border a thick light grey: Ajusta el "borde" a "3px solid
#AAAAAA".
Hacer la letra más grande (Make the font bigger): Ajusta el "tamaño de letra" a "2em".
Hacer un borde rojo y discontinuo (Make a dashed red border): Ajusta el "borde" a "2px dashed red".
Propiedades de Cuadro de texto
Texto (Text)
El texto introducido en el campo.
Marcador de posición (Placeholder)
Texto que aparece débilmente cuando el campo está vacío. Sirve de pista para saber para qué sirve ese
campo, (como Nombre de usuario (Username)).
Consejo de Herramienta (Tooltip)
Un consejo que aparece so el usuario pone el ratón encima del cuadro de texto y espera. Déjalo en blanco si
no quieres que haya consejo.
Visibilidad inicial (Initial visibility)
Si el cuadro de texto se muestra o no al inicio. Si es Invisible el campo se debe mostrar con la acción Hacer
visible (Set visible).
Habilitado (Enabled)
Si el cuadro de texto está habilitado al inicio. Si No, el campo estará bloqueado y no se podrá modificar.
Sólo lectura (Read-only)
Establece si el texto es de sólo lectura, que significa que el texto no se puede modificar pero sí seleccionar.
Es diferente a deshabilitar el campo, ya que entonces no se podrá seleccionar.
Comprobar ortografía (Spell check)
Habilita el corrector en el texto introducido en el campo, si el navegador lo soporta. Si está habilitado los
errores ortográficos se subrayarán con una línea roja.
Tipo (Type)
Ajusta el tipo de contenido que se tiene que introducir en el campo. Puede ser:
Texto (Text) cualquier contenido.
Contraseña (Password) cualquier contenido pero escondiendo los caracteres.
Email para secuencias de formato similar a [email protected].
Número (Number) sólo caracteres numéricos.
Número de teléfono (Telephone number) sólo caracteres de números de teléfono.
URL direcciones web de formato similar a http://example.com.
Área de texto (Área de texto) texto de varias líneas.
Los de tipo email, número, número de teléfono y URL son más útiles en dispositivos móviles ya que cambia
el tipo de teclado táctil de acuerdo al contenido a introducir. Por ejemplo, Texto mostrará un teclado general
mientras que Número mostrará solo los números, haciendo la tarea más fácil al usuario.
Tamaño de fuente automático (Auto font size)
Ajusta automáticamente la propiedad de tamaño de fuente de acuerdo a la escala de la capa y del plano. Esto
evitará se muestre la propiedad CSS ajustada manualmente con la acción Ajustar estilo CSS (Set CSS style).
Ajusta a No si pretendes ajustar tú mismo el tamaño con Ajustar estilo CSS (Set CSS style).
ID (Opcional)
Una id adicional para el elemento en el DOM (Modelo de Objetos del Documento). Puede ser útil para
acceder al valor del elemento desde scripts externos, o dar estilo con CSS en la página HTML.
Condiciones de Cuadro de texto
Cotejar texto (Compare text)
Coteja el texto introducido en el campo. Puede diferenciar mayúsculas de minúsculas (“TEXT” sería distinto
de “text”) o no (“TEXT” sería lo mismo que “text”).
Clicado (On clicked)
Detonado cuando el usuario clica el campo
Doble-clicado (On doublé-clicked)
Detonado cuando el usuario hace doble clic en el campo
Texto cambiado (On text changed)
Detonado siempre que el texto del campo se modifica, escribiendo, borrando, cortando/copiando, etc.
Acciones de Cuadro de texto
Ajustar estilo CSS (Set CSS style)
Ajusta el estilo CSS (Hojas de estilo en cascada) en el elemento Cuadro de texto. Para más información ve a
la sección Estilo de Cuadro de Texto. Nota que si la propiedad Tamaño de fuente automático (Auto font size)
está activada, cualquier cambio en esta acción no se aplicará.
Habilitar (Set enabled)
Habilita o deshabilita el campo. Cuando está deshabilitado, el campo está bloqueado y no se puede
modificar.
Enfocar (Set focused)
Enfoca el campo. El cursor de texto parpadeará y estará preparado para la escritura.
Ajustar marcador de posición (Set placeholder)
Ajusta el texto que aparecerá débilmente cuando el campo esté vacío. Se usa para dar pistas sobre qué debe
contener el campo (como Nombre de usuario (Username)).
Establecer sólo lectura (Set read-only)
Establece si el campo es de sólo lectura, que significa que el texto no se puede modificar pero sí seleccionar.
Es diferente a deshabilitar el campo, ya que entonces no se podrá seleccionar.
Ajustar texto (Set text)
Ajusta el texto introducido en el campo.
Ajustar consejo de herramienta (Set tooltip)
Ajusta el texto que aparecerá en el consejo. Déjalo blanco si no quieres que aparezca.
Desenfocar (Set unfocused)
Quita el foco.
Expresiones de Cuadro de texto
Texto (Text)
Da la secuencia que contiene el texto introducido en el campo.
6.25 Fondo Adosado (Tiled Background)
El objeto Fondo Adosado muestra una imagen repetidamente formando un mosaico, como se ve abajo.
Este mosaico se puede conseguir con un solo objeto de Fondo Adosado, y mucho más rápido (y más fácil de
editar) que usar varios objetos Sprite en una cuadrícula. Usa este objeto simpre que la imagen se repita.
Este objeto no puede tener polígono de colisión. Siempre colisionand e acuerdo al rectángulo de acción
(bounding rectangle).
Además, se les puede aplicar efectos. Para más información ve a Efectos.
Tamaños potencia de dos (Power-of-two sizes)
Para unos mejores resultados, usa cuadrados de potencia dos para el mosaico (por ejemplo 16x16, 32x32,
64x64, 128x128...). Se consiguen mejores resultados en el modo WebGL. El objeto seguirá funcionando con
otros tamaños que no tengan potencia dos, pero la calidad se puede reducir ya que la imagen tiene que
estrecharse a un tamaño en potencia dos antes de adosarse. (Nota que esto no se aplica a los objetos Sprite,
que pueden usar cualquier tamaño).
Propiedades de Fondo Adosado
Imagen (Image)
Clica el enlace Editar (Edit) para editar la imagen del mosaico.
Visibilidad inicial (Initial visibility)
Elige si el objeto se muestra (visible) o se oculta (invisible) al inicio del plano.
Origen (Hotspot)
Elige donde está el origen en el objeto. Por defecto está en la parte de arriba a la izquierda del rectángulo de
acción, pero se puede poner en el Centro (Center) que puede ser útil para rotar el objeto.
Condiciones, acciones y expresiones de Fondo Adosado
El Fondo Adosado tiene unas pocas condiciones, acciones y expresiones únicas. Ve a Características
comunes para documentarte sobre las funciones comunes a varios objetos en C2.
Condiciones de Fondo Adosado
Imagen URL cargada (On image URL loaded)
Detonado cuando la acción Cargar imagen desde URL (Load image from URL) termina de descargar la
imagen y está preparado para mostrarla.
Acciones de Fondo Adosado
Cargar imagen desde URL (Load image from URL)
Carga una imagen de una URL dada. No se muestra hasta que la imagen se ha descargado completamente,
cuando se detona Imagen URL cargada (On image URL loaded). Las imágenes cargadas de diferentes
dominios están sujetas a las restricciones entre dominios de las solicitudes AJAX. Los datos URI se pueden
pasar a imagen, como una captura de pantalla o imagen de la webcam.
Expresiones de Fondo Adosado
AnchuraImagen (ImageWidth)
AlturaImagen (ImageHeight)
Las dimensiones originales de la imagen que compone el fondo en píxeles. Ya que estos fondos pueden
extenderse sobre grandes áreas, este valor se puede usar para saber el valor de la imagen fuente, sin importar
su extensión.
6.26 Mosaico (Tilemap)
El objeto Mosaico permite diseñar juegos basados en mosaicos de forma más fácil. Se puede editar en la
Vista de plano con la Barra de Mosaico.
Para más información sobre la edición de mosaicos en C2, ve a la Barra de Mosaico.
Ajustes recomendados
Cuando insertes el objeto en C2, te sugerirá el uso de ajustes recomendados para estos juegos. Éstos son
muestra de Punto (Point), habilitar el Redondeo de píxeles (Pixel rounding) y el modo pantalla completa
(Letterbox integer scale). Es altamente recomendable usar estos ajustes para evitar la aparición de uniones,
que pueden mostrar líneas o espacios entre teselas. Las uniones aparecen debido a posicionamiento
fraccional o escala (por ejemplo, mover la mitad de un píxel, como X 100,5; o usar una escala a un número
con decimales como 1,7x), y estos ajustes aseguran que esto no pase.
Imagen Mosaico
La imagen usada para el mosaico es el conjunto de teselas (tileset). Es una imagen que contiene cada tesela
diferente usada en el objeto. Esta imagen aparece en la Barra de Mosaico tras sleccionar el objeto,
permitiendo que elijas que teselas quieres dibujar.
Colisiones
Cuando pruebas las colisiones con el objeto Mosaico, las teselas vacías no cuentan para la colisión. Se puede
establecer un polígono de colisión personalizado para cada tesela, clicando el botón Edit tile collision
polygon en la barra de Mosaico o haciendo doble click en la tesela en la misma barra. Nota que un polígono
de colisión no se puede eliminar del todo, sólo las teselas vacías o borradas evitan la colisión.
Si desea tener teselas visibles pero que no registren colisión usa dos objetos mosaicos uno sobre otro. Prueba
las colisiones solo con el de arriba y borra las teselas que no quieres que tengan colisión. Así, se verán las de
abajo pero no tendrá colisión.
IDs de teselas
Cada tesela en el conjunto tiene un índice basado en cero para identificarla. Empieza con la tesela de arriba a
la izquierda y se incrementa en filas horizontales. Puedes ver la ID de cada una posando el ratón sobre ella
en la Barra de mosaico. Esto es útil para comparar o ajustar teselas durante el juego con las condiciones,
acciones y expresiones del objeto.
Posición de las teselas
Cuando uses teselas en las condiciones, acciones y expresiones del objeto, las posiciones son dadas en
teselas en vez de en coordenadas del plano. Puedes cambiarlo usando las expresiones PositionToTileX/Y y
TileToPositionX/Y expressions.
Propiedades de Mosaico
Imagen (Image)
Clica el enlace Edit para editar las imágenes de las que se compone la tesela.
Visibilidad inicial (Initial visibility)
Elige si el objeto es visible o no en el inicio del plano.
Anchura de Tesela (Tile width)
Altura de Tesela (Tile height)
El tamaño de las teselas en el mosaico, en píxeles. Se recomienda usar teselas cuadradas.
Inclinación X de tesela (Tile X offset)
Inclinación Y de tesela (Tile Y offset)
La inclinación en píxeles de la tesela de la parte superior izquierda. Normalmente no es necesario ajustarla
ya que viene dada por la compatibilidad con las imágenes dibujadas.
Espacio X de tesela (Tile X spacing)
Espacio Y de tesela (Tile Y spacing)
El espacio en píxeles entre las teselas del mosaico. Normalmente no es necesario ajustarla ya que viene dada
por la compatibilidad con las imágenes dibujadas.
Condiciones de Mosaico
Cotejar tesela en (Compare tile at)
Comprueba la ID de la tesela en una posición del mosaico
Cotejar estado de tesela en (Compare tile state at)
Comprueba si una tesela en una posición del plano está rotada o volteada.
Acciones de Mosaico
Descarga (Download)
Realiza una descarga de los datos del mosaico (de la expresión TilesJSON) como un archivo JSON. Es útil
para editores de nivel etro del juego.
Cargar (Load)
Carga las teselas de una secuencia en formato JSON desde un uso previo de la expresión TilesJSON.
Borrar tesela (Erase tile)
Borra una tesela de su posción.
Borrar rnago de teselas (Erase tile range)
Borra un área rectangular de teselas en el mosaico.
Ajustar tesela (Set tile)
Ajusta la tesela en una posición por su ID. Se puede voltear o rotar.
Ajustar rango de teselas (Set tile range)
Como la anterior, pero coloca un área rectangular de teselas.
Ajustar estado de tesela (Set tile state)
Rota o voltea la tesela en una posición. La ID no cambia.
Ajustar estado rango de teselas (Set tile state range)
Como la anterior, pero cambia un área rectangular de teselas.
Expresiones de Mosaico
TilesJSON
Da los datos de la tesela en formato JSON, que puede cargarse de nuevo usando la acción Cargar (Load).
Nota que esto es diferente de la expresión AsJSON, que da el estado completo del objeto (incluyendo
posición. Tamaño, comportamientos, etc.), mientras que esta sólo da datos de la tesela.
PositionToTileX(x)
PositionToTileY(y)
Convierte las coordenadas del plano X e Y en su correspondiente número de tesela. Por ejemplo, se puede
usar para conseguir la posición de una tesela con el ratón.
SnapX(x)
SnapY(y)
Acerca una coordenada del plano X o Y a la tesela más cercana. Da también una coordenada, pero alineada a
la tesela más cercana.
TileAt(x, y)
DA ta ID de la tesela en una posición del mosaico. Nota que la posición se da en teselas, no en coordenadas.
Si la tesela está vacía (ha sido borrada) la expresión será -1.
TileToPositionX(x)
TileToPositionY(y)
Convierte la posición de una tesela en coordenadas. Por ejemplo, se puede usar para posicionar un Sprite
encima de una tesela concreta.
6.27 Táctil (Touch)
El objeto Táctil detecta entradas de dispositivos táctiles como iPhones, iPads, Android y Windows 8. La
opción táctil para ordenadores de mesa también está disponible, pero son poco usuales en comparación a los
móviles.
El objeto Táctil también da entradas de acelerómetros y giroscopios (inclinación/dirección de la brújula) si
el dispositivo los soporta.
Es mejor habilitar entradas táctiles siempre que sea posible. En la actualidad muchos usuarios suelen navegar
en dispositivos móviles sin teclado ni ratón. Si tu juego no soporta los controles táctiles, estos usuarios no
podrán jugar tu juego. Para una guía de cómo usar estos controles ve al tutorial Touch controls ⇗.
Para varios ejemplos de esto, busca Touch en el Diálogo de inicio.
Multi-táctil (Multi-touch)
El objeto Táctil soporta también estímulos táctiles múltiples. Este modo es más útil con las condiciones
Objeto tocado (On touched object) y Está tocando objeto (Is touching object), que pueden detectar varios
controles táctiles simultáneos.
Para más usos avanzados, las expresiones Contador de toques (TouchCount), XAt y YAt dan los contactos
actuales en la pantalla. Los toques tienen un índice basado en 0, así que 0 es el primer toque, 1 el segundo y
así sucesivamente. Los toques se ordenan como una pila: el primero (el más viejo) es siempre el 0, el
segundo es siempre el 1 y así sucesivamente. Si un toque se destruye y después se vuelve a añadir, se
convertirá en el último toque de la lista.
Propiedades de Táctil
Usar entradas de ratón (Use mouse input)
Si está en Sí, los clics del ratón simularán los toques en la pantalla. Clicar y arrastrar con el botón izquierdo
del ratón simulará un arrastre con el dedo y los clics sencillos simularán toques. Puede ser muy útil para
probar que los eventos táctiles funcionan correctamente en un ordenador de mesa que no tenga pantalla
táctil. Sin embargo, sólo los toques simples se pueden simular además de que el ratón es mucho más preciso,
por lo que es mejor probarlos en un dispositivo táctil real.
Condiciones de Táctil
Cotejar aceleración (Compare acceleration)
Comprueba la movilidad del dispositivo como su aceleración en cada eje en metros por segundo por
segundo. El efecto de la gravedad se puede incluir o no, pero nota que algunos dispositivos solo son
compatibles con acelerómetros que incluyen el efecto de la gravedad y siempre darán 0 si la excluyes.
Cotejar orientación (Compare orientation)
Comprueba la orientación del dispositivo, si es compatible con ello. Alpha es la dirección en grados. Beta es
la inclinación delante-detrás en grados. Un valor positivo indica inclinación hacia delante y uno negativo
hacia atrás. Gamma es la inclinación izquierda-derecha en grados. Un valor positivo indica inclinación hacia
la derecha y uno negativo hacia la izquierda.
Cotejar velocidad de toque (Compare touch speed)
Coteja la velocidad de un toque específico (dado por su índice basado en 0). La velocidad se mide en el
lienzo en píxeles por segundo, por lo que no se ve afectado por la escala de la pantalla.
Tiene N toques (Has Nth touch)
Verdadero si el número de toques dado, coincide con los que están en contacto con la pantalla. Por ejemplo,
Has touch 1 será verdadero si hay dos o más toques en contacto con la pantalla (de acuerdo con el índice
absado en 0).
Está tocando (Is in touch)
Verdadero si algo está tocando la pantalla.
Está tocando un objeto (Is touching object)
Verdadero si se está tocando un objeto dado.
Toque finalizado (On touch end)
Detonado cuando cualquier toque se suelta de la pantalla.
Toque empezado (On touch start)
Detonado ante cualquier toque de la pantalla.
Objeto tocado (On touched object)
Detonado cuando se toca un objeto dado.
Acciones de Táctil
El objeto Táctil no tiene acciones.
Expresiones de Táctil
Aceleración X (AccelerationX)
Aceleración Y (AccelerationY)
Aceleración Z (AccelerationZ)
Da el movimiento actual del dispositivo como su aceleración en cada eje en m/s^2 (metros por segundo por
segundo) excluyendo el efecto de la gravedad. La expresión que incluye la gravedad (abajo) es más común;
esta dará 0 en los dispositivos que no la soporten.
Aceleración X con G (AccelerationXWithG)
Aceleración Y con G (AccelerationYWithG)
Aceleración Z con G (AccelerationZWithG)
Da el movimiento actual del dispositivo como su aceleración en cada eje en m/s^2 (metros por segundo por
segundo) incluyendo la aceleración causada por la gravedad, que es sobre 9.8 m/s^2 hacia abajo. Esta
expresión es comúnmente soportada. Sin embargo, algunos dispositivos no garantizan la detección de
movimiento, en cuyo caso dará 0 en cada caso.
Alpha
Beta
Gamma
Da la orientación del dispositivo si es soportada, o 0 en caso de que no. Alpha es la dirección de la brújula en
grados. Beta es la inclinación de adelante hacia atrás en grados (la inclinación ante ti si lo mantienes delante
de ti). Los valores positivos indican inclinación hacia adelante y los negativos hacia atrás. Gamma es la
inclinación hacia los lados en grados (si lo mantienes delante de ti). Los valores positivos indican inclinación
hacia la derecha y los negativos hacia la izquierda.
X Absoluta (AbsoluteX)
Y Absoluta (AbsoluteY)
X en (índice) Absoluta (AbsoluteXAt(index))
Y en (índice) Absoluta (AbsoluteYAt(index))
Da la posición actual de un toque sobre el lienzo. Será (0, 0) en la parte de arriba a la izquierda y aumenta
con el tamaño de la ventana. No se ve afectado por desplazamientos o escalas del juego. Las expresiones En
(At) dan la posición absoluta de un toque dando su índice basado en 0, permitiendo toques múltiples.
X
Y
XAt(index)
YAt(index)
XForID(id)
YForID(id)
Da la posición actual de un toque en las coordinadas del plano. Cambia reflejando desplazamientos y
escalas. Sin embargo. Si se mueve, escala o rota una sola capa esta expresión no la tendrá en cuenta - para
ese caso usa la versión de abajo. Las expresiones En (At) dan la posición absoluta de un toque dando su
índice basado en 0, permitiendo toques múltiples, y la expresión ForID da la posición de un toque con una
ID específica.
X (“capa”) (X("layer"))
Y (“capa”) (Y("layer"))
XAt(index, "layer")
YAt(index, "layer")
XForID(id, "layer")
YForID(id, "layer")
Da la posición actual de un toque en las coordinadas del plano, incluyendo desplazamientos y escalas en
cualquier capa. La capa se identifica por la secuencia de su nombre o por su índice basado en 0 (Touch.X(0)).
Las expresiones En (At) dan la posición absoluta de un toque dando su índice basado en 0, permitiendo
toques múltiples. Por ejemplo, para conseguir la coordinada X del segundo toque de la capa de abajo, la
expresión sería Touch.XAt(1, 0). La expresión ForID da la posición de un toque con una ID específica.
Contador de toques (TouchCount)
Número de toques actuales en contacto con la pantalla del dispositivo.
IDToque (TouchID)
Da la ID única para un toque (que es un número arbitrario) en un evento como On any touch start o On any
touch end.
ÍndiceToque (TouchIndex)
Da el índice basado en 0 de un toque en un evento como On any touch start o On any touch end.
Ángulo en (índice) (AngleAt(index))
AngleForID(id)
Da el ángulo de movimiento de un toque específico en grados dando su índice basado en 0 o su ID única. Un
toque debe moverse a través de la pantalla para que esta expresión tenga un valor útil.
Velocidad en (índice) (SpeedAt(index))
SpeedForID(id)
Da la velocidad de un toque específico (dado por su índice basado en 0 o su ID única). La velocidad del
toque se mide en el lienzo en píxeles por segundo, por lo que no se ve afectado por ninguna escala del
dispositivo.
6.26 Medios de comunicación del Usuario (User Media)
El objeto Medios de comunicación del Usuario permite obtener entradas de cámara de un usuario.
Requiere un dispositivo de video en el sistema del usuario, como una webcam o la cámara del móvil. Se
podrán obtener fotos y transferirse a Sprites o a Fondos Adosados.
Por razones de seguridad, la mayoría de los navegadores pedirán permiso al usuario antes de permitir
entradas de cámara y mostrará notificaciones cuando la cámara se esté usando.
Este objeto tiene muchas características comunes a otros objetos, incluyendo la posibilidad de aplicar
efectos.
Para varios ejemplos de esto, busca User Media en el Diálogo de inicio.
En el plano
El objeto Medios de comunicación del Usuario aparece como un rectángulo en la Vista de Plano, con una
cruz roja. Representa donde se mostrará el video introducido en el plano. Si solo necesitas un micro, pon el
Medio de Comunicación fuera del plano.
Condiciones de Medios de comunicación del Usuario
Luz de ambiente actualizada (On ambient light reading update)
Detonado cuando la luz de ambiente (expresión AmbientLux) cambia. Esto solo ocurre si el dispositivo tiene
un sensor apropiado.
Solicitud de medios aprobada (On media request approved)
Detonado cuando el usuario confirma que quiere usar la cámara tras la acción Solicitar cámara (Request
camera) indicando el permiso a la aplicación para usar la cámara.
Solicitud de medios rechazada (On media request declined)
Detonado cuando el usuario cancela la petición tras la acción Solicitar cámara (Request camera) indicando
que no da permiso a la aplicación para usar la cámara.
Está reconociendo discurso (Is recognising speech)
Verdadero si la petición de reconocimiento de voz ha sido aceptada, y se habla por el micrófono.
Reconocimiento de discurso terminado (On speech recognition end)
Detonado tras la acción Stop speech recognition, o después de que el usuario pare de hablar en el modo
Single phrase de reconocimiento.
Error en reconocimiento de discurso (On speech recognition error)
Detonado soi hay algún error aprobando el reconocimiento o durante el mismo. La expresión SpeechError
describe el tipo de problema, por ejemplo “not-allowed” si no se ha permitido el reconocimiento.
Resultado de reconocimiento de discurso (On speech recognition result)
Detonado durante el reconocimiento cuando la transcripción provisional o la final ha cambiado. Usa las
expresiones FinalTranscript y/o InterimTranscript para obtener el resultado actualizado.
Reconocimiento de discurso empezado (On speech recognition start)
Detonado tras la aprobación del reconocimiento en Request speech recognition.
Es compatible con reconocimiento de discurso (Supports speech recognition)
Verdadero si el navegador o plataforma es compatible. Si es falso no funcionará ninguna de las
características de este objeto.
Está hablando (Is speaking)
Verdadero si el motor de síntesis del discurso está leyendo.
Es compatible con sintesis del discurso (Supports speech synthesis)
Verdadero si el navegador es compatible, por lo que la acción Speak text funcionará.
Es compatible con medios de usuario (Supports user media)
Verdadero si el navegador actual puede usar el objeto Medios de comunicación del Usuario. No todos ellos
pueden así que en este caso se indicará que no está disponible. Puede ser verdadero incluso aunque el
usuario no tenga dispositivos de video instalados en su sistema, ya que solo tiene en cuenta la capacidad del
navegador de usar cámaras o no.
Acciones de Medios de comunicación del Usuario
Solicitar cámara (Request camera)
Muestra una petición de seguridad para dar permiso a la aplicación para usar entradas de cámara. Solicitud
de medios aprobada (On media request approved) o Solicitud de medios rechazada (On media request
declined) se detonarán dependiendo de la respuesta. Si se aprueba el objeto se aparecerá en el plano y
mostrara entradas de video.
Solicitar micrófono (Request microphone)
Muestra una petición para dar permiso a la aplicación para usar un micrófono. On media request approved o
On media request declined se detonaran dependiendo de la respuesta. El objeto Audio debe estar en el
proyecto, Advanced audio supported debe ser verdadera. Se dará una etiqueta al micrófono y el audio
entrante se manejará como si de reproducir un sonido se tratase. Esto significa que puedes asignar efectos de
Audio al micrófono añadiendo los efectos a la misma etiqueta asignada al micrófono. Una combinación útil
es añadir un efecto anmalizador y después uno de silencio, pues evita que el usuario escuche su propia voz,
a la vez que permites subir el tono, RMS y monitorizar el espectro del sonido con el analizador.
Foto (snapshot)
Si el usuario ha aprobado la solicitud de cámara y el objeto se muestra, está acción capturará el frame actual.
La imagen estará disponible en la expresión FotoURL (SnapshotURL) como datos URI. La imagen se podrá
cargar en un Sprite o Fondo adosado usando la acción Cargar imagen de una URL (Load image from URL)
y usando FotoURL (SnapshotURL). Esta acción muestra parámetros opcionales para especificar el formato
de compresión, lo que es útil si pretendes subir y guardar la imagen en un archivo más pequeño.
Parar (Stop)
Finaliza cualquier captura de video activa. Se debe volver a pedir permiso para poder usarse de nuevo.
Pedir reconocimiento de discurso (Request speech recognition)
Si Suport speech recognition es verdadero, inicia el reconocimiento. Aparecerá una solicitud de permiso al
usuario, que debe permitir a la página usar audio del micrófono. Si acepta se detonará On speech recognition
start, y si hay un problema o no acepta se detonará On speech recognition error.
Idioma (Language) especifica el lenguaje a reconocer. Usa una etiqueta como en para Inglés, en-US para
Inglés americano y en-GB para Inglés británico.
El Modo (Mode) puede ser continuo, que mantiene el reconocimiento hasta que se cierre la págino o se use
Stop speech recognition; o de una sola frase, que reconoce el discurso hasta que el usuario hace una pausa,
detonando On speech recognition end.
Resultado (Result) puede ser provisional (donde el resultado puede cambiar) con la expresión
InterimTranscript; o final, mediante la expresión FinalTranscript.
Parar reconocimiento de discurso (Stop speech recognition)
Si está activo, termina el reconocimiento. Se detona On speech recognition end.
Pausar hablar (Pause speaking)
Reanudar hablar (Resume speaking)
Pausa o reanuda la lectura mediante el sintetizador de discurso y la acción Speak text.
Decir texto (Speak text)
Lee texto usando el sintetizador. El idioma, volumen, tasa y tono de la voz se puede personalizar. La Voice
URI se puede usar paran cambiar el tipo de voz (hombre o mujer) de una lista de voces. La lista se puede ver
usando las expresiones VoiceCount y VoiceURIAt.
Parar hablar (Stop speaking)
Para de leer el texto de la acción previa. No se puede reanudar.
Expresiones de Medios de comunicación del Usuario
LuzAmbiente (AmbientLux)
La luz ambiental en lux, o 0 si no hay sensor. Cambia en el detonador On ambient light reading update.
TranscripciónFinal (FinalTranscript)
Si el reconocimiento de voz funciona, da la transcripción final. No cambia, sólo puedes añadir nuevo texto.
TranscripciónProvisional (InterimTranscript)
Si el reconocimiento de voz funciona, da la transcripción provisional. La acción Request speech recognition
debe haber especificado Interim para el parámetro Results. El texto puede cambiar, ya que el motor utiliza
sonido en tiempo real para refinar el resultado y corregir cualquier posible error. Una vez que el ususario
haya dicho lo suficiente para asegurar una buena transcripción, el audio pasará a ser final.
ErrorDiscurso (SpeechError)
En On speech recognition error, hay una secuencia que identifica el tipo de error. Los valores posibles son:
“no- discurso” (“no-speech”), “abortado” (“aborted”), “captura-audio” (“audio-capture”), “red”
(“network), “no-permitido” (“not-allowed”), “servicio-no-permitido” (“service-not-allowed”), “malagramática” (“bad-grammar”), “idioma-no-compatible” (“language-not-suported”). Los más comunes son
la no permisión, si el usuario ha declinado la petición; la captura de audio, si no hay micrófonos; o red si el
servidor no está disponible.
ContadorVoz (VoiceCount)
Da el número de voces disponibles para uso en el sintetizador.
VoiceLangAt(i)
VoiceNameAt(i)
VoiceURIAt(i)
Da el idioma, nombre o URI de la voz de acuerdo a su índice basado en 0. Se puede usar para mostrar al
usuario la lista de posibles voces. Para seleccionar una distinta, usa la voz URI elegida en la acción Speak
text.
FotoURL (SnapshotURL)
Un dato URI que representa la foto capturada tras la acción Foto (Snapshot), de otra forma estará vacía. La
imagen se podrá cargar en un Sprite o Fondo adosado usando la acción Cargar imagen de una URL (Load
image from URL) y usando FotoURL (SnapshotURL). Además, los datos URI se pueden enviar a un
servidor, guardado en un disco o cualquier otra cosa que quieras hacer con ellos.
Anchura de video (VideoWidth)
Altura de video (VideoHeight)
Si una grabación de video está aprobada y activa, esto da el tamaño en píxeles de la grabación que hace el
dispositivo (que puede no ser la misma que la del objeto en el plano). Si no está activa dará 0.
6.29 WebSocket
Este plugin es una simplen clase de envoltorio (wrapper) del protocolo WebSocket estandarizado. Permite la
comunicación bidireccional en tiempo real. Ya que los WebSockets están basados en estándares, debe ser
compatible con cualquier servidor WebSocket estándar.
Usar el plgin requiere un servidor WebSocket. C2 no da un servidor, así que si no lo tienes debes crear uno
usando una tecnología como node.js con soporte WebSocket. Esto puede resultar complejo si no tienes cierto
conocimiento previo en programación de servidores.
Nota que el plugin WebSocket de momento sólo es compatible con mensajes de texto y no binarios.
Websockets y juegos multijugador
Parece interesante usar WebSockets para diseñar juegos en tiempo real para juegos multijugador.
Desafortunadamente, a pesar de comunicarse en tiempo real, este plugin no es una buena opción de
momento. Para la transmisión, un simple paquete puede soportar todas las transmisiones hasta que se
transmitan con éxito. Para juegos que demandan tiempo real, esto puede ser demasiado tiempo. Es imposible
diseñar sin cambiar el modo de transmisión, lo que no sería compatible con WebSocket.
Por otro lado, WebSocket puede usarse para juegos que no tengan una demanda de comunicación a tiempo
real, como los juegos basados en turnos. También puede ser útil para aplicaciones, como chats. Nota que
para esto sigues necesitando tu propio servidor WebSocket.
Propiedades de Websocket
El objeto WebSocket no tiene propiedades.
Condiciones de Websocket
Está conectando (Is conecting)
Verdadero si el proceso de establecer conexión con el servidor se está desarrollando. Todavía no sde
establecido, por lo que puede haber algún error.
Está abierto (Is open)
Verdadero si la conexión se ha establecido con éxito y el canal de comunicación se está abriendo.
Es compatible (Is supported)
Úsalo antes de intentar cualquier conexión para verificar que el navegador o plataforma es compatible con
WebSocket.
Cerrado (On closed)
Detonado cuando se cierra la conexión, a propósito o por algún error. Las expresiones CloseCode y
CloseReason indican por qué se ha cerrado.
Error (On error)
Detonado cuando ocurre un error en la conexión. Consigue el mensaje de error con la expresión ErrorMsg.
Abierto (On opened)
Detonado cuando la conexión se ha establecido con éxito y el canal de comunicación está abierto.
Mensaje (On message)
Detonado cuando llega un mensaje de texto desde el servidor en una conexión abierta. Usa la expresión
MessageText para ver el contenido del mensaje.
Acciones de Websocket
Cerrar (Close)
Cierra cualquier conexión. No se enviarán ni recibirán más mensajes.
Conectar (Connect)
Se conecta con el servidor WebSocket. Las direcciones de estos servidores suelen empezar con ws:// para
transmisiones no seguras y con wss:// para transmisiones seguras. Nota que algunas configuraciones de red
pueden requerir transmisiones seguras para funcionar correctamente.
El parámetro Protocolo(Protocol) puede requerir sub-protocolo (enviado con el Sec-WebSocket-Protocol en
el diálogo de WebSocket). Si el servidor no indica que es compatible con el sub-protocolo elegido, la
conexión fallará. Esto puede servir para evitar que el cliente se conecte a servidores de WebSocket que no
entiendan los mensajes específicos de tu aplicación.
Enviar texto (Send text)
Envía una secuencia de texto al servidor. Se ignora se la conexión no está abierta.
Expresiones de Websocket
CódigoCierre (CloseCode)
En el detonador On close, da el código numérico de la razón del cierre. Puede ser uno de los valores
estándares, o unos definidos por el usuario.
RazónCierre (CloseReason)
En el detonador On close, da la secuencia que describe la razón del cierre de la conexión. Es opcional y
puede estar vacío.
ErrorMsg
En On error, el mensaje de texto del error.
TextoMensaje (MessageText)
En On message, el texto del mensaje recibido del servidor.
6.30 Almacenamiento Web (WebStorage)
El objeto Almacenamiento Web puede almacenar datos locales en el ordenador del usuario entre sesiones.
Por ejemplo, puede usarse para almacenar el último guardado y restaurar el progreso del jugador cuando
vuelve a jugar. (Nota: si quieres un guardado y carga del estado completo ve a Como hacer guardados (How
to make savegames)).
Nota que a pesar del nombre, el objeto no usa alamacenamiento online. Ya que los datos se guardan
localmente en el ordenador del usuario, funcionará offline, como con el alamcenamiento de exportadores
offline como nodo-webkit o CocoonJS.
WebStorage no almacena en el cache del navegador. Si el usuario opta por borrar el cache, no afecta a los
datos guardados. Sin embargo, si el usuario borra sus cookies o los datos offline, sí que borrará los datos
guardados.Esto se hace de forma intencional para que los usarios puedan liberar espacio del disco y para que
las webs no puedan almacenar información sobre ellos. También tiene otros efectos secundarios como cerrar
la sesión del usuario de todas las webs. En plataformas que no son un navegador con una barra de
direcciones (como Windows 8 apps, CocoonJS, o node-webkit) el almacenamiento es permanente y el
usuario no podrá borrar los datos guardados.
Almacenamiento por dominio
El objeto asocia todos los datos almacenados con un dominio. Por ejemplo, todos los juegos que funcionan
en scirra.com comparten los mismos datos, pero los de facebook.com usan unos totalmente diferentes a los
anteriores.
La mayoría de los navegadores ponen un tamaño máximo de almacenamiento de datos en la Web - el límite
común es 5mb. Si excedes el límite se detonará Cuota excedida (On quota exceeded) del objeto
Almacenamiento Web.
Almacenamiento Local vs. De sesión
El objeto permite que los datos se almacenen en dos lugares: Almacenamiento local y de sesión.
El almacenamiento local es permanente (hasta que el usuario borre el almacén). Si el usuario vuelve a entrar
al juego, el almacenamiento local tendrá sus datos anteriores guardados.
El almacenamiento de sesión sólo dura durante la sesión actual. Si el usuario vuelve a jugar este
almacenamiento estará vacío.
Usar Almacenamiento Web
El objeto usa un modelo de almacenamiento muy sencillo: los valores se almacenan bajo claves, similares a
las del objeto Diccionario. Por ejemplo, el valor 100 se puede almacenar con la clave puntuación mediante la
acción Ajustar valor local “puntuación” a 100 (Set local value "score" to 100). De la misma forma el valor
John se puede almacenar con la clave nombre. Entonces, la expresión Almacenamiento Web. Valor local
(“puntuación”) (WebStorage.LocalValue("score")) dará “100” (como una secuencia) y
Almacenamiento Web. Valor local (“nombre”) (WebStorage.LocalValue("name")) dará “John”, y estos
valores continuaran en las sesiones siguientes. (Si se usa almacenamiento de sesión los valores solo valdrían
para la sesión actual del navegador).
Nota que Alamcenamineto Web solo almacena secuencias. Si pones una clave a un número como 100,
cuando lo recuperes será una secuencia. Para volver a convertirlo, usa la expresión del sistema int,
int(WebStorage.LocalValue("score")).
Condiciones de Almacenamiento Web
Cotejar valor de clave (como número) (Compare key value (as number))
Comprueba el valor de una clave dada con un número. Ya que este objeto almacena valores como
secuencias, esta condición convertirá el valor en número y después lo comprobará. Si la clave no es un
número, la condición siempre será falsa.
Cotejar valor de clave (como texto) (Compare key value (as text))
Comprueba el valor de una clave dada con una secuencia. Nota que este objeto sólo almacena secuencias, así
que si se ha almacenado un número, tiene que haber sido convertido a secuencia.
Existe clave local/de sesión (Local/Session key exists)
Comprueba si un valor ha sido guardado con una clave en cualquiera de los dos almacenamientos.
Cuota excedida (On quota exceeded)
La mayoría de los navegadores limitan la cantidad de datos que se pueden Almacenar en la Web a 5mb. Si se
excede ese límite o el usuario cancela los permisos para incrementar el espacio de almacenaje, entonces
funcionará esta condición. No podrás añadir nuevas claves ni ajustar claves ya existentes para valores más
largos hasta que borres alguno de los valores anteriores o vacíes todos los datos.
Acciones de Almacenamiento Web
Vaciar almacenamiento local/de sesión (Clear local/session storage)
Vacía cualquiera de estos dos almacenajes del dominio, sin dejar ni un dato.
Quitar valor local/de sesión (Remove local/session value)
Borra una clave (y su valor asociado) de algunos de los dos almacenamientos. No volverá a existir.
Ajustar valor local/de session (Set local/session value)
Almacena un valor (secuencia o número) para una clave en cualquiera de los dos almacenamientos. Si la
clave existe se actualiza y si no se crea.
Cargar JSON (Load JSON)
Carga claves y valores locales almacenados de datos JSON. El formato JSON del objeto Diccionario es
compatible, así que se pueden intercambiar datos entre los dos objetos, pero nota que Almacenamiento Web
solo almacena secuencias (todos los números se convertirán en secuencias). Si el Modo (Mode) es Colocar
(Set), el almacenamiento local se borra primero y después se cargan los datos. Si el Modo (Mode) es
Mezclar (Merge), las calves en los datos JSON se añaden o sobrescriben a las claves ya existentes.
Expresiones de Almacenamiento Web
Local en (LocalAt)
De sesión en (SessionAt)
Da a los valores un índice basado en 0 si todas las claves están almacenadas en orden alfabético. Útil para
listar todos los datos almacenados.
Contador Local (LocalCount)
Contador de Sesión (SessionCount)
Da el número de claves existentes en el almacenamiento de este dominio.
Clave Local en (LocalKeyAt)
Clave de Sesión en (SessionKyeAt)
Da a las claves un índice basado en 0 si todas ellas están almacenadas en orden alfabético. Útil para listar
todos los datos almacenados.
Valor Local (LocalValue)
Valor de Sesión (SessionValue)
Recupera el valor almacenado para una clave. Si la clave no existe dará 0.
Como JSON (AsJSON)
Da el contenido completo de un almacenamiento local en formato JSON. El resultado se podrá cargar
también en el objeto Diccionario pero nota que Almacenamiento Web solo almacena secuencias por lo que
todos los valores en el diccionario se convertirán en secuencias.
6.31 Windows 8
El objeto Windows 8 (W8 en adelante) da acceso a características específicas de plataformas disponibles
cuando se usa el juego como aplicación de Windows 8. Nota que estas características no se aplicarán para
otras formas, incluso en Internet Explorer - sólo funciona en el nuevo estilo de apps de W8 a partir de su
menú de inicio.
W8 también soporta entradas táctiles que es el único método disponible para móviles y tabletas de W8. Para
que funcione en estos dispositivos asegúrate de añadir el objeto Táctil.
Datos de itinerancia (Roaming data)
Las características del objeto que usan datos itinerantes están diseñadas para usarse de la misma forma que el
objeto Almacenamiento Web. Con Almacenamiento Web será más fácil usar estas características. La
principal diferencia entre el objeto Almacenamiento Web y los datos de itinerancia es que en W8 los datos
de itinerancia están sincronizados entre todos los dispositivos móviles.
Como en Almacenamiento Web todos los valores de datos de itinerancia son secuencias. Puedes almacenar
números en los datos de itinerancia, pero se convertirán automáticamente en secuencias. Para volver a
convertir secuencias en número usa las expresiones del sistema int() o float().
Modo de prueba
Habilitar la propiedad Modo de prueba (Text mode) de este objeto te permite probar como funcionan las
compras antes de publicarlo en la tienda de Windows 8 sin tener que gastar dinero. Sin embargo, debes
quitar la propiedad antes de publicarla, si no no será aceptada.
Mientras estés en este modo, un mensaje aparecerá en el inicio cada vez que inicies la aplicación para
recordarte que estás en modo de prueba. El estado de las compras se carga desde WindowsStoreProxy.xml
que puedes usar para simular varios estados, como muestras, compras, rebajas, etc. Nota que nada que hagas
afectará al contenido de WindowsStoreProxy.xml solo afecta a la sesión que estás usando y se eliminará en la
siguiente.
Ajustes de Sobre, Soporte y Privacidad
Por defecto, el objeto Windows 8 añade tres opciones a los ajustes: Sobre (para información general y
versión), Soporte (para información sobre donde conseguir ayuda para tu aplicación), y Privacidad (una
página que incluye la política de privacidad para tu aplicación). Se pueden habilitar o deshabilitar de forma
individual en las propiedades del objeto.
Se recomienda incluir tantos ajustes de este tipo como sea posible, ya que será más fácil que la tienda de
Windows apruebe tu aplicación. En algunos casos, la política de privacidad es obligatoria.
Tras exportar, tu carpeta de exportación contendrá tres archivos HTML: about.html, support.html y
privacy.html. Debes editar el contenido de estos archivos con los datos de tu aplicación.
Condiciones de W8
Tiene producto (Has product)
Comprueba si la ID de un producto dado ha sido comprada por el usaurio. Esta condición está sujeta al
Modo de prueba.
Ha expirado la prueba (Is expired trial)
Comprueba si la aplicación está en prueba (trial) y si el periodo ha expirado. Esta condición está sujeta al
Modo de prueba.
Tiene licencia (Is licensed)
Comprueba si la aplicación ha sido comprada correctamente y el usario tiene una licencia válida. Esta
condición está sujeta al Modo de prueba.
Es de prueba (Is trial)
Comprueba si la aplicación es de prueba (trial) y si está dentro del periodod de prueba. Esta condición está
sujeta al Modo de prueba.
Fallo en la compra (On failed purchase)
Detonado tras un intento de compra cancelado o fallido.
Liencia cambiada (On license changed)
Detonado cuando el estado de la licencia ha cambiado, como pasar de trial a licencia, o trial a trial expirado.
Esta condición está sujeta al Modo de prueba.
Lista de tienda recibida (On store listing received)
Detonado después de que la acción Request store listing se complete. Se usa entonces las expresiones de
lista de tienda.
Éxito en la compra (On successful purchase)
Detonado tras un proceso de compra completado con éxito. La aplicación o un nuevo producto es ahora
propiedad del usuario.
Datos cambiados (On data changed)
Detonado cuando los datos de itinerancia se han actualizado con datos de otro dispositivo. Normalmente esto
ocurre cuando guardas los datos de itinerancia en un dispositivo y después el usuario cambia la aplicación a
otro dispositivo. Puede haber tiempo de espera hasta que se sincronicen los datos de itinerancia y, cuando
esté todo preparado, este detonador se disparará.
Existe clave de itinerancia (Roaming key exists)
Verdadero si una clave dad existe en el almacenamiento de itinerancia.
Compartiendo (On share)
Detonado cuando el usuario activa Compartir (Share). Para especificar qué compartir, usa una de las
acciones para compartir de este detonador.
Cotejar estado de vista (Compare view state)
Comprueba el estado actual de la vista de la aplicación. Puede ser la tradicional pantalla completa apaisada o
vertical, o snapped (que significa que la aplicación está a un lado de la ventana, en un formato estrecho) o
filled (cuando hay distintas aplicaciones en vista snapped y ésta está usando el área más grande de la
pantalla).
Estado de vista cambiado (On view state changed)
Detonado cuando se cambia el estado de la vista, (para detectar que está snapped usar Estado de la vista
snapped (On view state snapped))
Es una aplicación de W8 (Is Windows 8 app)
Verdadero si está funcionando como una aplicación de W8, de otra forma será falsa. Nota que seguirá siendo
falsa cuando la uses en modo Escritorio (Desktop) o incluso en Internet Explorer 10; sólo será verdadero
usando el nuevo estilo de aplicaciones de W8 desde el menú de inicio. Si la condición es falsa, ninguna de
las características de este objeto estará disponible.
Acciones de W8
Ajustar texto en mosaico (Set live tile text)
Cambia el mosaico de la aplicación en el menú de inicio para que muestre texto. Se debe elegir una plantilla
prediseñada. Para una vista previa, mira el catálogo tile template catalog on MSDN ⇗. Nota que usar
plantillas amplias requerirá que tu aplicación esté usando un mosaico amplio; si lo cambias a una plantilla de
tamaño diferente no funcionará.
Comprar aplicación (Purchase app)
Pregunta al usuario si quiere comprar la aplicación. Sólo denes usar esta acción cuando el ususario lo espera,
como cuando presiona el botón “comprar”. Si la compra se ha realizado con éxito, se detonan On successful
purchase y On license changed. Si no se detona On failed purchase. Esta condición está sujeta al Modo de
prueba.
Comprar producto (Purchase product)
Pregunta al usaurio si quiere comprar un producto con una ID concreta. Sólo denes usar esta acción cuando
el ususario lo espera, como cuando presiona el botón “comprar”. Si la compra se ha realizado con éxito, se
detona On successful purchase. Si no se detona On failed purchase. Esta condición está sujeta al Modo de
prueba.
Pedir lista de tienda (Request store listing)
Pide los detalles sobre los ítems disponibles para compra en tu aplicación. Cuando se recibe se detona On
store listing received y se pueden usar las expresiones de lista de tienda.
Eliminar datos de itinerancia (Clear roaming data)
Borra todas las claves de los datos de itinerancia, dejándolos vacíos.
Quitar valor de itinerancia (Remove roaming value)
Quita una clave específica de los datos de itinerancia.
Ajustar valor de itinerancia (Set roaming value)
Almacena una clave y un valor asociado a los datos de itinerancia. Si ya existe el valor se sobrescribe y si no
se crea. Los valores se almacenan como secuencias. Puedes usar un número como valor, pero se convertirá y
se recuperará en forma de secuencia.
Fallo al compartir (Fail share)
Solo válido en un evento Compartiendo (On share). Usa esta acción para indicar que compartir ha fallado o
no está disponible.
Compartir datos URI (Share data URI)
Sólo válido en un evento On share. Usa esta acción para compartir una imagen encodeada como datos URI.
Es más útil com la acción del sistema Snapshot canvas, que da una captura de pantalla del juego como datos
URI.
Compartir HTML (Share HTML)
Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir texto en formato HTML
de la aplicación.
Compartir enlace (Share link)
Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir un enlace, como la
dirección de tu página.
Compartir imagen sprite (Share sprite image)
Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir una imagen desde la
aplicación, usando una imagen de un objeto Sprite.
Compartir texto (Share text)
Solo válido en un evento Compartiendo (On share). Usa esta acción para compartir texto de la aplicación.
Mostrar compartir UI (Show share UI)
Muestra Compartir UI (Share UI) de W8 automáticamente. Asegúrate de usarlo con cuidado para no ofender
o molestar a tus usuarios. Por ejemplo, una buena opción es un botón Compartir (Share) personalizado que
muestre Compartir UI (Share UI). Esta acción solo funciona cuando tu aplicación está en la ventana activa.
Intentar quitar snap (Try unsnap)
Si tu aplicación está en la vista snapped, esto intenta cambiarla a filled o pantalla completa. La acción puede
no funcionar si el usuario está usando otra aplicación.
Expresiones de W8
TiempoTrial (TrialTimeLeft)
Si está en prueba (trial), da el número de segundos que queda de este periodo. Si es una prueba de tiempo
ilimitado el valor dado no tendrá sentido. Esta expresión está sujeta al Modo de prueba.
Valor de itinerancia (clave) (RoamingValue (key))
Recupera un valor del almacenamiento de itinerancia asociado a una clave dada. Si la clave no existe se dará
una secuencia vacía. Nota que todos los valores se recuperan en secuencias, aunque los originales fueran
números.
AppFormattedPrice
Tras haberse detonado On store listing received, da el precio y tipo de moneda de la aplicación para la región
del usuario.
ProductFormattedPrice
Tras haberse detonado On store listing received, da el precio y tipo de moneda de un producto con una ID
concreta para la región del usuario.
ProductName
Tras haberse detonado On store listing received, da el nombre de un product con una ID concreta.
6.32 XML
El plugin XML puede analizar y leer datos de documentos XML. Usa XPath para acceder a ellos. XPath es
un tipo de lenguaje de consulta para XML similar a SQL para bases de datos. Para aprender más sobre
XPath clica los siguientes enlaces:
W3Schools XPath tutorial ⇗
Some XPath examples ⇗
Another XPath tutorial with examples ⇗
El plugin XML es solo de lectura. Puedes leer datos pero no cambiar ningún valor en documentos XML.
Para características comunes a otros plugins ve a Características comunes.
Cargar un documento XML
XML debe estar cargado como una secuencia con la acción Cargar (Load). Si tienes un pequeño fragmento
de XML, puedes copiarlo directamente en el parámetro de la acción. Sin embargo, se recomienda que
solicites un archivo XML de un servidor usando el objeto AJAX. Cuando se complete la solicitud, introduce
ÚltimoDato. AJAX (AJAX.LastData) en la acción Cargar (Load). Entonces ya podrás leer los datos
recibidos.
Internet Explorer
Internet Explorer no soporta consultas XPath que dan un número (como count(…)). En este caso puedes usar
la expresión Contador de nodos (NodeCount) en su lugar. Asegúrate de probar tu proyecto en varios
navegadores. El resto de ellos tienen soporte completo estándar para XPath.
Condiciones XML
Para cada nodo (For each node)
Repite el evento una vez por cada nodo dado por la consulta XPath. Normalmente se usará con consultas que
dan nodos múltiples, como "/bookstore/book" para seleccionar todos los nodos “libro” (“book”) bajo
“almacen de libros” (“bookstore”). En el evento Para cada nodo (For each node) el nodo actual se ajusta al
que está siendo repetido. Esto significa que XPaths relativos, como "title/text()" trabajan en relación con el
nodo actual (en este caso dando el texto de la pestaña “título” (“title”)). Para cada nodo (For each node)
también se puede anidar, así que puedes repetir otra lista relativa en el nodo actual.
Acciones XML
Cargar (Load)
Carga un documento XML de una secuencia. Mira las sección de arriba Cargar un documento XML.
Expresiones XML
Contador de nodos (NodeCount)
Da el número de nodos dados por una expresión XPath. Por ejemplo, puede contar el número de elementos
en un nombre dado. En el evento Para cada nodo (For each node), XPath es relativo al nodo actual.
Valor de número (NumberValue)
Da un número de una expresión XPath. Si se dan múltiples valores, solo se recupera el primero. En el evento
Para cada nodo (For each node), XPath es relativo al nodo actual.
Valor de secuencia (StringValue)
Da una secuencia de una expresión XPath. Si se dan múltiples valores, solo se recupera el primero. En el
evento Para cada nodo (For each node), XPath es relativo al nodo actual.
7. Referencia de Sistema
El objeto Sistema es el único objeto integrado en C2. Ofrece características para acceder al motor del juego
y usos que son útiles para la mayoría de los juegos. Para más información sobre el objeto Sistema ve a la
sección del Resumen Estructura del Proyecto.
7.1 Condiciones de Sistema
Esta sección describe todas las condiciones en el objeto integrado Sistema de C2. Se listan en el orden en el
que aparecen en el diálogo de Añadir Condición.
General
Cotejar dos valores (Compare two values)
Coteja dos expresiones cualquiera (números o texto). El resultado puede ser Igual (Equal), Distinto (Not
equal), Menor (Less), Menor o igual (Less or equal), Mayor (Greater) o Mayor o igual (Greater or equal).
Cada tick (Every tick)
Una condición que siempre es verdadera. Funciona de forma independiente y se comprueba una vez por tick,
de ahí el nombre. Un tick es sobre 60 veces por segundo en la mayoría de ordenadores; para más
información mira cómo funcionan los eventos. Añadir Cada tick (Every tick) a un evento con otras
condiciones es redundante y no tendrá efecto.
Está entre valores (Is between values)
Comprueba si un número está entre dos valores (mayores o iguales que un valor más bajo y menores o
iguales que otro más alto).
Grupo activo (Is group active)
Comprueba si un grupo de eventos está activo o inactivo. Para identificarlos se usa el nombre del grupo.
Existe objeto UID (Object UID exists)
Comprueba si existe un objeto con una ID Única (UID). Para más información sobre UIDs, ve a las
características comunes.
Prueba regex (Test regex)
Comprueba si una secuencia coincide con una expresión regular. Sólo da verdadero o falso, así que para
expresiones más avanzadas ve a la expresión del sistema Regex.
Variables Locales y Globales
Cotejar variable (Compare variable)
Coteja el valor de una variable de evento (global o local). Estas variables pueden almacenar números y texto.
El resultado puede ser Igual (Equal), Distinto (Not equal), Menor (Less), Menor o igual (Less or equal),
Mayor (Greater) o Mayor o igual (Greater or equal).
Capas y Plano
Cotejar opacidad (Compare opacity)
Coteja la opacidad (o semitransparencia) de una capa, de 0 (transparente) a 100 (opaca). La opacidad de una
capa no puede estar fuera de este rango.
Se soportan efectos (Effect are supported)
Verdadero si el soporte WebGL está disponible para mostrar los efectos. Para más información ve a la
sección Efectos.
Capa visible (Layer is visible)
Comprueba si la capa actual es visible o no.
Captura de lienzo (On canvas snapshot)
Detonado tras la acción del sistema Hacer captura de lienzo (Snapshot canvas), cuando la cpatura está
preparada. Se puede acceder a ella con la expresión del sistema Captura de lienzo (CanvasSnapshot).
Bucles
Los bucles se pueden detener con la acción del sistema Parar bucle (Stop Loop).
Para (For)
Repite el evento un número de veces, usando una índice de variables con un rango de valores. El índice
puede recuperarse con la expresión Índice de Bucle (LoopIndex) y así dar el nombre del bucle.
Para cada (For Each)
Para cada (ordenado) (For Each (ordered))
Repite el evento una vez por ejemplo recogido. Sólo repite el evento para ejemplos que reúnan condiciones
anteriores. Para más información sobre la recogida de ejemplos mira cómo funcionan los eventos. Para cada
(For Each) suele ser mal utilizada o usada de forma redundante - las acciones ya aplican para cada ejemplo
recogido por condiciones, así que a menudo no es necesaria. Sin embargo, si entiendes completamente cómo
funcionan los eventos la puedes usar para forzar al evento a aplicarse a cada ejemplo aunque el propio
evento no lo haría de forma normal. La variante “ordenado” (“ordened”) permite definir el orden en el que
los ejemplos se repiten con una expresión. Por ejemplo, ordenando por Sprite.Y ascendente repetirá los
ejemplo de arriba de la pantalla primero y se moverá hacia abajo.
Repetir (Repeat)
Simplemente repite el evento un número dado de veces. Esto comprueba cualquier condición que lo sigue en
cada repetición y, si se reúnen esas condiciones, también funcionarán las acciones y sub-eventos en cada
repetición.
Mientras (While)
Repite el evento hasta que una de las otras condiciones del evento sea falsa o se use la acción Parar bucle
(Stop loop). Ten cuidado de no crear bucles infinitos que pueden ralentizar el juego
Recoger ejemplos
Recoger todos (Pick all)
Selecciona todos los objetos. Las condiciones posteriores recogerán entonces de todas, en vez de la selección
hecha por condiciones previas. Para más información de cómo funciona la selección de ejemplos en eventos
ve a Cómo funcionan los ejemplos. Útil en sub-eventos para afectar a ejemplos distintos del anterior.
Recoger por comparación (Pick by comparison)
Selecciona los ejemplos individuales de un tipo de objeto que cumplen cierta comparación. Por ejemplo, es
posible recoger todos los ejemplos donde Object.X*2 es menor que Objetct.Y+100; que no es posible con
otra condición.
Recoger por evaluación (Pick by evaluate)
Selecciona los ejemplos individuales de un tipo de objeto donde la expresión evalua según un valor distinto
de 0. En otras palabras, para cada ejemplo con la expresión 0, no se recoge. Esto es más útil con la
comparación y los operadores lógicos (ve Expresiones). Por ejemplo, es posible recoger ejemplos usando la
siguiente expresión (donde & significa "y" y | significa "o"): (Object.X > 100 & Object.Y > 100) | (Object.X
< -100 & Object.Y < -100).
Recoger ejemplo Nº (Pick Nth instance)
Selecciona un ejemplo de una lista dada de objetos recogidos. Es más útil en sub-eventos para afectar sólo a
ciertos ejemplos. Por ejemplo, en un evento “Sprite colisiona con Sprite”, Recoger ejemplo 0 (Pick 0th
instance) y Recoger ejemplo 1 (Pick 1st instance) se usan para que ambas actúen en esa colisión.
Si todos los objetos están seleccionados, esta condición se puede usar también para recoger un objeto por su
índice de ID (IID). Para más información ve a Características comunes.
Recoge punto de solapamiento (Pick overlapping point)
Recoge todos los ejemplos de un tipo de objeto dado que se están solapando en un punto del plano. La
posición X e Y dada en en plano será probada.
Recoger ejemplo al azar (Pick random instance)
Recoge un ejemplo al azar de la selección actual de objetos. En otras palabras, esta condición sigue a otra
condición y recogerá una al azar de las que han reunido la condición anterior. De otra forma recogerá al azar
de entre todos los ejemplos.
Condiciones especiales
Otro (Else)
Funciona si el evento anterior no ha funcionado. Nota que esta condición no selecciona objetos: si sigue a un
evento que recogió objetos, en el evento Otro (Else) todos los ejemplos se vuelven a seleccionar. Otro
(Else)sólo puede seguir a eventos normales (no detonados). También puede seguir a otro evento Otro (Else)
con otras condiciones para hacer una cadena “si - otro si -” (“if - else if -”).
Está en vista previa (Is in preview)
Verdadero cuando haces vista previa en C2, y falso cuando funciona tras haber sido exportado. Útil para
eliminar fallos o añadir características de diagnostico sólo para la vista previa.
Está en un dispositivo móvil (Is on mobile devide)
Intenta detectar si el dispositivo actual es uno móvil (teléfono o tableta). Es muy difícil precisar y la
detección pude no ser perfecta: puede haber algunos sistemas móviles para los que esta condición no sea
verdadera y (menos a menudo) sistemas de mesa para los que sí. La condición siempre es verdadera cuando
se usa a través de contenedores PhoneGap o AppMobi y para los dispositivos iOS o Android. A parte de esto
C2 comprobará otros fabricantes de móviles comunes. Dará verdadero si el sistema actual no es un sistema
fijo y ya que hay pocos así en OSs se comprobará en Windows, Linux, OS 9, OS X, Solaris y BSD.
Está en plataforma (Is on platform)
Comprueba si está funcionando en una plataforma concreta, como Android o como aplicación de Windows 8.
Nota que son posibles múltiples opciones simultáneamente. Por ejemplo, si funciona en un navegador en
Android, ambos Is on platform Android y Is on platform HTML5 website serán verdaderos.
Detonar cuando sea verdadero (Trigger once while true)
Convierte un evento normal (que se comprueba cada vez o tick) en un detonador. Por ejemplo, si un evento
reproduce un sonido cuando tienes 0 vidas, normalmente el evento funcionará cada tick. Reproducirá 60
sonidos por segundo y sonaría bastante mal. Añadir Detonar cuando sea verdadero (Trigger once while
true) tras la otra condición hará que el evento funcione sólo cuando sea verdadera. Esto hace que el ejemplo
anterior reproduzca el sonido cuando las vidas estén a 0. Debe ser la última condición de un evento.
Guardar y cargar
Carga completa (On load complete)
Detonado después de que la acción del sistema Load se complete con éxito. Para más información ve a
Como hacer guardados (How to make savegames).
Fallo en la carga (On load failed)
Detonado después de que la acción del sistema Load no se complete debido a algún fallo. Para más
información ve a Como hacer guardados (How to make savegames).
Guardado completo (On save complete)
Detonado después de que la acción del sistema Save se complete con éxito. Para más información ve a Como
hacer guardados (How to make savegames).
Inicio y fin
Al final del plano (On end of layout)
Detonado cuando el plano está terminando. Puede ocurrir cuando se quiere cambiar de plano o cuando el
proyecto finaliza.
Al inicio del plano (On start of layout)
Detonado cuando un plano empieza.
Carga del plano completa (On loader layout complete)
Detonado en el cargador cuando el progreso llega a 100%. Para más información ve a Como usar cargadores
de plano para hacer pantallas personalizadas (How to use loader layouts to make custom loading screens ⇗).
Tiempo
Cotejar tiempo (Compare time)
Coteja el tiempo, en segundos, desde que el juego empieza. Por ejemplo, los eventos se pueden programar
para suceder cuando el tiempo llegue (sea igual) a 10 segundos.
Cada X segundos (Every X seconds)
Hace que el evento funcione en un intervalo de segundos dado. Se puede usar tras otras condiciones para
hacer funcionar el evento en ese intervalo sólo mientras otra condiciones son verdaderas, como “El jugador
esta pulsando la barra espaciadora Y cada 0,5 segundos: se dispara el láser” ("Player is holding spacebar
AND every 0.5 seconds: fire laser").
7.2 Acciones del sistema
Esta sección describe todas las acciones en el objeto integrado Sistema de C2. Se listan en el orden en el que
aparecen en el diálogo de Añadir Acción.
Monitor
Ajustar tamaño del lienzo (Set canvas size)
Ajusta el tamaño del lienzo en el área de la página, si aparece en línea a ella (no se usa el modo pantalla
completa). Si se usa el modo pantalla completa, cambia la propiedad del proyecto Windows Size.
Ajustar escala de pantalla completa (Set fullscreen scaling)
Ajusta la propiedad del proyecto Fullscreen scaling. Permite que se ajusta la calidad en el tiempo del juego.
Capturar el lienzo (Snapshot canvas)
Toma una captura de pantalla del monitor. Esto detona Captura de lienzo (On canvas snapshot) cuando la
foto está preparada y se puede acceder a ella con la expresión del sistema Captura de lienzo
(CanvasSnapshot). Después se podrá cargar en un sprite o en un fondo adosado, enviarse a un servidor o
abrir con el objeto Navegador en una pestaña nueva.
General
Crear objeto (Create object)
Crea un nuevo ejemplo de un tipo de objeto en una posición dada de una capa. Si se elige una Familia, un
tipo de objeto al azar de la familia se seleccionará, creándose un ejemplo para él.
Ir a plano (Go to layout)
Ir a plano (por nombre) (Go to layout (by name))
Cambia a otro plano del proyecto. Nota que las variables globales mantienen su valor actual - no se
reajustan. Para reajustarlas usa la acción del sistema Reajustar variables globales (Reset global variables).
Reiniciar plano (Restart layout)
Reinicia el plano actual. Nota que, a diferencia de Ir a plano (Go to layout), esta acción reajusta todos los
grupos de eventos a su estado inicial. Las variables globales mantienen su valor actual - no se reajustan. Para
reajustarlas usa la acción del sistema Reajustar variables globales (Reset global variables).
Activar grupo (Set group active)
Activa o desactiva un grupo de eventos. Ningúno de los eventos dentro de un grupo inactivo funcionará
hasta que vuelva a ser activado. Los grupos se identifican por su nombre.
Parar bucle (Stop loop)
Detiene los bucles Repetir (Repeat), Para (For) o Para cada (For each). Estos bucles son condiciones del
sistema. El resto de acciones de eventos y sub-eventos continuarán funcionando, pero no en bucle.
Variables globales y locales
Añadir a (Add to)
Quitar de (Subtract from)
Ajustar valor (Set value)
Altera el valor almacenado de una variable global o local.
Reajustar variables globales (Reset global variables)
Reajusta todas las variables globales del proyecto a su valor inicial.
Capas y plano
Para más información sobre acciones de los efectos ve a la sección Efectos.
Ajustar ángulo de capa (Set layer angle)
Rota una capa entera a un número de grados.
Ajustar color de fondo de la capa (Set layer background color)
Establece el color del fondo de la capa. Nota que se ésta es transparente, esto no cambiará la apriencia a
menos que hagas la capa opaca.
Habilitar efecto de capa (Set layer effect enabled)
Habilita o deshabilita uno de los efectos de una capa en el plano actual. Esta acción no puede usarse para
alterar capas de otros planos.
Ajustar parámetro de efecto de capa (Set layer effect parameter)
Cambia el valor de uno de los parámetros de un efecto de una capa en el plano actual. Esta acción no puede
usarse para alterar capas de otros planos. El parámetro a cambiar se especifica por su índice basado en cero,
0 cambiará el primer parámetro, 1 el segundo y así sucesivamente.
Ajustar opacidad de capa (Set layer opacity)
Ajusta la opacidad (o semitransparecia) de una capa completa.
Ajustar paralaje de capa (Set layer parallax)
Ajusta las tasas de paralaje horizontal y vertical de una capa.
Ajustar escala de capa (Set layer scale)
Ajusta la escala (o zoom) de una capa completa, teniendo en cuenta su propiedad tasa de escala (scale rate).
Ajustar tasa de escala de capa (Set layer scale rate)
Ajusta la propiedad tasa de escala (scale rate) de una capa, que define cómo de rápido se escala.
Establecer capa transparente (Set layer transparent)
Establece la propiedad transparente en una capa. Si es transparente el color de fondo se ignora y se ven las
capas debajo de esta.
Hacer capa visible (Set layer visible)
Muestra o esconde una capa completa.
Ajustar ángulo de plano (Set layout angle)
Rota un plano completo a un número de grados. Rota todas las capas dentro del plano.
Habilitar efecto de plano (Set layout effect enabled)
Habilita o deshabilita uno de los efectos del plano actual. Esta acción no puede usarse para otros planos.
Ajustar parámetro de efecto de plano (Set layout effect parameter)
Cambia el valor de uno de los parámetros de un efecto del plano actual. Esta acción no puede usarse para
alterar otros planos. El parámetro a cambiar se especifica por su índice basado en cero, 0 cambiará el primer
parámetro, 1 el segundo y así sucesivamente.
Ajustar escala de plano (Set layout scale)
Ajusta la escala (o zoom) de un plano completo. Escala todas las capas del plano, teniendo en cuenta su
propiedad tasa de escala (scale rate).
Guardar y cargar
Cargar (Load)
Carga el estado del juego en el anterior guardado. Cuando se hace se detona On load complete, o On load
failed. Para más información ve a Como hacer guardados (How to make savegames).
Cargar desde JSON (Load from JSON)
Carga el estado del juego desde una secuencia de datos JSON dada por la expresión del sistema
SaveStateJSON. Para más información ve a Como hacer guardados (How to make savegames).
Guardar (Save)
Guarda el estado del juego. Cuando se realiza, se detona On save complete. Para más información ve a
Como hacer guardados (How to make savegames).
Desplazamiento
Para desplazar, el tamaño del plano debe ser mayor que el tamaño de la ventana o estar activada la propiedad
Desplazamiento ilimitado (Unbounded scrolling). De otra forma no habría a donde desplazarse y esta acción
no tendría efecto.
Desplazarse a objeto (Scroll to object)
Centra la vista en un objeto dado. Desplaza todas las capas teniendo en cuenta su propiedad de paralaje
(parallax).
Desplazar a posición (Scroll to position)
Desplazar a X (Scroll to X)
Desplazar a Y (Scroll to Y)
Ajusta las posiciones X e Y en donde centrar la vista. Desplaza todas las capas teniendo en cuenta su
propiedad de paralaje (parallax).
Tiempo
Ajustar escala de tiempo (Set time scale)
Cambia la tasa a la que el tiempo transcurre en el juego. Útil para efectos a cámara lenta y de pausa. Mira el
tutorial Delta-time and framerate independence ⇗ para más información.
Ajustar escala de tiempo de objeto (Set object time scale)
Restaurar escala de tiempo de objeto (Restore object time scale)
Cambia la tasa a la que el tiempo transcurre para un objeto específico. Afecta al comportamiento del objeto y
a su expresión dt. Restaurarla lo devuelve a la misma escala de tiempo que el resto del juego. Mira el tutorial
Delta-time and framerate independence ⇗ para más información.
Esperar (Wait)
Espera un número de segundos antes de continuar con la siguiente acción o sub-evento. Otros eventos
continuarán funcionando mientras. Mira el tutorial How to use the System 'Wait' action ⇗.
7.3 Expresiones de Sistema
Esta sección da un resumen de las expresiones en el objeto integrado Sistema de C2. Muchas son
operaciones matemáticas comunes y se enumeran con descripciones en el panel de Expresiones, pero aquí se
incluyen completas.
Esta sección no lista los operadores o sintaxis que se usan en las expresiones - solo las expresiones
específicas al objeto Sistema. Para más información general de cómo usar expresiones en C2 ve a
Expresiones.
Monitor
Anchura de la ventana (WindowWidth)
Altura de la ventana (WindowHeight)
Da el tamaño de la ventana. Útil con la propiedad Pantalla completa en el navegador (Fullscreen in
browser) ya que esto habilita una variable de tamaño de ventana. Mira también Supporting multiple screen
sizes ⇗.
Capas
Expresiones donde se requiere una capa, por su nombre (como secuencia) o su índice (como número basado
en 0).
CanvasToLayerX(layer)
CanvasToLayerY(layer)
Calcula las coordenadas del plano por debajo de una posición en las coordenadas del lienzo para una capa
dada.
LayerToCanvasX(layer)
LayerToCanvasY(layer)
Calcula las coordenadas del lienzo por encima de una posición en las coordenadas del plano para una capa
dada.
Ángulo de Capa (capa) (LayerAngle(layer))
Da el ángulo de una capa en grados.
Opacidad de Capa (capa) (LayerOpacity(layer))
Da la opacidad (o semitransparencia) de una capa, de 0 (transparente) a 100 (opaca).
LayerParallaxX(layer)
LayerParallaxY(layer)
Da el paralaje X e Y de la capa.
Escala de Capa (capa) (LayerScale(layer))
Da la escala actual de la capa, sin incluir la escala total del plano.
Tasa de escala de Capa (capa) (LayerScaleRate(layer))
Da la tasa de escala actual de la capa, que define como de rápido se escala.
Vista abajo (capa) (ViewportBottom(layer))
Vista izquierda (capa) (ViewportLeft(layer))
Vista derecha (capa) (ViewportRight(layer))
Vista arriba (capa) (ViewportTop(layer))
Da los límites de la vista en coordenadas del plano de una capa dada. No todas las capas tienen la misma
vista si estas usan paralaje, están escaladas o rotadas de forma independiente.
Plano
Captura del lienzo (CanvasSnapshot)
Contiene la imagen resultante de la acción Capturar lienzo (Snapshot canvas) y tras Captura del lienzo (On
canvas snapshot). (Nota que está expresión no estará disponible inmediatamente tras la acción Capturar
lienzo (Snapshot canvas) – solo puedes usarlo cuando Captura del lienzo (On canvas snapshot) se
detone).La expresión da los datos URI del archivo de imagen. Después, esto puede cargarse en un objeto
Sprite o Fondo Adosado mediante Cargar imagen de una URL (Load image from URL), enviarse a un
servidor para almacenarlo localmente o abierto con el objeto navegador en una nueva pestaña para guardarla
en el disco.
Ángulo del plano (LayoutAngle)
Da el ángulo del plano actual en grados. No incluye la rotación de las capas individualmente.
Escala del plano (LayoutScale)
Da la escala del plano complete dada por la acción Ajustar escala de plano (Set layout scale). Esto no
incluye la escala de las capas individualmente.
Anchura del plano (LayoutWidth)
Altura del plano (LayoutHeight)
Da el tamaño del plano actual en píxeles.
Nombre de plano (LayoutName)
Da el nombre del plano actual.
Desplazamiento X (scrollx)
Desplazamiento Y (scrolly)
Da la posición actual en la que la vista está centrada
Matemáticas
Estas expresiones son funciones matemáticas normales que puedes encontrar en calculadoras. Sin embargo,
nota que las funciones que usan ángulos trabajan con grados, no radianes. Los ángulos empiezan en 0
grados y aumentan hacia la derecha en el sentido de las agujas del reloj.
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x) Funciones trigonométricas que usan ángulos en grados.
abs(x) Valor absoluto de x (abs(-5) = 5).
angle(x1, y1, x2, y2) Calcula el ángulo entre dos puntos.
anglelerp(a, b, x) Interpola linealmente el ángulo a al b por x. Tiene en cuenta la naturaleza cíclica de los
ángulos, no como el estándar lerp.
anglediff(a1, a2) Da la diferencia más pequeña entre dos ángulos
anglerotate(start, end, step) Rota el ángulo desde el inicio (start) hasta el final (end) pasando por el ángulo
de paso (step), todo en grados. Si inicio (start) está a menor distancia en grados del final (end) que el de
paso (step), dará final (end).
ceil(x) Redondea al alza x (ceil(5.1) = 6).
distance(x1, y1, x2, y2) Calcula la distancia entre dos puntos.
exp(x) Calcula e^x.
floor(x) Redondea a la baja x (floor(5.9) = 5).
lerp(a, b, x) Interpolación lineal del ángulo a al b por x. Calcula a + x * (b - a).
unlerp(a, b, y) Invierte la interpolación lineal: si lerp(a, b, x) = y, entonces unlerp (a, b , y) = x. Calcula (y a) / (b - a).
ln(x) Logaritmo de base e de x.
log10(x) Logaritmo de base 10 de x.
max(a, b [, c...]), min(a, b [, c...]) Calcula el máximo o el mínimo de números dados. Se puede usar
cualquier número de los parámetros mientras haya al menos dos.
pi La constante matemática pi (3.14159...).
round(x) Redondea x al número entero más cercano (round(5.6) = 6).
sqrt(x) Calcula la raíz cuadrada de x (sqrt(25) = 5).
Guardar y cargar
GuardarEstadoJSON (SaveStateJASON)
En On save complete y On load complete da una secuencia de datos JSON que representan los datos
guardados del juego. Puede ser cargado con la acción Load from JSON. Para más información ve a Como
hacer guardados (How to make savegames).
Sistema
UsoMemoriaImagen (ImageMemoryUsage)
Da la memoria total estimada, en megabytes, de todas las imágenes cargadas. Sólo es compatible con el
render WebGL; si usas canvas”D, la expresión siempre será 0. Nota que también se puede referir a esto
como “VRAM”, pero no es del todo correcto, pues no todos los dispositivos tienen memoria específica para
videos. También recuerda que esta expresión no incluye la memoria usada en sonidos, códigos u otros
elementos.
Progreso de carga (loadingprogress)
Da el progreso de la carga actual en un plano cargador, o el progreso de una actualización mientras que la
condición del objeto Navegador Está descargando actualización (Is downloading update) es verdadera. El
progreso viene dado por un número de 0 a 1 (0,5 sería la mitad). Para más información ve a los tutoriales
Como hacer una pantalla de carga personalizada (how to make a custom loading screen ⇗) y Juegos offline
en C2 (offline games in Construct 2 ⇗).
Índice de bucle (loopindex)
Da el índice (número de repeticiones) de cualquier bucle actual.
Índice de bucle (nombre) (loopindex(name))
Da el índice (número de repeticiones) de un bucle dando su nombre. Útil para obtener índices en un bucle
anidado.
Contador de objetos (objectcount)
El número total de objetos creados.
Versión del proyecto (projectversion)
Da la versión introducida en las Propiedades del proyecto. Nota que siempre da una secuencia, no un
número.
Lienzo (renderer)
Da el nombre del lienzo usado para dibujar el juego, que puede ser canvas2d o webgl. Mira la sección
Tecnología para más información sobre lienzos.
Texto
Encontrar (src, texto) (find(src, text))
Encuentra el primer índice en src que aparece en el texto, de lo contrario da -1.
left(text, count)
Da la primera cuenta de caracteres de texto.
len(text)
Da el número de caracteres en el texto.
Minúsculas (texto) (lowercase(text))
Convierte todo el texto dado en minúsculas.
mid(text, index, count)
Da la cuenta de caracteres empezando por el índice en el texto.
Nueva línea (newline)
Una secuencia que contiene un salto de línea. Usar para insertar saltos de línea en secuencias (“Hello" &
newline & "World”)
RegexMatchAt(String, Regex, Flags, Index)
Procesa la expression regular Regex en Secuencia (String) con Flags, y en la lista de resultados, da la entrada
en Índice (Index).
RegexMatchCount(String, Regex, Flags)
Procesa la expression regular Regex en Secuencia (String) con Flags, y da el número de entradas ien la lsita
de resultados.
RegexReplace(String, Regex, Flags, Replace)
En Secuencia(String)sustituye las coincidencias en la expression regular Regex (con Flags) con la secuencia
Replace. Esta secuencia puede contener los siguientes caracteres especiales: $$ (inserta un $), $& (inserta las
secuencias que coinciden), $` (inserta la porción de la secuencia que precede a la coincidencia), o $' (inserta
la porción de la secuencia que sigue a la coincidencia).
RegexSearch(String, Regex, Flags)
Da el índice del primer caracter en Secuencia (String)donde hay una coincidencia entre Regex y Flags.
Sustituir (src, find, rep) (replace(src, find, rep))
Encuentra todos los casos de find en src y las sustituye con rep.
right(text, count)
Da la última cuenta de caracteres del texto.
tokenat(src, index, separator)
Cuenta cuantos tokens hay en src usando separator. Por ejemplo, ("apples|oranges|bananas", "|") da 3.
trim(src)
Da src con todos los espacios en blanco (espacios, tabulaciones, etc.) quitados desde el principio al final de
la secuencia.
Mayúsculas (text) (uppercase(text))
Convierte todo el texto dado en mayúsculas.
Codificar URL (str) (URLEncode(str))
Decodificar URL (str) (URLDecode(str))
Convierte en o desde una secuencia a un formato apropiado para incluir en una URL o datos POST.
zeropad(number, digits)
Rellena los números hasta llegar a ciertos dígitos añadiendo ceros a la izqueirda de los números y dando
como resultado una secuencia. Por ejemplo zeropad(45, 5) dará la secuencia “00045”.
Tiempo
Uso de CPU (CPUUtilisation)
El porcentaje del último Segundo que se gastó en la lógica de la aplicación. Eso es para que usuarios
avanzados hagan mediciones del rendimiento. Nota que en los dispositivos aceleradores de hardware la
renderización ocurre en una GPU separada y esta medición no te podrá decir nada sobre como de rápido se
produce; para ello sería mejor la medición fps.
dt
El tiempo delta en segundos. Ver Delta-time and framerate independence ⇗.
fps
La tasa de frames por segundo (FPS) actual, que es cuantos veces la pantalla se dibuja cada segundo. La
mayoría de los ordenadores funcionan a 60 fps si son suficientemente rápidos.
Contador de ticks (tickcount)
El número de ticks que ha habido desde el inicio del juego.
Tiempo (Time)
El número de segundos desde que el juego empezó, teniendo en cuenta la escala de tiempo.
Escala de tiempo (Timescale)
La escala de tiempo actual.
Tiempo real (Wallclocktime)
El número de segundos desde que el juego empezó, sin tener en cuenta la escala de tiempo (el tiempo en el
mundo real).
Valores
Elegir ((a, b [, c...])) (choose(a, b [, c...]))
Elige uno de los parámetros dados al azar. Por ejemplo, choose(1, 3, 9, 20) escogerá al azar uno de los cuatro
números. También funciona con secuencias, por ejemplo choose("Hello", "Hi") dará Hello o Hi. Se puede
usar cualquier número de parámetros, mínimo dos.
clamp(x, lower, upper)
Da inferior (lower) si x es menor que inferior (lower), superior (upper) si x es mayor que superior (upper),
de lo contrario dará x.
float(x)
Convierte el número entero o el texto x en un número fraccionado.
int(x)
Convierte el número fraccionado o texto x en un número entero.
random(x)
Genera una fracción al azar de 0 a x, sin incluir x. Por ejemplo, random(4) puede generar 0, 2.5, 3.29293,
pero no 4. Usa floor(random(4)) para generar números enteros como 0, 1, 2, 3.
random(a, b)
Genera fracciones al azar entre a y b, incluyendo a pero sin incluir b.
rgb(r, g, b)
Genera un número simple que contiene un color en formato RGB. Es útil para condiciones o acciones que
tienen en cuenta el parámetro color.
str(x)
Convierte el número entero o fracción x en secuencia. Generalmente no es necesario ya que las secuencias se
pueden construir usando el operador &. Por ejemplo “Tu puntuación es ” & puntuación ("Your score is " &
score).
Traducido por Jruano de desarrollodejuegos.com y Marta Villaescusa
Descargar