CAAD
http://foro.caad.es/

Una de preguntas técnicas.
http://foro.caad.es/viewtopic.php?f=31&t=6215
Página 1 de 3

Autor:  Coque_Mad [ 01 Sep 2017 15:04 ]
Asunto:  Una de preguntas técnicas.

Antes de nada comento: Soy Neo_One, pero como el foro no me dejaba entrar con mi antiguo usuario he tenido que crearme uno nuevo. Dicho esto paso a la batería de preguntas.
He decidido crear, por fin, una aventura conversacional y mi elección ha sido este parser para su concepción y desarrollo, pero tengo alguna que otra duda al respecto.
1) Mi idea es que la comunidad de jugadores invidentes o de visión reducida puedan disfrutar del producto, ¿con AGE es posible?
2) ¿Qué tal es la integración con el sdk de Steam? Tengo pensado publicarla ahí y en GOG, si bien en la última no es necesario la implementación de un drm con Steam es diferente (su sdk está escrito en C++).
3) Quiero lanzarlo en un máximo de dos idiomas, ¿Cómo se podrían hacer las labores de traducción y un menú principal para su elección?
4) Quisiera hacerlo muy vistoso para atraer a la mayor cantidad de jugadores posible y tengo pensado dividir la pantalla dividida en diferentes áreas.
-Principal: texto descriptivo; texto con respuestas y el promt donde escribe el jugador.
-Informativa: una con la imagen del personaje y su estado (camino, hablando, etc...) y otra con la imagen de la localización en la que se esté en ese momento.
-La última con dos áreas: inventario y un mapa que se va desbloqueando según descubramos nuevas zonas.

Gracias. Nos leemos.

Autor:  Al-Khwarizmi [ 01 Sep 2017 16:28 ]
Asunto:  Re: Una de preguntas técnicas.

Hola,

Coque_Mad escribió:
Antes de nada comento: Soy Neo_One, pero como el foro no me dejaba entrar con mi antiguo usuario he tenido que crearme uno nuevo. Dicho esto paso a la batería de preguntas.
He decidido crear, por fin, una aventura conversacional y mi elección ha sido este parser para su concepción y desarrollo, pero tengo alguna que otra duda al respecto.

¡Genial!

Coque_Mad escribió:
1) Mi idea es que la comunidad de jugadores invidentes o de visión reducida puedan disfrutar del producto, ¿con AGE es posible?

Sí, las aventuras en AGE son accesibles para jugadores invidentes mediante el Java Access Bridge y un lector de pantalla. AGE cuenta con un modo para lectores de pantalla que facilita esto.

Para jugadores de visión reducida pero que no lleguen a necesitar lector de pantalla, AGE también permite al jugador ampliar el texto al tamaño que quiera.

Coque_Mad escribió:
2) ¿Qué tal es la integración con el sdk de Steam? Tengo pensado publicarla ahí y en GOG, si bien en la última no es necesario la implementación de un drm con Steam es diferente (su sdk está escrito en C++).

Pues aquí me temo que no tengo ni la más remota idea, porque nunca he desarrollado nada para Steam. Para jugar una aventura de AGE, hace falta el intérprete (un ejecutable), tener Java instalado, y los ficheros de la aventura. Sé que hay herramientas que te permitirían empaquetar todo esto de forma que un ejecutable te instale Java si no está ya instalado. Pero ni idea de lo que se requiere específicamente para poner juegos en Steam.

Coque_Mad escribió:
3) Quiero lanzarlo en un máximo de dos idiomas, ¿Cómo se podrían hacer las labores de traducción y un menú principal para su elección?

Ahora mismo AGE trae soporte para crear aventuras en cinco idiomas: español, gallego, catalán, inglés y esperanto. El sistema puede soportar más idiomas, pero no está traducido a ellos, si te interesa alguno que no sea de esos cinco tendría que traducirlo tú (no es difícil, en http://www.caad.es/aetheria/doc/doku.ph ... u_lenguaje hay información).

Para lanzar un juego en dos idiomas de entre los soportados por el sistema, habría dos opciones. Una sería sacar versiones separadas en un idioma y en otro, y otra sería hacerlo conjunto, por ejemplo con un menú como comentas. Esto se puede hacer sin problema porque AGE soporta cambiar el idioma del sistema en tiempo de ejecución y además tanto las descripciones, como los nombres de los objetos, etc. se pueden parametrizar de acuerdo con variables del juego. Así que puedes, por ejemplo, guardar una propiedad en una entidad abstracta que represente el idioma, y que según esa propiedad se muestren las cosas en un idioma u otro. Si te bajas el kit de desarrollo, viene con una aventura pequeñita llamada Multilingüe que es un ejemplo de esto. Es una aventura donde hay un botón que, si lo pulsas, cambia el idioma de la aventura de español a inglés o viceversa. Lo mismo lo puedes hacer con un menú, por supuesto.

Coque_Mad escribió:
4) Quisiera hacerlo muy vistoso para atraer a la mayor cantidad de jugadores posible y tengo pensado dividir la pantalla dividida en diferentes áreas.
-Principal: texto descriptivo; texto con respuestas y el promt donde escribe el jugador.
-Informativa: una con la imagen del personaje y su estado (camino, hablando, etc...) y otra con la imagen de la localización en la que se esté en ese momento.
-La última con dos áreas: inventario y un mapa que se va desbloqueando según descubramos nuevas zonas.

También se puede hacer. En AGE puedes dividir la pantalla como quieras mediante el soporte de frames: http://www.caad.es/aetheria/doc/doku.php?id=frames

En los frames se pueden poner imágenes con métodos al efecto, o incluso si quieres puedes obtener el componente Java correspondiente y dibujar tú mismo en él, lo cual puede ser más flexible para el inventario y el mapa.

Autor:  Coque_Mad [ 01 Sep 2017 22:11 ]
Asunto:  Re: Una de preguntas técnicas.

¡Estupendo! Esto sí que es rapidez al contestar. :)
Para lo de Steam a ver si puedo preguntar a los muchachos de La abadía Extensum, que lo hicieron en java y lo tienen en esa tienda.
Ahora solo queda ir escribiendo la aventura tipo novela en un editor de textos que me ayude a pillar pifias ortográficas; que como muchos sabréis al escribir se suelen colar algunas: bien por no darle correctamente a la una tecla; bien por darle a otra al ir deprisa. Que en mi actual juego por ello he cogido alguna que me hizo sangrar los ojos; crear los puzles y empezar con el parser.

Autor:  Fernando Gregoire [ 02 Sep 2017 00:25 ]
Asunto:  Re: Una de preguntas técnicas.

Primero que nada, enhorabuena por la nueva aventura en siernes.
De las cuestiones que consultas, en relación con la primera que es en la que más te puedo asistir, tal como te dijo Al-K, AGE es accesible si se habilita JavaAccessBridge y aparte AGE tiene un modo especial para lectores de pantalla. Si bien por el carácter multiplataforma AGE no puede directamente enviar la salida de texto a un motor de TTS al pulsar ENTER, el modo lector de pantalla acelera la consulta del texto resultante del último comando ya que al pulsar TAB para ir al cuadro de edición de sólo lectura de la salida, en vez de que el cursor esté al final de todo el texto como es habitual, con el modo lector de pantalla el cursor permanece donde estaba y entonces pueden emplearse comandos de lectura o navegación de texto estándar tanto de Windows como de los lectores de pantalla, tal como las flechas para moverse o INSERT+ABAJO que en los lectores suele servir para iniciar una lectura continua desde donde estamos hasta el final del texto.
Java Access Bridge antes había que instalarlo, pero desde hace unos tres o cuatro años la instalación estándar del Java Runtime lo incluye y sólo es cuestión de habilitarlo, ya sea a través de la línea de comandos o en el enlace Facilitar el uso del equipo que figura en el Centro de Accesibilidad de Windows (Windows Vista y posteriores). En Mac el propio lector VoiceOver de Apple integra compatibilidad con Java de serie, con lo cual no hay que hacer nada. En GNU/Linux, por desgracia, no tengo idea.

