[Tutorial]Carta de enemigo. Un ejemplo de personalización

Strange Eons permite crear tus propios primigenios, investigadores, monstruos...

[Tutorial]Carta de enemigo. Un ejemplo de personalización

Notapor sectario el Dom Ago 21, 2011 5:21 pm

Este tutorial explica como agregar un nuevo tipo de carta (cartas de "Enemigo") basándose en la carta ya existente de Aliado. Puedes realizar pequeños cambios en la carta de Enemigo, pero no puedes modificar podrás modificar para que no aparezca que aparezca el retrato que aparece en todas las cartas de aliado.

Este tutorial muestra como personalizar componentes ya existentes. Para cambios más drásticos, necesitas crear un nuevo tipo de carta. Si esto es lo que deseas, lee el tutorial DIY (ingles)

Prerequisitos
Antes de empezar, hay algo de información que hace más fácil seguir este artículo. Primero, debes de asegurarte de entender como se extraen los recursos de Strange Eons en una carpeta (ingles). Segundo, es posibles que quieras echar un vistazo a los tutoriales básicos sobre extensiones (ingles) , como añadir un nuevo icono de expansión para que sea seleccionable como componente.

Para crear nuestra carta personalizada, vamos a modificar el texto y las imágenes que se utilizan en la carta de Aliado. Vamos a hacer esto cambiando los valores fijados en Strange Eons que pueden ser encontrados en los recursos del Strange Eons. Sin embargo, todavía queremos seguir pudiendo crear cartas Aliados "normales", por lo que necesitamos añadir un nueva entrada a la lista de Nuevo Componente que nos aparece cuando creamos un Aliado pero que utilice los cambios realizados que deseamos.

Con el fin de descubrir los cambios que necesitamos, nos hablaremos de la copia de los recursos del Strange Eons. Si no tienes todavía esta copia, es fácil hacer una. Sólo has de seguir estas instrucciones (ingles)

Averiguar la configuración correcta de cambios
Para hacer nuestra nueva Carta de Enemigo, vamos a cambiar la palabra "Aliado" que aparece en la parte superior de la carta y reemplazarla por la carta "Enemigo", y vamos a añadir algunos nuevos cambios en los gráficos para que la carta aparezca de color rojo en lugar de naranja. Para empezar, vamos a mirar la copia de los recursos del Strange Eons, para determinar que cambios queremos hacer.

En primer lugar el texto. El texto impreso en las cartas está almacenado en el fichero card-text.txt. Los archivos están en la carpeta de recursos resources/text/XX, donde XX representa el lenguaje standard del juego. De esta manera será XX será EN para ingles, FR para francés, ES para español y asi sucesivamente. Normalmente lo mejor es usar el texto ingles como referencia, ya que está completo (hace referencia a que algún texto en otros idiomas puede no estar traducido, y aparecerá sólo el texto en ingles). El texto en ingles puede ser encontrado en los recursos en la carpeta resources/text/EN/card-text.txt.

Abrimos el fichero card-text.txt con algún editor de texto (el mejor editor es el STrange Eons Text Resource Editor). Ahora buscamos la clave que define el texto usado para la parte superior de la carta de Aliado. Esta es la línea

"Strange Eons Text Resource Editor": mostrar
Se ha de bajar el fichero del enlace, y el Editor de Textos de Recurso de Strange Eons se encuentra en la carpeta plugin-kit/tools


Código: Seleccionar todo
ally-text = Ally


Como era de esperar, la palabra "Ally" será diferente si el archivo del idioma es de un idioma diferente. Por ejemplo, en el resources/text/ES/card-text.txt aparece

Código: Seleccionar todo
ally-text = Aliado


Esto puede dar una idea de cual es nuestro objetivo, cambiar el valor de esta configuación para que cambie el texto superior de la carta que deseamos crear. Normalmente las cartas utilizan los valores por defecto, según cada uno de los idiomas, además de la configuación maestra de los archivos de presentación. Sin embargo, cada componente puede tener también unos valores "privados". Un valor privado solapa los proporcionados por los valores por defecto, pero sólo para una carta en particular. La librería de comandos proporciona una función especial que permite añadir valores privados a una carta. Vamos a hacerlo. Crear una nueva carta de Aliado, abrimos en el Strange Eons la pestaña Herramientas, la opción Procesado Rápido (también se abre con la opción Control-Q). En el Strange Eons seleccionamos para crear un nuevo Aliado, Copiamos el siguiente código, y después lo ejecutamos:

Código: Seleccionar todo
Patch.card( Component, "ally-text", "Enemy" );
Editor.forceRerender();


