Я хотел бы создать симулятор (в основном для тестирования) для игры (League of Legends).
Основы игры:
у вас есть герой, который имеет некоторые характеристики:
- Точка здоровья
- Урон от атаки
- Скорость атаки
- броневой
- Бронепробиваемость
- Скорость движения
Герой может иметь 4 навыка (вы получаете одно очко навыка на каждом уровне) (они активируются вручную, большую часть времени, имеют время восстановления, урон, коэффициент масштабирования силы атаки / урона атаки и уровень навыка) + пассивный навык
Вы можете убивать вражеских героев или нейтральных монстров, у них одинаковые характеристики:
- Точка здоровья
- Урон от атаки
- Скорость атаки
- броневой
Что я хотел бы сделать:
Создайте инструмент, чтобы проверить, увеличит ли ваша сила / скорость убийства определенный предмет или определенное увеличение характеристик.
карта: http://evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg
Примеры статов:
- Hp: 420
- Объявление: 55
- Скорость атаки: 0,613 (атаки / с -> каждая атака в 1 / 0,613 с)
- пробивание брони: 25
Персонаж собирается автоматически атаковать врага с 1 / скорость атаки и наносить урон атакующим уроном (есть формула для расчета урона, но это не важно в этой фазе, я полагаю), когда они мертвы, переходя к следующему с движущейся скоростью ( можно увидеть лагеря на карте, желтые черепа)
Я думал об алгоритме:
Я подумал, что если я просто сделаю для от i = 0 до i = 30000 (считая мс), так что я могу просто проверять вражеский hp и мой hp, а также в каждую мс получалось так плохо (довольно тяжелый процессор, и я хотел бы положить в него случайное число, чтобы я мог суммировать итерацию 1k, что невозможно)
Во-вторых, я подумал, что я должен просто сделать for от i = 1 до 30, проверять каждую секунду и проверять, что произошло в последнюю секунду, но некоторые нейтральные монстры находятся в большом лагере (до 4 монстров), и таким образом код становился все сложнее и сложнее.
Я собираюсь создать темы для каждого игрока / монстров, и как только они закончат, посмотрите, когда они умерли, и уменьшите здоровье игрока.
Мой вопрос, это правильный путь?
TLDR: я бы хотел создать инструмент для анализа (итерации 1к и вычисления среднего) игры, увеличение статов которого заставило бы персонажа убивать быстрее нейтральных монстров.
Я бы предпочел java, но я застрял в алгоритме.
@Karoly S: Да, это плохо, .com -> .eu
Я работал над этим:
Я проверяю оставшееся время на каждом объекте (навык игрока, автоматическую атаку, баффы) и всегда выбираю кратчайшее время, сохраняю last_time и добавляю время ко времени, в следующем раунде я вычисляю время по (time- последний раз)
Если у объекта есть оставшееся время 0, он будет делать все, что ему нужно.
Я не знаю, насколько это эффективно или нет, но это лучшее, что я мог сделать.
Ответы:
Альтернативы покадровому моделированию:
Вы можете получить разумное приближение для моделирования по формуле, такой как
Вы также можете поддерживать очередь на перемещение, чтобы имитировать каждый шаг, а не каждый тик:
источник