CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 18 Abr 2021 09:05

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 21 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 14 Abr 2014 23:05 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
Pues resulta que yo también estoy haciendo mi propio parser javascript, bueno.. hecho en javascript. El parser se programará... estilo PAW of course.

Esta bastante avanzado, lo suficiente para que me anime a poner este mensaje, porque confío en que lo terminaré.

En realidad el parser es una derivación de Superglus, por lo que es prácticamente compatible con el mismo. He reconstruido (o estoy en ello) todo lo que es el interprete hecho en assembler de glulx, y ahora esta hecho en javascript, así que el compilador en lugar de generar un ejecutable glulx, genera un javascript ejecutable en cualquier navegador actual.

Al ser una derivación de Superglús, se podrá usar la librería base de Superglus, el GUI (con un par de retoques que le tengo que hacer), txtpaws y todo lo demás. También, igual que en Superglús, se podrá uno crear sus propios condactos plugin y librerías, aunque se programarán en javascript.

Incluso se incluirán algunas mejoras que implementar en ensamblador era muy complicado, pero en javascript la cosa cambia abismalmente.

En concreto esto es lo pendiente, lo que sale, lo que viene... copiado del código

Código:
/// ****************** FALTA Y SE VA A HACER **************

// -- POR AHORA NO HE PUESTO SUPPORT DE TIMEOUT
// -- POR AHORA NO HE PUESTO SUPPORT DE BUFFER DE ORDENES; SOLO DE UNA EN UNA
// -- POR AHORA NO TIENE "MORE...." hay que ver como meterlo para que no se scrollee hacia arriba a saco el texo
// -- POR AHORA NO TIENE "TERMINACIONES PRONOMINALES"
// -- POR AHORA NO TIENE QUE EL PARSER UTILICE EL VERBO DE LA FRASE ANTERIOR SI NO HAY PERO HAY NOMBRE (COGE ESPADA Y ESCUDO)
// Falta usar el nuevo mensaje de Superglus que devolvía cuando el parser no re conocía ni una sola palabra.
// Falta arreglar la entrada del jugador para que quite los acentos y así haga que SUBIR CAMION Y SUBIR CAMIÓN sean la misma orden
// Transcript acc_transcript
// Condacto acc_newtext --> hasta que no acepte varias ordenes no tiene sentido
// Todo lo relacionado con DOALL: acc_doall  y acc_break
// Algunos condactos de gráficos: acc_pictureat acc_stretch
// Cargar/salvar:  acc_ramload acc_ramsave  acc_save  acc_load, y además añadir unos "hooks" para que condactos plugin puedan añadir sus propias cosas a los savegames.
// Todo lo relacionado con sonido: acc_sound acc_beep cnd_ismusic cnd_isnotmusic cnd_isnotsound acc_silence acc_volume


/// ************ DESAPARECE ****************
// EL CONDACTO DEBUG, CON EL DEBUGGER DE CHROME O FIREFOX, que son mil veces mas pontentes carece de sentido

// acc_paper   --> Se mantendrá pero no hará nada, se hace todo por CSS
// acc_border --> Se mantendrá pero no hará nada, se hace todo por CSS
// acc_ink --> Se mantendrá pero no hará nada, se hace todo por CSS
// acc_charset --> Se mantendrá pero no hará nada, se hace todo por CSS

//acc_anykey  --> Dificl de implementar en single thread, valorar opciones
//acc_pause --> Dificl de implementar en single thread, valorar opciones
//acc_getkey --> Dificl de implementar en single thread, valorar opciones


/// ************ NUEVO **********************
// CONDACTO TITLE, que pone el título de la pñágina que sale en el navegador : TITLE "Esto es una demo"
// El condacto EXTERN, ahora puede recibir javascript como parámetro:  EXTERN "alert('Hellow World!!')"


/// **************** POSIBILIDADES A CONTEMPLAR ******************
/// Poder cambiar el peso de los objetos, algo bastante fácil ahora.

/// **************** POSIBILIDADES QUE SEGURO QUE SE HACEN ******************
/// Las secuencias de escape se cambiarán todas, y se harán recursivas (si al sustituir una secuencia nos aparece otra secuencia volverá a sustiturise), permitiendo ademas nuevas funcionalidades.
/// Pasará de tener que ser un caracter a ser una especie de tag:
///
/// El mar es {CLASS: cssAzul : azul} y el campos es {CLASS: cssAzul : verde}.
/// Aqui hay un {OBJETO: fUltimoObjeto}.
/// Lanzas los dados y el resultado es: {PROCESO: 4}.
///Lanzar el dado y sale un: {INLINE: Math.floor((Math.random(6)*)+1)}
///
/// Por retrocompatibildad, se mantendrán las secuencias de escape originales activando algun bit de los settings "_"


_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Última edición por Uto el 14 Abr 2014 23:08, editado 1 vez en total

Arriba
 Perfil  
 
NotaPublicado: 14 Abr 2014 23:07 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
Por cierto, el parser no tiene nombre, y por una vez me gustaría ponerle un nombre serio. ¿alguna sugerencia? (a ser posible con dominio .com libre)

A ver si tengo un rato y subo "La Torre" funcionando (con la limitaciones indicadas)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 09:24 
Desconectado
Archivero
Archivero
Avatar de Usuario

Registrado: 08 Sep 2008 22:04
Mensajes: 298
Uto escribió:
Por cierto, el parser no tiene nombre, y por una vez me gustaría ponerle un nombre serio. ¿alguna sugerencia? (a ser posible con dominio .com libre)


¡Hombre, está claro! El parser de Uto tiene que llamarse... "Parseruto", que tiene dominio libre y rima con Naruto :mrgreen:

Eer, vale, muy serio no es, pero algo como "JPluto" (lease "jota-pluto") por "Javascript Parser On Line de Uto" estaría bien 8)

--


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 11:13 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
DrVanHalenFan escribió:
Uto escribió:
Por cierto, el parser no tiene nombre, y por una vez me gustaría ponerle un nombre serio. ¿alguna sugerencia? (a ser posible con dominio .com libre)


¡Hombre, está claro! El parser de Uto tiene que llamarse... "Parseruto", que tiene dominio libre y rima con Naruto :mrgreen:

Eer, vale, muy serio no es, pero algo como "JPluto" (lease "jota-pluto") por "Javascript Parser On Line de Uto" estaría bien 8)

--


Agradezco la idea, aunque me parecen ambos un poco "personales", y además olvidé decir que tengo intención de documentarlo en inglés por lo que quiero un nombre un poco inglés. Sin embargo me has dado una idea al meter "on line" en el titulo, porque me permite meter la sigla O o incluso OL en cualquier nombre y buscar nuevos nombres que sean algo legibles. Cosas como JTAGC, javasript text adventure game creator, resultan difíciles de pronunciar, y no quiero que nadie se vea obligado a escupir involuntariamente mientras trata de pronunciar el nombre XDD , sin embargo JOTAGED, javascript online text adventure game enhanced designer, se pronuncia mejor.

Lo del dominio es secundario, si puede ser bien, pero sino pues www.caad.es/loquesea y se acabó.

Le doy una vuelta, sigo escuchando ideas que ya veis por donde voy :)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 11:35 
Desconectado
Grafista
Grafista
Avatar de Usuario

Registrado: 13 Sep 2004 21:16
Mensajes: 742
Ubicación: Alginet - València
No contiene el online, pero podría ser JAWS (Javascript Adventure Writing System) y así parece una evolución de PAWS...

_________________
Dwalin


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 11:54 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
Dwalin escribió:
No contiene el online, pero podría ser JAWS (Javascript Adventure Writing System) y así parece una evolución de PAWS...


Creo que fue el primero que se me ocurrió. Lamentablemente JAWS es también el software de lectura para ciegos, y dado que ambos coexisten en un mismo entorno (el de las aventuras) no querría dar lugar a confusion :)

JPAWS o JPAW podrían ser, pero incluso podría plantearme que no contuviera un J, al fin y al cabo no es tan relevante el hecho de que por debajo esté javascript, por debajo de superglus están C, C++, Delphi y assembler de Glulx y no se hace referencia al todos, y por debajo de Inform está C (o C++. no se) y no se llama CInform ;-)

