Cálculo de pontos de experiência ganhos após uma batalha

9

Estou desenvolvendo um jogo de batalha de texto simples e tendo alguns problemas para calcular quanto XP deve ser ganho após uma batalha, há alguns fatores que quero considerar:

1) Obviamente, os jogadores devem ganhar um bom XP se vencerem alguém do mesmo nível

2) Os jogadores devem ganhar excelentes XP se vencerem alguém de nível superior

3) Os jogadores devem ganhar XP ruim se derrotarem alguém de nível mais baixo

4) As opções acima devem ser bem dimensionadas, ou seja, se o jogador A for o nível 10 e enfrentar o jogador B com nível 9 ou 11, a diferença não deve ser grande (eles obviamente ganhariam mais XP por derrotar o personagem do nível 11, mas não esperar que isso seja enorme), mas se ele batalhar um nível 5 ou 15, essa diferença deve ser enorme.

Apenas com problemas para calcular algo que funciona bem em todos os cenários, atualmente minha tabela XP se parece com a abaixo:

Current Level   XP Needed   Increase from Last Level
1   30  0
2   65  35
3   106 41
4   154 48
5   210 56
...
10  672 123

No PHP, meu código se parece com o abaixo para calcular o XP necessário:

$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;

$xp = $base + $offset;

Eu tentei algumas coisas diferentes, mas não fiquei impressionado com nenhuma delas, gostaria de trabalhar com o cálculo da diferença no XP e depois usar algum tipo de multiplicador, mas não fiquei impressionado com os resultados.

Qualquer ajuda / entrada seria apreciada.


fonte
2
Eu nem estou lendo, basta ir lá -> gamebalanceconcepts.wordpress.com/2010/07/07/… <-
o0 '.
O primeiro pensamento é que você deve encontrar uma cópia de um guia de mestrado em D&D da segunda ou terceira edição. Bons recursos para já jogar sistemas de premiação XP testados / balanceados.
Richard Fabian

Respostas:

13

Duas sugestões:

Expoentes! Calcule alguma "recompensa de base de XP" para cada nível. Então a fórmula para matar é base_xp_reward * pow (1.1, target_level - player_level). Você pode limitar o ganho ao máximo, anular um pouco as explorações e dar zero XP abaixo de uma certa diferença, para impedir o cultivo de lowbies.

(A recompensa base XP também pode ser uma progressão exponencial simples, se você quiser - constant_factor * pow (1,25, nível), talvez. Em seguida, você pode definir o "exp para nível" em termos de um múltiplo da recompensa XP base. Pode ser mais fácil equilibrar dessa maneira.)

Como alternativa, vamos tornar isso realmente simples. Faça a mesma coisa de recompensa base-XP. Em seguida, descubra uma tabela à mão para os bônus que deseja de vários diferenciais de nível. Faça com que seja baseado em proporção, de modo que matar alguém um nível acima de você sempre dê, digamos, 10% de bônus em XP sobre a recompensa básica. E agora você não precisa mais se preocupar com uma fórmula - basta fazer com que os números façam o que você deseja.

As fórmulas são superestimadas, às vezes você só precisa inserir alguns números e reproduzi-los de ouvido.

ZorbaTHut
fonte
11
+1 paraFormulas are overrated, sometimes you just need to jam some numbers in and play it by ear.
RCIX 23/11
2

Eu diria algo como "ganhar XP pelo dano delt / recebido". Portanto, se um nível 10 com 100 hp combate um nível 15 com 200 hp. Parece injusto, mas se o nível 10 fosse capaz de matar o nível 15, ele obteria o dobro de pontos de experiência do que obteria se lutasse no nível 10 com apenas 100hp.

Dessa forma, você não precisa se preocupar com coisas como se duas pessoas combatessem o mesmo inimigo com equipamentos diferentes. Por exemplo, se um nível 8 e um nível 10 lutam contra um nível 13. Se o nível 8 tiver melhores equipamentos / armaduras, ele obterá mais pontos de experiência, então o nível 10 simplesmente porque ele causa mais danos ao nível 13.

Mas o mais importante: definir regras, playtest, definir regras, playtest, definir regras, plasytest, etc, etc ...

Até os melhores MMOs dos melhores desenvolvedores ajustam seu sistema de distribuição xp enquanto o jogo durar.

Espen
fonte
0

Apenas no IMHO, a coisa mais importante a se acertar é a quantidade de XP em escala necessária para subir de nível. Um amigo meu usou uma variação de fibonacci para seu navegador, como o Rogue, por exemplo 100XP, 100XP, 200XP, 300XP, 500XP, 800XP, etc.

Também ouvi falar de um mecânico em alguns jogos em que o nível é subtraído do XP ganho por cada batalha. Por exemplo, se uma batalha em particular ganha 50XP, e eles estão no nível 20, então eles recebem apenas 30XP. Se eles estivessem no nível 50 ou acima, não ganhariam nada.

earok
fonte