pctroll { jorge palacios }

desarrollador de juegos, programador, investigador de IA

Postgrado: Tesis (Propuesta Laberinto)

Aclarado el punto de que me tengo que poner las pilas con la propuesta de tesis a fin de inscribir una el trimestre que viene, arranco con lo que sería una de las ideas a plantear a quien quiero que sea mi tutor.

Bueno, primeramente es necesario aclarar cuáles temas son los que le interesan para hacer investigación:

  • Planificación: STRIPS, no determinística, probabilística, información incompleta, etc.
  • Búsqueda heurística: algoritmos y heurísticas.
  • Representación del conocimiento: proposicional, compilación, razonamiento, subclases tractables.
  • Modelos basados en grafos: redes Bayesianas, MRF, redes causales, algoritmos, etc.
  • Aspectos teóricos de la computación.

A continuación van a leer el tren de pensamiento desde lo que fue una sugerencia de mecánica de juego, hasta la idea de la propuesta en su estado actual. Como lo que estoy haciendo es investigación en vivo, el contenido puede no estar ni cerca de lo que realmente termine haciendo. En resumen, es una idea que se nutrirá del feedback que puedan darme (comentando, escribiendo un correo o incluso personalmente).

Le comento a Julián sobre el área de investigación del profesor y en seguida me dice que recuerde Left 4 Dead, y que piense en lo inverso; un escenario que se crea de forma procedimental dependiendo del rendimiento del jugador. Así me soltó la prenda; sin detalles. En sus palabras, “al final podemos hacer o montar un juego sobre lo que sea que vayas a tener de tema de tesis”. Eso me permitió darme la oportunidad de evaluar y darme campo.

horda zombies

Bien, Left 4 Dead tiene un motor de I.A. arrechísimo super recontra brutal llamado Director. No voy a extenderme en él, lo importante es que El Director distribuye los zombies, balas y kits de auxilio en el escenario dependiendo del desempeño del jugador. Se dice fácil, pero “el motorcito” se llevó aproximadamente 5 años de desarrollo y yo tengo que montar una tesis en 3 trimestres, máximo 5. Eso es un challenge accepted + pa’lante marik juntos.

¿Qué sucede si ahora el esquema no es la distribución de zombies, sino la forma en la que se encuentra construido el nivel? Yo quiero tener niveles generados de forma procedimental que se ajusten al jugador; sin embargo, no es una generación 100% aleatoria.

La creación de niveles debe ser generada considerando 3 elementos:

  1. Reglas de construcción de niveles.
  2. Reglas de gameplay o diseño de juegos.
  3. Rendimiento del jugador.

Las reglas de construcción pudiera verlas como reglas básicas “de arquitectura”, como por ejemplo:

  • Toda puerta debe estar en una pared.
  • Toda ventana debe estar en una pared.
  • Una pared y una ventana pueden solaparse sólo si la ventana se encuentra dentro del área de la puerta.

Las reglas de diseño de juego son aquellas que me van a permitir construir niveles que sean entretenidos y produzcan un reto a superar:

  • Todo nivel tiene al menos un punto de partida y un punto de llegada.
  • Si existe un abismo, existe un trampolín o existe un portal para cruzarlo y el trampolín o el portal debe ser alcanzable a través de las acciones bases del jugador.

Por último, existen reglas de rendimiento del jugador que serían algo como:

  • Cantidad de kits de medicina = piso((prom. de kits conseguidos – (kits usados * 0.8)) / nivel de dificultad).
  • La distribución de municiones está dada por la aplicación de la función de distribución normal en el radio del enemigo más fuerte, con media = 40 metros y varianza = 30 metros.

Aun cuando pude inventarme reglas más sencillas y menos gallas, el punto es que voy a tener que lidiar con cosas de ese estilo; así que mejor me voy acostumbrando.

Si tienen conocimientos de lógica, podemos ver que las reglas de construcción y de gameplay pudiesen ser modeladas como reglas de inferencia de la lógica de primer orden, mientras que las reglas de rendimiento del jugador son fórmulas que están ligadas a procesos estadísticos.

Epa, ya esto sí suena a algo más formal. ¿Qué tal si en vez de decir que es un escenario con portales, torretas, cubos y zombies, decimos que es  un laberinto y ya? La idea de un laberinto es más adaptable a otro tipo de problemas que salen del dominio de los videojuegos (#megusta).

grafoQue el juego tenga un motor que tome decisiones en base al rendimiento del jugador puede resolverse con métodos estadísticos y algoritmos, me dice Kelwin, que puede estar full relacionado con investigación de operaciones y problemas de satisfacción con restricciones (CSP). Por su parte, la creación del laberinto está bastante ligada a planificación y STRIPS.

Curso relámpago de STRIPS; yo tengo un estado inicial, un estado final y, a través del uso de condiciones y operadores, voy a buscar la manera de llegar a ese estado (si existe). De no existir, bueno… normalmente digo que no existe y ya; pero aquí tendría que evaluar dentro de los estados “más cercanos”, cuál es el que mejor se adapta (¿alguien dijo Proba?).

Eso es lo que llevo. Ahora me sale buscar fuertemente temas relacionados a laberintos y profundizar dentro de planning a ver qué existe actualmente a algo que se asemeje a lo que llevo en bosquejo. Si alguno tiene conocimientos y recursos que me pueda pasar para focalizar mi búsqueda, serán bien recibidos.

Con respecto a lo demás, es justificar sobre generación de contenidos de forma procedimental; tengo el antecedente de El Director y capaz me toque buscar algo similar más académico. También, estoy casi seguro que una amiga me puede facilitar su tesis de ajuste dinámico de dificultad y profundizar con CSP a ver si algo de lo que ella hace es aplicable.

Montaje fotografía: Christian Chomiak.
Imagen: Wikipedia.

13 Comentarios

  1. Dude… Este propuesta no juega carritos, jajaja. Pa'lante marik que suena genial. Please, keep me posted! 😀

    • Jajajaja así mismo. A mi también me gusta la forma que agarró, pero también estoy claro que aun le falta por madurar. Cualquier observación será bien recibida.

      Sí vale, por lo mismo te dije que leyeras el blog jajaja; me interesa mucho el ojo crítico de gente con más experiencia que yo realizando investigaciones.

  2. PA'LANTE MARIK! a darle con todo que la propuesta esta del carajo!

  3. Investiga K-means 🙂 Te ayudará a clasificar esos grupos de niveles, a ponerlos en categorías. Mi tesis te puede ayudar, fue de eso! 😀 Saludos y suena interesante!

    • nicolailobachevscki

      17 mayo, 2012 at 9:06 pm

      K-means es lento y la clasificación de un jugador en particular se debe hacer en tiempo real.

    • Ésa es una opción que he estado evaluando. Sin embargo, ya K-Means se va por Machine Learning y la idea sería dejarlo todo enmarcado en planning. Justo por eso me recomendaron leer sobre CSP; mas no he descartado ninguna idea que parezca razonable para resolver la cuestión. Es que, tú eres la amiga a la que le tengo que pedir su libro de tesis jajaja.

  4. Si quieres a alguien que lo juegue me anoto xD

  5. Carlos Colmenares

    17 mayo, 2012 at 9:00 pm

    Punto básico e importante:
    1) Cómo vas a medir el rendimiento de un jugador? Por tiempo que tarda en resolver el laberinto?… entonces cada vez le pones uno más difícil o largo?… mmm… creo que sería mejor si hubiera varias formas de medir el rendimiento del usuario. Por ejemplo con la idea principal de los zombies puedes medir muchas cosas: puntería (balas acertadas/balas disparadas), porcentaje de zombies asesinados que no te hirieron a ti, daño total recibido, etc. Tal vez puedes hacer que en el laberinto hayan obstáculos o rewards de agún tipo que afecten el rendimiento del usuario. En verdad no sé.
    2) Muy importante. De hecho, lo más importante de tu tesis: cuál sería el aporte de la misma a la comunidad científica?

    Mucha suerte y éxito man!

    • Con respecto al punto 1, la idea es que eso quede de parte del diseñador de juegos. Es decir, sobre el motor que yo haga se montará un juego y se probará. Ahorita me quiero centrar es en justamente lo que mencionas en el segundo punto, y tu comentario reafirma lo que ya traía en la cabeza (pero era mejor publicar la entrada con algo ya maquinado, que esperar a que "esté perfecto"). Pero sí estoy claro en que debo decidir sobre estos puntos porque en ellos es que se realizarán los experimentos y tal.

      Ya respondiendo el punto 2, no sólo tengo que seguir maquinando la idea en ese norte; sino que debo hacer el pitch al profesor a ver qué opina (pero con algo ya un poco maduro y que pueda defender, porque sabes que me van a preguntar y buscar 'puntos débiles' a ver si he hecho la tarea). Entonces, desde mi punto de vista, el aporte es la técnica para la creación de laberintos a partir de restricciones (las reglas de inferencia). Siéntete a gusto de responder por aquí mismo o darme un feedback más elaborado vía correo (que ya lo tienes).

      Gracias a ti por el apoyo y comentario. Justamente éste tipo de feedback es por el cual estoy aplicando release early, release often jajajaja

  6. y podrías colarlo en tu tesis sin usar la palabra 'juego' que fue algo q te dio problemas ya?

    • Más allá de si la palabra "juego" aparece, el problema de la vez pasada fue vender la idea como la realización de un juego y no como la realización de algo "más serio", creo yo. Así mismo, no tenía bien clara la idea y ya por ahí se evidenciaba que no había realizado el mismo trabajo que con esta propuesta.

      De todos modos eso ya lo discutiré con el profesor y tampoco me cierro a la posibilidad de tomar un tema que me proponga él, sólo que la idea siempre será trabajar en algo que te guste (y los propios profesores, quienes fueron estudiantes, entienden eso y son los primeros en aplicarlo a sus propias investigaciones).

Deja un comentario