En fin, no descarto que el nombre acabe teniendo la J de javascript, pero no es obligatoria :)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 12:06 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
Por cierto, que este "nuevo parser" es algo que se viene fraguando desde hace muchísimo... pero nunca tuve el tiempo o las ganas para acometerlo. Ya hace mucho que me di cuenta que evolucionar Superglus estando basado en assembler era un trabajo de chinos, así que en mi ordenador hay una carpeta que se llama "SuperglusInform", de2009, que tiene un propotipo inacabado de reconstruir la librería interna de superglus usando Inform, y así hacer luego que el compilador generara codigo inform, que al unirse con la librería interna, dieran algo compilable.

Es decir, una aventura Superglus es el resultado de unir una libreria interna hecha en ensamblador, con el ensamblador que genera el compilador basandose en lo que programa el autor. La idea era tener una libreria interna inform, que el compilador generara infor, y juntarlo igual y compilar con el compilador de inform.

Me encontré con varias trabas, la principal de las cuales era que el código ensamblador de Superglus, como buen assembler que se precie, está lleno de jumps, es decir, de gotos. Convertir eso en un lenguaje estructurado era algo complicado de hacer, y de hecho ha sido lo que mas me ha costado hacer en javascript.

Paso mucho tiempo y el verano pasado empecé con la transformación a javascript, pero quedó abandonada en el mismo punto exactamente. En los últimos fines de semana sin embargo he conseguido seguir adelante y ahora ya es un hecho, el parser va existir, no se si tardaré dos o tres meses más, pero estará, porque ya casi está :)

Aún así este nuevo parser es una conversion casi directa del anterior, y como tal no hace uso de POO, es básicamente un desarrollo en programación estructurada. Eso no impide que alguien se haga una librería plugin usando objetos, y que luego los use desde condactos plugin, por lo que en teoría es factible añadir funcionalidades más avanzadas a Superglus internamente, a modo de librerías, que luego se usen fácilmente desde el parser PAWLIKE, incluso automáticamente enganchandose a determinados hooks.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Última edición por Uto el 15 Abr 2014 12:24, editado 1 vez en total

Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 12:23 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
El que más me ha gustado es JAWS... pero igual lo del dominio está complicado.

WEPAWS (o WePAWS)... Web Engine for PAWS.
JEPAWS ... Javascript Engine for PAWS

_________________
El humor existe para recordarnos que por muy alto que sea el trono en el que uno se siente, todo el mundo usa su culo para sentarse.


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 12:30 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1965
Cool, me parece una evolución tan natural como esperable. ¿ngpaws? (en, yi, paws)

¿Se podrá ejecutar el resultado en local, sin servidor web?

Supongo que ahora se eliminarán la mayoría de las limitaciones de flags, localidades, etc... ¿Habrá que adaptar txtPaws o es independiente de las limitaciones?

Sobre el single thread, lo primero que me viene a la mente son WebWorkers.

Sobre el debug, entiendo que el debugger del navegador no conocerá el código fuente del autor, y que lo que se depura es el JS generado. ¿Será práctico?

También tengo mi directorio con experimentos basados en SG, en este caso con python. :)


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 13:17 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
dddddd escribió:
Cool, me parece una evolución tan natural como esperable. ¿ngpaws? (en, yi, paws)


¿NG de donde viene?

Citar:
¿Se podrá ejecutar el resultado en local, sin servidor web?

Sí, aunque no se si la funcionalidad de grabar se podrá usar en ese caso. En cualquier caso como en estos modelos los datos a grabar son finitos, y pueden almacenarse en un JSON, lo que ovy a hacer para grabar la partida es crear ese JSON y luego tengo dos opciones:

1) Usar el local storage del navegador y grabar la partida ahí, o como una cookie. No se, pero algo que quede del lado del cliente. El local storage va ligado a dominio por lo que en local no funciona, lo de la cookie no estoy seguro, pero creo que igual.
2) Convertir ese JSON en una cadena hexadecimal y darsela al jugador para que la guarde. Esto es un poco engorroso pero funciona en local.

Quizá use uno u otro segun detecte donde se está ejecutando.

Citar:
Supongo que ahora se eliminarán la mayoría de las limitaciones de flags, localidades, etc... ¿Habrá que adaptar txtPaws o es independiente de las limitaciones?

No.. o sí. En principio lo he dejado como estaba, pero he tenido la precaución de utilizar constantes para todas las cosas cuyo valor era 255, con lo cual en teoría se puede ampliar muuuy fácilmente. Por ahora no quiero liarme ampliándolo porque quiero comprobar antes que todo funciona como debe, que hacer dos cambios a la vez tiene cuádruple riesgo.

