Перейти к содержимому

Teleporter

Игроки
  • Публикации

    122
  • Зарегистрирован

  • Посещение

  • Бои

    60613
  • Клан

    [BOR-P] BOR-P

Портал игры

Достижения пользователя Teleporter

Сержант

Сержант (5/14)

69

Оценка

  1. После боя пополняются не только снаряды, но также ремки, аптечки, доп.паёк, инструкции (если вы их используете) и т.п. что у вас потратилось в бою. Если ремка или аптечка в бою не использованы, то они останутся, а к примеру доп.паёк потратится в любом случае.
  2. А я увидев футбольное поле было обрадовался что снова запустят режим с танковым футболом. Но, к сожалению - нет! А мне он очень нравился.
  3. Знания сила! Например, понимая как считается разброс, можно значительно уменьшить разброс своего орудия, применяя простое правило: одновременно двигать только чем-то одним - либо ехать, либо поворачивать корпус, либо водить стволом - в этом случае не будет происходить сложение разброса от каждого вида движения. Это особенно полезно применять на артиллерии и танках с большим разбросом или временем сведения - пока вы едете на позицию - зажимаете правую кнопку мыши (ПКМ), чтобы башня и ствол не двигались. Остановившись, всё ещё держите ПКМ и поворачиваете корпус в направлении цели (чтобы цель оказалась в секторе наведения орудия) и уже став неподвижно, отпускаете ПКМ и наводите орудие - такая методика позволяет примерно в 2 раза сократить разброс орудия и соответственно быстрее сводиться. По этой же причине опытные игроки заранее (ещё стоя за укрытием) наводят ствол на цель, дожидаются полного сведения и только потом выкатываются для выстрела так, чтобы уже не вращать корпусом (чтобы не добавлять разброс). По этой же причине выкатывают на 1-й скорости (т.к. разброс увеличивается пропорционально скорости). Ещё она фишка - когда у вас кританули башню (не орудие, а только башню) и она стала вращаться медленнее - не всегда есть смысл сразу же её чинить: Если у вас не динамичный ближний бой, когда важно успеть довернуть ствол за противником, а стоялово с выцеливанием дальнего противника - тогда медленный поворот башни наоборот уменьшает разброс орудия т.к. он пропорционален скорости поворота башни.
  4. Вашу идею понял, но увидел как и у многих других игроков неправильное понимание того, что означает параметр "время сведения" в игре. Это не то время за которое танк полностью сведётся - а время, за которое круг разброса уменьшится в 2,718 раз (это число e=2,71828182845905..., вообще оно бесконечно но для расчетов достаточно округлённого значения). К примеру у танка время сведения =3 сек. Допустим круг разброса был в 20 раз больше - тогда через три секунды он станет меньше в 2,718 раз, т.е. станет кратен 7.36, через 6 сек (он станет ещё в 2,718 раз меньше, т.е. станет кратен 2.7, и лишь через 8,987 сек круг сведения уменьшится до 1, т.е. сведётся полностью. Таким образом время полного сведения определяется по формуле: время полного сведения = Ln(текущий разброс)*время сведения где Ln - это натуральный логарифм. Возьмём Ёлку (ELC Even 90) с базовыми характеристиками: (часть характеристик вы можете посмотреть в клиенте игры, но многие параметры, такие как коэффициенты разброса там не показываются - их вы можете посмотреть на сайте http://tanks.gg ). Когда она стоит неподвижно и полностью сведена, то круг разброса на дальности 100 метров у неё равен 0,36 м. Но стоит ей повести стволом - круг разброса увеличивается. Причём чем быстрее вы ведёте курсор тем больше он становится - если дёрнуть максимально резко, то ствол начнёт поворачивать за курсором с максимальной скоростью 47,98 градусов в секунду (смотри на сайте https://tanks.gg/v13800ru/tank/elc-even-90 параметр "Turret traverse (°/sec)", а в разделе "Dispersion factors" для "turret traverse (+)" указан коэффициент 0.16 - это значит что при максимальной скорости поворота ствола круг разброса станет больше в 7,68 раз ( 0,16*47,98). А если он при этом ещё и поедет то с каждым набранным км/ч скорости круг разброса будет увеличиваться на 0,19 - это значение параметра "moving (+)", т.е. если он наберёт скорость 70 км/ч то круг разброса станет больше ещё на 13.3 раз больше относительно базового. Т.е. если танк будет ехать 70 км/ч и максимально быстро при этом вращать стволом - разброс складывается 13.3 + 7.68 = 20,98 раз. Если он ещё и корпус будет поворачивать это ещё добавит разброс (см. коэффициент "tank traverse (+)" - он умножается на скорость поворота корпуса). При выстреле круг разброса увеличивается в 4 раза (см. параметр "after firing (+)" ). При повреждении орудия текущий разброс увеличивается в 2 раза - см. параметр damaged (× )" . Вот игра и считает в каждый момент времени какой текущий разброс добавляется в зависимости от всех этих факторов (скорость поворота ствола, скорость поворота корпуса, скорость движения, стрельба, состояние повреждения орудия) и если какой-либо из этих факторов становится меньше, то текущий разброс начинает уменьшаться в "е" раз за время сведения.
  5. По поводу вашего предложения - вы его не развернули полностью, а по той короткой части, что вы написали - я его суть не понял. Объясните, пожалуйста, подробнее.
  6. А вы последствия баланса по скилу осознаёте? Сейчас вас кидает в разные по скилу команды случайным образом, и в среднем половину боёв у вас более скиловый состав, а вторую половину - менее скиловый, но в среднем (при большом количестве боёв) распределение получается одинаковым. А если раскидывать по скилу - то самых скиловых игроков начнёт чаще балансить в самые слабые команды и их процент побед начнёт падать (потому что противоположная команда всегда сильнее а твоя всегда слабее) т.к. в одиночку они все бои не смогут вытянуть. А для слабых игроков будет обратная ситуация - они чаще будут попадать против слабых и чаще выигрывать т.к. в их команде будут для равновесия добавлять более сильных игроков. И в итоге через некоторое время процент побед у всех игроков станет выравниваться примерно к одному значению, и игроков с 75% и 34% побед уже просто не останется - всех подровняет под 48%+-5%. И это несмотря на то, какой вклад игрок делает в бою. Т.е. хоть ты укакайся и тащи бои - тебя всё равно уравняет. А те, игроки которые откровенно вредят собственной команде (34% игроки) их всё равно балансировщик будет поощрять - кидая в сильные команды и подтягивая их результат к средним значениям - это вы называете справедливым? Это однозначно отвадит сильных игроков от игры - кому захочется всегда играть в более слабой команде и наблюдать за тем, как его за все старания игра только наказывает, а бестолочей, не желающих учиться на своих ошибках, поощряет?
  7. Так ведь так и сделано в данный момент (рассмотрите график внимательней) - видите первые 10% радиуса - вероятность попаданий в него в 2 раза ниже чем в кольцо от 10% до 50% радиуса - отсюда и частые промахи даже при полном сведении: https://forum-mt-prod.lesta.ru/monthly_09_2025/post-22519702-0-23425600-1758991540.png Именно поэтому и предлагаю чтобы при полном сведении и ещё секунды неподвижного выцеливания алгоритм распределения попаданий заменили на нормальный
  8. Ага, и тут же рисует график https://forum-mt-prod.lesta.ru/emoticons/Smile_blinky.gif
  9. Уважаемые разработчики! Прошу добавить в игру повышение точности попаданий в случае, когда круг сведения достиг минимума и после этого танк стоит неподвижно более секунды (т.е. когда и корпус и ствол неподвижны). При этом радиус круга разброса не нужно менять - достаточно сменить алгоритм разброса с текущего (с пониженным процентом попаданий вблизи центра) на нормальное распределение. Тем самым (оставив прежний алгоритм до полного сведения) вы исключите большое количество попаданий с вертух - а когда игрок полностью свёлся и хорошо прицелился - это вознаграждается попаданием туда, куда целился. https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-89328600-1759927359.pnghttps://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-58154300-1759927420.png
  10. https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-97575200-1759727806.png Реализация трёх вариантов вычисления интеграла (методом трапеций, методом Симпсона (парабол), и разложением в ряд Маклорена) приведена в Excel-файле: http://cdn-frm-ru.lesta.ru/4.6l/style_extra/mime_types/doc.gif Вычисление интеграла 3 способами.xlsx 49,36К Функция на исследуемом отрезке рассматривается как сумма простых функций fi(x), каждая со своим коэффициентом aiт.е.: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-48104000-1759792636.png Например, в виде многочлена: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-88913200-1759792713.png В этом случае, взяв значения n-точек графика (xi, yi) и подставив их в уравнение вида: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-85136800-1759792796.png Мы получим матрицу, решив которую мы найдём коэффициенты ai Решение возможно различными методиками – я для решения использовал метод Гаусса (макрос в xlsm-файле - https://cloud.mail.ru/public/Q5rV/NU2C2ubwd). Вместо функций xn можно подставлять и другие элементарные математические функции (1/x, Корень(x), Ln(x), ex, и т.д.) если вы видите по графику что эти функции больше подходят. Для случая с поиском функции R(x) для нормального распределения подобрать одно короткое уравнение для всего множества значений не удаётся, т.к. график при приближении к 1 резко стремится вверх (если бы мы рассматривали весь диапазон чисел, а не ограничивались значениями от 0 до 1 то график бы вообще стремился к бесконечности) и для получения значений с требуемой точностью потребуется многочлен как минимум из 25-30 элементов (я для пробы подобрал функцию по 16-ти точкам и даже с таким количеством элементов погрешность вблизи единицы достигала 0,05 (а это многовато – при проверке на графике нормального распределения эти погрешности заметны (см. на рисунке - R(x)=0,375671592765802*x+0,14110597611776*x^3-3,12888304182395*x^5+92,0450211965136*x^7-1440,47820247473*x^9+13983,7655249723*x^11-90454,7355840174*x^13+406763,967960942*x^15-1303717,17055792*x^17+3015459,36369667*x^19-5040848,11728308*x^21+6027759,54399308*x^23-5023191,85046759*x^25+2768931,5365855*x^27-906904,212700489*x^29+133569,954118672*x^31). https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-58472400-1759793260.png Поэтому, чтобы уравнение было коротким (дабы сервер игры не тратил много ресурсов на длинные вычисления), его следует разбить на несколько отрезков – в этом случае каждый из отрезков можно подобрать более точно. Но для того чтобы отрезки плавно переходили из одного в другой (без изломов/перегибов), следует в точке перехода подбирать одинаковую производную – тогда линии будут соединяться под одним углом (без излома). Например, на отрезке от 0,75 до 0,9 я использовал разложение по 3 точкам и двум производным (одну в начальной, а другую в конечной точке отрезка): https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-09566500-1759793444.png Производные вычислены благодаря второму свойству обратной функции.
  11. Для тех, кто не в теме и любителей математики и программирования: Для имитации случайного отклонения снаряда от центра прицеливания чаще всего берут пару случайных чисел, на основе одного из которых выбирают радиус R(расстояние от центра мишени до точки попадания), а второго - угол отклонения α. https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-13045100-1759723447.png Стандартная функция генерации случайного числа формирует числа, равномерно распределённые по всему диапазону формирования. И если подставлять её напрямую как R=случайное число, то на всём диапазоне расстояний вы получите одинаковую плотность попаданий: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-32897200-1759723511.png А в реальности распределение плотности попаданий имеет так называемое «нормальное распределение» - когда вблизи центра вероятность попаданий максимальна, а чем дальше от центра, тем меньшее количество попаданий. Функция «нормального распределения» описывается формулой: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-76936200-1759723659.png Где µ - среднее значение, σ - среднеквадратическое отклонение Т.к. в нашем случае среднее значение µ равно 0, то упростив получаем функцию: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-35587800-1759723766.png Если взять первообразную от функции φ(x) то получим функцию распределения Ф(x), показывающую сколько попаданий будет в пределах от 0 до X https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-95033500-1759723861.png Её график очень похож на график переходного процесса, хорошо знакомый студентам технических ВУЗов (но лишь похож):https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-59248300-1759723974.png m– это масштабирующий коэффициент, позволяющий привести площадь фигуры на диапазоне от -∞ до +∞ к 1. Если брать только половину графика от 0 до +∞, тогда для приведения к единице масштабирующий коэффициент следует брать в 2 раза больше, https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-87379500-1759724348.png Получить интеграл от φ(x) в виде конечной комбинации элементарных функций пока не удалось (кстати именно эту функцию рассматривали в фильме «Одарённая» 2017 г. - можете глянуть тот самый фрагмент фильма - https://www.youtube.com/watch?v=0Ne1R94mFrA&t=6s). Как же был получен его график? Это возможно несколькими путями: 1) Численное интегрирование: А) Методом трапеций (когда вся площадь разбивается на ряд трапеций): https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-59038500-1759724454.png https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-73851000-1759724518.png Вычитаемое в конце формулы - это примерная погрешность, где f´´( ξ ) - вторая производная функции в точке, где она максимальна. Например, в случае разбиения нормальной функции на 100 отрезков в промежутке от 0 до 1 мы получаем шаг h=0,01 – этим методом у меня получилась погрешность 0,00042 (4,42E-05) Б) Методом Симпсона (когда график на промежутке из каждых трёх равноотстоящих точек заменяется на параболу, т.е. уравнение вида y=Ax2+Bx+C https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-65333600-1759724618.png А площадь для параболы вычисляется по формуле: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-56860900-1759724697.png Этот метод даёт лучшую погрешностьhttps://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-91495700-1759724760_thumb.png, в моём примере погрешность не превысила 0,000000007562 (7,56203E-09) В) Методом Ньютона-Котэса (в этом случае график на каждом из участков заменяется кривой по 7 точкам разложения): https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-58153100-1759724829.png 2) Но максимальную точность позволяет получить разложение исходной функции в ряд Маклорена: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-21909500-1759724911.png https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-41570500-1759724955.png Тогда для нормального распределения мы получим: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-82391800-1759725106.png https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-05978600-1759725190.png А уже от ряда интеграл вычисляется легко: https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-43390700-1759725313.png И в итоге получаем ряд для функции распределения, напомню, что https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-69095200-1759725478_thumb.png https://forum-mt-prod.lesta.ru/monthly_10_2025/post-22519702-0-33286100-1759725543.png А m-это масштабирующий коэффициент, который позволяет привести график к 1 когда x=∞. Но так как в нашем случае все случайные числа располагаются в диапазоне от 0 до 1, то нам нужно подобрать такой коэффициент m– чтобы график стал равен 1 при х=1. Как видно из уравнения ряда – коэффициенты ряда при увеличении n становятся всё меньше в результате деления на n! и когда величина очередного коэффициента станет меньше чем требуемая погрешность, дальнейшие вычисления можно остановить т.к. требуемая точность уже достигнута. Например, в Excel-е максимальная точность это 15 знаков, соответственно если я возьму σ=0.3, то требуемую точность я получу уже при n=35 (ну для различных значений σ я взял с запасом ряд из 45 элементов). Итак, график функции распределения y=Ф(х) мы получили. А теперь требуется найти обратную функцию y=R(x), такую, чтобы: R(y)=Ф(x). Эта функция и будет тем уравнением, в которое нужно будет подставлять случайное число чтобы получить нормальное распределение попаданий. У обратной функции есть такие свойства: 1) Она симметрична графику исходной функции относительно прямой y=x, т.е. её график мы можем построить, используя координаты точек графика исходной функции Ф(x), но поменяв местами Xи Y в каждой точке. 2) Производная обратной функции в точке Y, равна 1 делённой на производную исходной функции в точке X, т.е.: R´(y)=1/Ф´(x) А т.к. производной Ф´(x) является функция нормального распределения φ(x), то получаем: R´(y)=1/φ(x) Используя эти свойства, мы получим все координаты графика y=R(x) и производные функции R´(x) в каждой точке графика. Используя это, можно подобрать уравнение функции R(x). Как это делается?
  12. Ежели это правда, тогда смысла действительно нет, единственная польза в тренировке мозгов
  13. Может и так, но я сужу с точки зрения игрока и мне больше хочется чтобы больше снарядов попадало туда, куда я целю, а не куда-то рядом. И судя по всему разработчики тоже не против этого - сам патч 1.36.1 был именно шагом навстречу желаниям игроков, которые жаловались на то, что снаряды летят куда угодно (в землю, в воздух, в более бронированную часть танка), но не туда, куда целишь. А чтобы КВ-2 с вертух не попадал ему для этого напрямую в параметрах орудия круг разброса увеличили и скорость сведения снизили.
  14. Уважаемый Rhot у меня всё в порядке, и вам того же желаю. А вы видимо не полностью всё прочитали и проанализировали (возможно не прошли по ссылке и не изучили график со статистикой попаданий). Та реализация распределения, которая была в патче 1.36.1 и которая как вы пишете вас устраивала, давала проседание по попаданиям вблизи центра, т.е. в круг примерно до 0,1 радиуса снаряды летели в 2,5 раза реже чем должны были бы при нормальном распределении. Для наглядности посмотрите как выглядит график "нормального распределения" - и сравните с собранной статистикой попаданий.https://forum-mt-prod.lesta.ru/monthly_09_2025/post-22519702-0-12626300-1758990899.png
  15. Здравствуйте уважаемые разработчики! Посмотрел статистику попаданий (https://wotstat.info/mt-36-1) https://forum-mt-prod.lesta.ru/monthly_09_2025/post-22519702-0-23425600-1758991540_thumb.png и, судя по графику распределения попаданий, получается что у вас есть сложности с получением нормального распределения. 1) Сам график распределения попаданий получается не плавным, а ступенчатым и очень далёким от колокола нормального распределения. 2) Процент попаданий в отрезке от 0 до 0,1 радиуса у вас получается ниже, чем на отрезке от 0,1 до 0,48 радиуса. Эти ступеньки - следствие того, что всё уравнение для нормального распределения было разбито на несколько участков (отрезков см. на рисункеhttps://forum-mt-prod.lesta.ru/monthly_09_2025/post-22519702-0-54003800-1758991825_thumb.png), но уравнения на этих участках подобраны недостаточно тщательно. Стыковка отрезков на границах участков получается не гладкой (с одной касательной) а ломанной. А каждый излом как раз и даёт ступеньку. Дело в том, что график PDF является производной 1-й степени от графика CDF, а производная - это тангенс угла наклона линии графика, соответственно когда линия графика резко перегибается (переламывается) то в графике производной это выглядит как перескок с одного значения на другое - что и создаёт "ступеньку". Чтобы графики стыковались плавно, нужно чтобы в точках сопряжения совпадали производные соединяющихся отрезков. Я сделал все требуемые вычисления с учётом этого требования и предлагаю вам готовые уравнения для получения правильного "нормального распределения" по Гауссу: ДиапазонУравнение 0 - 0,75 R=0,375671592765836*x+0,095964173298865*x^3+0,0807951581717388*x^5-0,0635333888836636*x^7+0,155894658332993*x^9 0,75 - 0,9 R=0,807768306336985*x-2,7334862512604*x^3+7,03934136300166*x^5-7,68885984089489*x^7+3,30120236497148*x^9 0,9 - 0,96 R=42,5020775774326*x-203,59316925594*x^3+370,038671833915*x^5-299,378678328637*x^7+91,2384509829847*x^9 0,96 - 0,98 R=1416,0781451066*x-6138,93225839954*x^3+9988,68312519719*x^5-7227,96372021383*x^7+1963,00623241842*x^9 0,98-0,994 R=58811,9222175516*x-243279,370638671*x^3+377406,374343968*x^5-260233,588278112*x^7+67295,6035622121*x^9 0,994 - 1 R=9437825,64281332*x-38095783,919153*x^3+57665261,1371569*x^5-38794510,0892061*x^7+9787208,22838889*x^9 где R - это радиус (т.е. величина отклонения снаряда от центра мишени), а X - это случайное число (в диапазоне от 0 до 1). Итог даст плавное нормальное распределение с 90% попаданий внутри круга радиусом 0,5 (погрешность этой аппроксимации 6 знаков после запятой для начальных отрезков диапазона (чем ближе к 1 тем больше график стремится вверх к большим числам и потому там погрешность снижается до 3 знаков после запятой) Если предлагаемые мной функции слишком тяжелы для реализации в игре (по быстродействию), то могу предложить очень быстрый и простой алгоритм: Берём 4 случайных числа (одно новое и три запомненных в предыдущие разы), складываем их, делим на 2, отнимаем 1 и берём модуль. т.е. R=ABS((RND()+RND()+RND()+RND())/2-1) Самое старое из трёх запомненных случайных чисел удаляем, а новое случайное число добавляем к запомненным. В этом случае для каждого выстрела достаточно будет генерировать только одно случайное число, (из него и трёх предыдущих случайных чисел вычисляется Радиус разброса, и это же случайное число можно использовать для получения угла разворота это радиуса). Этот алгоритм даёт в среднем 91,66% попаданий внутри круга радиусом 0,5 и очень быстр (единственный его недостаток - невозможность вручную задать требуемый % попаданий) Для демонстрации работы этого алгоритма прилагаю файл в Excel-е http://cdn-frm-ru.lesta.ru/4.6l/style_extra/mime_types/doc.gif Алгоритм нормального распределения из 4 случайных чисел.xlsx 1,19МБв котором вы можете наглядно увидеть получающийся из этого алгоритма график распределения.https://forum-mt-prod.lesta.ru/monthly_09_2025/post-22519702-0-34893800-1758992334_thumb.png Если вам интересно - могу также дать пояснения как я производил вычисления уравнений для первого варианта и выложить готовые файлы с макросами и демонстрацией результата.
×
×
  • Создать...