Форумы-->Общий игровой форум--> <<|<|126|127|128|129|130|131|132|133|134|135|136|>|>>
| Автор | [News] Распутье тайн |
для Тёмный каратель:
У меня на этой волне отбедешило 10 стаков волков из 15. Фурки полтора раза успели походить | для Тёмный каратель:
И ьыло их на 16 столько же сколько и у тебя на 24) | для Demonariym:
Жëстко. А так волна прям создана для РС от готовности. Следущая аналогично:
https://www.heroeswm.ru/war.php?lt=-1&warid=1606877186 | https://www.heroeswm.ru/war.php?lt=-1&warid=1606606698
Да волки лёгкие даже если их одного типа сгенерило для атаки стаей, глава клана даже в бой не пришла, что уж ожидать | К сожалению, я не могу предоставить тебе исходный код HeroesWM или любого другого коммерческого проекта. Этот код является интеллектуальной собственностью разработчиков, и его публикация была бы незаконной.
Тем не менее, я могу предоставить тебе пример кода на Python, который иллюстрирует общую логику балансировки противников в rogue-like играх. Этот код – всего лишь демонстрация, и он не имеет никакого отношения к фактическому коду HeroesWM.
python
Копировать
import random
class Enemy:
def __init__(self, level, player_attack, player_defense):
self.level = level
# Базовые характеристики врага
base_attack = 10
base_defense = 5
base_hp = 50
# Корректировка характеристик врага в зависимости от уровня игрока
self.attack = int(base_attack * (1 + level * 0.1) + player_attack * 0.05)
self.defense = int(base_defense * (1 + level * 0.1) + player_defense * 0.05)
self.hp = int(base_hp * (1 + level * 0.1))
# Случайное изменение характеристик в небольшом диапазоне для разнообразия
self.attack += random.randint(-2, 2)
self.defense += random.randint(-1, 1)
self.hp += random.randint(-10, 10)
# Обеспечиваем минимальные значения характеристик
self.attack = max(1, self.attack)
self.defense = max(1, self.defense)
self.hp = max(1, self.hp)
def __str__(self):
return f"Враг (Уровень: {self.level}, Атака: {self.attack}, Защита: {self.defense}, HP: {self.hp})"
# Пример использования
player_level = 5
player_attack = 50
player_defense = 30
enemy = Enemy(player_level, player_attack, player_defense)
print(enemy)
# Пример боя (очень упрощенный)
player_damage = player_attack - enemy.defense
enemy_damage = enemy.attack - player_defense
if player_damage > 0:
enemy.hp -= player_damage
print(f"Игрок нанес {player_damage} урона. У врага осталось {enemy.hp} HP.")
else:
print("Игрок не смог пробить защиту врага!")
if enemy_damage > 0:
print(f"Игрок получил {enemy_damage} урона.")
else:
print("Враг не смог пробить защиту игрока!")
Разъяснения:
Enemy class: Представляет противника.
__init__: Конструктор класса. Он принимает уровень игрока, атаку и защиту игрока в качестве входных данных.
Расчет характеристик:
Базовые характеристики (атака, защита, здоровье) инициализируются.
Затем они масштабируются в зависимости от уровня игрока. Чем выше уровень игрока, тем сильнее враг.
Также добавляется небольшая зависимость от характеристик игрока (атака и защита). Это значит, что если игрок очень сильно вкладывается в какую-то характеристику, враг тоже немного усилится.
В конце добавляется случайность, чтобы внести разнообразие в параметры врагов.
__str__: Метод, который возвращает строковое представление врага, чтобы его было легко вывести на экран.
Пример использования: Код создает экземпляр врага, основываясь на уровне и характеристиках игрока, а затем выводит информацию о враге.
Пример боя: Представлен очень упрощенный пример боя. В реальности бой будет гораздо сложнее и включать в себя различные умения, заклинания и другие факторы.
Важные моменты:
Гибкость: Это всего лишь один из способов реализации балансировки. На практике используются гораздо более сложные системы, которые учитывают множество факторов.
Настройка: Ключевые значения (базовые характеристики, коэффициенты масштабирования, диапазон случайных значений) нужно тщательно настраивать, чтобы добиться желаемого баланса.
Тестирование: Крайне важно проводить много тестов, чтобы убедиться, что система балансировки работает корректно и обеспечивает интересный игровой процесс.
Помни, что это только пример! Реальная система балансировки противников в HeroesWM, вероятно, намного сложнее и учитывает множество других факторов. | | На НПС первый раз я проглотил на этой волне, кол-во мяса точно по нарастающей идёт, и когда ты сталкиваешься с высоко инициативными + дамажными жирными стеками, тебя начинают пороть. Приходится считать промахи/попадания, чтобы подгадать, ну и молитва рандому на промах когда обгоняют по ине. https://www.heroeswm.ru/warlog.php?warid=1606278879 | | Нейронка посмотрела на Пейна и решила что у нас рогалик? | для Marvelo:
Просто не бери духов в бой | для Marvelo:
Ну а если серьезно, то есть ощущение что можно было просто вампом в одном углу оборону понажимать | для Зыков:
Попроси нейросеть написать покороче и пояснее, что это значит | для Korvin Fikys:
По ощущениям, если я бил фулл стеками и дотянул до истощения, вампы в углу бы крякнули раньше, да и там ваншот от огненных птичек почти в любой стеками. Ну как нибудь протестирую, такой варик) 0 | Просто не бери духов в бой
)))))))))))))))))))) | Просто не бери духов в бой топ тактика
Быстрее умрешь, быстрее ослабится волна | для Liat:
Ну я играю и мне нравится, даже почти не ною на динамичность боёв когда на ивентах типо прошлого билд от фул атаки врага не пробивает с удачи даже | для binom:
Согласен, добить 3 ги надо. Но я жду день присоеденения или сертов. Времени в сутках не хватает | Быстрее умрешь, быстрее ослабится волна
Ну наконец-то кто-то научился думать вне рамок игры на корову! | https://www.heroeswm.ru/war.php?lt=-1&warid=1606297300
мой бой тут на нпс, перед эти было 2 слива уже
огненные птицы - вовсе не самое плохое тут | Да, самое плохое это 200 маны
Админу надо было не деф перекидывать в атаку, а знание выше 10 | Были бои, где 200+ с двумя скидками не хватало
Мяса просто ... очень много в охотах | | Вообще админу бы для всех фракций ограничить набор знания 15ю во избежания неспортивки, а НПСу просто особые условия на 10( ну там можно и варварам классикам не больше 5 сделать) |
<<|<|126|127|128|129|130|131|132|133|134|135|136|>|>>К списку тем
|