Sobre si txtpaws está limitado.. puede que sí, pero solo en un caso que se me ocurra: creo que cuando defines un sonido como musica de localidad le pone de codigo el numero de localidad, y cuando defines como sfx le pone en 256+x. Si hubiera mas de 256 localidad podría dar problemas. De todas formas no estoy en esa fase aun, me preocupa mas que todo funcione como estaba, para ampliarlo ya habrá tiempo, y he dejado las cosas hechas para que no sea un trauma hacerlo.

Citar:
Sobre el single thread, lo primero que me viene a la mente son WebWorkers.

Le echo un ojo, aunque la verdad lo que se ha perdido no me parece tan grave, ¡gracias!

Citar:
Sobre el debug, entiendo que el debugger del navegador no conocerá el código fuente del autor, y que lo que se depura es el JS generado. ¿Será práctico?

El debugger de Superglus era muy limitado, solo podía darte el valor de un flag o cambiarlo, al igual que en PAW. No se trataba de un debugger de ejecución paso paso ni nada semejante (como tenía NMP por ejemplo). Hacer el debugger que tiene Superglus en JS es tan facil como usar la consola así:

flag[50] --> para ver el contenido del flag 50
flag[50] = 10 --> asignar 10 al flag 50

Puedo hacer eso dentro del parser, pero me parece un tanto absurdo, y desde luego no prioritario. En su lugar, prefiero documentar el tema y que quien quiera pueda usar el debugger para ver los flags, o para ver las localidades de los objetos (array objlocations) o para ver los atributos de los objetos, o incluso ejecutar un condacto desde la consola (que al fin y al cabo los condactos son ahora funciones js y perfectamente puedes hacer desde la consola "SET 10" o "PICTURE 12".


Citar:
También tengo mi directorio con experimentos basados en SG, en este caso con python. :)

Es otra solucion interesante, yo le di vueltas a python, php, C#, Java... al final me decante por JS porque es un lenguaje al que estoy acostumbrado (mejor rendimiento = mayor posibilidad de no abandonarlo), porque la parte multimedia es muy fácil de hacer (el navegador te la casi da hecha), y sobre todo porque es dificil encontrar un ordenador personal, tableta o movil donde no haya un interprete preinstalado ;)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 15:23 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
LESBOS (Large Enhanced Superglús-Based Online System)

AGOTAO (Application for Good Old Text Adventures Online)

INUSITADO (Internationalized New Utility for Superglús-Inspired Text Adventure Design Online)

PIFOSTIO (Playing Interactive Fiction Offline? Screw That. It's Online!)

No, ahora en serio... ¿qué tal SNOW (Superglús Now On Web)?

El .com no va a estar, pero ahora hay muchas terminaciones de dominio raras por ahí.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 15 Abr 2014 21:18 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
SNOW no suena mal, pero es poco serio (mas que nada porque incluye superglus dentro, que es poco serio).

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 16 Abr 2014 10:30 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
Derivando el SNOW, y siguiendo con la coña, se me ocurre el NSFW (Now, Superglus for web)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 16 Abr 2014 12:52 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1965
Uto escribió:
dddddd escribió:
Cool, me parece una evolución tan natural como esperable. ¿ngpaws? (en, yi, paws)
¿NG de donde viene?

De next generation, aunque en este caso como prefijo...
https://en.wikipedia.org/wiki/NG
Citar:
Software (-package) suffixed with -ng, (as next generation) to distinguish between newer or expanded implementations (e.g. Util-linux-ng or Syslog-ng)


Arriba
 Perfil  
 
NotaPublicado: 16 Abr 2014 13:05 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4661
dddddd escribió:
Uto escribió:
dddddd escribió:
Cool, me parece una evolución tan natural como esperable. ¿ngpaws? (en, yi, paws)
¿NG de donde viene?

De next generation, aunque en este caso como prefijo...
https://en.wikipedia.org/wiki/NG
Citar:
Software (-package) suffixed with -ng, (as next generation) to distinguish between newer or expanded implementations (e.g. Util-linux-ng or Syslog-ng)



Entiendo... pues suena bien :)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 21 mensajes ]  Ir a página 1, 2  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 4 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM