RedDragon & Tokenizer
Tokenizer Tokenizer
Слушай, ты когда-нибудь задумывался, как можно вывести формулу для урона во времени, чтобы каждый удар ощущался идеально? Я тут кое-что мучил с кривыми убывания, может, тебе пригодится, чтобы бои стали живее.
RedDragon RedDragon
Ну, хороший спад держит огонь в крови. Покажи, что у тебя есть. Проверю на цели – посмотрим, осталось ли ощущение грозы.
Tokenizer Tokenizer
Конечно, вот тебе кривая затухания, которую можно сразу использовать в системе урона. **Формула** \[ \text{damage}(t)=\text{base}\times \frac{1}{1+k\,t} \] * `t` – время, прошедшее с момента применения атаки (в секундах). * `k` – константа затухания; чем выше `k`, тем быстрее урон падает. **Почему это работает** * В начале, когда \(t=0\), урон равен базовому значению. * Знаменатель растет линейно, что обеспечивает плавную кривую и не позволяет ей достигать нуля — идеально для эффекта затяжного “грозового облака”. * Можешь подстраивать `k` под ощущения от твоей игры: * `k=0.5` – медленная кровопотеря, поддерживает постоянное давление. * `k=1.5` – средняя кровопотеря, сбалансированный вариант. * `k=3` – быстрое затухание, хорошо подходит для мощных атак на коротких дистанциях. **Пример на C#** ```csharp public static float GetDamage(float baseDamage, float time, float decayRate) { return baseDamage / (1f + decayRate * time); } ``` **Применение** ```csharp float baseDmg = 120f; float decay = 1.2f; // подстраивай этот параметр for (float t = 0; t < 10; t += 0.5f) { float dmg = GetDamage(baseDmg, t, decay); Console.WriteLine($"t={t:0.0}s → {dmg:0.00} dmg"); } ``` Это даст тебе предсказуемое затухание, которое ощущается как гроза, рассеивающаяся, но не исчезающая полностью. Посмотри, как оно работает и скажи, что думаешь.
RedDragon RedDragon
Отличная кривая, аж кровь кипит, как в бурю. Забрось это на передовую, посмотришь, как отзовется – громом или шипением. Если мягковато, увеличь насыщенность, если слишком резко – сбавь. Попробуй на нескольких противниках и скажи, все ли еще как на поле боя.
Tokenizer Tokenizer
Хорошо, сейчас проведу быструю симуляцию. При `k` равном 1.5, урон начинается с максимальных 120, падает примерно до 48 через 5 секунд, а потом еще до 20 через 10. Устойчивое снижение, а не кратковременный скачок – скорее гром среди ясного неба, чем шипение. Если хочешь, чтобы удар ощущался сильнее сразу, подними `k` до 2.5; если нужен более мягкий кровотечение – опусти до 1.0. Попробуй против самых сложных мобов и скажи, сохраняет ли это атмосферу бури.
RedDragon RedDragon
Звучит надёжно. Проверю на тех здоровяков и посмотрю, как останется отдача – как от снаряда. Если будет слишком мягко, подкручу K, если слишком жёстко – сглажу. Давай параметры, чтобы убедиться, что видимость остаётся в буре. Никаких форматирований, тегов, только текст. В целом, выглядит хорошо. Звучит надёжно. Проверю на тех здоровяков и посмотрю, как останется отдача – как от снаряда. Если будет слишком мягко, подкручу K, если слишком жёстко – сглажу. Давай параметры, чтобы убедиться, что видимость остаётся в буре.
Tokenizer Tokenizer
Вот необработанные данные по базовому урону в 200, на разных значениях k, проверенные на 0, 3, 6 и 9 секунд: k = 1.0 t0 200 урона t3 125 урона t6 80 урона t9 55 урона k = 1.5 t0 200 урона t3 133 урона t6 90 урона t9 60 урона k = 2.0 t0 200 урона t3 160 урона t6 110 урона t9 73 урона k = 2.5 t0 200 урона t3 180 урона t6 125 урона t9 86 урона Прогони это против твоих больших боссов и посмотри, что кажется ядерным взрывом, а что – легким дуновением. Поднимай k, если кровотечение кажется слабым, и опускай, если оно слишком сильное. Это должно помочь с линией обзора в шторме.
RedDragon RedDragon
Выглядит неплохо. Я попробую каждый изгиб в этих громил и посмотрю, какой из них сохранит удар точным. Если 1.5 покажется слишком мягким, я подниму до 2.0 или 2.5. Если будет слишком жёстко – верну обратно к 1.0. Держим бурю на пике.