Я некоторое время возился с игрой, и у меня изрядное количество проблем с чем-то:
У меня есть два персонажа, каждый из которых имеет атрибуты (около десяти) в диапазоне (от 1 до 20). Я хочу использовать эти атрибуты, чтобы сгенерировать «бросок» так, чтобы более высокий бросок выиграл эту конкретную схватку. Стоит отметить, что два персонажа не наносят вред / защищают друг друга. Они оба катятся, чтобы посмотреть, пройдут ли они то, что, я думаю, можно назвать проверкой навыков. Они оба катятся, чтобы пройти / потерпеть против общей ценности. Они не взаимодействуют друг с другом.
Однако, когда у одного из персонажей есть даже небольшое численное преимущество, любая предложенная мной формула приводит к тому, что очень немного превосходящий выигрывает в подавляющем большинстве случаев. Это нежелательно.
Я попытался взвесить атрибут «наиболее релевантный» для теста на уровне 80%, а сумму других атрибутов - на уровне 20%. Я также попытался сравнить средние значения, чтобы получить относительную разницу, и использовать ее, чтобы усилить более слабый характер. Оба подхода привели к значительным преимуществам, которые я пытаюсь устранить (например, если я запускаю схватку 5000 раз, она вполне регулярно дает одну сторону, выигравшую все 5000).
Кажется, что добавление компонента «удачи» имеет значение только в том случае, если он каким-то образом взвешен в пользу менее значимого персонажа, и я не нашел там хорошего баланса.
Какие подходы я могу использовать, чтобы смягчить влияние небольшого числового преимущества, но при этом сохранить и увеличить это преимущество по мере увеличения относительного разрыва в характеристиках?
В соответствии с запросом, у меня есть конкретные данные. Некоторые вещи я еще не выяснил, поэтому они остаются общими:
На данный момент бросок генерируется как
0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC)
В настоящее время это производит числа в районе 4,0. Атрибуты генерируются случайным образом между указанными диапазонами. В текущем тесте используется один символ с атрибутами от 2 до 4, а оппонент между 3 и 5. Как и ожидалось, это дает средние значения, близкие к 3 и 4 соответственно.
С этим преимуществом в одно очко я хотел бы видеть более сильный выигрыш двух в области от 55% до 60% времени, при этом увеличение до выигрыша в 80% случаев со средним преимуществом атрибута: 5 или 6, 90% при преимуществах 7 или 8, оставляя место для маловероятного выигрыша, когда разрыв увеличивается. Я бы предпочел, чтобы никогда не было гарантированных побед, но, возможно, все становится очень маловероятным - на случай выигрыша в 99,5% или 99,6% случаев, когда разрыв становится очень большим.
Текущая формула производит неслучайное число. Случайность происходит от выбора того, какие атрибуты актуальны. Не все атрибуты используются для каждого броска. Тот, кто имеет более слабые атрибуты, может быть сильнее в областях, имеющих отношение к этому броску, и украсть победу. Но, как и ожидалось, это случается редко.
Моя следующая попытка состояла в том, чтобы взвесить их относительные силы, взяв в среднем все характеристики каждого, разделив их друг против друга, и используя это значение, чтобы дать небольшой толчок меньшему персонажу. Это немного сгладило ситуацию, но все же имело ярко выраженную тенденцию производить такие вещи, как 5000 побед для одного парня из 5000 попыток.