![]() |
в общем почитываю тему. имхо, использование инженерного подхода и качественных источников делает етот мод весьма привлекательным для реализации. я бы его включил в свой реал пак :)
в чем конкретно проблемы с реализацией? что нужно конкретно сделать для реализации? типовые данные о бомбе: Цитата:
Цитата:
данные о бомбах нужны? Цитата:
Цитата:
|
Цитата:
http://img716.imageshack.us/img716/2994/135932.png |
Цитата:
Мое имхо, проще отработать то что есть. Ебо мусолить формулы это одно, а практически реализовать - совершенно другое. P.S. Трудно картинку в джепег пережать? |
Цитата:
именно этот параметр и отвечает за тип бомбы, насколько я помню. Существующих параметров вполне хватит, не надо ничего добавлять углублять и расширять! Изменение ДМ объектов - совершенно другая тема, хотя и зависимая. Если мы сумеем ввести в формулы тип бомбы, то вполне реально подогнать юомбы ближе к правильной зависимости. Заметьте - я говорбю о зависимости, а не реальных параметрах поражения. В общем хорошо бы, чтоб толковый перец свел в одну кучу всё что обсчитывается сейчас в игре. Чтоб знать от чего оттолкнутся. |
Цитата:
Просто взрыв Взрыв с долгим дымом (АЖ-2) Взрыв с пламенем. |
Цитата:
|
Цитата:
|
http://forum.aviaskins.com/showpost....4&postcount=46
Это формулы из игры по крайней мере в них не использован тип бомбы. А если ввести одну переменную=тип бомбы? Расчет будет идти так же по энергии, но её распределение можно в некоторых пределах регулировать. Например для домов тип=0 ( фугас) имеет коэффициент 1, а тип=1( осколочные) 0.5 Для пушек и машин - наоборот. Это очень упрощенно но уже действенно и безболезненно для процессора и программирования. |
Борада, а из каких классов ты ети формулы то выдрал?
про паур тайп гляну... |
Цитата:
|
тэкс, посмарел цепочку.
в общем бомба летит летит летит и встречаеться с землей. происходят всякие перетурьации, и запускаеться вот что Код:
protected void doExplosion(Actor actor, String s, Point3d point3d) { нас интересует MsgExplosion.send вот он: Код:
{ выделено- там где powertype 1 запускаеться 1 лишний метод(условно моно перевести как "пересчет осколков", т.е. вычисление кол-ва осколков. так что есть разделение :)) правда пока неизвестно, рассчитываеться ли повреждение от осколков...мб ето токо заготовка :) а вот собсна сам код взырвов: Код:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. собсна вот ото всего вот етого можете отталкиваеться...вот формулы моделирования взрыва в игре...сами формулы моно если что подрихтовать :) исходя из этого и стоитпересчитывать пармеетры бомб :) по воводу добавлений. скажу сразу, ето можно делать только В КРАЙНЕМ случае, если ето координально меняет картину. ибо сделать можно, но работы много( грю про ся, мб программер опытнее лучше сделает) |
и еще...учтите, что если рихтовать формулы, то эффект будет для ВСЕХ взрывов :)
----- а Борада как раз скинул пост с цитатами, объясняющими действие етих формул. вот такие дела :) |
ыыы.. а в человеческий язык можно перевести? А то я не врубаюсь что такое f а что f1 и прочее.....
Сами формулы работают то достаточно нормально, не надо их менять. А менять исходные данные. Ну и желательно всеж разделить осколочные, если этого нет. |
тэкс) а теперь вторая часть алгоритма просчета))
в общем, в представленном выше коде для каждого объекта есть своя модель взрыва. соотвественно, после запуска взрыва для каждого объекта вызываеться свой расчет повреждений и по ней ведеться расчет. если бомба осколочная, и объект чувтсивтелен: а ето танки,дома, самолеты к осколкам сначала идет расчет осколков вот по такому коду: количество осколков: Код:
00022 void computeSplinterParams(float f) Код:
00036 public float computeSplinterSpeed(float f) само поражение от осколков: Код:
00050 public void computeSplintersHit(Point3d point3d, float f, float f1, float af[]) еще есть для некоторых типов радиус, в котором возможно поражение. он называеться вот так, и рбаотает тоже так: Код:
static boolean com.maddox.il2.ai.Explosion.killable ( ActorMesh actormesh, теперь поехали по типам... Здания: расчет: Код:
{ Код:
if(Explosion.killable(this, explosion.receivedPower(this), prop.MIN_TNT, prop.MAX_TNT, prop.PROBAB_DEATH_WHEN_EXPLOSION)) Код:
float af[] = new float[6]; ------- для поездов, людей, кораблей, ракетной артиллерии(катюш чтоли?), парашютистов, мостов и самолетов: вот етот расчет(если я прально понял) Код:
{ Код:
float f = explosion.power; ------ для танков,артиллерии,машин, самолетов и статических юнитов вот ето: Код:
{ условие умирания на прмиере танка: от осколочных: Код:
от остальных бомб: Код:
else вот такие вот дела) в общем случае, идет расчет дамага(либо от осколков, либо от фугаса), потом он вычитаеться из лайфбара объекта :) иногда добавляетья еще область, в которой поражение зависит от рандома :) вот тако оно собсна рассчитывает...теперь зная ети формулы и способы вычисления осталось просчитать исходные параметры так, чтобы получалось похоже на нужный результат :) или если совсем косяки в формулах-подрихтовать формулы :) токо помните, что рихтовка формул отразиться на всех объектах данного типа! вводить новые параметры бомб, ровно как и менять типа объектов низя. |
итого...порядок причесывания имхо сводиться к такому.
1)знаем данные о реальных бомбах 2) вычисляем данные о эффекте РЕАЛЬНЫХ бомб 3) берем какую либо точку в зоне поражения, и сравниваем отношение эффекта от 2 бомб в реале. запоминаем ето отношение 4) берем данные о игровых бомбах, по формулам считаем дамаг для какогонибудь случая. например для авто. далее берем отношение етих дамагов в точке для двух бомб 5) сравнениваем отношение дамагов к отношению эффективности 6) если большое различие- правим игровые исходные данные, что различие уменьшилось. вот так :) мое имхо :) |
Чудненько! Спасибо за перевод! Думаем....
Цитата:
|
Вопрос, а при расчете осколков что передается функции
void computeSplinterParams(float f) PS Предварительный просмотр показывает, что достаточно тщательно просчитывается действие бомб ( лучше чем я ожидал). Теперь точно уверен что добавлять ничего ненадо. Единственно, есть одна хотелка - внести небольшую зависимость от задержки взрывателя ( а может уже и есть?) |
туда передается масса :)
Цитата:
|
Цитата:
При задержке близкой к нулю осколочные будут наиболее эффективны ( не зарываются в грунт - соответственно настильность осколков лучше) Соответственно если хотите наибольшую эффективность, забудьте от бомбежке с 5 м высоты. Иначе ставим 3-5 секунды ( как сейчас) и спокойно кидаем гладя цель брюхом. Согласен, это уже десятое дело, но если вдруг такое получится простым способом - это будет плюс. С другой стороны - при такой высоте (5-50м) будут ли в реале бомбы зарываться в грунт? Когда вертикальная скорость ниже горизонтальной |
Цитата:
но н едумаю что ето получиться просто. поясню: т.к. бомба и взрыв находятся в разных классах(а мб и в разных ветках) нужно будет налаживать передачу параметра bombdelay оно того не стоит... другой вопрос, что мб там уже передаеться bombdelay - то можно. хуже не будет :) |
Цитата:
Еще просьба, скинь мне весь класс в оригинале, удобнее будет скакать по нему. |
там классов более 25 штук где то :)
проще в оригинале их найти, чем кидать :) |
Короче, я подготовлю расчеты по реальным осколочным бомбам (кол-во осколков, убойный радиус, скорость осколков) и фугаскам. Чтоб было с чем сравнивать.
Я думаю снижение фугасного и осколочного эффекта с задержкой не помешало бы. А по поводу зарывания в грунт - смотрим на мое предложение по типу почвы. Если грунт обычный - зарываются немного при низком сбросе. Если дорога/бетонка - не зарываются. Я тогда попробую вывести эмпирический коэффициент для зарывания от высоты и влияния его на осколочное поражение. |
спрашивать тип почвы- ето проще.
высоту- лучше не надо.... проще принять что все бомбы падают с одной высоты. тем паче что у каждой бомбы все равно есть макс скорость,некоторые бомбы достигаюбт ее уже при сбросе с 1.5-2 км... |
А угол встречи с землей в расчете есть? Или в бомбе?
Я это кажется уже спрашивал... Думаю оно используется как параметр при расчете рикошетирования. |
Цитата:
Реальные взрыватели ставятся или на мгновенное действие(миллисекунды) или замедление не меньше 20 сек. Насколько помню. Но даже если ошибаюсь и бывает замедление 3-5 сек, то для игры это нехорошо. Цитата:
|
Цитата:
В реале, судя по рисунку, увеличение массы бомбы в 2 раза увеличивает радиусы поражения в 1.6-2.25 раза. В среднем в 1.93 раза. http://radikal.ru/F/s005.radikal.ru/...27d05.jpg.html У тебя по формуле при удвоении массы бомбы, увеличение радиуса происходит всего в 1.2 раза... У ОМа увеличение радиусов при удвоении массы бомбы, при условии одинаковости ВВ, такое же как в реале 1.6-2.2. |
Цитата:
в принципе можно достать,зная вектор скорости...и скорость есть... и рикошетирование есть(токо там береться по вертикальной скорости)...в общем вот: Цитата:
токо тут вот такая вот проблемко. приведенные выше код- ето код для БОМБЫ, а у взрыва- ето работать не будет. есть 2 варианта: 1) организовывать "связь" между 2 етими классами для передачи переменной. считаю этот вариант нерпиемлимым, ибо сложно 2) использовать существующую связь. мое предложение такое: в момент касания(но перед отправкой данных о бомбе в класс взрыва) запрашивать ети параметры и неким образом пересчитывать например параметр "power" или "radius"( пересчитывать параметры типа массы или момента инерции лучше не надо, т.к. ето будет дико смотреться) кстати говоря, могу обеспечить еще в етой формуле тип подстилающей поверхзности(вода\земля\дорога) раз уж пошла такая пьянка предлагаю добавить рикошеты от дорог... теперь же по поводу того, зачем ето нужно и что мы этим можем моделлировать. про угол падения: я так понимаю ты это клонишь к тому, что зона поражения с изменением угла из круглой становиться подобной овалу?сразу грю, такому в моде не бывать. ввиду того что везде в игре заложен круг,а править код для пересчета его в овал задача не такая тривиальная. увы=/ про глубину проникновения: тут без вопросов, будет :) в зависимости от вертикальной(или просто скорости) корректируем параметр "радиус" или "мощность". не вопрос, ето сделаем, лишь бы формула была :) по поводу задержки: сделать тоже можно, но ведь Вадим правильно написал вот, не было такого. посему выношу предложение ето не моделлировать, ибо ето в реале было невозможно. Цитата:
------ в общем, я свой фикс на бомбы после 3.00 для диаметров бомб закончил,думаю что нам нужно объединить моды :) если кстати делать пересчеты радиуса массы и т.п. для моделлирования глубины проникновения то мод нужно будет объединять с моей баллистикой.... короче, получаеться один большой бомбомод :) |
Цитата:
Цитата:
|
смещение центра взрыва...теоритически можно. но нужно сомтреть. ибо могут быть проблемы.
|
Цитата:
|
думаю что это возможно :)
в общем, математический аппарат а так же возможности я вроде бы расписал полнотью и достаточно подробно :) будут вопросы, пишите :) так же могу предоставить немного теории по конструкции авиабомб, если надо :) свои правки для аэродинамического сопротивления авибомб(20штук) я закончил, так что жду от вас конкретных цифр и формул, что куда вбивать :) когда будут цифры по бомбам - передам технологии для редактирования бомб и собсна сами правки :) |
Рикошет от дорог есть однозначно и причем давно. Мы на АДВ так по колоннам танков на штуках работали. Намного проще попасть, чем с пике ;) При удачном сбросе крыльевых подвесов и 2 танка можно было "сделать": одна бомба сразу в танк, другая "шлеп-шлеп-шлеп" до другого танка.
При наличии горизонтальной и вертикальной скорости бомбы угол встречи можно высчитать по тригонометрии (если принять округленно что ось бомбы совпадает с вектором скорости). Тогда по березанской формуле можно рассчитать глубину проникновения в грунт (если нет рикошета). По поводу взрывателей тоже можно подшаманить. Проверить по типам и считать независимо от того, что юзверь выставил в параметрах. Если 0.0 - взрыв мгновенный, если больше 0 - ждем-с положенные 20-22 сек. Это если по нашим бомбам. С немецкими немного не все однозначно. Там электрический взрыватель и зависит от емкостей. Хотя данных по их взрывателям тоже много - найти не проблема. По поводу втыкания бомб в грунт при высокой горизонтальной скорости. Большое кол-во мелких осколочных бомб переделывалось из снарядов. У них форма более остроконечная. По идее, должны все-таки втыкиваться, но если нет рикошета. По поводу поля поражения при угле встречи, отличном от 90 град. При сильных углах наклона зона поражения из круга переходит в 2 расходящихся треугольника. При моделировании такой зоны поражения чаще всего используют приведенную площадь - а это прямоугольник с длинной стороной перпендикулярной оси бомбы. Но если уж пересчет с круга на овал (или прямоугольник) делать не будем - сильно ужимать радиус поражения тоже не совсем хорошо в игровом плане. Нужен какой-то компромис. |
Цитата:
На приведенной ссылке нарисовано действие бомб по зданиям. Я считал по автомашинам и граничные давления брал из Балаганского. Для зданий есть определенные нюансы, поэтому я пока действие фугасов не рассматривал. Тут бы с техникой сначала разобраться. |
Цитата:
Цитата:
можно сделать всем либо 0, либо 22. но думаю етон епроканает. Цитата:
|
Цитата:
Замедление в 2 или там 5 секунд очень сомнительно, а в игре приводит к клоунаде – сбросам по бронетехнике с минимальных высот и сажанию на бомбы. |
Цитата:
|
Вложений: 1
Цитата:
Цитата:
|
Цитата:
Взрыватель АДП (донный) время задержки 5-22 секунды. Применялся вместе с АГП, для обеспечения безотказного действия бомбы. |
Цитата:
Во всяком случае для РС в игре это есть. Можете проверить простым экспериментом... Я это наблюдал и происходило следующее: если РС подрывался перед целью ( недолёт) то в подавляющем большинстве случаев объект (МЗА\автомобиль\сетка) уничтожались....если же снаряд разрывался позади цели ( перелёт) то в большинстве случаев объект оставался не уничтоженным. Это если расстояние недолёта\перелёта были одинаковыми. Как с бомбами точно не знаю..но по моему этот эффект тоже имеет место быть при бомбёжке танков с малых высот. |
Текущее время: 16:00. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot