Foros del Web » Programando para Internet » PHP »

Fórmula matemática batalla

Estas en el tema de Fórmula matemática batalla en el foro de PHP en Foros del Web. No se dónde poner esto o si en estos foros puedo preguntarlo pero estoy un poco parado por que no encuentro la fórmula matemática que ...
  #1 (permalink)  
Antiguo 25/07/2013, 10:13
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 19 años, 2 meses
Puntos: 0
Fórmula matemática batalla

No se dónde poner esto o si en estos foros puedo preguntarlo pero estoy un poco parado por que no encuentro la fórmula matemática que me permita hacer esto.

Juego de batallas con tropas, cada tropa tiene vida, ataque y defensa, encontré una fórmula sin vida pero con vida no se calcular las tropas perdidas.

Por ejemplo.

Atacante 1000 de vida, 600 ataque , 500 defensa. 10 tropas
Defensor 800 vida , 500 ataque, 700 defensa. 10 tropas

Como podría calcular las tropas que sobreviven¿

Pensé la más fácil, ataque-defensa, pero entonces sale a veces que no llegaría casi ataque por la defensa alta entonces no morirían tropas pero eso no es lo que quiero, puesto que en una batalla igualada igualmente quiero que mueran..

Igual me estoy liando pero no encuentro la solución si restó a vida el resultado de ataque - defensa casi nunca mueren tropas al no llegar a la vida mínima de una tropa.

Saludos¡ ojalá me entiendan y ayuden.
  #2 (permalink)  
Antiguo 25/07/2013, 11:21
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Fórmula matemática batalla

Asi... leyendo rapidito te diria que tienes dos opciones:

a) Manejas cada pieza de tu tropa por separado con su vitalidad ó

b) Como un todo. entonces si por ejemplo... asumes que cada pieza tiene 100 de vitalidad...y tenias 600 pero te quitaron 150, pues se te murio uno y otro quedo con 50 .....


PD: No veo que tiene que ver con PHP !!!
__________________
Salu2!
  #3 (permalink)  
Antiguo 25/07/2013, 13:12
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Fórmula matemática batalla

Una fórmula muy simple podria ser:
Numero bajas bando 1 = (tropas Bando 1) * (ataque bando 2) / (ataque bando 2 + defensa bando 1)
  #4 (permalink)  
Antiguo 25/07/2013, 13:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Fórmula matemática batalla

Cita:
Iniciado por dashtrash Ver Mensaje
Una fórmula muy simple podria ser:
Numero bajas bando 1 = (tropas Bando 1) * (ataque bando 2) / (ataque bando 2 + defensa bando 1)
Ando sin tiempo porque estoy mudandome para escribir formulas pero el problema es que justamente no funcionan asi las batallas !!!

1 solo hombre contra 100 viviria un 1 segundo e inflinigiria daño 0, aunque claro es una cuestion de probabilidades

Existe un "efecto cooperativo" o sea.. 100 hombres hacen mucho mas daño que 100 veces el daño que ejerce uno solo

Lo mismo aplica para la defensa..... porque los hombres dentro de un grupo quedan protegidos
__________________
Salu2!
  #5 (permalink)  
Antiguo 25/07/2013, 14:17
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Fórmula matemática batalla

Cita:
Iniciado por Italico76 Ver Mensaje
Ando sin tiempo porque estoy mudandome para escribir formulas pero el problema es que justamente no funcionan asi las batallas !!!

1 solo hombre contra 100 viviria un 1 segundo e inflinigiria daño 0, aunque claro es una cuestion de probabilidades

Existe un "efecto cooperativo" o sea.. 100 hombres hacen mucho mas daño que 100 veces el daño que ejerce uno solo

Lo mismo aplica para la defensa..... porque los hombres dentro de un grupo quedan protegidos
He dicho "muy simple", para ir en la línea del comentario del usuario.
Yo he dirigido el desarrollo de juegos online, y la ejecución de una batalla (cálculo de daño, cálculo de pérdidas, botín,ataques en grupo con varios usuarios contra varios usuarios), requería más de 80 queries, alrededor de 40 parámetros de balanceo,etc,etc

