Introducción a la Inteligencia Artificial

B

Al final me he animado y he empezado a escribir en el blog. Aunque esté orientado más a robótica, lo cierto es que la IA puede ser también aplicada en el desarrollo de juegos, y cómo todos mis ejemplos van a estar ilustrados utilizando SFML, creo que este foro es dónde mejor encajaría.

Cualquier duda, comentario, crítica o error en el texto/código la podeis comentar en este hilo o en el propio blog (pero aquí si es posible en inglés xD).

9
mortadelegle

A la pregunta de dar clase ni idea, no conozco a nadie que las de.

El tema de cobrar hoy en día hay alguna pagina muy buen a que cobran, pero tienen unos estándares de producción bastante altos, lo que se hace bastante más es poner el material del cursos de manera gratuita y cobrar por sesiones de tutoría, corrección de ejercicios, etc...

Lógicamente es mejor calidad que cantidad, pero has de poner un precio acorde a las horas que tenga el curso.

De todas formas te voy a decir una cosa, quizás estés enfocando esto desde el punto de vista equivocado, en los juegos no se usan sistemas de IA state of the art no porque sean complejos o costosos para el rendimiento (que también) sino porque lo que quieres es crear una IA interesante, no realista, eso muchas veces implica hacer trampas para saber como juega el jugador y crear una mejor experiencia.

2 respuestas
FernandoA

#1 Siempre puedes montarte un Patreon. Me parece un sistema interesante y puedes hacer que los patrons accedan a los tutoriales/videotutoriales/cursos primero y uno o varios meses después accerlos públicos en youtube como hacen algunos o directamente que solo los patrons puedan acceder a ciertos contenidos (o a todos, eso ya depende de como lo enfoques).

De todos modos la IA en los videojuegos no es una IA de verdad, ya que no se basa en que la máquina aprenda a medida que avanza el juego si no más bien en patrones de diseño más cerrados y simples basados más bien en acción - reacción. El motivo como dice #2 no es solo la complejidad y rendimiento (que también) si no que el hecho de que se use una IA realista que pueda aprender y evolucionar puede perjudicar y dificultar seriamente la jugabilidad en la mayoría de los casos. ¿Te imaginas un videojuego de ajedrez con la IA de Deep Blue? Llegaría a hacerse injugable al cabo de poco tiempo.

Siempre recordaré a Konami hablando de PES (hace ya años), diciendo que los equipos aprendian a jugar contra ti según tu estilo de juego, pero eso es algo que nunca he apreciado realmente por mucho que presumieran de ello.

4 respuestas
YiTaN

#3 La IA del PES consistía en: "vas ganando a falta de 5 minutos? Espera un momento..." :psyduck:

1
Nucklear

Sobre todo lo que falta es contenido en castellano, aunque en concreto en temas de IA falta mucha información en general en internet mas allá de papers.

Si te animas y tienes la capacidad de hacerlo currarte una masterclass estilo "From Zero to Hero" donde expliques lo mas basico y te adentres un poco en temas algo mas avanzados copiando el formato de cursos de pago de udemy, lynda o cualquier MOOC online.

Estos cursos normalmente se centran en una introduccion a la clase donde sales tu hablando y explicando que se va a hacer, luego un screencast explicando el algoritmo o la teoría y por último el desarrollo del problema. Con cualquier cámara decente se puede hacer.

Después existen formas de o bien subirlo a plataformas de terceros (Cobrando o gratis) o publicarlo en tu blog e incluso monetizarlo con algunos plugins hechos para eso.

Ahora lo que yo suelo esperar de estos cursos de aprendizaje rápido es aprender mas allá de el problema en si, en este caso sería el workflow de análisis previo para diseñar una IA para un caso específico con el que una vez acabado el curso el estudiante pueda empezar a desarrollarse por si mismo sin que tenga la sensación de que ha aprendido 3 ejemplos pero que no sabe salir de ahí.

2 respuestas
B

#2 #3

Gracias por vuestra respuesta ya que entiendo que no he transmitido bien el mensaje que quería :P.

La IA es un mero recurso o pieza en la totalidad de un juego, cómo pueda ser el arte por ejemplo. Obviamente, estas piezas son más importantes que otras dependiendo del tipo de juego. La IA será más importante en un ajedrez que en un juego de matar enemigos sin más.

Dicho esto, en mi opinión la IA en videojuegos es una colección de herramientas. Éstas las puedes aplicar a cualquier aspecto del juego, desde enemigos, cooperativo, interface... no necesariamente vs la máquina que aprenda a cómo vencer al jugador (que también), pero cómo habeis dicho muy acertadamente, el jugador perdería seguramente rápidamente su interés en jugar.

Cómo tú uses esas herramientas es cosa tuya. Hará que tu juego sea más o menos realista, efectivo, divertido/aburrido, etc en cuanto a comportamiento del elemento que tú quieras del juego. He ahí el objetivo de un curso y ahí es dónde #5 creo que ha captado mi idea. Conocer que existen esas herramientas y entenderlas para saber utilizarlas fuera del ejemplo "Hola mundo".

#3

Patreon es una opción interesante. El problema que veo es que existen tantas plataformas de terceros para divulgar contenidos que realmente te pierdes.

Mi primer paso simplemente será el ofrecer de manera gratuita y amateur este tipo de conocimientos aka blog/vídeos, cómo hacen otros tanto millones, pero intentando mantener el camino que dice #5.

Si eso tuviera alguna remota repercusión o yo me viera con ganas, sí es cierto que me gustaría conocer experiencias y consejos de cómo divulgar conocimiento "cualificado" (que es dónde yo pienso que marcaría la diferencia), y si es posible, ya no ganar, sino no perder pasta en el intento.

#2

Cuando te refieres a difundir conocimientos y más adelante cobras por tutorías, etc. Tienes alguna plataforma/organización en mente? o simplemente (cómo hasta ahora me pasa y lo hago gratis xD) te contactan por mail sin más porque han visitado tu web.

B

#5

Btw, realmente piensas que algo así en español tendría algún valor añadido al inglés? Obviamente, hablamos de un público "target".

1 respuesta
Akiramaster

#3 y si pudieras limitar el nivel de aprendizaje de cada ente?

2 respuestas
B

#8

Muchas veces cuando se habla de IA, se sobreentiende que hablamos de una super inteligencia. Y lo cierto es que cómo bien dices, si entiendes cómo funciona la IA que estás implementando, puedes ajustar su comportamiento y su nivel de "inteligencia".

Un ejemplo de la importancia de entender un juego (abstractamente) y el cómo diseñar una IA. Hay un resultado matemático bastante reciente, pero no por ello menos intuitivo. Si pones a jugar piedra/papel/tijera a dos IA, la mejor estrategia posible es jugar completamente random xD.

1 respuesta
eondev

Permiténdome el offtopic te pregunto.. Qué estudios has cursado? Justo llevo planteándome empezar a formarme en ese campo junto con la robótica y me has venido de perlas para preguntarte.

Uno se cansa de picar código sin más y quiere descubrir nuevos horizontes xd

1 respuesta
B

#10

Sin problema, pregunta lo que quieras.

Estudié física e ingeniería en electrónica, carreras con mucho en común (y en el mismo edificio en su día, que eso ayuda mucho xD). Para estos temas, lo imprescindible y principal es tener una muy buena base en matemáticas. Ya que va a ser el lenguaje con el cual expreses tus ideas, problemas, soluciones, etc

Nucklear

#7 No, y probablemente sea mejor hacerlo en ingles, pero por ese motivo el 90% del contenido está en ese idioma, pero si lo haces como una labor en cierto modo altruista (Aunque le saques beneficio despues) sería interesante ofrecerlo en castellano para que todas esas personas que no tienen acceso por la barrera lingüística puedan disponer de él.

Quien sabe quizás seas el único curso en castellano con esta temática y despuntes por eso, es algo que tu tienes que valorar.

De todas formas es mejor hacerlo como sea y compartir el conocimiento que empezar a dudar de temas de formato, idioma, plataforma, etc y nunca hacerlo.

Akiramaster

#9 yo pagaría por tener un mejor entedimiento teórico de la inteligencia artificial.

FernandoA

#8 Poder puedes limitarlo, pero, ¿para que programar una IA que sea capaz de aprender si le vas a limitar lo que puede aprender? Para eso creo que sería mucho más sencillo y óptimo programar directamente los comportamientos que deba tener. Sé que en videojuegos también se le llama a eso IA, pero para mí la Inteligencia Artificial implica necesariamente la capacidad de aprender, más que nada porque la definición de inteligencia implica eso.

A mi personalmente me encanta este tema y tengo todo por aprender, si #1 hiciera cursos o videos seguramente los vería y, si realmente fueran buenos, no me importaría pagar por verlos. El tema de la IA, ya no en videojuegos si no más bien en robótica, es algo que siempre me ha llamado la atención.

En su día quería hacer una web que fuera una IA con la que poder hablar (por escrito), simplemente eso. Y que la IA fuese aprendiendo las palabras que utiliza la gente preguntando por las que no conoce para ir añadiendo más a su "diccionario". El problema era que, sin tener ni idea del tema, era dificil saber por donde empezar.

2 respuestas
Akiramaster

#14 Tiene sentido programar las posibilidades cuando tienen una o pocas funciones, pero el código crece y crece con cada otra que se le añada..., que yo sepa xD.

1 respuesta
FernandoA

#15 Aunque tenga muchos comportamientos siempre será más sencillo programarlos de antemano que programar una IA que sea capaz de aprenderlos por su cuenta. Además de ser mucho más óptimo.

Por ejemplo, en un shooter es mucho más sencillo programar de antemano que si el personaje se protege tras una columna el enemigo lo flanquee, que programar una IA que sea capaz de aprender ese comportamiento por su cuenta.

Además, jugablemente es importantísimo ya que si programas comportamientos concretos (a ésto en videojuegos también se le llama IA aunque para mí tecnicamente no lo es) puedes hacer un juego accesible, jugable y más o menos realista en función de cuanto te lo curres, pero si programas una IA que sea capaz de aprender, la IA podría aprender comportamientos y tácticas que tu no has pensado de antemano.

En un shooter (que básicamente consiste en yo solo contra el mundo) podría darse el caso de que sea imposible avanzar ya que la IA sería tan inteligente que te sería imposible encararla con posibilidades. En un juego de sigilo, los personajes no seguirían rutas predefinidas que siempre te dejasen un hueco para colarte, si no que establecerían rutas de vigilancia que te imposibilitarían avanzar sin ser detectado, etc.

¿Se podrían poner límites a lo que puede aprender la IA? Por supuesto, pero sigo pensando que sería más complejo hacerla y ponerle esos límites que programar comportamientos concretos aunque fueran cientos o miles de ellos. Aunque, obviamente, ésto es solo mi opinión.

Saiko9

No tengo ni idea del tema:

Yo ahora estoy cursando una asignatura que se llama Inteligencia Artificial de control y ahora estamos haciendo ecuaciones de previsión o algo así jajajajaj asi que no tengo ni idea de IA.

En cuanto a lo del tema de si pagariais? pues aqui tienes un alumno, yo si pagaria, la cosa es que como bien creo que has dicho no te puedes meter a dar cursos cobrando sin más, hazte algún blog (como dices)/ tutorial en el que expongas tus conocimientos (y aprendas mas) implementango algo guapo y después ya puedes plantearte el cobrar (una cantidad razonable) pero la verdad que no tengo mucha experiencia con cosas como Udemy.

La cosa sería:
-tutorial/curso/blog completo gratuito sobre tus conocimientos (mas basicos obviamente) mostrando lo que quieres hacer y bien trabajado (no un rush para sacar la pasta con lo otro):
-Curso con precio razonable en el que ya profundices y expliques todo de verdad tomando como curso 0 lo anterior.

Si haces algo como eso alguien como yo si que estaría dispuesto.

Si haces algo avisa =)

1 respuesta
W0rd

En Civilization y la mayoría de juegos de estrategia, a partir de la mitad la dificultad va incrementada en "trucos"/cheats,

Suelen ser muy predecibles, tal vez la saga halo destacará en su momento de "inteligencia artificial".

1 respuesta
Potito

Yo pagaria por adquirir conocimientos tecnicos en IA pero ademas deberia ir acompañado de aplicaciones practicas en unity por ejemplo.

1 respuesta
B

#14

La IA no es solamente apuntar a crear una superinteligencia que aprenda por si misma.

Tu mismo lo apuntabas en #3, estamos hablando de juegos, no de crear Skynet. De hecho, en la IA no sólamente se trata de hacerla "más inteligente", se trata también de consumir menos recursos, de concurrencias, robustez, convergencias, análisis que demuestran ideas contra intuitivas... de hecho cuando me refería a estado del arte en #1 iban por aquí los tiros. Hoy tenemos algoritmos matemáticos que con muy pocos recursos puedes conseguir mucho. Afortunadamente en la IA no todo es machine learning y derivados que tragan recursos que da gusto :P.

#17 #18 #19

