 |
|  |
 |
|
Niessuh
|
 |
Sevilla
Mar 2003 time: 06:34
|
|
Llevaba mucho tiempo queriendo postear esta thread...
Hace más de un año Manolo me contó que estaba con la idea de crear un juego de estrategia. No solo se lo planteo, sino que ya tenia construido un modelo económico verdaderamente ambicioso para ello. Me enganché al proyecto, pero cuando realmente entre a fondo fue al plantearme mi proyecto fin de carrera que tenia que hacer para acabar la carrera. Tras arduas negociaciones en el departamento de ciencias de la computación-IA de mi escuela conseguí que me permitiesen hacer un proyecto propuesto por mi llamado "IA táctica: interpretación individual de órdenes de grupo" 
La idea principal del proyecto era dedicarme a resolver la parte táctica de un juego de estrategia, o sea, los problemas de movimientos y combate de las unidades. Y superar el hecho tradicional de que un jugador que dirige todo un bando tenga que supervisar todos y cada uno de los movimientos de las unidades, cuando lo realista es que se dirija a grupos cohesionados de unidades (digamos "ejércitos") y estos cumplan la orden de manera independiente. Dicho de otro modo, alejar al usuario de ordenes concretas a unidades, a la vez que las unidades especializan su comportamiento. En ese distanciamiento surge el hueco a llenar por la IA táctica.
En todo el proceso Manolo ha estado supervisandome y colaborando sobretodo con la parte gráfica (bibliotecas directX, animaciones) en las que ha hecho un trabajo tremendo.
Para el terreno y unidades de momento usamos terreno de civ y unidades como las de civ un poco más pequeñas, hay ideas futuras ambiciosas (mallas 3D triangulares, enjambres). El mapa de pruebas que elegimos fue el de la península de Mencey, y jm_ruiz hizo un magnífico trabajo extendiendo los caminos que necesitabamos sobre el (y poniendo unos puentes estupendos). Señalar que usamos hexágonos como casillas elementales 
Hace ya más de medio año que empezamos, y por fin hay algo que enseñar. Todo el modelo de movimiento amigo (todo aquel que no sea de combate) está acabado.
Una afoto en el valle del Ebro:

|
|
|  |
 |
|  |
 |
|
Manolo
|
 |
Toledo
Jul 2003 time: 06:34
|
|
Bueno... ya solo falta comentaros los comandos con los que podeis interacturar con los ejercitos.
Por ahora todo es muy sencillo, ya habrá tiempo de complicarlo y hacerlo "bonito".
Bajaros Descarga y descomprimidlo.
Vereis varios ficheros de configuración y graficos y un ejecutable llamado "Movimientos.exe"
Al ejecutar "Movimientos.exe" vereis una pequeña parte del mapa global a traves del cual os podreis mover con el raton, tambien vereis 2 ejercitos a los cuales podreis dar ordenes.
El mapa que esta dividido casillas hexagonales (con la letra "G" poner y quitar el grid).
Las ordenes que podeis dar a los ejercitos son las ya dichas por Niessuh , es decir Avanzar y Mover.
Para dar una orden a un ejercito hay primero que seleccionarlo (basta con pinchar con el boton izquierdo del raton en un punto cercano a las unidades que forman dicho ejercito).
Posteriormente si queremos que el ejercito Avance presionaremos la letra "A" y si queremos que se Mueva presionaremos la letra "M", el punto de destino lo fijaremos pulsando el boton derecho de raton.
En realidad no es necesario pulsar A o M cada vez que demos una orden, el juego "recuerda" la ultima orden dada, es decir si presionamos A una vez, todas las ordenes dadas a los ejercitos serán de Avance hasta que pulsemos "M".
Si queremos deseleccionar a un ejercito bastara con pinchar con el botón izquierdo del raton en un punto vacio del mapa suficientemente alejado de cualquier ejercito.
Si la orden del ejercito era Mover podreis ver el camino minimo elegido con la letra "C" (presionando C de nuevo dejaremos de verlo).
Last edited by Manolo on 07-06-2005 at 19:30
|
|
|  |
 |
|  |
 |
|
al-andalus
|
|
madrid
Dec 2002 time: 05:34
|
|
Mi mas sincera enhorabuena¡¡
A Niessuh, Manolo y todos los que colaboraron. Espero que pronto su proyecto se haga realidad y nos den una sorpresa.
¡chapo!
|
|
|  |
 |
|
Niessuh
|
 |