Ánimo con el proyecto, y si necesitares a alguien que dé un repaso a los textos no dudes en escribirme.

Autor:  Coque_Mad [ 02 Sep 2017 09:42 ]
Asunto:  Re: Una de preguntas técnicas.

Fernando Gregoire escribió:
Primero que nada, enhorabuena por la nueva aventura en siernes.
De las cuestiones que consultas, en relación con la primera que es en la que más te puedo asistir, tal como te dijo Al-K, AGE es accesible si se habilita JavaAccessBridge y aparte AGE tiene un modo especial para lectores de pantalla. Si bien por el carácter multiplataforma AGE no puede directamente enviar la salida de texto a un motor de TTS al pulsar ENTER, el modo lector de pantalla acelera la consulta del texto resultante del último comando ya que al pulsar TAB para ir al cuadro de edición de sólo lectura de la salida, en vez de que el cursor esté al final de todo el texto como es habitual, con el modo lector de pantalla el cursor permanece donde estaba y entonces pueden emplearse comandos de lectura o navegación de texto estándar tanto de Windows como de los lectores de pantalla, tal como las flechas para moverse o INSERT+ABAJO que en los lectores suele servir para iniciar una lectura continua desde donde estamos hasta el final del texto.
Java Access Bridge antes había que instalarlo, pero desde hace unos tres o cuatro años la instalación estándar del Java Runtime lo incluye y sólo es cuestión de habilitarlo, ya sea a través de la línea de comandos o en el enlace Facilitar el uso del equipo que figura en el Centro de Accesibilidad de Windows (Windows Vista y posteriores). En Mac el propio lector VoiceOver de Apple integra compatibilidad con Java de serie, con lo cual no hay que hacer nada. En GNU/Linux, por desgracia, no tengo idea.

Ánimo con el proyecto, y si necesitares a alguien que dé un repaso a los textos no dudes en escribirme.


Muchas gracias por la aclaración y por el ofrecimiento. Lo tendré en cuenta.

Fuera de la conversación añado que en cuanto a facilidad de uso Mac es el más amigable para el usuario inexperto, encender y punto, contra lo alienante de Linux. Que según mi experiencia personal es de "no toques mucho" porque al final acabas mal.

Autor:  Coque_Mad [ 15 Sep 2017 23:32 ]
Asunto:  Re: Una de preguntas técnicas.

Se me olvidó preguntar: ¿se pueden poner imágenes en movimiento (*.gif)?

Autor:  Al-Khwarizmi [ 16 Sep 2017 19:05 ]
Asunto:  Re: Una de preguntas técnicas.

Sí, AGE soporta GIFs animados. http://www.caad.es/aetheria/doc/doku.php?id=imagenes

Autor:  Coque_Mad [ 13 Feb 2018 22:41 ]
Asunto:  Re: Una de preguntas técnicas.

Después de un tiempo vuelvo para preguntar una cosa en relación a los frames.
Resulta que más o menos lo principal lo tengo y sería como lo describo en el esquema.

|----------------------------------------------------------------------------------------------|
| |
| Imagen del escenario |
| |
|----------------------------------------------------------------------------------------------|
| |
| |
| Frame donde describo situaciones, escenarios, eventos, etc... |
| |
| |
|-----------------------------------------------------------------------------------------------|
| Promt


Vale, lo que yo quisiera hacer es colocar botones a modo de acceso en mitad de la pantalla situados en las mitades: superior y derecha para que el usuario pueda acceder al mapa, ficha del personaje e inventario. Y que también se pueda acceder desde el promt, por supuesto.
El mapa no tiene mucho misterio. En el primero se ve que zonas has visitado para no perderte. El de la ficha tiene más miga y sería más o menos como uno que se puede ver en el típico jrpg.

Imagen

Y que al pulsar el botón o tecleando el comando correspondiente te lleve a una de esas secciones dentro de ese mismo frame.
También añadir otro botón para ocultar esa sección.
¿Se podría hacer o sería muy complicado?