Iba a portar código a Unity (C#) pero me he encontrado con un problema. . Existe una librería de álgebra lineal cómo http://eigen.tuxfamily.org/index.php?title=Main_Page para usar en Unity? He buscado y me ha sorprendido no encontrar nada

No quisiera enrevesar el tema teniendo que crear un .so o .dll (dependiente ya del SO) y llamarlo desde Unity.

1 respuesta
Potito

#20 No te sirve con Mathf, Bounds, Rect, Ray, Matrix4x4, Quaternion, Vector2 3,4 etc?

1 respuesta
B

#21

El problema es que no hay soporte para vectores y matrices de más de cuatro dimensiones.

Por no mezclar lenguajes y ya pregunto aquí antes que nada, es posible sin mucha historia usar librerías en C# que no sea de Unity? Por ejemplo http://numerics.mathdotnet.com .

Instalé ayer Unity en Linux, primero me haré alguna guía y ya os iré contando por aquí. De todas maneras, si teneis más sugerencias o comentarios, por mi genial.

Edit.

Veo que Unity 5 tiene algo llamado Native Code Plugin para llamar librerías externas. Yuhu! A ver si no hay mucho vodoo.

B

Desde el punto de vista de diseño de juegos, una buena IA es una IA predecible, quizá por eso se hacen simplemente máquinas de estados y poco más.

Interesante el tema, pero un apunte, en español se considera incorrecto usar la expresión "estado del arte" y se recomienda "estado actual", "estado de la cuestión", "últimos avances", etc.

1 2 respuestas
B

#23

Ojo que crack. En efecto eso dice la rae. Gracias!

No tenía ni idea, de hecho lo he visto en español en todas partes.

1 1 respuesta
Postmortem

#23 #24 Supongo que la RAE se lleva la última palabra, pero no había escuchado nunca ninguna otra cosa en mi entorno universitario salvo "Estado del Arte"

1 1 respuesta
B

#25 es común traducirlo así a lo loco, pero realmente se entiende muy mal cuando lees un texto como el de #1, suena muy raro jejeje

es como "procedural" que en realidad es procedimental

1
12 días después
thenanox

justamente este es uno de los temas con los que más me estoy rayando ultimamente. no dejo de tener conversaciones con un compi de curro sobre en que contextos una IA como la de alphaGo tiene sentido en los videojuegos. tambien viene el caso por el Talos principle que me terminé ayer y aún sin tener una IA, si que tiene un monton de filosofia sobre este tema, y por eso tambien me pica el gusanillo. siempre me ha gustado el concepto de IAy el desarrollo de videojuegos, y siempre me he sentido que cuando una IA ha influido en el gameplay como lo hacia en Black&White me encantaba..creo que es dificil mejorar en este campo de los juegos pero creo que ahora mismo es un campo que esta avanzando mucho tecnologicamente y tiene mucho tiron. Algo se tiene que poder reaprovechar seguro.

#1 mas alla del machine learning y de crear una IA que aprenda, que conceptos crees que pueden ayudar en el gaming que a día de hoy no se esten aprovechando?

porcierto, hay un curso que lleva poco tiempo sobre este tema: "The principles of modern AI gaming". Es gratuito, pero no puedes descargar PDF sino eres miembro
http://courses.nucl.ai/

Tiene buena pinta, pero solo he hecho la Unit 0. Preferiria que fuera c++ en vez de Python, pero entiendo que python en este aspecto saca ventaja :P

2 respuestas
B

#27

Hay muchos conceptos en teoría de control que se pueden aplicar a juegos. Estoy pensando cómo enfocar y cómo organizar el temario. Creo que al final voy a tirar de C++ y SMFL, y python se puede usar para postprocessing.

Te importaría mandarme el pdf de ese curso para echarle un vistazo? Un link a dropbox o similar por privado :P.

Al final el curso o series que haré serán gratuitos en el website/blog que estoy construyendo http://masteringrobotics.com , ahora mismo tiene muy poco contenido, acabo de levantarlo antes de ayer xD.

B

#27

He estado mirando ahora después de comer en detalle el curso que has posteado. Me gusta los temas que cubre mirando las once lecciones!

Por otra parte, mirando las tres primeras lecciones que tiene publicadas, tengo la impresión de que el colega habla mucho pero explica poco. Mucho powerpoint y dibujitos pero pocos pasos sistemáticos o algoritmia. Los ejemplos son muy particulares y extremadamente tediosos/dificiles, te quieres morir cuando ves tanta línea de código para aplicar un concepto simple xD. No es cuestión de ser más listo o dominar un lenguaje cómo pueda ser Python, es el tener que invertir tu tiempo en algo que no es el objetivo del curso.

De hecho para mi un ejemplo es una ilustración de algo que ya hayas aprendido, y no tener que aprender con el ejemplo como ocurre en muchos cursos. Ya que cómo decía un usuario antes, al final lo que estás aprendiendo es un copy&paste que es dificil de generalizar a otros campos.

1 respuesta
thenanox

#29 no he avanzado en el curso ya que andaba de vacas pero le seguire echando un ojo. las webs se que es de las que mas estan metidas en temas de IA en gaming, y el temario parece interesante, por eso le quiero echar un ojo antes de opinar mas :)

me gustaria saber que conceptos ampliarias del temario existente. o puntos de investigacion una vez terminado el curso?

1 respuesta

Usuarios habituales

Tags