Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





(alpha) Warboard Multiplayer

Iniciado por Warchief, 02 de Marzo de 2005, 12:22:35 AM

« anterior - próximo »

Warchief

 Ya sé que no es de la calidad a la que estáis acostumbrados, pero bueno, para el que quiera perder un poco el tiempo, he aquí mi primera incursión a Allegro y a C++ (brrr, q atraso!). Es la primera parte del PFC, la segunda es la IA con aprendizaje y bla, bla, bla.

Que lo disfrutéis, y sobre todo reportad bugs, críticas y comentarios de todo tipo:

Warboard (550KB)

PD I: me interesa saber si os sale alguna vez el típico mensaje de error de windows, ya que me sale algunas veces sin más, y sólo en mi ordena (podría ser por el hyperthreading y que yo haya compilado mal algo de allegro?, podría ser :P).

PD II: olvidaos de la consola, que emitirá mensajes extraños al atacar.

PD III: Al final se me ha olvidado incluir las 3 líneas que permitirían usar Alt-tab. La próxima versión.

PD IV: Los parámetros de las unidades, así como el sistema de ataque aún están por refinar.

Thanks por bajarlo.

[Vil]

 No me ha dado ningun problema, pero no lo he probado mucho.
Mmm, si en un ataque se encuentran dos unidades iguales, que gane una u otra es aleatorio? o hay mas cosas q influyan. Es solo curiosidad.

No te puedo contar mucho mas, porq yo no se nada de c++ y tal... asi q no se que merito tiene y si es un buen pfc. Lo unico que Heroes es un juegazo (al menos el 3 q es al q jugue...) y que molaria q en el futuro te curraras algo mas el apartado gráfico, aunq fuera despues de defender el proyecto (supongo q eso a los profes les da =). Pero bueno, era por comentar algo

Un saludo

Warchief

 Ya que preguntas por el ataque me explayaré tranquilamente  :rolleyes: :
Las unidades

Nombre                   Ataque  Defensa   Vida  Descripción                            Coste ejército
Infantería                    +3          +3         100  Unidad básica de infantería.           5
Infantería Pesada       +5          +4         120  Apoyo fuerte de infantería.             7
C. Explorador              +2          +2           80  Expansión rápida pero débil.          4
Caballería                   +6          +6         120  Unidad más fuerte.                       10

El ataque:

El cálculo del daño de cada una de las unidades cada turno o iteración del combate viene determinado por:
Vida restante de atacante y defensor (según Tipos de Unidades)
Ataque del atacante y defensa del defensor (según Tipos de Unidades)
Bonificaciones por terreno (según Bonificaciones por Unidad/Terreno)
En cada iteración del combate (cada turno de combate) el daño se calcula mediante ensayos de Bernoulli. El proceso es el siguiente:
Se calcula la fuerza de ataque  FA = A * (VidaA/Vida_Max)
Se calcula la fuerza de defensa  FD = D * (VidaD/Vida_Max)
Se calcula la probabilidad de ataque p   = FA / (FA+FD)
(Donde   A         = Ataque de la unidad atacante,
         B       = Defensa de la unidad defensora,
     Vida_Max  = Máxima vida de los tipos de unidad)
De esa forma, cada turno de combate tendrá un ganador en función de las probabilidades anteriores. La unidad que pierde en cada iteración recibe 10 puntos de daños (descenso de energía) y el que gana recibe un daño también, en este caso de 2 puntos de daño.

(Ensayo de bernoulli = númeor aleatorio. Si número < p, gana A, si no gana B XD) Se juegan 'n' turnos de combate, hasta que una de las dos unidades muere.


En realidad el pfc esmpieza ahora. Se trata de una IA que aprenda a jugar por el jugador. Si el jugador es bueno la IA debería aprender el uso correcto de cada unidad en cada momento, si el jugador es malo la IA no aprenderá nada XD.

De momento se quedan en el tintero:
- Comprar tropas (la utilidad de las marcas de equipo es que la posesión de casillas genera pasta)
- Bonificadores de ataque y defensa por terreno.
- Colocar el ejército como uno quiera al empezar la batalla

Y sí, la componente aleatoria va a ser un gran obstáculo para el aprendizaje, pero bueno como digo ahora empieza el pfc en sí, que es ver cómo, qué y cuándo puede aprender la IA a jugar.

El apartado gráfico, los tutores propusieron modo texto, así que está servido. De todas formas, voy por mi cuenta a meterme en 3d, si algún día paso la API del GRender a 3d, ya estaría; o eso espero.

Gracias por bajarlo y por los comentarios. Siempre gustan aunque sean un "mola" y ya está. XD

jelorol

 No sé si es el efecto deseado, pero con el algoritmo para el combate que describes, se produce un efecto de "perdedor temprano", ya que en el momento que uno de los contrincantes reciba más daño que el oponente, inmediatamente sus posibilidades de vencer el siguiente round disminuyen. Esto, aplicado al juego, supone que en un combate inicialmente igualado,una vez uno de los combatientes empiece a perder vida, acabará casi siempre perdiendo el combate, lo que hace previsible el resultado, y provoque aburrimiento en el tiempo que trancurre hasta que definitivamente es derrotado.

Warchief

Cita de: "jelorol"No sé si es el efecto deseado, pero con el algoritmo para el combate que describes, se produce un efecto de "perdedor temprano", ya que en el momento que uno de los contrincantes reciba más daño que el oponente, inmediatamente sus posibilidades de vencer el siguiente round disminuyen. Esto, aplicado al juego, supone que en un combate inicialmente igualado,una vez uno de los combatientes empiece a perder vida, acabará casi siempre perdiendo el combate, lo que hace previsible el resultado, y provoque aburrimiento en el tiempo que trancurre hasta que definitivamente es derrotado.
vida/vida_max es una medida de cansacio. Cuanto más cansada está una unidad, menos fuerza para luchar tiene. Hacer que sea por turno de combate, en vez de por combate completo (que creo que es lo que sugieres) es una decisión que tuvimos en el diseño, pero probaré a hacer 'p' fijo durante el combate entre 2 unidades y ver el efecto. Habrá que ver el efecto, porque la idea de poder debilitar a alguien que en principio es más poderoso que tú en 2 turnos de suerte (20 vs 4 puntos de vida perdida) puede dar más juego que ir a una muerte casi segura.

El tema del aburrimiento XD; de momento está de prueba, pero no descarto que directamente se ponga quien gana (1 frame), con qué vida queda, y ya está (bueno 1 frame, ahora q no tiene animación).

Gracias por el comentario, se estudiará.

@[Vil]
Se me olvidó decir que el Heroes es buenísimo, sí. Puedo asegurar que el Heroes2 es el juego al que más he jugado en toda mi vida, por encima de starcraft y warcraft2. El HOMM3 ya no me gustó mucho, pero también tenía su diversión. El IV lo probé de un amigo, pero no me enganchó. (Pude encontrar el 1, ese si que era grande XD).  

egf

 windows 2000  nvidia

ningun fallo de pograma

podrias poner la informacion de las teclas en el lateral?

Warchief

 NUEVA VERSIÓN 7 MARZO

El link del primer mensaje se peta, pero ya no se puede modificar.

Aunque este diga que es de 1 marzo, la versión es de hoy día 7.

Añadidos:
- Diferenciación de tropas (ahora los rojos visten de rojo)
- Multitarea (alt-tab) y rechazo de alt-f4 (para evitar problemas)
- Un par de bugs
- Y para que egf se vicie a gusto, al pulsar 'C' se muestran los controles.

Ya estamos pensando la IA. Muy posiblemente no será aprendizaje paulatino, sino algoritmos genéticos en cada iteración de combate de la IA.

Warchief

 Brrr, ya no puedo editar.

Extraed en directorio, que ya la cague y lo puse como raíz del zip.

Se me olvidaba un importante cambio:
- al ganar un combate, el atacante avanza a la casilla del defensor. Bueno para (des)bloquear casillas.

TheAzazel

 WinXP, Ati 9700 y no me ha dado ningun problema.
Esperare la version con la IA para probar los combates.... esta entretenido, espero q sigais con ello pq va por buen camino!!
(ole)  

