CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 18 Ago 2017 11:34

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 21 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 23 May 2012 23:59 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
Iniciemos el tema de los HOWTOs con 'efectos ambientales aleatorios' o más detalladamente como ha explicado Comely:

Citar:
En general, eventos aleatorios que no tienen por qué ver con el desarrollo de la obra pero favorecen la inmersión y añaden complejidad al mundo. Extraído de "Modus Vivendi":

La Plaza
Un curioso personaje llega del foro caminando y, sacando una tabla de cera y un estilo de un morral en completo silencio, toma luego algunas notas, mirando aquí y allá. Luego, guarda los utensilios en el morral y se aleja rumbo al foro sin decir palabra.


Detallemos primero los detalles de lo que debería contener el ejemplo...


Arriba
 Perfil  
 
NotaPublicado: 24 May 2012 08:33 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Pues para que sean ejemplos útiles para el copy&paste, mi propuesta es que sea una función "global", que reciba al menos el parámetro con la probabilidad de que suceda un evento, así se podría usar en varias partes del código que requiriesen un % diferente...
Por ejemplo, si está lloviendo, en localidades del exterior hay un 85% de que haya un relámpago y un trueno... en localidades bajo techo, hay un 15% de que una ráfaga de viento abra violentamente una ventana...

En pseudo código:

Código:
función eventoaleatorio(probabilidad)
  Si random(100) < probabilidad entonces
    escoge_mensaje_aleatorio;
    imprime_mensaje_aleatorio;
fin


Si alguien considera que se detalle algo más, que lo diga...

_________________
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: 24 May 2012 10:03 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1265
A mí me parece bien, los ejemplos tienen que ser lo más parecidos posible, pero cada lenguaje tiene sus particularidades. Por ejemplo, TADS3 trae de serie 7 diferentes tipos de listas de eventos que no son reproducibles ni hace falta reproducir, ya que se escapa fuera del ámbito del ejemplo.

Lo que me lleva a: ¿qué es lo que se supone que tenemos que mostrar, el código a pelo o hay que mostrar posibilidades y variantes? creo que lo primero es a lo que se refería Johan, ejemplos simples para diferentes tareas.

Ahí va el código en TADS3, extraído y mal traducido del "Learning TADS", sin usar parámetros para hacerlo más sencillo.

Código:
Claro: Room 'Claro del Bosque'
    atmosphereList: ShuffledEventList
    {
        [
            'Una ardilla huye disparada hacia la copa de un roble y desaparece fuera de tu vista.  ',
            'En tu camino te cruzas con un zorro. Te mira, gira sobre sí mismo y se pierde entre la espesura. ',
            'Se oye el murmullo de pequeños animales en la maleza. ',
            'A cierta distancia a tu derecha, un grupo de pájaros alzan el vuelo. '
        ]
        eventPercent = 75 // Posibilidad de que suceda uno de los efectos.
        eventReduceAfter = 4 // Número de veces que se disparan los efectos hasta que se reduce la posibilidad de otro suceso.
        eventReduceTo = 25 // Reducción de la probabilidad de que sucedan.
    }


Arriba
 Perfil  
 
NotaPublicado: 24 May 2012 11:26 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5268
Ubicación: Coruña
Os pongo dos versiones en AGE. La primera es si se quiere que el evento vaya dirigido a una habitación (y se muestre a todos los jugadores y criaturas que están en ella):

Código:
/*
r: habitación donde tendrá lugar el evento
probability: probabilidad entre 0 y 1 de que suceda un evento
texts: textos aleatorios para elegir uno que se mostrará en caso de que suceda el evento
*/
void randomEvent ( Room r , double probability , String[] texts )
{
    if ( world.getRandom().nextDouble() < probability ) //echar a suertes si hay evento
    {
        int eventIndex = Math.abs( world.getRandom().nextInt() % texts.length ); //elegir qué mensaje se muestra
        r.reportActionAuto ( null , null , texts[eventIndex] , false ); //mostrar el mensaje
    }
}


La segunda es si se quiere que el evento vaya dirigido directamente al jugador, esté en la habitación donde esté:

Código:
/*
m: criatura que recibirá el evento
probability: probabilidad entre 0 y 1 de que suceda un evento
texts: textos aleatorios para elegir uno que se mostrará en caso de que suceda el evento
*/
void randomEvent ( Mobile m , double probability , String[] texts )
{
    if ( world.getRandom().nextDouble() < probability ) //echar a suertes si hay evento
    {
        int eventIndex = Math.abs( world.getRandom().nextInt() % texts.length ); //elegir qué mensaje se muestra
        m.writeStory ( texts[eventIndex] ); //mostrar el mensaje 
    }
}


Así, por ejemplo, para usar la primera forma, podríamos llamarla así:
Código:
String[] mensajes = {"Un trueno hace resonar todo el vestíbulo.","Desde un rincón oscuro del vestíbulo, oyes el chirrido de una rata."};
randomEvent ( room("Vestíbulo") , 0.5 , mensajes );

Que mostraría uno de los dos mensajes en el vestíbulo con probabilidad 0.5 (50%).

