Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Juego de cartas

Iniciado por LuiSiLLö, 27 de Octubre de 2006, 04:41:29 PM

« anterior - próximo »

LuiSiLLö

Hola a todos,

Estoy haciendo un juego de cartas (de póquer) y me gustaría dotar a los jugadores de cierta Inteligencia Artificial. Estoy muy pez en este tema y me gustaría que me aconsejarais por donde empezar : libros, links, etc...


Muchas gracias a todos.

LuiSiLLö

Vaya sí que responde la gente!!  :wink:  :wink:


LuiSiLLö

Ya había visto ese post pero esperaba consejos para la inteligencia artificial especificamente en juegos de cartas, no en general.

Daemon

Hola,

yo la verdad es que nunca he jugado en serio al poquer o sea que poco te puedo ayudar. De todas formas si tienes cerca a algun experto puedes tratar de "sacarle" sus conocimientos y tratar de "algoritmizarlos". Supongo que al ser un juego en el que no posees una información completa del estado (no como el ajedrez), podrias tratar de usar algo del campo probabilistico, tipo red de bayes o similar.

Siento no poder ayudar mas, pero no conozco bien el juego del poquer :?

Un saludo.
Imagina todo lo que puedes hacer. Despues hazlo.

paquitoChocolatero

Hola, te escribo para sugerirte algunas ideas, aunque no he pensado mucho sobre este problema en particular, si descubro algo mas serio ya te escribo aqui.

En principio el poker es un juego sin informacion total, la única a tu disposición es en principio:

Tus Cartas. (las unicas que ves)

Parece poco pero a partir de aqui se obtienes:

Porcentajes para hacer jugadas en las siguientes cartas, y porcentajes de que esta sea la jugada ganadora.

y con estos porcentajes puedes:

calcular cuanto es la apuesta que se debe realizar(subir) o aceptar:

apuesta + bote * P(ganar) > 1

Digamos que esta sería la parte de la información objetiva de la que se dispone (las cartas) y deberia ser la base de la actuación de un jugador artificial, pero tambien hay otro tipo de información mas sutil:

La actuación de los rivales.

(podrias intentar clasificarlos en agresivos / medios / conservadores) segun las apuestas y manos que van jugando de modo que vs jugadores agresivos la formula de arriba puede ser mas permisiva es decir se va cuando > 0.7, contra jugadores medios > 0.9 y jugadores conservadores > 1

ademas puedes poner a estos % un factor aleatorio (pequeño)

tambien se me ocurre alguna situación en la que realizar un farol.

No se se pueden ir añadiendo comportamientos , pero la base seria el % de la jugada ganadora.

Ya te advierto que no son ideas muy meditadas, pero espero que al menos te sirva como idea.

Un saludo.

marcode

En este caso parece que la IA típica de juegos no te va a servir.

Tal vez te sería más útil un libro de algún maestro del póquer en el que explique como jugar en base a las cartas recibidas, probabilidades, descartes y apuestas de los otros jugadores, etc. Podrías crear una serie de reglas y a partir de ahí tomar la decisión.

Otra cosa interesante sería actuar de acuerdo al comportamiento del rival en cada jugada, como hacen los buenos jugadores, introduciendo alguna rutina de observación y aprendizaje.

Pero si te quieres evitar todo este follón de IA, directamente que el programa conozca las cartas que tiene cada jugador (que de hecho las conoce) y que se haga un poco el tonto de vez en cuando, los jugadores virtuales de mayor nivel ganarán casi siempre sin problemas. Aquí se plantea un problema ético y moral grave.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

LuiSiLLö

Cita de: "marcode"En este caso parece que la IA típica de juegos no te va a servir.

Tal vez te sería más útil un libro de algún maestro del póquer en el que explique como jugar en base a las cartas recibidas, probabilidades, descartes y apuestas de los otros jugadores, etc. Podrías crear una serie de reglas y a partir de ahí tomar la decisión.

Otra cosa interesante sería actuar de acuerdo al comportamiento del rival en cada jugada, como hacen los buenos jugadores, introduciendo alguna rutina de observación y aprendizaje.
Estoy buscando algún libro que me pueda ayudar. La parte de la rutina de observación y aprendizaje es lo que más me interesa, que lo jugadores puedan aprender en el transcurso de la partida como actuan sus rivales, y jugar ellos en función de los demás.

Cita de: "marcode"Pero si te quieres evitar todo este follón de IA, directamente que el programa conozca las cartas que tiene cada jugador (que de hecho las conoce) y que se haga un poco el tonto de vez en cuando, los jugadores virtuales de mayor nivel ganarán casi siempre sin problemas. Aquí se plantea un problema ético y moral grave.
No, esto ya no me gusta. Esta claro que el programa conocerá las cartas de los demás, pero no quiero hacerlo de esta forma. Me parece poco "etico" como dices.


Muchas gracias a todos por los comentarios.

Buffon

Cita de: "marcode"Pero si te quieres evitar todo este follón de IA, directamente que el programa conozca las cartas que tiene cada jugador (que de hecho las conoce) y que se haga un poco el tonto de vez en cuando, los jugadores virtuales de mayor nivel ganarán casi siempre sin problemas. Aquí se plantea un problema ético y moral grave.

espero en mi vida encontrarme con un programa realizado de esa manera.

1. Poco etico como dice nuestro amigo.
2. Poca rebuscada la IA del programador (y a su vez mal programador el mismo).

lord_taran

Puff, me parece una barbaridad lo que dices, Buffon, no estoy para nada de acuerdo.
Yo creo que el objetivo de la IA en un juego es hacernos creer que jugamos contra algo inteligente y que nuestras acciones conllevarán una respuesta que nos convenza. A no ser que el objetivo mismo del desarrollo sea una demostración de IA, entonces vale, no vamos a hacer trampas... Pero si se puede conseguir una experiencia de juego igual o similar con menos esfuerzo haciendo uso de todo lo que tenemos ¿seguro que es de mal programador no hacerlo? ¿No sería peor aumentar tiempo y costes de desarrollo en algo que el jugador final no notará, o no de forma determinante?
Yo opino que debemos fijarnos en nuestras metas y usar el mejor medio para lograrlas. Si pensamos que el partirnos los cuernos en desarrollar una buena IA va a conseguir una experiencia de juego mejor que un uso más fullero, digamos, entonces adelante, pero si no...
Todo esto dicho de buen rollito, que es solo mi humilde opinión ¿eh? que la primera frase puede sonar un poco mal y no es eso lo que busco ;)
n saludo!
Lord Taran
Las Noyas de Taran

TrOnTxU

Si lo que quieres es que tu jugador (cpu) aprenda deberás aprender algo de redes neuronales y/o alg. genético y decidir que es lo que más te conviene. El tema es que le des unas condiciones iniciales y el mismo cpu vea como afectan sus decisiones (si ganan o pierde), de manera que al final (lo de siempre) acabe utilizando más los faroles/jugadas que le hagan ganar más veces. Por ello, tendrias que "entrenar" a tu cpu para que "aprendiera". Con las redes se le pasan patrones para que aprenda, y con los alg. gen. deberás poner un "código" para cada "partida", si ganas mucho guarda tu configuración para que se recombine con las ganadoras de otras partidas.

Mi opinión personal es que si vas a hacer un juego de poker para que sea entretenido y punto, haga caso de las recomendaciones que te han dado de "lógica difusa", sumando el valor de las cartas y la personalidad (prob. de tirarse un farol), todos estos parámetros (a mi entender) deberian de estar relacionados (un jugador MUY agresivo subirá la apuesta con una pareja de 2) .
De hecho necesitarás esto ultimo para evaluar el "código genético" (personaliad del jugador) de tus "alg. genéticos" en caso de que los quisieras utilizar.
Y tampoco armaria tanto escándalo con lo de la "ética del programador", un videojuego no pretende hacer algo real (cosa que es imposible con los sistemas discretos con los que tratamos), sino que realmente al jugador le parezca real.

Es mi opinión :D
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.