Алгоритм для инструмента для теории теории, основанный на игре (лиге легенд)

Я хотел бы создать симулятор (в основном для тестирования) для игры (Лига легенд).

Основы игры:

у вас есть герой, у которого есть статистика:

  • Точка здоровья
  • Урон от атаки
  • Скорость атаки
  • Броня
  • Проникновение брони
  • Скорость движения

Герой может иметь 4 навыка (вы получаете одну точку умения на каждом уровне) (Они активируются вручную, большую часть времени, время восстановления, урона, атаки /атаки, а также уровень навыка) + пассивное умение

Вы можете убить вражеских героев или нейтральных монстров, они имеют одинаковую статистику:

  • Точка здоровья
  • Урон от атаки
  • Скорость атаки
  • Броня

Что я хотел бы сделать:

Создайте инструмент для проверки того, сможет ли какой-то конкретный элемент или конкретное увеличение статистики ускорить вашу силу /скорость убийства.

map: http: //evtron. ком /Evtron-альфа /сор-содержание /добавления /2011/02 /Summoners-Rift.jpg

Примеры использования:

  • Hp: 420
  • Объявление: 55
  • AttackSpeed: 0.613 (attack /s -> каждая атака при 1 /0.613 с)
  • Броня: 25

Персонаж будет атаковать противника 1 /attackpeed и повредить атакой (есть формулировка, чтобы рассчитать ущерб, но это не важно на этом этапе, я думаю), как только они будут мертвы, перейдя к следующей с перемещением (вы можете увидеть лагеря на карте, желтые черепа)

Я думал об алгоритме:

  1. Я подумал, что если я просто сделаю a для от i = 0 до i = 30000 (подсчет мс), поэтому я могу просто проверить вражеский hp и мой hp, а также на каждый мс оказался настолько плохим (довольно CPU тяжело, и я хотел бы добавить в него некоторые случайные функции, поэтому я должен был бы подвести итог 1k-итерации, что невозможно)

  2. Во-вторых, я думал, что должен просто делать от 1 = 1 до 30 и проверять каждую секунду и проверять, что произошло в последнюю секунду, но некоторые из нейтральных монстров находятся в большом лагере (вверх до 4 монстров), и таким образом код становился сложным и сложным.

  3. Я собираюсь создавать потоки для каждого игрока /монстров, и как только они закончат поиск, когда они умрут, и уменьшите hp игрока.

Мой вопрос, это правильный путь?

TLDR: Я хотел бы создать инструмент для создания анализа (итерации 1k и вычисления среднего значения) об игре, увеличение стата сделает персонажа, убивающего более быстрых нейтральных монстров.

Я бы предпочел java, но atm я застрял в алгоритме.


@ Karoly S: Да, это мой плохой, .com -> .eu

Я работал над этим:

Я проверяю оставшееся время на каждом объекте (умение игрока, автотаку, баффы) и всегда выбираю самое короткое время и сохраняю последнее время и добавляю время от времени, в следующем раунде я вычисляю время на (время-last_time)

Если объект имеет оставшееся время 0, он сделает все, что ему нужно.

Я не знаю, эффективен ли это или нет, но это лучшее, что я мог сделать.

10 голосов | спросил etheld 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2011 18:20:18 +0400 2011, 18:20:18

1 ответ


1

Альтернативы моделированию по кадру:

Вы можете получить разумное приближение для моделирования по формуле, например

rawDamage = <some function of strength?)
Damage = rawDamage - enemyArmorReduction
DPS = (attackSpeed * Damage) * enemyArmorMod
myRemainingHP = myDPS / theirHP  - theirDPS / myHP

Вы также можете поддерживать очередь перемещения, чтобы вы имитировали движение, а не по-тику:

// my aspd = 4 attacks per second, his aspd = 3 attacks per second
0.0s : start battle
0.25s: I attack
0.33s: He attacks
0.50s: I attack again
...
1.00s: I attack
1.00s: He attacks
...
ответил Jimmy 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2011 21:17:42 +0400 2011, 21:17:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132