Dominio

Introducción

La idea del juego es que hay jugadores, que cada uno tiene robots y puede hacerlos pelear con otros robots. Cada jugador tiene un nombre, una cantidad de dinero y una colección de robots. 

La perspectiva de la aplicación es siempre la de un jugador individual. Este jugador administra sus robots, puede comprar robots nuevos, reparar o vender sus robots y hacerlos pelear con otros.

Robots

Cada robot tiene también un nombre, un poder (que es numérico) y un nivel de deterioro (un porcentaje que indica qué tan roto está). En cada pelea el robot va a deteriorarse (incrementa su porcentaje de rotura).

A partir del poder total del robot y el estado se puede calcular el poder efectivo:
poderEfectivo = poderTotal * (100 - nivelDeterioro) / 100

El precio del robot se calcula en función del poder efectivo:
precio = poderEfectivo * 50$

Peleas

Para pelear con otro robot, se debe elegir un robot que no sea propio y hacer una apuesta.  Se puede apostar hasta el 100% del dinero que uno tenga. Entre los robots "no propios" tenemos los que pertenecen a algún otro usuario y también hay robots que no pertenecen a nadie (o bien, pertenecen "al sistema").

La probabilidad de ganar una pelea se calcula dependiendo del poder relativo entre los dos robots: 

gana = random(0,1) <= poderPropio / (poderPropio + poderOponente).

La ganancia obtenida por la apuesta también se ponderará en función de los poderes relativos. Esto evita que uno organice siempre competencias contra robots de menor categoría. La ganancia de una pelea se calcula así:

ganancia = apuesta * (poderPropio + poderOponente) / poderPropio

Por otro lado, la competencia hace que se desgasten los robots. Cuanto más poderoso sea el oponente más se desgasta el robot. 

porcentajeDesgaste = random(0,20) * poderOponente / (poderPropio + poderOponente). 

A fín de simplificar el dominio podemos decir que ni el robot oponente, ni su dueño se ven afectados por una pelea no iniciada por ellos.
Es decir que tanto la ganancia, como el desgaste se van a dar sobre el robot/dueño que está desafiando, y no sobre el desafiado.

Venta de un Robot

El dueño de un robot podrá intentar venderlo. La venta no es a otro usuario sino al sistema en sí, es decir que un robot vendido pasa a no tener dueño. El juego le ofrecerá una cantidad de dinero en base al precio del robot (definido en la sección Robots) y a un número aleatorio que podrá dar una disminución de entre 2 y 10% del precio original.

Por ejemplo:
  • Robot "Buzz lightyear"
    • poderTotal = 32
    • estado = 75%
    • poderEfectivo = 32 * 75% = 24
    • precio base = 24 * $50 = $1200
  • Oferta del sistema:
    • random = 4%
    • oferta = 1200 * (1 - 4/100) = 1200 * (0.96) = $1192
  • Segunda oferta del sistema:
    • random = 7%
    • oferta = (400 * 0.75) - (400 * 0.07) = $272
oferta = precio * (1 - random(2,10)/100)


El usuario decidirá ante cada oferta si acepta la venta o no. En caso de no aceptar la oferta, podrá volver a intentar vender el robot cuantas veces quiera hasta concretarla. Cada vez que se decide rechazar una oferta, el estado del robot desciende 1%.


Una vez concretada la venta, el robot pasa a estar disponible en el sistema como un robot "sin dueño", que podrá ser comprado por otros usuarios (ver la sección Compra de robot).

Compra de Robot

Para comprar un robot se le debe hacer una oferta al sistema. Es posible hacer ofertas por un menor precio del que le corresponde al robot según los cálculos normales. El sistema aleatoriamente decide si vende el robot o no, según la siguiente fórmula:

aceptaOferta = random(0,1) <= 0.9 * (oferta / precio base) ^ 2

Si el sistema rechaza la oferta, el usuario puede volver a ofertar todas las veces que quiera.
Por cada oferta rechazada, el usuario pierde el 2% del dinero ofertado. Obviamente no se puede ofertar más plata de la que se tiene.


Nota: Para imaginarse qué significa esa cuenta, algunos parámetros:
  • Ofertando exactamente el precio base, no se garantiza la compra. Para asegurarse hay que subir aproximadamente un 10%.
  • Ofertando el precio base hay 90% de que se acepte la oferta.
  • Ofertando un 75% del precio base se tiene un 50% de posibilidades de que la oferta sea aceptada.
  • Aún ofertando muy poco uno puede tener suerte y comprar, pero es difícil. Por ejemplo ofertando un 10% del precio base tenés un 0.9% de chances.

Reparación de un Robot

La reparación permite mejorar el estado de un robot, invirtiendo algún dinero. Hay dos formas de reparación:
  • Reparación parcial. Se indica el porcentaje en el que se desea mejorar el estado del robot y cuesta $25 por cada punto porcentual.
  • Reparación total. Se deja el robot como nuevo, con el estado al 100%. 
(Se puede ver que la reparación total es sólo un caso particular de la parcial, es simplemente una comodidad para poder realizar la Entrega 0.)

Mejora de un Robot

El usuario podrá mejorar sus robots incrementando el poder de estos.
Para eso, el sistema provee una serie de "mejoras" disponibles (que en un contexto más amplio, fuera de este TP, se podría pensar que a medida que pasa el tiempo el juego publicaría nuevas mejoras).
Una mejora tiene un nombre o descripción, y al ser aplicada sobre un robot, incrementa su poder base ya sea en un porcentaje dado, o una cantidad de puntos de poder. Queda a elección de ustedes.

Como en la vida, nada es gratis, así que las mejoras tienen un precio. El usuario compra las mejoras para aplicar a un robot.

Entonces, citamos un par de ejemplos aquí:

 DescripciónMejora de Poder
 Precio
Aprendizaje de Técnicas de Jiu-jitsu  +21 $250
Mochila voladora de propulsión
+4
$96
Lanza-cohetes teledirigidos
 +13 $156

Para acotar el dominio proponemos que no haya restricción en cuanto a aplicar una mejora más de una vez.