Sevilla
Mar 2003 time: 06:34
|
|
quote: Originally posted by Magno_uy
pues la verdad es que esta muy interesante...
lo probe, las casillas hexogonales hacen que en lineas verticlaes la comuna se mueva como gusano pero es por seguir las ondulaciones del hexagono...
|
Sí, el tener seis direcciones hace que los giros sean algo bruscos, pero al final haremos correcciones estéticas, suavizando las trazadas con curvas (splines) y cosas así. Y la idea futura es que cada unidad no sea una figura, sino un enjambre de figuras diminutas
quote:
en que esta programado?
|
En C++, como dije 
quote:
y por veces algunas unidades quedan alocadas llendo y regresando, creo que la ruta de optimizacion deberia tener un control de evitar ciclos o de castigar en el costo del camino, el regresar por donde ya se paso... |
Hay castigo de ciclos, pero no puedo pillar todos...creo que te refieres a cuando acaban la ruta, que hay veces que no consiguen alcanzar la posición final y se quedan bailando. Eso sucede porque hay un deadlock (interbloqueo) entre dos o más unidades, una tiene su posición final en donde la otra está y viceversa. Tras echarle muchas horas lo he reducido al mínimo (al principio era una pesadilla) pero sigue pasando. Alguna solución tengo en mente, pero a menos que vea una forma más simple prefiero seguir con otras cosas de momento, que me puedo pasar una semana con ello...
quote: las unidades s emueven independeintemente una ed otra? pues cuando avanzan rapido, primero se forman y luego marcha... luego al acercarse al edstino, rompen filas antes de llegar cosa de quedar en formacion... ... |
En la orden mover, en las dos transiciones inicial y final cada unidad mueve independiente para alcanzar su posición en la linea (trans. inicial) o en la formación de llegada (trans. final) En el movimiento en linea las unidades van montadas en un array y el array se mueve con la velocidad según el terreno que pisen.
En avanzar lo que se hace cada turno es marcar puntos de destino diferentes para cada categoria de unidad, y luego todas intentan llegar al suyo independientemente de la mejor manera posible.
Se me olvidó decir que si dan una orden mover a una distancia muy cercana a donde está el ejército entonces este avanzará, pues formar una linea para dar dos pasos es una pérdida de tiempo. Para distancias largas mover en linea es muy superior, sobretodo cuando aprovecha los caminos.
Ah, no se si probaron pero no hay porqué esperar a que finalice una orden para dar una nueva, aunque sea del otro tipo.
Gracias por los comentarios 
|
|
|  |
 |
|
CHINCHIN
|
|
Huesca
Oct 2003 time: 05:34
|
|
¿Ocupa mucho el fichero?
|
|
|  |
 |
|  |
 |
|  |
 |
|
Magno_uy
|
 |
CivELO 37°^ CivHIST 6°^
Sep 2002 time: 02:34
|
|
quote: Originally posted by Niessuh
En la orden mover, en las dos transiciones inicial y final cada unidad mueve independiente para alcanzar su posición en la linea (trans. inicial) o en la formación de llegada (trans. final) En el movimiento en linea las unidades van montadas en un array y el array se mueve con la velocidad según el terreno que pisen.
En avanzar lo que se hace cada turno es marcar puntos de destino diferentes para cada categoria de unidad, y luego todas intentan llegar al suyo independientemente de la mejor manera posible.
|
si mueven en un array tenes que tener cuidado que si alguna unidad no puede pasar por un terreno que las demas si, como una artilleria por una montania, o que tengan diferentes bonus de velocidad, ese algoritmo fallara...
como sugerencia , que tal si asignas un punto de referencia el cual lo haces hacer el camino optimo y que las unidades avancen en referencia a ese punto... o sea, las infanterias lo mas cercano al punto, las artilerias N casillas atras, las caballerias, M hacia adelante y hacia atras...
el punto de referencia avanza a la menor velocidad todas las velocidades de las unidades , y las diferentes unidades se mueven intentando alcanzar ese punto de referencia, casilla por casilla... es una idea....
Es que me encanta el tema de resolver algoritmos...

|
|
|  |
 |
|
Niessuh
|
 |
Sevilla
Mar 2003 time: 06:34
|
|
Antes de nada una cosa fundamental que se nos olvidó, por si alguien no se da cuenta: ¡Se sale con ESC! 
quote: Originally posted by CHINCHIN
¿Ocupa mucho el fichero? |
El RAR son 4,69MB, descomprimido 29,2MB de los que 24,6MB se los lleva solo el bmp del mapa 
quote: Originally posted by Gerar Dean
Probé los movimientos y cuando moví el grupo de la izquierda hacia 1, uno de los Templarios se puso loco, iba y venía en diagonal dentro de un hueco que quedó, mientras los demás estaban parados era muy simpático 
Está excelente. |
Gracias GD. Ese problema es el que decía que hay que arreglar, proximamente.
quote: Originally posted by Magno_uy
si mueven en un array tenes que tener cuidado que si alguna unidad no puede pasar por un terreno que las demas si, como una artilleria por una montania, o que tengan diferentes bonus de velocidad, ese algoritmo fallara... |
La ruta calculada ya evita esas zonas complicadas. La velocidad de crucero de una columna es la misma para todos, si no no habria columna...es el único momento donde todas las unidades mueven lo mismo.
quote: como sugerencia , que tal si asignas un punto de referencia el cual lo haces hacer el camino optimo y que las unidades avancen en referencia a ese punto... o sea, las infanterias lo mas cercano al punto, las artilerias N casillas atras, las caballerias, M hacia adelante y hacia atras...
el punto de referencia avanza a la menor velocidad todas las velocidades de las unidades , y las diferentes unidades se mueven intentando alcanzar ese punto de referencia, casilla por casilla... es una idea.... |
Me cuentas algo muy parecido a la orden avanzar, el problema sería que así no se forma linea, y es necesaria una linea perfecta para ir por carreteras y pillar su bonus de velocidad
quote: Es que me encanta el tema de resolver algoritmos...
|
Pues nada, ya plantearemos algun problemilla que tengamos por aca 
Lo que me alegra mucho es que todavia nadie haya dicho que se le ha colgado. Si vieseis las caidas de hace un par de meses...
|
|
|  |
 |
|  |
All times are GMT. The time now is 05:34. Apolyton Time is 00:34. |
top of page
|
|
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|