Bueno, tal vez alguien que conozca a la vez AGE e Inform te pueda dar respuestas más precisas a esas preguntas, porque no sé exactamente cuál es la funcionalidad de PNJmóvil y PNJpuertas, pero te contesto según lo que parece que es:
- Puertas: en AGE tienes funcionalidad de puertas implementada por defecto. Para crearlas, simplemente se crea un objeto que está en dos localidades a la vez (las dos localidades comunicadas por la puerta), y se marca como "puerta" de los caminos que comunican esas localidades (en el entorno gráfico PUCK, en cada camino entre dos localidades hay una lista de selección que permite marcar un objeto como puerta).
Lo tienes explicado más en detalle aquí:
http://www.caad.es/aetheria/doc/doku.ph ... es#puertasHaciendo eso, la puerta se comportará como uno espera: si está cerrada no dejará pasar (las puertas son un tipo de "objetos arribles y cerrables", tienes explicado más arriba en esa misma página cómo se abren, se cierran, etc.) y si está abierta, sí. También se puede hacer que se abra y cierre con llave.
- Movilidad de los PNJ's: en AGE los PNJ's se pueden mover sin problemas entre habitaciones. De hecho, el jugador en AGE es como un PNJ más, o viceversa. Todo lo que puede hacer un jugador lo puede hacer un PNJ.
Tienes dos maneras de mover un PNJ por ahí. Una es programáticamente, con métodos de la clase Mobile que representa los PNJ's (
http://www.caad.es/aetheria/doc/doku.ph ... ase_mobile ):
- public boolean go ( Path p ) lo hace moverse por un camino dado,
- public boolean goTo ( Room r ) lo hace moverse a una habitación contigua dada,
- public boolean makeRandomValidMove ( ) hace que haga un movimiento aleatorio.
La otra manera es mandándole al PNJ ejecutar comandos. Por ejemplo:
pnj.enqueueCommand("ir al norte");
pnj.enqueueCommand("ir al oeste");
Hará que el PNJ vaya al norte y al oeste, igual que si fuese un jugador y tecleara eso (con esto puedes hacer que un PNJ ejecute cualquier comando: coger cosas, dejar cosas, moverse, hablar, etc... incluyendo también comandos que programes tú para la aventura). Más información en
http://www.caad.es/aetheria/doc/doku.ph ... de_ordenes- Sonidos: por lo que comentas entiendo que no te refieres a que suenen de verdad sonidos (que sí que hay soporte en AGE, puedes tocar mp3, ogg, etc.) si no a que salga algo en pantalla como "Escuchas pasos procedentes del norte", ¿no?
Si es así, no existe una funcionalidad o una librería preprogramada que haga eso, aunque no sería nada difícil de conseguir. Probablemente la forma más sencilla sería usando la funcionalidad de notificación de acciones y sucesos (
http://www.caad.es/aetheria/doc/doku.ph ... _y_sucesos ). Con eso sería bastante fácil programar que, cuando un evento produce un sonido, se notificara a las habitaciones contiguas (o a todas, o el criterio que quieras). AGE tiene un modelo muy orientado a eventos, así que se presta bien a este tipo de cosas. También puedes hacer que quien esté en una habitación y oiga uno de esos sonidos reaccione, etc.
Espero que esto te aclare las dudas, pero si no es así, no dudes en preguntar lo que haga falta.
Lo más parecido a un tutorial es la documentación, que tienes en
http://www.caad.es/aetheria/doc/doku.php?id=Inicio No sé si se puede considerar literalmente un tutorial, en el sentido de que no te va guiando paso a paso para construir una aventura completa (sería interesante tener un tutorial de ese estilo, pero yo ando escaso de tiempo, si alguien se animara...). Pero sí que empieza desde el principio, y va introduciendo sucesivamente conceptos y ejemplos que se pueden probar. O sea, debería ser adecuado para aprender desde cero, y hay gente que lo ha hecho. Y por supuesto, si te atascas en cualquier cosa, puedes preguntar por aquí (y darme sugerencias para mejorar la documentación y hacerla más fluida si hace falta).