Haddd

 Muy chulo.  :lol:  Pero bueno, he jugado un poquito y la verdad es que, aunque esté en los inicios, está muy bien. Me ha sorprendido lo del ALT-TAB, ha funcionado perfectamente  (ole)

Y ningún problema, así que ...¡ánimo!  (ole)  

Warchief

 Heeey, gracias por esos comentarios, parece que no es tan malo como pensaba, jeje.

@TheAzazel
Claro que continúa, es mi PFC, así que si quiero título, tiene que estar terminado y aprobado. La versión IA ya ha comenzado (diseño, no implementación).

@Haddd
Mira el código que me faltaba:

... // En el init
set_display_switch_callback(SWITCH_IN, check_win_returntask);
...

// Called automatically when alt-tabbing back to the game
void GRender::check_win_returntask(void) {
blit(backbuf,screen,0,0,0,0, SCREEN_W, SCREEN_H);
if (active_dialog!=NULL) {
 broadcast_dialog_message(MSG_DRAW,0);
}
}

XD


Aprovechando el post para decir que he resubido versión, ahora sí está en un directorio (se puede usar extract>here). Resubo porque acabo de arreglar un error que se daba al pulsar el botón derecho en una zona fuera del mapa (incluso la zona negra para mapas pequeños), que dejaba inútil el botón derecho hasta cambiar de estado.

Se agradecen los ánimos.


PD: lo siento linuxeros, en teoría el código es portable, pero no he podido compilar aún bajo linux.

egf

 pues va muy bien oye, alt-tab tambine me iba muy bien y rapido

y gracias por la help :)


por cierto cuando acabas un escenario pequeño y te dice que si deseas abandonar y le das mas de siete veces muy rapido a lo de "no nunca" salta a windows (jeje como playtester no tengo precio)

y esto ya es gusto personal, pero el smile que viene arriba de las barras no me mola, rompe un poco la estetica... creo.

un zaludo :)

Warchief

 
QUOTE (egf)

por cierto cuando acabas un escenario pequeño y te dice que si deseas abandonar y le das mas de siete veces muy rapido a lo de "no nunca" salta a windows (jeje como playtester no tengo precio)[/quote]
Ahh, gracias (desde luego un gran testeo o ganas de putearme XD). Now fixed. En realidad he descubierto que es un fallo en la máquina de estados, que hace que al responder "no" sigas en el estado de ataque, y tras 16 iteraciones intenta calcular otro "round" y es cuando peta (con 16 veces aunque sean lentas peta igual). Ahora he hecho un apaño y te permite seguir jugando sólo, pero tendré que mirarlo mejor, que no soy partidario de parches rápidos.

QUOTE (egf)

y esto ya es gusto personal, pero el smile que viene arriba de las barras no me mola, rompe un poco la estetica... creo.[/quote]
Interesante cuestión. Cuando tenga la próxima tarde de gráficos cambiaré eso, que hoy ya he estado toda la tarde para crear las nuevas tropas.

Gracias a todos por las pruebas; me alegra saber que no os falla, porque en mi ordena sí lo hace. XD

TheAzazel

 uhmmm
es una hipotesis pero... el juego creo que no utiliza ningun Delay() al estilo de SDL_Delay() o sleep() y la CPU esta siempre a tope... por lo que...eso de que al rato te casque en tu PC y no nos haya pasado a ninguno podria ser que tienes algun problema hardware en tu equipo cuando se calienta...te pasa con algun juego? de todos modos, podria ser solo con tu juego...para estar seguro pasale el prime95 un par de horas a ver que pasa....

Warchief

 Para los gui uso d_yield_proc(), para el bucle de juego yield_timeslice() porque rest(0) no me funcionaba bien. yield_timeslice está deprecated en la nueva versión de allegro, pero sé que rest me daba problemas (no recuerdo cuáles xd).

En cualquier caso, no tengo problemas con el hard en general, con ningun juego. Pero la fx5200 la tengo sin ventilador, sólo con disipador, y suele dar poco rendimiento, pero no cascar. Creo que es sólo al lanzar desde msvc (posiblemente además sólo pase en debug).

Trabajaré lo del uso de cpu. Thanks por la anotación.






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.