_________________
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: 24 May 2012 12:25 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
A ver... dos cosas:

  • ya nos hemos lanzado a poner el código, lo que a mí me gustaría es que le diésemos una forma un poco más digerible en y publicable en forma de artículo del SPAC, conteniendo al menos:
    • Una breve explicación de lo que vas a mostrar en el código, para qué sirve y un posible ejemplo de 'script' de una aventura imaginaria.
    • El código en sí.
    • Una breve explicación del código.
    • Posibles variantes, librerías, etc... que estuviesen relacionadas con el tema.
  • en cuanto a 'qué', deberíamos usar descripciones funcionales no seudocódigo, porque efectivamente puede cambiar muchísimo de un lenguaje a otro y no creo que en todos los casos sean comparables.
  • no tenía intención de que esto sirviese para comparar lenguajes, ya que para eso ya tenemos muchas otras cosas, sino que sirviese como material de consulta.


Arriba
 Perfil  
 
NotaPublicado: 24 May 2012 15:08 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5268
Ubicación: Coruña
He puesto el código porque me llevó cinco minutos en un descansillo del trabajo, y explicar cosas detalladamente lleva más tiempo... a ver si en otro momento tengo tiempo para escribir un poco más. Si no, también se puede apuntar alguien más a hacer la explicación.

_________________
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: 24 May 2012 15:30 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 27 Ene 2010 20:38
Mensajes: 1265
Yo también he puesto el código porque no costaba nada y para ver si era a lo que nos estábamos refiriendo, no porque fuera la aportación definitiva. Una explicación más detallada llevaría algo más de tiempo y espacio, pero se puede hacer.


Arriba
 Perfil  
 
NotaPublicado: 24 May 2012 21:36 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
Bueno, pongo el código más simple posible de I7, para eventos simples que ocurren aleatoriamente en una localización y este fin de semana escribiré el artículo más detallado:

Código:
Lugar is a room. "La noche. La espesura. La soledad."

Every turn when a random chance of 1 in 3 succeeds and location is Lugar:
   say "[one of]Un grillo suena en la distancia.[or]Un olor a madreselva llega hasta tu nariz.[or]Una lejana y triste música parece provenir de la espesura.[at random]".


Arriba
 Perfil  
 
NotaPublicado: 25 May 2012 04:17 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 10 Sep 2004 00:17
Mensajes: 3037
Ubicación: Chile
Si alguien quiere ver mis códigos fuentes, vienen en las descargas de todos mis juegos.

Específicamente, ejemplos con efectos ambientales: "El Protector", "Goteras", "Afuera", "Ofrenda a la Pincoya" y "Modus Vivendi".

Por descontado que podéis incluirlos en el HOWTO: no debiera costar casi nada adaptarlos de InformATE! a INFSP/Inform 6

Saludos,

_________________
[Incanus]
El Escritorio - Blog Aventurero y Literario


Arriba
 Perfil  
 
NotaPublicado: 25 May 2012 13:08 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
Pregunta a los administradores: ¿qué veis mejor que cada uno se curre un artículo en el SPAC por separado o me encargo de reunirlos en uno sólo -eso sí, potencialmente muy muy muy muy largo?


Arriba
 Perfil  
 
NotaPublicado: 25 May 2012 13:55 
Desconectado
Implementador
Implementador

Registrado: 13 Feb 2005 18:57
Mensajes: 1854
Johan Paz escribió:
¿qué veis mejor que cada uno se curre un artículo en el SPAC por separado o me encargo de reunirlos en uno sólo -eso sí, potencialmente muy muy muy muy largo?

Lo llevo al hilo genérico, porque es un tema que afecta a todos los artículos, no a éste en concreto, y a todos los autores.
viewtopic.php?f=10&t=5235&p=64439#p64439

Gracias y perdón por la intromisión. Espero que se entienda mi motivación.


Arriba
 Perfil  
 
NotaPublicado: 28 May 2012 10:38 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
Publiqué (creo) anoche el artículo de la versión I7, os animo a hacer algo parecido con los otros lenguajes.


Arriba
 Perfil  
 
NotaPublicado: 28 May 2012 12:48 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Está bien... El mío irá sin introducción, ya que la tuya vale para todos los demás.... :mrgreen:

_________________
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: 29 May 2012 09:22 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 24 Dic 2010 14:37
Mensajes: 877
Me han dicho que al perderse los tabuladores al copiarse y pegarse del artículo al IDE de I7 no funciona bien. No sé si hay alguna forma de mantener los tabuladores. Si no se puede, ¿se puede adjuntar a los artículos contenidos? Si no se puede pondré URLs a algún dropbox o similar.


Arriba
 Perfil  
 
NotaPublicado: 29 May 2012 09:40 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 23 Mar 2010 20:11
Mensajes: 1141
Ubicación: Valencia
Se me ocurren dos cosas...

1) Que se hayan perdido al copiar en el editor del spac y se hayan transformado en blancos -> Solución: Editar el artículo y volver a poner los tabuladores...

2) Que sí se introdujesen los tabuladores, pero al renderizar la página en el html ya no existen, con lo que la solución anterior no sería válida -> Solución: Editar el artículo, ir a la vista html (es un check debajo del editor que pone algo así como desactivar rich-text), y poner a mano el código html del tabulador donde toque (#09; con el & delante)

Por otro lado, sí que se pueden adjuntar ficheros al artículo.

_________________
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  
 
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: No hay usuarios registrados visitando el Foro y 3 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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM