Traducido por Javiusdey de desarrollodejuegos.com.es 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. 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. Esta 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. El archivo de la Licencia (License file): c2license.txt Una vez has hecho la compra, 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. 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. 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 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. 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 ⇗. 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 (Project Bar) para abrir el diálogo de exportación del proyecto (Export Project dialog). Si estás interesado en los detalles técnicos al exportar el proyecto, mira la sección Tecnología (Technology). Distribución del Proyecto C2 hace juegos en HTML5. Hay muchas formas de publicar y distribuir juegos HTML5. Esto incluye Scirra Arcade ⇗, Chrome Web Store ⇗, Facebook ⇗ y más. La sección de tutoriales de la web Scirra.com Tutorials section ⇗ habla sobre todas estas opciones y todas están resumidas en Publicitar y promocionar tu juego de C2 Publishing and Promoting your Construct 2 game ⇗. 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. 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. 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: 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. Tamaño, ángulo u opacidad de sprites/fondos adosados y posiciones flotantes (por ejemplo, situar un objeto en X=10,5) no tienen efecto cuando se usa la aceleración del hardware. 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. Aunque, si sólo se usa el software, puede tener gran impacto en el rendimiento, asegúrate de probarlo en diferentes sistemas. 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 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 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, subacontecimiento, 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 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 Muchos plugins tienen sus propias propiedades – ver Plugin reference Muchos objetos también tienen efectos que tienen sus propias propiedades. 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. 3.7 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. 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%. 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.8 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.9 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.10 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.10.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.10.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.10.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.10.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.10.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, que puede alterar el resultado visual. Para más información, mira la sección Effects. 3.10.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.10.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. 3.10.8 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.10.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.10.10 Formato de imágen (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.10.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 sub-formatos 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.10.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.10.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.10.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.10.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.10.16 (Nuevo proyecto) New project 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.10.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.10.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.10.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.10.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 ⇗. 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”). 3.11 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) F5 Vista previa del plano actual (Preview current layout) 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) Ctrl + D Deseleccionar todo (Unselect all) 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) 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 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. Autor (Author) El nombre de la persona o equipo que desarrolla el proyecto. Descripción (Description) Una frase o dos que resuman el proyecto. Versión (Version) Un número que identifique la versión o revisión del proyecto. Puedes usarlo para tus propias copias pero a veces es útil al exportar para identificar una nueva versión del mismo proyecto. Es buena idea incrementar el número cuando publiques una nueva versión. 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 complete 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 ⇗. Uso de pantalla de retina iOS (Use iOS retina display) Algunos dispositivos iOS, como el iPhone 4S o el iPad 3 usan pantallas de alta resolución “retina”. Aquí la resolución es doble y hay 4 píxeles por cada píxel de un dispositivo normal. Si esta en Sí el Uso de pantalla retina de iOS el juego se cargará usando la resolución total del dispositivo, y el ancho y alto de la ventana será doble (así que debes usar diferentes tamaños de ventana – mira supporting multiple screen sizes ⇗). Si está en No el juego cargará a una resolución más baja. Entonces se estirará para ocupar toda la pantalla (con filtro bilineal). La baja resolución mejorará el rendimiento pero no usa los gráficos más nítidos de estas pantallas. Por defecto la opción está en Sí pero si tu trabajo no es para pantallas de retina, quizás quieras apagarlo para mejorar el rendimiento. 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. 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 ⇗. 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. Layout properties 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. 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. 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. 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.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 -or- entre 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 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). 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. 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. 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). 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. 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. 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. 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 copiapega 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. 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. 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. Variables locales Las variables locales se sitúan tras otros eventos o dentro de un grupo. Aparecen con el icono de un diamante en vez de un globo. Hay dos diferencias importantes entre variables locales y globales: 1. Las locales vuelven a su valor inicial en cada paso. Esto es por diseño e intentando imitar lo que hacen las variables locales en los lenguajes de programación. 2. Las locales solo son accesibles en su radio de alcance. El radio de alcance de una variable de evento está diseñado también para coincidir con los lenguajes de programación reales. El radio de alcance ce una variable local es su nivel de subeventos. 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. Esto hace que las variables locales sean apropiadas para un grupo reducido de eventos o eventos de corta duración. 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. 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. 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. 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. 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 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. 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. 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. Paras 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. Arrastrar y Soltar no tiene propiedades 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). 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. El comportamiento Saltar a través no tiene propiedades, condiciones, acciones ni expresiones. Por ello, también se le llama atributo, ya que sólo habilita que se pueda saltar a través de un objeto con el comportamiento Plataforma. 5.12 Física (Physics) El comportamiento Física 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ísica 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). Propiedades de Física 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. Condiciones de física 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 Delta-time 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.13 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.14 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). 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.15 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. 16 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 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.17 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. 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.18 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. Acciones de Sólido Habilitar (Set enabled) Habilita o Deshabilita Sólido de ese objeto. Si lo deshabilitas, el objeto no actuará como si fuera un sólido, y los objetos podrán pasar a través de él. Ten cuidado de no atrapar objetos habilitando el sólido otra vez cuando se están solapando, mira la sección anterior. 5.19 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. 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. 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. 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) 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) 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 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 ⇗. 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. 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. Condiciones de Audio 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 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. 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. Enmudecer (Set muted) Establece si un sonido es audible o no. 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 un sonido reproduciéndose inmediatamente. Expresiones de Audio El objeto Audio no tiene expresiones. 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. 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. Tecla menú (On menu button) Sólo disponible cuando exportas a PhoneGap. Detonado cuan el usuario presiona la tecla “Menú” del dispositivo. Nota que todos los dispositivos no tienen esta tecla, como iOS, que solo tiene la tecla “Home”. Tecla buscar (On search button) Sólo disponible cuando exportas a PhoneGap. Detonado cuan el usuario presiona la tecla “Buscar” del dispositivo. Nota que todos los dispositivos no tienen esta tecla, como iOS, que solo tiene la tecla “Home”. 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 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. 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. 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 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. 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. 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 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. Condiciones de Botón 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á. 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. 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. 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 ha iniciado sesión (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. 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 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. 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. 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.11 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. 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”). Condiciones del Teclado 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. 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 El objeto Teclado no tiene expresiones. 6.12 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.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.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. 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). 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. 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. 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. 6.15 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.16 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 joe@bloggs.com. 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. Expresiones de Cuadro de texto Texto (Text) Da la secuencia que contiene el texto introducido en el campo. 6.17 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. 6.18 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 ⇗. 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 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. 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) 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. X (“capa”) (X("layer")) Y (“capa”) (Y("layer")) XAt(index, "layer") YAt(index, "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). Contador de toques (TouchCount) Número de toques actuales en contacto con la pantalla del dispositivo. Ángulo en (índice) (AngleAt(index)) Da el ángulo de movimiento de un toque específico en grados dando su índice basado en 0. Un toque debe moverse a través de la pantalla para que esta expresión tenga un valor útil. Velocidad en (índice) (SpeedAt(index)) Da la velocidad de un toque específico (dado por su índice basado en 0). 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.19 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. 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. Condiciones de Medios de comunicación del Usuario 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. Soporta 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. 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. Expresiones de Medios de comunicación del Usuario 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.20 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. 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 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.21 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(). Condiciones de W8 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á. 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 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 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 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. 6.22 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. 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 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. 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. 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. 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. 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 System actions 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). 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. 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 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. 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). 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). 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). Sistema 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”) 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 Javiusdey de desarrollodejuegos.com.es y Marta Villaescusa