Cría de caballos ¿Una perdida de tiempo y recursos?

Moderadores: SGM, Moderador, GM

Avatar de Usuario
Spirion
VIP
VIP
Mensajes: 5493
Registrado: 04 Abr 2011, 13:59
Nick Minecraft: Spirion

#31

Imagen

Avatar de Usuario
Zant
Superviviente
Superviviente
Mensajes: 847
Registrado: 21 Jul 2011, 16:59
Contactar:

#32

He decompilado el plugin del que ha hablado db antes y he encontrado una cosa muy graciosa en el código:

Código: Seleccionar todo

private boolean pSpecial;

// [...]

this.pSpecial = false;

// [...]

Player p = (Player)e;
if ((p.getName() == "Soiyeruda") && (p.getInventory().contains(Material.DIAMOND_BLOCK))) {
    this.pSpecial = true;
}

// [...]

if (this.pSpecial) {
    speed.setValue(Config.maxSpeed * 2.0D);
    health.setValue(Config.maxHealth * 5.0D);
}

(He omitido el código que hay entre medias porque no era relevante para la ocasión.)

Vamos, que el que lo ha programado se da trato preferente. No sé si va contra las normas de Bukkit Dev pero no informa explícitamente de ello en la página.

Por lo demás es un plugin muy simple y fácil de editar en caso de que se quiera modificar ligeramente la fórmula (o cambiar el nick "Soiyeruda" por "zant95" en lo del trato preferente). El código decompilado no he probado si da problemas a la hora de volver a compilarlo, pero dado el poco contenido que tiene no creo que sean fallos difíciles de arreglar.

Avatar de Usuario
Kunio_Otani
Superviviente
Superviviente
Mensajes: 1009
Registrado: 15 Abr 2012, 19:09

#33

Spirion escribió:

Imagen

;D ;D ;D

Me siento totalmente identificado y más a estas horas ;D

Menudos "hackers" que estais hechos! :D

Imagen

Imagen

Avatar de Usuario
reddw562
VIP
VIP
Mensajes: 3009
Registrado: 16 Mar 2011, 19:42

#34

Zant escribió:

He decompilado el plugin del que ha hablado db antes y he encontrado una cosa muy graciosa en el código:

Código: Seleccionar todo

private boolean pSpecial;

// [...]

this.pSpecial = false;

// [...]

Player p = (Player)e;
if ((p.getName() == "Soiyeruda") && (p.getInventory().contains(Material.DIAMOND_BLOCK))) {
    this.pSpecial = true;
}

// [...]

if (this.pSpecial) {
    speed.setValue(Config.maxSpeed * 2.0D);
    health.setValue(Config.maxHealth * 5.0D);
}

(He omitido el código que hay entre medias porque no era relevante para la ocasión.)

Vamos, que el que lo ha programado se da trato preferente. No sé si va contra las normas de Bukkit Dev pero no informa explícitamente de ello en la página.

Por lo demás es un plugin muy simple y fácil de editar en caso de que se quiera modificar ligeramente la fórmula (o cambiar el nick "Soiyeruda" por "zant95" en lo del trato preferente). El código decompilado no he probado si da problemas a la hora de volver a compilarlo, pero dado el poco contenido que tiene no creo que sean fallos difíciles de arreglar.

Me ha molado lo de que dependa también de que lleve X item si quiere aprovecharse del trato preferente, ¿para controlar cuándo lo usa o por si le ve alguien?  ::)

Avatar de Usuario
Zant
Superviviente
Superviviente
Mensajes: 847
Registrado: 21 Jul 2011, 16:59
Contactar:

#35

redwolf562 escribió:

Me ha molado lo de que dependa también de que lleve X item si quiere aprovecharse del trato preferente, ¿para controlar cuándo lo usa o por si le ve alguien?  ::)

Para hacer amigos lo he comentado en la página del plugin xD
http://dev.bukkit.org/bukkit-plugins/better-horse-breeding/#c6

Dunham21
Superviviente
Superviviente
Mensajes: 141
Registrado: 21 Ene 2012, 14:19

#36

Sería mucho canteo que sólo le salieran caballos chetos, por eso lo del bloque de diamante.

Avatar de Usuario
PeterLancton
Superviviente
Superviviente
Mensajes: 2347
Registrado: 05 Sep 2012, 17:55