En particular, el parámetro que comentas no es importante.Con ese razonamiento, lo que obtienes es un factor que aplica por igual a ambos bandos.
Varios factores, de los literalmente cientos que se pueden tener en cuenta:
- El ganador normalmente hará más daño que el perdedor, independientemente de las fórmulas.Esto es un factor de tuning.Y estos factores de tuning no son fijos.Dependen de rangos (ej, una diferencia de 10 en el ofensivo total, aumenta en x las bajas.Una diferencia de 100, aumenta las bajas en y.
- La fórmula esa es simplemente una proporción.Cualquier juego utiliza escalas logarítmicas,(aparte de rangos).No hay linealidad en el uso de ninguna propiedad.
- No quieres primar que la gente se dedique a defenderse.Eso es más aburrido, así que la defensa debe pesar menos que el ataque.
- Dependiendo de dónde sale el ataque y la defensa (en un juego online, supone "subir de niveles" cosas, lo cual requiere inversión de tiempo y/o dinero), quieres primar una cosa u otra (quieres fomentar que la gente pague).
Y todo esto, porque es simplemente un modelo donde ya está el "ataque" y la "defensa" ya están dados, y el único resultado son "bajas".El ataque y la defensa pueden determinarse por literalmente cientos de parámetros (nivel de "armadura",armas, proyectiles,soldados,iniciativa,rango en ataques a distancia, medios de evasión) , y los resultados pueden ser muchos (bajas, daños, pérdida de recursos,puntos del jugador...)

Pero a una persona que está en la fase "ataque-defensa", todo esto le queda un poco lejos...Su problema es que así, o no hay bajas, o hay hasta bajas negativas.
Una simple proporción lo resuelve.Ya ha dado un paso más.
  #6 (permalink)  
Antiguo 25/07/2013, 14:22
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Fórmula matemática batalla

Cita:
Iniciado por dashtrash Ver Mensaje
He dicho "muy simple", para ir en la línea del comentario del usuario.
Yo he dirigido el desarrollo de juegos online, y la ejecución de una batalla (cálculo de daño, cálculo de pérdidas, botín,ataques en grupo con varios usuarios contra varios usuarios), requería más de 80 queries, alrededor de 40 parámetros de balanceo,etc,etc

En particular, el parámetro que comentas no es importante.Con ese razonamiento, lo que obtienes es un factor que aplica por igual a ambos bandos.
1 - Tienes razon... hay muchisimas variantes (posicion estrategica, ataca o defiende, ...)

2 - El parametro SI es importante cuando la diferencia de numero de tropas es grande aunque justamente por que es una cuestion multi-factorial es que los griegos ganaron pocos miles a los millones de persas en la batalla de las Termopilas.

El juego es dinamico, asi empiecen ambos bandos con igualdad de fuerzas cuando la diferencia se acrecienta el juego se termina en muy poco tiempo por la variable que comento: efecto cooperativo
__________________
Salu2!
  #7 (permalink)  
Antiguo 25/07/2013, 16:38
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Fórmula matemática batalla

Código PHP:
Ver original
  1. El parametro SI es importante cuando la diferencia de numero de tropas es grande aunque justamente por que es una cuestion multi-factorial es que los griegos ganaron pocos miles a los millones de persas en la batalla de las Termopilas.
El parámetro, mientras sea una función lineal, no es importante, ya que aplica a ambos lados por igual, por lo que no altera el resultado.
"100 hombres hacen mucho mas daño que 100 veces el daño que ejerce uno solo"
Da igual.En el ejemplo que ha puesto, hay 10 tropas, que tienen un ataque de 600.
Eso significa que una tropa hace 60 de daño, o que hacen 30 (daño individual por tropa) + 3*(numero de tropas) (factor "cooperativo")?
Si son 20 tropas, da lo mismo.Lo cuentes como lo cuentes, tendrias 1200 de ataque.
Si quieres, puedes poner 1 como caso especial, y sería el unico caso en el que tendría efecto.

En general, los factores que van a dar "juego" son los que se hacen con respecto al bando contrario.Jugar con diferencias entre las tropas enfrentadas, y multiplicadores sobre diferencias.

Un efecto realista, en este caso, es que si la diferencia de tropas es demasiado grande, el bando menor recibe una penalización (léase, parte de las tropas huyen, se desmoralizan,etc).Pero este factor no es absoluto, (un grupo de soldados hacen mas daño que 1 solo), sino relativo (un grupo de soldados se desmoraliza al enfrentarse a un grupo mucho mayor de soldados).

Código PHP:
Ver original
  1. El juego es dinamico, asi empiecen ambos bandos con igualdad de fuerzas cuando la diferencia se acrecienta el juego se termina en muy poco tiempo por la variable que comento: efecto cooperativo
?? Cuando la diferencia se acrecienta, el juego se termina porque hay un bando con más soldados, armas, tecnología, territorio y recursos que el otro...
  #8 (permalink)  
Antiguo 25/07/2013, 16:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Fórmula matemática batalla

Es que justamente un "efecto cooperativo" seria raro fuera "lineal" ... y pues tu mismo lo dices:

Cita:
Cualquier juego utiliza escalas logarítmicas,(aparte de rangos).No hay linealidad en el uso de ninguna propiedad.
Creo igualmente dependera del tipo de formacion que elijan los soldados y esa cercania con otros como favorezca o desfavorezca el ataque y defensa:

- Los de adentro del grupo pierden en capacidad de ataque pero ganan defensa

- Los exteriores al grupo, ganan tambien en defensa y conservan su capacidad de ataque o quizas la incrementen un
poco


En concreto ya no discrepo sino solo converso y de paso me despejo un poco porque estoy aburrido de meter todo en cajitas..... maldit@ mudanza!


Al compañero le aconsejo lea el libro "PHP objects, patterns and practice" pues trata de varios patrones de diseño utiles para este tipo de proyecto.
__________________
Salu2!

Última edición por Italico76; 25/07/2013 a las 19:32

Etiquetas: batalla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.