Autor:  Al-Khwarizmi [ 15 Feb 2018 00:38 ]
Asunto:  Re: Una de preguntas técnicas.

Se puede hacer, lo que pasa es que para hacer esas cosas se trabaja con la API de Swing que proporciona Java. Como esto no es una cosa muy estándar, AGE no viene con una capa personalizada para capturar clicks y, en función de eso, gestionar una interfaz cambiando imágenes, etc.

Lo que te proporciona es una manera de acceder al propio frame, véase el método getFrame de InputOutputClient que se documenta aquí:

http://www.caad.es/aetheria/doc/doku.php?id=frames

Cada frame es un objeto JPanel de Swing ( https://docs.oracle.com/javase/7/docs/a ... Panel.html ) y una vez que has accedido a él, puedes hacer de todo lo que te permita Swing: añadir listeners para capturar los clicks del ratón en la posición que quieras, cambiar según eso la imagen que muestras, incluso añadir componentes del sistema como botones pulsables, combo boxes, etc. Cualquier cosa que puedas programar en Swing, básicamente.

Esto te proporciona una gran flexibilidad (básicamente ilimitada), pero como contrapartida requiere usar Swing, librería más compleja que las APIs que normalmente encontramos en AGE, y que requiere tener un poco de cuidado con el threading, etc. Pero bueno, ya lo decían en Spiderman, "un gran poder conlleva una gran responsabilidad". Si uno quiere hacer cosas avanzadas con gráficos, tampoco queda otra, un wrapper sencillo va a tener funcionalidad también sencilla y se va a quedar corto en un momento u otro.

Autor:  Coque_Mad [ 15 Feb 2018 11:28 ]
Asunto:  Re: Una de preguntas técnicas.

Bastante complicado la verdad :shock:
Yo que en programación ando lo justo no sé si tendría que instalar algo para eso de Swing.
Por cierto, no sé si está explicado en el manual porque acabo de empezar con la parte de Beanshell (corro mucho), ¿cómo es el tema de subir de nivel y repartir los puntos de experiencia?

Autor:  Al-Khwarizmi [ 15 Feb 2018 13:05 ]
Asunto:  Re: Una de preguntas técnicas.

Bueno, es que hacer interfaces gráficas de usuario que responden a eventos sobre distintas zonas de una imagen, etc., es complicado de por sí... no hay mucho que uno pueda hacer al respecto. Es uno de los principales motivos por los que me puse a hacer aventuras de texto, no creas... la programación de interfaces, siendo además negado para todo lo que sea diseño gráfico, siempre me cuesta muchísimo :D

Para hacerlo con Swing no tienes que instalar nada. Es la API para hacer interfaces gráficas que viene incluida en Java, que lógicamente ya lo tienes si estás programando en AGE. Lo que necesitarás hacer es aprender a programar en Swing. Pero eso te pasará con cualquier herramienta con la que quieras hacer una interfaz gráfica.

Me comentaba el otro día dddddd en el canal que la aventura "Una de dragones", versión AGE, de edlobez tiene un mapa dinámico que va cambiando según las localidades que explora, siempre puedes probar a mirar su código y usarlo de ejemplo de cómo hacer cosillas con Swing.

Acerca de experiencia y niveles, el sistema de evolución que viene implementado en AGE por defecto para el combate (y que se puede usar también para otras habilidades que no sean de combate, por supuesto) es basado en habilidades: http://www.caad.es/aetheria/doc/doku.ph ... te_y_armas

Es decir, con ese sistema, hay una serie de habilidades (las que quieras según lo que necesite tu juego, por ejemplo espada, escudo, saltar, etc.) que pueden tener una evolución independiente.

Eso no quiere decir que no puedas usar esto para tener un sistema más sencillo con puntos de experiencia y niveles, de hecho, es muy fácil: puedes hacerlo utilizando una única habilidad (llamada "experiencia", por ejemplo) y que todo lo que haga el personaje dependa de esa misma habilidad, en lugar de tener habilidades separadas para cada cosa. O bien puedes tener habilidades separadas y a la vez que todo lo que hagas te aumente también la "experiencia" (como ves en la documentación, por ejemplo, un mismo ataque con un arma puede aumentar varias habilidades).

Los puntos en las habilidades (una de las cuales puede ser la experiencia) se reparten automáticamente en el combate, ya que el sistema de combate está preprogramado en AGE (salvo que quieras cambiarlo por otro). En lo que no es el combate, los repartirías tú mediante los métodos getSkill y setSkill del enlace. Por ejemplo, si tienes un código para que el jugador salte por encima de un abismo, le podrías meter un chequeo de que getSkill sea mayor que una determinada cantidad (para ver si lo consigue y se cae) y, si lo consigue, usar setSkill para cambiarle la habilidad de saltar, y/o la experiencia.

Autor:  Coque_Mad [ 15 Feb 2018 13:41 ]
Asunto:  Re: Una de preguntas técnicas.

Como dice el dicho: "El que algo quiere algo le cuesta.", y es que me gustaría llevar la experiencia jrpg al terreno de lo conversacional para que el público invidente también pueda disfrutarlo.
No sé si me estaré metiendo en un jardín al querer insertar demasiados elementos y de forma tan novedosa, es posible que haya una forma de acceder a: la ficha del personaje, inventario de cada uno (aquí mejor hacerlo compartido), lista de hechizos, atributos, etc... o quizá lo que deba hacer es algo más simple como solo poner el nivel que tienen y el resto gestionarlo por debajo.

Voy preguntando cosas que están más avanzadas y me aturulla un poco :lol:

Autor:  Al-Khwarizmi [ 15 Feb 2018 17:06 ]
Asunto:  Re: Una de preguntas técnicas.

Claro que puedes acceder a todo eso.

Ficha del personaje, incluyendo habilidades y atributos - usando los métodos getStat() y getSkill() del enlace que puse antes de la documentación.

Inventario - getInventory() - http://www.caad.es/aetheria/doc/doku.ph ... _inventory

Hechizos - getSpells() - http://www.caad.es/aetheria/doc/doku.php?id=hechizos

Autor:  Coque_Mad [ 15 Feb 2018 23:48 ]
Asunto:  Re: Una de preguntas técnicas.

Muchas gracias Al :), por tu tiempo y por AGE.
Mejor tomarlo con calma e ir con pies de plomo para dejarlo todo como lo tengo ideado y no fastidiarlo por las prisas.

Autor:  Coque_Mad [ 30 Mar 2018 19:46 ]
Asunto:  Re: Una de preguntas técnicas.

Hola Al.
Estoy con el manual "Métodos para quitar, poner y mover entidades", parte del (plátano) y tengo un problema con el parser y es que se lia con un verbo, desconozco y ocurre con más. Pongo el código.

if(equals(verb,"pelar") || equals(verb,"mondar") || equals(verb,"descortezar"))
{
if(aCreature.hasItem(self)){
aCreature.write("Con delicadeza vas pelando el plátano.\n");
aCreature.addItem(item("piel de plátano"));
aCreature.addItem(item("plátano pelado"));
aCreature.removeItem(self);
end();
}
else if(aCreature.getRoom().hasItem(self)){
aCreature.write("Te agachas a cogerl el plátano y con delicadeza lo vas pelando.\n");
aCreature.addItem(item("piel de plátano"));
aCreature.addItem(item("plátano pelado"));
aCreature.removeItem(self);
end();
}
else{
aCreature.write("Deberías cogerlo antes.\n");
end();
}

Si escribo en el promt la orden "mondar plátano" me devuelve "¿cómo? ¿sondar plátano?, en cambio con los otros dos vervos no hay problema. ¿A qué puede ser debido?

Edito. Una cosa que se podría mejorar de cara al futuro sería ponerle autocompletado y una lista de los metodos que tienen los objetos al poner el punto, como en Visual Studio. Creo que sería más cómodo para el programador.

Página 1 de 3 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/