#37

robertoccu escribió:

Siendo que X es 0'xx puede interpretarse directamente como que puede darle la importancia de x a uno y de x-100% a otro. Pudiendo ser: 10% uno y 90% el otro o 33% uno y 77% el otro.

Al menos asi lo he entendido.

Sí, lo que pasa es que, a diferencia de la primera fórmula, no se hace una media aritmética entre las 3 stats sino que en la segunda le suma unas terceras estadísticas que por muy afectadas que estén por un coeficiente -10% siguen sumándose a las de los padres dando inevitablemente mejores caballos.
Basta con hacer un test en excell con valores aleatorios, luego vas superponiendo generaciones y en nada (tres generaciones) te encuentras con caballos de 50/60.

Dunham21
Superviviente
Superviviente
Mensajes: 141
Registrado: 21 Ene 2012, 14:19

#38

PeterLancton escribió:
robertoccu escribió:

Siendo que X es 0'xx puede interpretarse directamente como que puede darle la importancia de x a uno y de x-100% a otro. Pudiendo ser: 10% uno y 90% el otro o 33% uno y 77% el otro.

Al menos asi lo he entendido.

Sí, lo que pasa es que, a diferencia de la primera fórmula, no se hace una media aritmética entre las 3 stats sino que en la segunda le suma unas terceras estadísticas que por muy afectadas que estén por un coeficiente -10% siguen sumándose a las de los padres dando inevitablemente mejores caballos.
Basta con hacer un test en excell con valores aleatorios, luego vas superponiendo generaciones y en nada (tres generaciones) te encuentras con caballos de 50/60.

El plugin lo capa en 14.5. No puede superar ese limite

Avatar de Usuario
Zant
Superviviente
Superviviente
Mensajes: 847
Registrado: 21 Jul 2011, 16:59
Contactar:

#39

Dunham21 escribió:

El plugin lo capa en 14.5. No puede superar ese limite

Pues se hace un fork de ese plugin y se cambia a gusto de todos ;)

Fragmento del código fuente:

Código: Seleccionar todo

public static double minBonus = -0.05D;
public static double maxBonus = 0.1D;
public static double maxHealth = 30.0D;
public static double maxSpeed = 0.3375D;
public static int rareChanceStat = 200;
public static int rareChanceVariant = 200;
Avatar de Usuario
dB
Superviviente
Superviviente
Mensajes: 4446
Registrado: 13 Nov 2010, 16:11

#40

Zant escribió:

Por lo demás es un plugin muy simple y fácil de editar en caso de que se quiera modificar ligeramente la fórmula (o cambiar el nick "Soiyeruda" por "zant95" en lo del trato preferente). El código decompilado no he probado si da problemas a la hora de volver a compilarlo, pero dado el poco contenido que tiene no creo que sean fallos difíciles de arreglar.

Si, eso ya lo había visto, muy simpatico el programador......

Tampoco es que haga gran cosa (no es un problema de seguridad), pero es un detalle bastante feo.

El Plugin es bastante sencillo, y se podría modificar la formula facilmente si fuera necesario.

Avatar de Usuario
NxT
Superviviente
Superviviente
Mensajes: 1222
Registrado: 27 May 2012, 12:35

#41

Pues yo creo que no deberíamos facilitar tanto criar caballos de stats extremos, se pierde el mérito a buscar caballos excelentes. Hay gente que se tiró horas y horas pateando el mapa de extremo a extremo para buscarlos.
No necesitamos caballos que corran 13 o 14, yo uso doces y van perfecto.
La vida llega con stats medios, y de salto con 3 ya son usables .
Si fuera tan fácil conseguir un 14 30 5, ya no tendría mérito.
Yo propondría dar mas peso a los stats de los padres, pero mantener el factor aleatorio, por ejemplo
(2P1 + 2P2 + R) / 5

ImagenImagen

Dunham21
Superviviente
Superviviente
Mensajes: 141
Registrado: 21 Ene 2012, 14:19

#42

nxt escribió:

Pues yo creo que no deberíamos facilitar tanto criar caballos de stats extremos, se pierde el mérito a buscar caballos excelentes. Hay gente que se tiró horas y horas pateando el mapa de extremo a extremo para buscarlos.
No necesitamos caballos que corran 13 o 14, yo uso doces y van perfecto.
La vida llega con stats medios, y de salto con 3 ya son usables .
Si fuera tan fácil conseguir un 14 30 5, ya no tendría mérito.
Yo propondría dar mas peso a los stats de los padres, pero mantener el factor aleatorio, por ejemplo
(2P1 + 2P2 + R) / 5

Con esa fórmula nunca vas a mejorar a los padres

Avatar de Usuario
PeterLancton
Superviviente
Superviviente
Mensajes: 2347
Registrado: 05 Sep 2012, 17:55

#43

Se me ocurre esta:
Imagen
donde alfa, beta y a son coeficientes arbitrarios, X es la media aritmética de las estadísticas de ambos padres para una característica determinada, R es un número aleatorio oscilando en torno a la media (como el default).

La idea es que esta fórmula permite hacer distribuciones ajustables, es básicamente como la de Nxt, una media aritmética con alfa y beta como coeficientes para ponderar las características de los padres y las aleatorias en torno a la media. La única diferencia es que he añadido una exponencial cuya convergencia es aumentable mediante el parámetro a. El 7 también se podría aumentar para obtener mejores caballos independientemente de las características de los padres.

Primero se hace la media de los padres tras lo cual se le suma una cantidad que varía entre 0,5 y 0,06 más o menos (para a=0,5) en función de las características de los padres, cuanto mejores sean, menos se le suma. Después se hace una simple media ponderada con R que le aporta el carácter más aleatorio.
Esto permite que sea sencillo aumentar las estadísticas de caballos malos al principio pero que sea cada vez más costoso a medida que aumentan las susodichas estadísticas y sin quitarle el factor random.

Valores de la exponencial (lo que se le suma a la media de los padres) en función de a.

Imagen

Imagen

Última edición por PeterLancton el 21 Ago 2014, 10:12, editado 1 vez en total.
Dunham21
Superviviente
Superviviente
Mensajes: 141
Registrado: 21 Ene 2012, 14:19

#44

PeterLancton escribió:

Se me ocurre esta:
Imagen
donde alfa, beta y a son coeficientes arbitrarios, X es la media aritmética de las estadísticas de ambos padres para una característica determinada, R es un número aleatorio oscilando en torno a la media (como el default).

La idea es que esta fórmula permite hacer distribuciones ajustables, es básicamente como la de Nxt, una media aritmética con alfa y beta como coeficientes para ponderar las características de los padres y las aleatorias en torno a la media. La única diferencia es que he añadido una exponencial cuya convergencia es aumentable mediante el parámetro a. El 7 también se podría aumentar para obtener mejores caballos independientemente de las características de los padres.

Primero se hace la media de los padres tras lo cual se le suma una cantidad que varía entre 0,5 y 0,06 más o menos (para a=0,5) en función de las características de los padres, cuanto mejores sean, menos se le suma. Después se hace una simple media ponderada con R que le aporta el carácter más aleatorio.
Esto permite que sea sencillo aumentar las estadísticas de caballos malos al principio pero que sea cada vez más costoso a medida que aumentan las susodichas estadísticas y sin quitarle el factor random.

Valores de la exponencial (lo que se le suma a la media de los padres) en función de a.

Imagen

Imagen

Esta bien pero tendrías que modificarla según la característica porque con esa fórmula acabarás teniendo caballos que salten y corran igual. Supongo que poniendo la a con un valor mayor para salto y menor para vida es suficiente.

Avatar de Usuario
PeterLancton
Superviviente
Superviviente
Mensajes: 2347
Registrado: 05 Sep 2012, 17:55

#45

Sí, en este ejemplo es para la velocidad pero basta con modificar el 7, la a se encarga únicamente de evaluar la "velocidad" a la que decrece lo que se le aumenta a los padres en función de lo buenos que sean.

EDIT: Probando obtengo buenos resultados cambiando el 7 por un 1,2 para el salto y por un 15 con a=0,1 para la vida. Es cuestión de ir probando, cuando tenga tiempo hago una prueba simulando una granja intensiva de caballos en Excel.

Última edición por PeterLancton el 21 Ago 2014, 11:11, editado 1 vez en total.
Responder