La función Patch.card establece un ámbito privado del cambio. Componente es cualquier carta que estamos modificando cuando ejecutamos el código. Los siguientes dos parámetros ("ally-text" y "Enemy") es lo que pasamos a con el nombre de lo que queremos cambiar (como una clave) y el nuevo valor que queremos usar. Podríamos cambiar más de una configuración a la vez, añadiendo nuevos pares de claves y valores en cada llamada a la función. La segunda línea (Editor.forceRerender()) hace que se vuelva a dibujar la carta, para que muestre el cambio realizado en el editor. Tenemos que añadir esto para que la vista previa de la carta cambie, la imagen previa no se refresca automáticamente tras cada cambio. Después de ejecutar este código, el texto superior de la carta previsualizada cambiará a:

Imagen

Hasta ahora, todo bien., Salimos del Strange Eons. Necesitamos saber modificar la plantilla utilizada como fondo de las cartas de Aliado. Necesitamos crear nuestra propia versión (roja) de esta imagen, y establecer una configuración privada para nuestra nueva versión. Podemos encontrar las claves de la configuración en el card-layout.txt:

Código: Seleccionar todo
ally-front-sheet-template = templates/ally-front.jp2
ally-back-sheet-template = templates/ally-back.jp2


Así que ahora, sabemos que las imágenes que necesitamos editar son resources/templates/ally-front.jp2 y resources/templates/ally-back.jp2. Abrimos esas imágenes en un editor de imágenes y usamos la herramienta de cambiar el tono a nuestro gusto. Si quieres, puedes guardar una copia de las siguientes imagenes
Imagen Imagen

Asegurate de que guardas la plantilla frontal en el formato .png, porque las imágnes .jpg no soportan la transparencia. Necesitamos la transparencia para hacer encajar el retrato en el centro.

Ok, Así que hemos modificado la imagen, y ahora sabemos la configuración que necesitamos modificar para obtener nuestro objetivo. Ahora sólo tenemos que ponerlo todo junto.

Acabando: Haciendo el salto a un plugin de extensión
Jugar con la configuración privada en la ventana Quickscript (Herramienta/Procesado Rápido) esta muy bien (y es útil cuando queremos depurar errores), pero en última instancia nos gustaría tener el componente de "enemigos" disponible en el cuadro de diálogo Nuevo Componente, al igual que sucede con todos los componentes estándard. Para ello tenemos que escribir algunos pequeños programas, llamados scripts. No te preocupes si no eres programador. La mayoría de los proyectos de personalización no requieren conocimientos de programación reales, puedes utilizar uno de los ejemplos que hay en el kit de creación de plug-in como punto de partida y realizar los cambios para que se adapte a tus necesidades.

Los Plugíns están compuestos por un determinado número de ficheros, pero para hacer las cosas más cómodas para los usuarios de estas aplicaciones, el paquete de archivos de un plug-in se une en un paquete.

Al igual que con nuestro ejemplo de introducción sobre como escribir una extensión, vamos a crear un proyecto para gestionar los diferentes archivos necesarios para nuestro plugin. En el proyecto crearemos la tarea del plugin (plugin task) con un fichero raiz eons-plugin y una carpeta resources (recursos). Dentro de la cartepa recursos crearemos una subcarpeta con nuestras iniciales o con un identificador único (para este tutorial he utilizado "tut"), y dentro de esta subcarpeta pondremos los materiales de nuestro plugin.

Vamos a empezar con la creación del proyecto y añadiendo una tarea de plugin vacía.

Mirar el video que hay en esta página. Se puede ver el paso a paso de crear las carpetas y añadir los recursos (el frontal y reverso de la carta de enemigo) a la subcarpeta correspondiente.

  1. Utilizamos Archivo / Nuevo Proyecto (File / New Project) para crear una carpeta de proyecto en algún lugar de nuestro ordenador
  2. Utilizamos Nueva Tarea (Add New Task) para crear una tarea plugin vacia
  3. Creamos la carpeta recurso (resources), y dentro de esta carpeta "tut" guardamos nuestro nuevos contenidos
  4. Copiamos las imagenes con las que queremos utilizar en la nueva carta dentro de la carpeta "tut"

Para acabar el plug-in, necesitamos añadir los siguientes ficheros:
  1. Nuestro código plugin. Esto le dice al Strante Eons lo que debe de hacer cuando se arranca el plugin, y proporciona la información básico del plugin, como el nombre y su versión. Nuestro plugín tiene que decirle al Strange Eons que lea un nuevo "class map", que es un fichero que dice al Strange Eons que tipo de componentes queremos añadir.
    No se como traducir "class map", concepturalmente es un índice que necesita el Strange Eons para decirque todos los componentes (recursos y imágenes, códigos y scripts) que se utilizan en el plugin
  2. También tendremos que crear al fichero "class map" que será leido por el Strange Eons. Esto le indicará al Strange Eons que nuestra nueva carta Enemigo, y el nombre del código que el Strange Eons deberá de ejecutar cuando el usuario quiera crear la nueva carta de Enemigo
  3. Del mismo modo, también tendremos que escribir el código para decirle al Strange Eons de la "class map". El código simplemente crea un nuevo Aliado, y a continuación aplica los cambios que hemos hecho antes.
  4. Un archivo raíz. Cada plugin necesita un "archivo raíz" (root file) con el nombre del fichero del plugin. Este fichero es comprobado por Strange Eons cuando se carta el plugin, y le dice donde encontrar nuestro código del plugin. La tarea del plugin hará que sea más fácil crear este fichero

Una vez tenemos todas las partes, vamos a unirlas en un paquete e instalar el plugin.

Vamos a comenzar a crear el código del plugin. Haz botón derecho sobre la carpeta y selecciona Nuevo / Código en blanco (New / Black Script). Nombre el código como enemy-extensión.js (sólo tienes que escribir el nombre, Strante Eons añadirá la extensión .js), entonces abre el fichero haciendo doble click en él. Elimina el texto inicial Editar/Borrar (Edit / Clear). Con cuidado, pega el siguiente código, y a continuación guarda el archivo.

Código: Seleccionar todo
uselibrary( "extension" );

function getName() {
    return "Enemy Card Extension";
}

function getDescription() {
    return "Adds the option to create Enemy cards.";
}

function getVersion() {
    return 1;
}

GameData.parseEditors( "tut/enemy.classmap" );


La primera línea de este código declara que esto es un plugin del tipo "extensión". Este tipo de plugin puede modificar cartas del juego básico, y no estará disponible como opción en la barra de Herramientas. Nuestro plugín debe ser una extensión para poder añadir una nueva entrada en el diálogo Nuevo Componente. Las siguientes líneas definen las funciones que el plugin llamará para obtener información básico sobre el plugin. Esta información es usada para describir el plugin en el diálogo Plugin Manager (administrador de plugins)

En la última línea de codigo se dice cual va a ser el trabajo real. Esta línea utiliza el objeto GameData para añadir una nueva entrada al diálogo Nuevo Componente. Esta entrada en esta ventana diálogo es descrita usando el fichero llamado ""class map".

Por cada tipo de componente que se quiera crear en Strange Eons, es necesaria una nueva entrada en el fichero class map que determina que es llamado, en que categoría va y lo que tiene que hacer Strange Eons cuando se cree una nueva instancia, es decir, cuando se utilice. Ofreceremos nuestra propio propio archivo class map para la nueva carta Enemigo. La línea GameData.parseEditor dice a Strange Eons donde se encuentra nuestra class map y le dice que lo ejecute.

A nuestro fichero class map sólo hay que añadirle una entrada, por lo que será muy simple. Para crearlo hay que hacer click derecho en la carpete y escoger Nuevo / Class Map. Abrir el fichero y editarlo. El contenido en la parte superior por defecto describe la sintaxis de los archivos calss map en detalle. Lo puedes leer si quieres. Luego lo borras y copiamos lo siguiente

@cat-custom
Enemy Card = script:tut/create-enemy-card.js


La línea cat-custom inicia una categoría. Todas las definiciones que haya después aparecerán en esta categoría dentro de la ventana de diálogo Nuevo Componente. El nombre de la categoría es una categoría especial predefinida dentro de la que colocaremos el material que hayamos modificado. Cuando el programa se ejecute en ingles, los componentes de esta categoría aparecerán en la sección "Custom Componentes" (Componentes Personalizados). No necesitas usar este nombre, fácilmente puedes escribir que los quieres en Debbie`s Special Cards (Las Cartas especiales de Debbie). La siguiente línea define un nuevo tipo de componente llamado "Enemy Card" que el Strange Eons creará ejecutando el código situado en resources/tut/create-enemy-card.js. Cuando seleccionemos la opción "Enemy Card", el código ejecutado creará el nuevo componente y abrirá una ventana para editarlo.

Estoy seguro que se puede adivinar a continuación el funcionamiento del código create-enemy-card.js. El código básicamente sólo hace las mismas cosas que hemos hecho a mano antes, cambiando las características de la carta, pero esta vez no lo hace en una carta en particular, sino que crea una carta nueva. Crear el código en blanco como antes, llamando a create-enemy-js. Abrir el fichero, borrar su contenido inicial y copiar lo siguiente:

Código: Seleccionar todo
// create a standard Ally card and make it the active editor
if( PluginContext.createEditor( "ally" ) ) {
    var editor = PluginContext.activeEditor;
    var component = editor.gameComponent;

    // customize the new component
    Patch.card( component,
        "ally-text", "Enemy",
        "ally-front-sheet-template", "tut/enemy-front.png",
        "ally-back-sheet-template", "tut/enemy-back.jpg"
    );

    // clear the example text and/or install a new example if desired
    component.clearAll();

    // once all modifications to the content of the component have been
    // made, call this method to copy the changes to the editor
    editor.replaceEditedComponent( component );
    component.markSaved();
} else {
    error( "Failed to create base component" );
}


"Un poco de informática": mostrar
Los métodos son algo así como cajas de instrucciones.

El método PluginContext.createEditor crea un nuevo componente y hace que su editor esté activo. El tipo de componente creado es determinado por un único parámetro, que es la clave con la que está registrado en el class maps. Los componentes estandar tienen calves que empiezan con "app-new-" por razones históricas.Como acceso directo, se puede dejar fuera este prefijo (el nombre real de la clave del componente es app-new-ally). El nombre de otros componentes pueden encontrarse en la class map del Strange Eons: resources/editors/standard.classmap.

Las dos siguientes líneas obtienen el editor
"se refiere a...": mostrar
var editor = PluginContext.activeEditor;
var component = editor.gameComponent;
(la ventana usada para editar el componente) y el propio componente. Una vez que tenemos el componente, que puede utilizar el objeto Patch (Parche) para modificar la configuración del componente tal y como hicimos antes con la ventana Quickscript (Procesado Rápido). Ahora observaremos que hemos añadido dos pares de nuevos parámetros, el parche de las plantillas de imágenes usadas para usar las imágenes en rojo.

La línea componente.clearAll() borrará la configuración de la carta como si se hubiera hecho un Edit/Clear (Editar/Borrar). Esto elimina el texto de ejemplo que normalmente tienen las cartas recien creadas, después de todo, ese ejemplo era para un aliado no para un Enemigo. Si queremos, podemos modificar el nombre, los efectos y los comentarios para crear ejemplos en este momento. (Usar el Componente Viewer para visualisar los métodos usados para modificar un componente. Esto es un plugín que por defecto está deshabilitado en el Strange Eons, hay que abrir el Manager Plugin y seleccionar "Activo" en el checkbox correspondiente)

Una vez que hemos realizado los cambios en el componente que deseamos, hemos de llamar a editor.replaceEditedComponente(). ESto hace que el componente "olvide" que ha sido cambiado (cuando limpiemos el texto ejemplo). Si no hacemos esto, la carta aparecerá que tiene cambios pendientes de grabar, aunque el usuario no haya cambiado nada.

Esto es todo para el código, ahora necesitamos crear el fichero raíz del plugin para que Strange Eons reconozca el fichero como un plugin de código. Para hacer esto, hacemos botón derecho en la carpeta Extension Plug-in task , y seleccionamos New/ Plugin Root. Strange Eons creará un fichero y abrirá el editor de fichero raíz (root). Como que nuestro plugin es enemy-extension.js, seleccionamos la siguiente entrada y actualizamos.

Imagen

Ahora sólo tenemos que crear el paquete con el plugin e instalarlo. Hacemos click derecho en la carpeta plugin task y escogemos Make Bundle (Crear un paquete). Cuando se abre el diálogo de renombrar, introducimos el nombre EnemyExtension, y hacemos click en el .seplugin a la derecha del campo nombre. Esto nos permitirá cambiar la extensión, cambiamos el nombre al nombre EnemyExtension.seext y renombramos el paquete.

Para probar el plugin, hacemos click derecho en el paquete y escogemos Test Plugin. Esto nos permitirá validar el funcionamiento del paquete en una versión de pruebas del Starnge Eons. En algunas plataformas puede ser necesario ajustar el JVM (Java Virtual Machi) para lanzar esta aplicación de pruebas. Si tienes problemas usando este comando de pruebas y no sabes como ajustar las opciones de JVM en tu sistema, mejor instala el paquete y reinicia el Strange Eons para probar la extensión.

No importa como acabes probando el plugin, al final en "Componente Personalizado" aparecerá la opción "Enemy Card" para crear la nueva carta de enemigo.

Y eso es todo. Puede parecer complicado, especialmente si no tienes ninguna experiencia en programación, pero es más difícil describir como se hace que hacer. Una vez que hayas hecho alguno, te darás cuenta de lo sencillo y rápido que és.

Descargar EnemyExtensión.seext creado
Registro en sectarios.org: Enviame un correo a marcoa.ramirez arroba gmail.com
Leyendo... Ratas en las paredes
Avatar de Usuario
sectario
Cordura 0 Mitos Cthulhu 25
 
Mensajes: 10258
Registrado: Lun Oct 22, 2007 8:54 pm
Ubicación: Observando los Mi-go de Montserrat.

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor sectario el Mar Ago 23, 2011 4:57 pm

He añadido un nuevo fragmento de traducción. Pero aún queda.
Registro en sectarios.org: Enviame un correo a marcoa.ramirez arroba gmail.com
Leyendo... Ratas en las paredes
Avatar de Usuario
sectario
Cordura 0 Mitos Cthulhu 25
 
Mensajes: 10258
Registrado: Lun Oct 22, 2007 8:54 pm
Ubicación: Observando los Mi-go de Montserrat.

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor keron el Mar Ago 23, 2011 9:15 pm

Muy interesante, si.

He hecho hasta lo de cambiar el nombre y mirar los .txt para localizar las imagenes de las cartas, pero esta segunda parte parece más complicada... Cuando termines de traducir el tutorial probaré a hacerlo todo junto a ver si sale.
Avatar de Usuario
keron
Cordura 60
Cordura 60
 
Mensajes: 77
Registrado: Vie Jul 01, 2011 11:35 am

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor sectario el Vie Ago 26, 2011 6:35 pm

Pues ya está más o menos traducido. Que largo se me ha hecho :lol:
Registro en sectarios.org: Enviame un correo a marcoa.ramirez arroba gmail.com
Leyendo... Ratas en las paredes
Avatar de Usuario
sectario
Cordura 0 Mitos Cthulhu 25
 
Mensajes: 10258
Registrado: Lun Oct 22, 2007 8:54 pm
Ubicación: Observando los Mi-go de Montserrat.

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor keron el Sab Ago 27, 2011 1:22 am

¡Ya está! Ya lo he probado. Incluso me he hecho una chuleta para tontos.

Fuuu... como mola poder alterar las cartas :lol: . Ahora podré probar a crear un pequeño proyecto: el Mazo de Terror, :twisted:

PD: Muchismas gracias Sectario
Avatar de Usuario
keron
Cordura 60
Cordura 60
 
Mensajes: 77
Registrado: Vie Jul 01, 2011 11:35 am

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor sectario el Sab Ago 27, 2011 6:32 am

Yo me estuve mirando el tutorial hace ya tiempo, y entonces era bastante más complicado que ahora. Creo que ha simplificado mucho las herramientas del Strange Eons para modificar cartas

Quedamos en espera de ver ese Mazo de Terror :mrgreen:
Registro en sectarios.org: Enviame un correo a marcoa.ramirez arroba gmail.com
Leyendo... Ratas en las paredes
Avatar de Usuario
sectario
Cordura 0 Mitos Cthulhu 25
 
Mensajes: 10258
Registrado: Lun Oct 22, 2007 8:54 pm
Ubicación: Observando los Mi-go de Montserrat.

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor keron el Dom Ago 28, 2011 8:31 pm

¿Te atreves a traducir el tutorial DIY? :oops:
Avatar de Usuario
keron
Cordura 60
Cordura 60
 
Mensajes: 77
Registrado: Vie Jul 01, 2011 11:35 am

Re: [Tutorial]Carta de enemigo. Un ejemplo de personalizació

Notapor sectario el Lun Ago 29, 2011 4:59 pm

keron escribió:¿Te atreves a traducir el tutorial DIY? :oops:

jeje, cuento con ello. Aunque lo iré haciendo a fragmentos... que lo he ojeado y es bastante largo ;). Hace tiempo ya me estuve mirando estos tutoriales, y entonces los tutoriales y las herramientas eran más complicadas. Lo han mejorado mucho
Registro en sectarios.org: Enviame un correo a marcoa.ramirez arroba gmail.com
Leyendo... Ratas en las paredes
Avatar de Usuario
sectario
Cordura 0 Mitos Cthulhu 25
 
Mensajes: 10258
Registrado: Lun Oct 22, 2007 8:54 pm
Ubicación: Observando los Mi-go de Montserrat.


Volver a Strange Eons - Crea tus propios primigenios

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados

cron