Jason
PkPower déjame poner tildes en mi nick ¬¬
Hola, no sabía si poner esto en tutoriales o en investigaciones, supongo que como no es un tutorial sino un poco de info a tener en cuenta a la hora de crear un mapa nuevo en pokéruby (no sé si varíe para otros proyectos) y querer poner nuevos pokémon salvajes.
Siguiendo el tuto de @L!no intenté poner pokémon salvajes para un nuevo mapa, creado con mi tutorial para crear nuevos mapas.
El resultado fue que aparecían missignos y pokémon de la struct siguiente (PetalburgCity_WaterMons), por lo que me puse a pensar en posibilidades mientras me duchaba y se me ocurrió que quizás eran arrays con un largo esperado y el randomizador se pasaba del largo y llegaba al siguiente. Y era correcto. A continuación los hallazgos:
Para pokémon en tierra:
Se espera que el array tenga 12 elementos y el propio randomizador maneja en orden las siguientes ponderaciones:
20%, 20%, 10%, 10%, 10%, 10%, 5%, 5%, 4%, 4%, 1%, 1%.
Por lo que dentro del array, el primero que definan tendrá un 20% de probabilidades de aparecer, el segundo un 20, el tercero un 10 y así.
Para pokémon en agua (surf):
Se espera que el array tenga 5 elementos y el propio randomizador maneja en orden las siguientes ponderaciones:
60%, 30%, 5%, 4%, 1%.
Para pokémon en agua (caña):
Para la caña vieja:
Se espera que el array tenga 2 elementos y maneja las siguientes ponderaciones:
70%, 30%.
Para la caña buena:
Se espera que el array tenga 3 elementos y maneja las siguientes ponderaciones:
60%, 20%, 20%.
Para la súpercaña:
Se espera que el array tenga 5 elementos y maneja las siguientes ponderaciones:
40%, 40%, 15%, 4%, 1%.
Para los pokémon que salen en tierra y agua (surf), los arrays se crean sin mayor inconveniente, mientras que para para los pokémon que se obtienen pescando, los arrays deben seguir la siguiente estructura:
- los primeros dos corresponden a la caña vieja
- los siguientes tres corresponden a la caña buena
- los últimos 5 corresponden a la súpercaña
Sumando un total de 9 elementos al array.
Ahora, cambiando el sistema:
(para cambiar el sistema no se necesita revoluciones -ba dum tss- (lo siento))
Planeo cambiar este sistema y al menos para los pokémon terrestres y acuáticos (surf) no tener que rellenar con el mismo pokémon para evitar esto.
Una idea que tengo es a la estructura de los pokémon salvajes añadirle un atributo que sea "recurrencia" o algo así.
Y para determinar el pokémon salvaje que vaya a aparecer se sume la recurrencia de todos los pokémon de la ruta, y la probabilidad de que aparezca un pokémon en concreto sea poke.recurrencia / recurrencia_total.
Por lo que si quisiéramos tener que poochyena salga con 5 veces más frecuencia que un wurmple, basta con:
recurrencia_total = 6
prob_poochy = 5/6
prob_wurm = 1/6
¿Qué les parece este sistema?
¿Se les ocurre alguno mejor?
Podría usar la función de C sizeof para evitar pasarme en el largo del arreglo al iterar sobre este.
Siguiendo el tuto de @L!no intenté poner pokémon salvajes para un nuevo mapa, creado con mi tutorial para crear nuevos mapas.
El resultado fue que aparecían missignos y pokémon de la struct siguiente (PetalburgCity_WaterMons), por lo que me puse a pensar en posibilidades mientras me duchaba y se me ocurrió que quizás eran arrays con un largo esperado y el randomizador se pasaba del largo y llegaba al siguiente. Y era correcto. A continuación los hallazgos:
Para pokémon en tierra:
Se espera que el array tenga 12 elementos y el propio randomizador maneja en orden las siguientes ponderaciones:
20%, 20%, 10%, 10%, 10%, 10%, 5%, 5%, 4%, 4%, 1%, 1%.
Por lo que dentro del array, el primero que definan tendrá un 20% de probabilidades de aparecer, el segundo un 20, el tercero un 10 y así.
Para pokémon en agua (surf):
Se espera que el array tenga 5 elementos y el propio randomizador maneja en orden las siguientes ponderaciones:
60%, 30%, 5%, 4%, 1%.
Para pokémon en agua (caña):
Para la caña vieja:
Se espera que el array tenga 2 elementos y maneja las siguientes ponderaciones:
70%, 30%.
Para la caña buena:
Se espera que el array tenga 3 elementos y maneja las siguientes ponderaciones:
60%, 20%, 20%.
Para la súpercaña:
Se espera que el array tenga 5 elementos y maneja las siguientes ponderaciones:
40%, 40%, 15%, 4%, 1%.
Para los pokémon que salen en tierra y agua (surf), los arrays se crean sin mayor inconveniente, mientras que para para los pokémon que se obtienen pescando, los arrays deben seguir la siguiente estructura:
- los primeros dos corresponden a la caña vieja
- los siguientes tres corresponden a la caña buena
- los últimos 5 corresponden a la súpercaña
Sumando un total de 9 elementos al array.
Ahora, cambiando el sistema:
(para cambiar el sistema no se necesita revoluciones -ba dum tss- (lo siento))
Planeo cambiar este sistema y al menos para los pokémon terrestres y acuáticos (surf) no tener que rellenar con el mismo pokémon para evitar esto.
Una idea que tengo es a la estructura de los pokémon salvajes añadirle un atributo que sea "recurrencia" o algo así.
Y para determinar el pokémon salvaje que vaya a aparecer se sume la recurrencia de todos los pokémon de la ruta, y la probabilidad de que aparezca un pokémon en concreto sea poke.recurrencia / recurrencia_total.
Por lo que si quisiéramos tener que poochyena salga con 5 veces más frecuencia que un wurmple, basta con:
Código:
const struct WildPokemon PoochyRuta_LandMons [] =
{
{2, 3, SPECIES_POOCHYENA, 5},
{1, 4, SPECIES_WURMPLE, 1},
};
prob_poochy = 5/6
prob_wurm = 1/6
¿Qué les parece este sistema?
¿Se les ocurre alguno mejor?
Podría usar la función de C sizeof para evitar pasarme en el largo del arreglo al iterar sobre este.
Última edición: