Yo diría que depende, al menos parcialmente, del tipo de experiencia que desea crear para el jugador. Considere dos ejemplos, el primero de los cuales es un juego de rol clásico por turnos, el segundo es un juego de disparos tipo Gradius III , en el que le gustaría que el poder del jugador se escale en función del progreso desde su muerte en la lista, no en potenciadores (no decir que es un buen sistema, solo un ejemplo).
En el caso del juego de rol, su sistema probablemente opera bajo el supuesto de que un jugador nunca pierde experiencia. Del mismo modo, probablemente querrá actuar basándose en el supuesto de que es relativamente fácil obtener cierto nivel de competencia en algo, pero difícil de dominar (como la mayoría de las cosas en el mundo real). En este caso, es posible que desee desarrollar una fórmula (como sugiere coderanger) que es exponencial en algún aspecto. Donde la cantidad de experiencia requerida para alcanzar el siguiente nivel se basa de alguna manera exponencial en su nivel actual. Es importante tener en cuenta, sin embargo, la velocidad a la que su jugador recibirá experiencia mientras juega. Por ejemplo, un jugador que mata a un Demonio de Fuego de nivel 63 esperaría recibir más experiencia por su muerte que si hubiera matado a una Lady Bug de nivel 2. Entonces, al diseñar tu fórmula, asegúrese de tener en cuenta su sistema XP. Particularmente porque si no lo haces, entonces matar a la mariquita será tan rentable como matar enemigos más duros.
Ejemplo 1 (Probablemente no sea un formulario que usaría): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Ejemplo 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Donde XP_TO_LEVEL es el XP necesario para alcanzar el siguiente nivel. CURRENT_LEVEL es el nivel actual del jugador. XP_BASE es un número arbitrario para decidir cuánto vale cada nivel en XP. SCALE es el exponente que determina qué tan rápido escalar el XP necesario para nivelar. Si SCALE es 1, cada nivel tendrá experiencia XP_BASE. Si SCALE es inferior a 1, cada nivel requerirá menos experiencia que el último nivel. Si la ESCALA es mayor que 1, cada nivel requerirá más experiencia que el último nivel.
La siguiente tabla asume una ESCALA de 1.1 y una XP_BASE de 100 usando el ejemplo 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Ejemplo 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
Donde ESCALA sigue determinando qué tan rápido escalar el XP_TO_LEVEL, pero funciona de manera un poco diferente.
La siguiente tabla supone una ESCALA de 22 y una XP_BASE de 10 utilizando el ejemplo 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
En el caso del clon de Gradius, puede tomar una estrategia diferente. Es posible que desee que el jugador suba de nivel constantemente, digamos cada dos minutos. Además, después de que una jugada haya perdido una vida y, en consecuencia, haya perdido todos sus poderes ganados, es posible que desee ayudarlo a subir de nivel más rápido hasta que alcance un nivel adecuado para su progreso en el juego. En este caso, su fórmula probablemente será más lineal, especialmente porque el usuario no puede ver cuánta experiencia está obteniendo por asesinato. Algo así, se necesitan 50 XP para alcanzar un nuevo nivel y cada enemigo vale 1 XP. Esto funciona muy bien siempre que le estés proporcionando un flujo relativamente constante de enemigos. Pero, cuando el jugador muere, ¡lo pierde todo! ¿Qué haces ahora? Cada enemigo debe valer más de 1 XP para cumplir con su objetivo de alcanzarlo para que el juego sea justo nuevamente.
Ejemplo: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Donde XP_FROM_EACH_ENEMY es la cantidad de XP que otorgaría un enemigo al morir. BASE_XP es la cantidad de XP que vale un enemigo por defecto (podría variar según el tipo de enemigo). CURRENT_LEVEL es el nivel del jugador DESIRED_LEVEL es el nivel en el que crees que debería estar el jugador.