Это популярное сообщение. Dennis_Chikin 3 665 Опубликовано 30 Января 2015 Это популярное сообщение. Поделиться Опубликовано 30 Января 2015 (изменено) Судя по регулярно происходящему в других темах - таки нужна.Вот здесь как раз можете спросить про "зачем создали эту тему ?" А также про ООП, про как заниматься моддингом и его устарелости неустарелости, кто как его себе представляет и т.д. В общем, для много слов "обо всем". Что в более специализированные темы не лезет, но поговорить давно хотелось и хочется. Но таки да, пп 2.0, 2.1 и даже 2.5 правил здесь вполне таки действуют. Изменено 30 Января 2015 пользователем Dennis_Chikin 5 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-912783
Expropriator 2 119 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Вылет аи-сетки по компиляции упирался в мах. память оперативы или в `3Gb? Что то я запамятовал. Надо как то научить нпс видить ГГ когда он не на сетке. Монстры же видят его, например Химера, легко вылетает за пределы сетки в атаке на ГГ. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194853
Змея 247 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Просто имхо движок при имеющихся параметрах прыжка химеры не справляется с просчетом того, где она окажется после прыжка. Как результат - либо она приземляется на сетку, либо потом мы видим распространенный вылет - "зверушка зашла не туда". Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194863
Expropriator 2 119 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 @Змея, в движке ЗП видел химеру, вне аи сетки, забуксовавшую, после того как она прыгнула на ГГ, когда тот был вне аи сетке. Вылета не было. Я, будучи ГГ, подходил к химере и она еще умудрялась кусаться. А может я уже вру на счет кусачести, но остальное правда. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194871
Змея 247 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Сохранялся - загружался в этот момент? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194876
Expropriator 2 119 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 @Змея, давно было не помню про сохранки. Это было дело на новой локации, которую я тестировал, потому я там аи-сетку знал хорошо где и как. Короче, я решил не делать в русле реки аи-сетку. Проходя мимо химеры по воде, я и напоролся на такой прыжок. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194893
Malandrinus 623 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 23 hours ago, НаноБот said: проверять проходимость габарита НПС надо, хотя бы чтобы непыси не упирались в вдруг друга Размер ячейки сетки в 0.7 метра (если правильно помню) очевидно выбран с учётом габаритов человека в плане. Если неписи ходят по сетке, то пересекаться не должны. А если они упираются друг в друга, то это никакого отношения к габаритам не имеет, а является дефектом алгоритма навигации, когда не учитывается занятость ячейки сетки. К сожалению, иногда размера ячейки не хватает для габаритов существа в плане, например для псины в плане, отчего зад псины и может залезть в стену. Но тут уж ничего не поделать. Хотя может и можно что-то поделать, если при навигации занимать не одну, а две ячейки. В конце концов, есть и крупные монстры, типа псевдогиганта, которые явно крупнее одной ячейки. А может там так и делается, я не разбирался в этой части движка. Алгоритмы для этого давно есть и использовались ещё в доисторических играх, где клетки для перемещения были видны явно (типа пошаговой UFO). Там существовали юниты, занимающие 4 клетки, и это учитывалось при навигации (например, они не пролезали в дверь). Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1194949
НаноБот 762 Опубликовано 18 Августа 2018 Поделиться Опубликовано 18 Августа 2018 Не знаю, не знаю, трассировкой можно надёжно пофиксить эти проблемы, трассировка занимает 20000-40000 тактов в среднем, я проверял. Так что это не так уж ресусоёмко. Так же смог пофиксить проблему стрельбы НПС по динамичным объектам, ХЕН смог сбить вертолёт, который летит со скоростью 30 м/с, на дистанции метров 150-200. Надо лишь наведения на цель апдейтить в режиме фастапдейт, а так же рассчитывать упреждения. Я это всё сделал, конечно для XRayExtensions. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1195487
Expropriator 2 119 Опубликовано 20 Октября 2018 Поделиться Опубликовано 20 Октября 2018 Как добавить в игру Сталкер второй фонарик, что бы он был с тем же классом, но с новыми характеристиками? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1206705
НаноБот 762 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 (изменено) Столкнулся с одной проблемой. Делаю салют для сталкера, т.е. салютная установку стреляет люсткугелями, которые взлетев на определённую высоту, взрываются и разбрасывают звёздки. Звёздки на классе взрывчатки, партиклы скриптовые. Так вот, через некоторое время следует вылет, исключение в файле DetailManager_VS.cpp, строка 203, нулевой указатель, это ТЧ. Так же вылет и в ЗП, переполнения стека. Я так понял, это происходит из-за неправильного вызова деструктора партиклов, да именно партиклы виноваты, и скорей всего Lua виноват, по идеи, должна быть функция деструктора партиклов, в противовес конструктора particles_object, но её нет, вроде как деструктор должен вызываться автоматически, не знаю, может и вызывается, но точно делает это не правильно. Вывод, языки у которых деструкторы вызываются автоматически, говно, например жаба. Ассемблер форева. Изменено 28 Декабря 2018 пользователем НаноБот ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1219401
Malandrinus 623 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 On 12/28/2018 at 5:27 PM, НаноБот said: языки у которых деструкторы вызываются автоматически, говно, например жаба. Ассемблер форева. С чем бы это сравнить. Вот представь себе компанию, массово производящую автомобили, Mercedes или там GM. Сотни инженеров, месяцами работающие над каждой деталью, сложнейшая логистика, высочайший уровень автоматизации и прочее в этом роде. Теперь приходит такой механик из сельской автомастерской и говорит: "Гавно эти ваши инженеры и роботы. Напильник, молоток и гаечный ключ форева." 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1219764
НаноБот 762 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 @Malandrinus, да я пошутил. Но реально, партиклы в Lua автоматически не удаляются, требуется сделать функцию particle_destroy(obj), само не удаляется. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1219863
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 Кто в физике/математике разбирается, подскажите пожалуйста, как рассчитать силу, которую нужно приложить к гранате по трем осям, что бы она долетела до указанной точки? Чую, ускорение свободного падения тут участвует. Может @abramcumner подскажет? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223217
Опричник 5 490 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 @dsh, Это баллистика уважаемый. В 1945 году, для таких расчётов американцы специальную машину построили. ENIAC назывался. Так что расчёты эти, как я понимаю весьма не просты. ¯\_(ツ)_/¯ Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223225
abramcumner 1 234 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 (изменено) 3 часа назад, dsh сказал: Кто в физике/математике разбирается, подскажите пожалуйста, как рассчитать силу, которую нужно приложить к гранате по трем осям, что бы она долетела до указанной точки? Чую, ускорение свободного падения тут участвует. Может @abramcumner подскажет? Именно силу? А то еще Галилей открыл, что гранаты летают по инерции(в полете на них не действуют никакие силы кроме силы тяжести). Граната отправляется в полет со скоростью V, которую приобретает за время маха. Можно задать через импульс(m * V). По x и z равномерное движение со скоростями Vx и Vz, формула S = V * t -> t = S / V По y равноускоренное движение S = V * t - g * t * t / 2 -> t = V +- sqrt(V * V - 2 * g * S) / g В точке назначения граната должна оказать одновременно по все трем осям одновременно, получается: Sx / Vx = Sz / Vz = Vy -+ sqrt(V * V - 2 * g * Sy) / g Выбираешь значение скорости по любой оси и вычисляешь значения для остальных двух. Если задать условие, чтобы запускать гранату с наименьшей скоростью, у меня получилось такие формулы: Vx,z = Sx,z * sqrt(g / D) / 2, Vy = (Sy + 2 * D) * sqrt(g / D) / 2, где D - расстояние до указанной точки. По идее в АМК должны быть те же самые формулы - там же пускали гранаты. 2 часа назад, W.A.S.P. сказал: Так что расчёты эти, как я понимаю весьма не просты. Шел 2019 год... Изменено 5 Января 2019 пользователем abramcumner 4 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223350
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 3 minutes ago, abramcumner said: там же пускали гранаты Там эмпирически подобранные константы: local bone = get_grenade(id):get_physics_shell():get_element_by_bone_name("wpn_body") local dir=utils.vector_copy_by_val(target):sub(get_grenade(id):position()) dir:mul(1300) if typ=="lo" then dir:add(vector():set(0,8000,0)) else dir:add(vector():set(0,19000,0)) end if bone then bone:apply_force(dir.x,dir.y,dir.z) end 5 minutes ago, abramcumner said: Vx,z = Sx,z * sqrt(g / D) / 2, Vy = (Sy + 2 * D) * sqrt(g / S) / 2, где D - расстояние до указанной точки. Мне кажется, что в этих формулах еще должна как-то учитываться масса гранаты? А понял, скорость по каждой оси еще нужно умножить на массу гранаты? Не могу понять, что в формулах обозначает S? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223356
ed_rez 16 113 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 10 минут назад, dsh сказал: то в формулах обозначает S? Дык это, расстояние же. Или что-то не так понял!? 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223364
abramcumner 1 234 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 (изменено) 19 минут назад, dsh сказал: Не могу понять, что в формулах обозначает S? Sx = dest.x - pos.x, dest - координаты точки назначения, pos - координаты точки отправления. Sy = dest.y - pos.y, Sz = dest.z - pos.z. Просто S - это непереименованная D = dest.distance(pos). Мне кажется, что в этих формулах еще должна как-то учитываться масса гранаты? А понял, скорость по каждой оси еще нужно умножить на массу гранаты? Да, если задавать через импульс, надо еще на массу умножить. Изменено 5 Января 2019 пользователем abramcumner Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223366
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 3 hours ago, abramcumner said: Sx = dest.x - pos.x Т.е. переводя все на lua получается local D = src:distance_to( dst ) local g = 2 * 9.81 local S = vector():sub( dst, src ) local Vx = S.x * math.sqrt( g / D ) / 2 local Vz = S.z * math.sqrt( g / D ) / 2 local Vy = ( S.y + 2 * D ) * math.sqrt( g / D ) / 2 Правильно? 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223501
dsh 3 824 Опубликовано 6 Января 2019 Поделиться Опубликовано 6 Января 2019 @abramcumner, не, не получается. Вот такой вот код local target = vector():mad( obj_pos, db.actor:direction(), 25 ) local D = obj_pos:distance_to( target ) local g = 2 * 9.81 local Sx = target.x - obj_pos.x local Sy = target.y - obj_pos.y local Sz = target.z - obj_pos.z local Vx = Sx * math.sqrt( g / D ) / 2 local Vz = Sz * math.sqrt( g / D ) / 2 local Vy = ( Sy + 2 * D ) * math.sqrt( g / D ) / 2 local mass = 1300 Vx = Vx * mass Vy = Vy * mass Vz = Vz * mass bone:apply_force( Vx, Vy, Vz ) Граната больше летит вверх, чем вперед. Вверх она улетает на 7.6 метра, а вперед только на 8.6. Если поставить в mass obj:mass(), которая 12, то вообще не летит, а только чуть подпрыгивает. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1223733
Это популярное сообщение. abramcumner 1 234 Опубликовано 7 Января 2019 Это популярное сообщение. Поделиться Опубликовано 7 Января 2019 (изменено) Вот такой код у меня запускает гранату точно к ногам ГГ. Исправил формулу для расчета скорости И добавил разгон до этой скорости путем приложения силы. --! Запускает гранату к ногам ГГ --! @param id - id гранаты function throw_to_actor(id) local obj = level.object_by_id(id) local target = db.actor:position() local obj_pos = obj:position() local mass = obj:mass() local D = obj_pos:distance_to( target ) local g = 2 * 9.81 local Sx = target.x - obj_pos.x local Sy = target.y - obj_pos.y local Sz = target.z - obj_pos.z local mul = math.sqrt( g / (2 * D) ) local Vx = Sx * mul local Vz = Sz * mul local Vy = Sy * mul + g / mul / 2 -- Чтобы разогнать гранату до нужной скорости прикладываем к гранате силу на один шаг просчета физики local fixed_step = 0.01 -- шаг расчета физики, обратное значение можно получить из консольной команды ph_prequency local fx = Vx / fixed_step * mass local fy = Vy / fixed_step * mass local fz = Vz / fixed_step * mass local pshell = obj:get_physics_shell () pshell:apply_force( fx, fy, fz ) end Изменено 7 Января 2019 пользователем abramcumner 4 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/53/#findComment-1224417
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти