Archivo de la etiqueta: Anima: UNICO

Proyectos en marcha

Mmm… mi anterior entrada de proyectos en marcha es de 2011. Creo que es hora de actualizar mi lista de proyectos.

Veamos, hace tres años comparado con ahora:

  • (entonces) El principal proyecto actual es Comando M.A.N.N. (Marcianos Arios No Nazis), un juego de rol de ciencia ficción con elementos bélicos inspirado por el Equipo A.
  • (ahora) Comando M.A.N.N. nunca terminó de despegar, y ahora me parece que tendría cierto desagradable solapamiento con Walküre, así que se queda en el cajón. Puede que en algún momento haga una versión simple basada en Fate o en AW, que están muy de moda esas cosas.
  • (entonces) John Merridew está muerto es un relato sobre un asesinato en una habitación cerrada en el mundo de fantasía de Arguè.
  • (ahora) John Merridew está muerto sigue siendo un relato whodunnit, pero ya no situado en el mundo de Arguè.
  • (entonces) Por supuesto, el proyecto del juego de rol del mundo de Arguè sigue en marcha, pero va para largo.
  • (ahora) Y tan para largo. Sigo sin aclararme las ideas lo bastante, pero puede que le de un empujón en breve.
  • (entonces) También en el mundo de Arguè se situará Days of Adventure and Fantasy, un MMORPG textual que está tan lejos de tener una versión inicial de prueba que no merecía le pena ni mencionarlo.
  • (ahora) Days of Adventure and Fantasy ya no existe, aunque el título puede que lo vuelva a usar.
  • (entonces)Rojosky, Bilinfus, Lupar es un relato corto sobre cómo afecta un día extraño a una persona poco común.
  • (ahora) La idea sigue ahí.

5 proyectos que no han llegado a nada. Ni han avanzado, de hecho. Algo tengo que hacer mejor.

Mis proyectos actuales serían estos:

  • Anima: UNICO – El generador de personajes para Anima Beyond Fantasy. Mis planes de un crowdfunding que me ayudara a terminarlo no pudieron ser, pero lo concluiré. Me he tomado unos meses de descanso, pronto volveré a por su recta final.
  • Otros generadores de personajes – Estoy trabajando en otros generadores similares. Cuando hayan avanzado lo bastante los publicaré.
  • John Merridew está muerto – Stefan Gutnacht, el gran detective alemán, está de vacaciones en Inglaterra. Necesita el aire fresco de la campiña inglesa tras los terribles acontecimientos de su aventura en la Selva Negra. Su viejo amigo y compañero de fatigas, Oscar Hammond (ahora Hammond-Kemp), le ofrece la hospitalidad de su casa. Allí conocerá a John Merridew, un hombre despreciable. Stefan Gutnacht no tendrá unas vacaciones tan tranquilas como deseaba.
  • Arguè Archeo Logos – «¡Están intentando matarme, es algo nuevo para mi!», «A mi me pasa a menudo». El imperio Trelo dominó la faz Noah durante mucho tiempo, pero desapareció abrúptamente. En este videojuego te dedicarás a investigar su historia, su artesanía, su tecnología, su hechicería y el misterio de su desaparición. Coge tu pala, tu pico, tu pincel y tu papel cebolla, practica tu dialéctica, no busques ninguna equis que marque el lugar y, sobre todo, ten cuidado con la Sociedad Secreta que no quiere que los misterios Trelos sean desvelados…
  • Arguè – El juego de rol ambientado en un mundo de fantasía platónica, aristotélica, alanmooriana.

Con eso cubro todas mis principales áreas de interés: escritura, rol, programación, videojuegos. ¿Llevaré alguno a buen puerto? La respuesta, al parecer, dentro de unos tres años.

Anima: UNICO – Crowdfunding en camino

Como habréis podido notar, este último mes el ritmo de actualización de Anima: UNICO ha bajado bastante. Es lo que tienen los hobbys: les toca el último puesto en la fila de prioridades. Y me gustaría que Anima: UNICO ganara posiciones. Para eso, necesito ascenderlo de «hobby» a «trabajo». Y hoy en día, eso significa ¡CROWDFUNDING!

En breve (me faltan algunas piezas para terminar de montarla) lanzaré una campaña de crowdfunding en IndieGoGo para intentar poder acelerar el desarrollo de Anima: UNICO y, en caso de que vaya muy bien, aumentarlo.

Me encantaría escuchar vuestras opiniones y sugerencias.

Making of Anima: UNICO – Localización

Aquí estoy de nuevo. Hoy voy a hablar de un punto peliagudo: la localización, es decir, la traducción y paso a otros idiomas de la aplicación. Esto presenta varios problemas iniciales:

No puedo limitarme a traducir cada término: tengo que usar las equivalencias de las distintas ediciones internacionales. Por suerte, cuento con la ayuda de varios voluntarios (Vincent «Moklo» Bouscarle, corrector de la edición francesa de Anima, está traduciéndola al francés; Andrew «Dynaes» Reich, del foro inglés, está traduciéndola al inglés). De nuevo, muchas gracias a ambos. 

Como ya he mencionado, tengo básicamente tres capas en Anima: UNICO. La capa de modelo se encarga de organizar la información. El modelo de Personaje, por ejemplo, sabe almacenar el nombre, las habilidades, sabe cómo subir de nivel, etc. La capa de Controlador conoce los modelos y las vistas y gestiona toda la lógica general de la aplicación. Por ejemplo, el Controlador de artes marciales sabe cuánto le costará a un personaje en concreto un arte marcial en concreto, y qué datos necesitará una Vista para que el usuario pueda elegir un arte marcial. La capa de Vista recibe datos del Controlador y muestra lo que el usuario ve en la pantalla. Sólo para la Vista tiene sentido la localización.

Mi solución

function setIdiomaUI() {
   var lang = navigator.language || navigator.userLanguage;
   
   if ((lang.lastIndexOf("es") != -1) || (lang.lastIndexOf("spa") != -1)) {
      IDIOMA_UI = SPA;
   } else {
      IDIOMA_UI = ENG;
   }
}
function L(id, spa, eng) {
   this.id = id;
   this[SPA] = spa;
   this[ENG] = eng;
   if (!diccionario["ANIMAUNICO_"+this.id]) {
      diccionario["ANIMAUNICO_"+this.id] = this;
   } else {
      console.log("Clave de diccionario repetida: [" + this.id + " / " + this[SPA] + " / " + this[ENG] + "]");
      console.log("--Clave previa: [" + diccionario["ANIMAUNICO_"+this.id].id + " / " + diccionario["ANIMAUNICO_"+this.id][SPA] + " / " + diccionario["ANIMAUNICO_"+this.id][ENG] + "]");
   }
}
L.prototype = {
   constructor: L,
   toString : function() {
      return this[IDIOMA_UI];
   },
   getId : function() {
      return this.id;
   }
};
function _l(clave) {
   if (diccionario["ANIMAUNICO_"+clave]) {
      return diccionario["ANIMAUNICO_"+clave].toString();
   } else {
      return clave;
   }
}

Explicando un poco: creo una clase, L, que tendrá como instancias cada cadena a localizar y sus localizaciones. Además, tengo una función, _l, que recibe el identificador de una cadena y devuelve su localización al idioma actual. Internamente, las capas de modelo y de controlador sólo usan los identificadores de las cadenas, que son únicos. Cuando la capa Vista va a mostrar algún texto en pantalla, se asegura de mostrarlo llamando a la función _l.

La declaración de cadenas la realizo así:

var UI_DAÑO_FINAL = (new L("UI_DAÑO_FINAL","Daño final","Final Dmg.")).getId();
var UI_VELOCIDAD = (new L("UI_VELOCIDAD","Velocidad","Speed")).getId();
var UI_TURNO_FINAL = (new L("UI_TURNO_FINAL","Turno final","Final Init.")).getId();

Como se puede ver, esto es sólo para español e inglés. En cuanto añada la traducción al francés, me bastará con alterar la clase L y añadir la localización a cada cadena como un argumento más.

Como resulta claro enseguida, esta solución aún presenta problemas. Por ejemplo, habrá ocasiones en que la unión de varios términos deba hacerse en distinto orden según el idioma, y éste sistema de por sí no ofrece soporte para ese caso. Pero para el caso de una hoja de personaje, que sobre todo mostrará términos de manera aislada de momento me está funcionando bastante bien.

Progreso en Anima: UNICO

Hace ya una semana de la última actualización de Anima: UNICO. No es que lo haya dejado de lado, ni mucho menos. Simplemente, lo que estoy actualizando mes bastante costoso.
Estoy actualizando la sección de Técnicas del Ki a lo incluido en Dominus Exxet. Esto requiere repasar todos los efectos (algunos costes cambian), añadir los costes de sostenimiento, añadir el control de la clase de efectos (para saber qué desventajas son aceptables), implementar las reglas de sostenimiento y las de téecnicas combinables.
Además, estoy aprovechando para limpiar y mejorar la inmterfaz de usuario. La ventana que aparecía al darle a comprar algo referente al CM ahora desaparece, y cada elemento se compra directamente desde la hoja principal. Este cambio lo implementaré también más tarde para magia y para psíquica.
Y, como si fuera poco, estoy reorganizando la ventana de creación de técnicas.
Ya me falta poco para terminar todo esto. En unos días, como mucho, lo podréis disfrutar.