theleo_ua
25002
|
508
|
0
Ну что, уважаемая кузятина, настало время восхитительных историй?
Кому интересно, с чего все началось, читаем первый спойлер:
Однажды, одна интересная девушка тосс B-ранга на айсикапе высказала мысль, что ривер не рандомный, и все проблемы с ним всего лишь от отсутствия необходимых знаний криворукости тоссов (речь в том числе и о джангби/бису 2012). Дескать, если знать, как правильно контролить ривера, и уметь руками это исполнить, то ривер либо всегда будет попадать по цели и дамажить ее, либо ты заранее будешь знать, что он не попадет (или попадет, но не продамажит), и даже не будешь пытаться (просто загрузишь ривера обратно в шатл и улетишь).
Мысль интересная, но почему у топовых (и не только) корейских тоссов не получается? Чтобы увидеть, как у них не получается, достаточно посмотреть вот эти воды:
Jangbi vs Fantasy: http://www.youtube.com/watch?v=OoPG9gwgFmQ&feature=player_detailpage#t=663s (смотреть на 11:03)
Perfectman vs Fantasy: http://www.youtube.com/watch?v=nekBzOGPg6U&feature=player_detailpage#t=948s (смотреть на 15:47)
Bisu vs Light: http://www.youtube.com/watch?list=UUAI86CUHDIkKXGA6YpVBhYg&v=Anr6gKLla7c&feature=player_detailpage#t=606s (смотреть на 10:06)
Тема меня заинтересовала, и я спросил об этом на форуме тех, кто шарит в движке БВ на уровне отреверсенных исходников: http://www.staredit.net/topic/15389/
Ответ пришел быстро: рандом у ривера есть (если кратко). Кому надо, вот подробный ответ с копипастой исходников ривера/скараба: http://www.staredit.net/335572/
После этого я на это дело забил, но сегодняшняя дискуссия с ларго заставила вспомнить эту тему (подробнее о дискуссии с ларго читаем дальше)
Кому не интересно, с чего все началось, читаем суть:
Собственно:
1) О чем вообще речь? Что такое "рандомность ривера"?
Ривер, в комбинации со скарабеем (кто не в курсе, скарабей это не снаряд, а отдельный юнит, и именно этим обоснован тот факт, что он (а также мина и инфестед терран) дамажит под свормом) имеет следующие особенности:
1) Иногда ривер не хочет стрелять даже если у него есть скарабеи и ты приказываешь ему стрелять (например выделяя ривера, и нажимая правой кнопкой мыши на юните врага)
2) Иногда скарабы не достигают цели (я не рассматриваю здесь вариант, когда ривер стрелял в вультуру и она убежала в противоположную сторону, т.е. скараб просто физически не успел ее догнать, ибо здесь и ежу понятно, что причина фейла не в рандоме, а в скорости и времени жизни скараба):
- скарабей начинает дико тупить, прикасаясь к нецелевым вражеским юнитам (что приводит к отсутствию демейжа целевому юниту)
- скарабей приклеивается к зданию (либо надолго, либо навсегда, пока не сдохнет) что приводит к отсутствию демейжа целевому юниту (как например в вышеприведенном воде Jangbi vs Fantasy)
- скарабей движется не туда куда надо даже в чистом поле, причем без реальной на то причины
3) Иногда скарабей взрывается возле цели, но демейжа ей все равно не наносит (причем происходит это, когда время жизни скарабея еще не истекло, а кнопку stop никто не нажимал)
Также не стоит забывать и про spider mines - очень похожий (даже спрайты взрыва одинаковые, просто цвету сделали негатив, чтобы из синего взрыва получить желтый) на скарабея юнит (разве что времени жизни нет), но сравните вероятность фейла мины и скарабея (не рассматривая те случаи, когда скарабею не хватает времени жизни чтобы достигнуть цели).
Соотвественно, рандомностью ривера называется тот факт, если все эти фейлы происходят в том числе и потому, что у ривера и скараба есть своего рода "игральные кости", которые они периодичсески "бросают", чтобы изменить свое направление движения, решить "а не затупить ли мне еще на одну секунду" а также решить "продамажить ли мне цель, если я взорвусь рядом с ней".
2) Окей, терминология ясна, что дальше? Как это можно использовать на практике?
Суть в следующем: если предположить, что никакой рандомности у ривера нет (и никаких "игральных костей" ни ривер ни скараб не бросают), тогда прогеймеры вполне могут контролить ривера более эффективно, и таких фейлов, как в роликах выше, происходить в идеале не должно (т.е. тоссы должны стать имбой).
Если же ривер таки рандомный и "бросает игральные кости", то тогда, уходя в ривера, игрок будет играть в покер, делая ставки, сработает или нет (собственно что мы и наблюдаем на пролигах до 2012 года и текущих SSL). В таком случае уже можно говорить о том, что ты выиграл или проиграл не только по причине скилла, а в том числе и по причине везения.
Так в чем же причина такой тупости риверов в руках прогеймеров на протяжении всей жизни БВ? В том что он рандомный? В том, что игроки нубы, и недостаточно изучили движок игры? В том, что все эти знания не помогут, ибо игроки не роботы, чтобы успеть все это просчитать и реализовать? В последнем случае, кстати, теоретически можно реализовать компа, который будет контролить ривером лучше чем бису и джангби.
3) Окей, как это можно использовать понятно, но о чем таки спор? К разговору подключается ларго
LARGO MODE ON
И вот тут мы подошли к самому интересному: ларго активирует смелость, и заявляет, что никакого рандома нет, а тупость твоего ривера и скараба зависит всего лишь от того, как именно противник контролит юнитов (напомню, что мы не рассматриваем здесь вариант, когда ривер стрелял в вультуру и она убежала в противоположную сторону, т.е. скараб просто физически не успел ее догнать, ибо здесь и ежу понятно, что причина фейла не в рандоме, а в скорости и времени жизни скараба).
Т.е. с точки зрения ларго получается, что если взять какую-то ситуацию в стиле "протосс стреляет ривером по юниту террана, а терран контролит этого юнита", и проиграть ее 100 раз (при условии, что все эти 100 раз оба игрока будут контролить точь в точь одинаково), то исход всегда будет один и тот же, так как все рассчеты движок БВ проводит без рандома.
Соответственно, риверы и скарабы тупят в руках топовых тоссов потому, что даже топовые тоссы не могут предугадать, как именно будет контролить юнитов противник.
Более того, в таком случае идеальный терран просто никогда не даст тоссу продамажить своих юнитов, всего лишь правильно контроля их. А не происходит такого потому, что терраны не идеальны, и не успевают просчитывать в уме и контролить 100500 вещей одновременно (даже сушие макро терраны после винстрика в 14 игр внезапно проигрывают 15-ю благодаря какому юниту тосса?).
LARGO MODE OFF
Но, если допустить что ларго ошибается, и рандом есть, то получается, что если взять какую-то ситуацию в стиле "протосс стреляет ривером по юниту террана, а терран контролит этого юнита", и проиграть ее 100 раз (при условии, что все эти 100 раз оба игрока будут контролить точь в точь одинаково), то исход не всегда будет один и тот же, так как в рассчеты движка БВ добавляются игральные кости, соответственно иногда юнит будет продамажен, а иногда нет.
Кроме того, я напомню про мины: они очень похожи на скарабея (разве что времени жизни нет). Сравните вероятность фейла мины и скараба (не рассматривая те случаи, когда скарабу не хватает времени жизни чтобы достигнуть цели). Почему в случае с миной скилл контроля юнитов оппонента спасает его меньше, чем в случае со скарабеями?
4) Окей, суть спора ясна, но как это проверить экспериментом и узнать правду?
Ларго предложил проверить вышеописанный случай "100 одинаковых попыток" на практике.
Но я сначала предположил, что это нереально: ведь алгоритм движения скараба учитывает миллиметры и миллисекунды, как я смогу 2 раза (уже молчу про бОльшее количество) повторить одно и то же микро?
И я бы на этом месте забил болт, если бы случайно не допер, что это можно проверить с помощью компа, который всегда контролит одинаково. Поэтому под следующим спойлером вы узнаете истину
5) Задолбал, давай уже не томи, рандомные они или нет? Смотрим видеоответ под спойлером
Делаем карту, на которой есть ривер у человека, SCVшка у компа и куча нейтральных препятствий для скарабея. Компу дается установка "в начале игры послать SCVшку через move в локацию 0". А ривер игрока, в свою очередь, заметив вражескую SCVшку, сразу в начале игры атаканет ее скарабеем (это стандартный ИИ любого атакующего юнита в БВ, спец установок делать не требуется, надо всего лишь дать риверу скарабов на борт). Схематически это выглядит примерно так:
Соответственно, мы просто запускаем эту карту столько раз, сколько хотим, и смотрим, как ведут себя ривер/скараб - одинаково или нет (например дамажат SCVшку или нет).
Результаты тестов смотрим здесь: https://www.youtube.com/watch?v=vlSmaXMUf8Q
Мне хватило четырех раз:
- первый раз SCVшку продамажило
- второй раз SCVшку не продамажило, но скарабей был очень близко
- третий раз SCVшку опять продамажило
- а четвертый раз скарабей даже близко не подобрался к SCV, затупив между ЦЦшками
Если хотите потестить сами, ссылка на карту в описании к ролику (напоминаю, что пускать строго в мультиплеере на скорости fastest)
6) Привет микимаус?
А я напоминаю, что первое правило кузов: никогда не спорь с зе...в общем жду мнение джастиса по этому поводу
Добавить комментарий
Авторизуйтесь чтобы отправить комментарий
Комментарии
1748
|
40
|
0
Ларго повержен.
14489
|
449
|
0
я заметил что чем дальше путь скарабея тем больше рендома в его действиях.
2450
|
26
|
0
Мне кажется, что движок бв вычисляет все действия и настоящего рендома в процессе игры нет.
Т.к. на этом основано проигрывание реплея: известно только начальное положение (копия карты, по видимому с доп. данными) и набор совершённых игроками действий с привязкой ко времени. При этом сколько бы раз мы не просмотрели реплей, скарабей летит всегда одинакого.
Однако при старте игры присутствует некоторый рендом при переходе от шаблона карты к реальной карте на которой проходит игра. К примеру отчётливо видно что СКВ в разных итерациях эксперимента смотрят в разные стороны, вероятно это и влияет на поведение скарабея.
Впрочем, я не верю, будто бы глобальные знания могут помочь значительно лучше управлять ривером, т.к. нужные факторы наверняка просто невозможно учесть человеческим мозгом в выделенное на это время, а это значит, что при анализе поведение скарабея следует рассматривать как случайное. А это в свою очередь означает, что ларго всё равно не прав, да и контролит наверняка хуёво.
41000
|
1444
|
0
:s4:
Ну ради красного словца мог бы и пожалеть последнего
отцамейн админа и хотя бы не искажать посыл, коль упоминаешь моё имя.А именно,
Largus: ...я сделал выводы на основе своего опыта
Largus: если они ошибочны - что ж, так тому и быть
Leo: возможен тот факт, что рандом играет меньшую роль, чем я думаю (т.е. он есть, но вносит от силы 10% искажения а не 50% как я предполагаю)
Largus: или играет такую роль, что им можно пренебречь
Ну а теперь, раз ты решил доебаться, поиграем по этим правилам :s42: :s40:
Касаемо твоего эксперимента, а точнее его чистоты. СКВ стоят по-разному. Ай-яй, зэлео, ну как же так. Миллиметры и секунды мы учитываем, а то, что взаимное положение юнитов изменилось, нет.
Попахивает самозаовном.
Теперь возьми бункер (реальная игровая ситуация) или хоть цц, который чинят несколько СКВ, и начни стрелять по нему ривером. Не забудь записать видео и посчитать промахи, если таковые будут обнаружены :s37: Тут чистота практически гарантирована, потому что условия не меняются.
21125
|
256
|
0
Ну алгоритм я думаю точно какой-нибудь у скарабея есть. Но возможно, алгоритм старый и кароче, былоб круто если в ск2 был ривер. Но ривера нет и поэтому ск2 не топчик.
25002
|
508
|
0
7x-Lisyonok пишет:
Такое вполне возможно
7x-Lisyonok пишет:
Из того, что реплеи проигрываются правильно, не следует, что в игре нет рандома. Можно просто выпавшие значения рандома писать в реплей, и все будет проигрываться как надо. Да и сам алгоритм рандома можно оптимизировать так, чтобы таких записей (без потери качества рандомности чисел) было как можно меньше (с целью оптимизации размера реплея).
Пример 1: юнит, стреляющий в юнита на возвышенности или в деревьях. Нанесет он демейж или нет, зависит от рандома, но в реплее все проигрывается правильно.
Пример 2: игрок поставил себе расу random. В реплее будет всегда одна и та же выпавшая ему раса
Пример 3: тот самый случай с направлением сцвшек, который ты заметил - в реплее направление будет всегда одно и то же
Пример 4: ты играешь с melee компом и пишешь реплей. Комп определяет свою страту по рандому. Самое смешное, что где-то (не помню уже где) читал, что в самых первых версиях БВ, где только появились реплеи, именно такие игры с компом проигрывались неправильно, так как в реплеи не сохранялся рандом, соответственно при первом просмотре реплея комп рашил 4 пулом, а при втором развивался. И потом это пофиксили.
7x-Lisyonok пишет:
Очень конструктивное замечание, большое спасибо! Намечается своеобразная дуэль "чья точка зрения окажется ближе к истине", интрига 80 уровня!
Продолжаем под спойлером:
Выкладываю ролик с новыми тестами: https://youtu.be/nbIR0bmuUJI
Тест 1 (первая половина ролика): среди препятствий скарабею есть только здания (а здания, как мы знаем, нельзя вращать). Тест включает в себя 4 попытки
Тест 2 (вторая половина ролика): SCVшки не убраны, но направление
какое направление?для каждой из них теперь выставляется "вверх", после чего проделывается тот же самый выстрел ривера. Тест включает в себя 4 попыткиРезультаты не буду спойлерить, смотри ролик:)
Ссылка на карты в описании
7x-Lisyonok пишет:
Полностью согласен. Следовательно игроки за протоссов получается играют в покер, рассматривая ривера как "условный черный ящик", и делая на него ставки.
С другой стороны, теоретически можно сделать бота, который будет ривером всех рвать в калище.
7x-Lisyonok пишет:
ларго терран
25002
|
508
|
0
Viktor пишет:
Абсолютно не понял, что за красное словцо, где искажен посыл, что меняет тот текст который ты процитировал, к чему он.
Я это воспринимаю как "2 человека лисенок хотят прийти к истине", и расписал плюсы и минусы разных точек зрения (независимо от того, какую точку зрения в итоге примет каждый собеседник).
Можешь подробнее пояснить, что конкретно тебе не нравится и почему?
Viktor пишет:
Где кто к кому решил доебаться? Why so serious?
Viktor пишет:
Эмоции это всегда хорошо, но я каментом выше уже ответил лисенку по этому поводу с выкладыванием новых тестов, где эти нюансы учтены.
Запах самозаовна теперь устранен, надеюсь?
Может лучше перейдем с "самозаовн" стиля на попытки прийти к истине, безотносительно того, кто заовнится, как считаешь?
Viktor пишет:
Давай не будем забегать вперед, и для начала проанализируем, какие проблемы есть во втором и третьем тестах, что я выложил
25002
|
508
|
0
REPS.RU|StArSO пишет:
ривер есть в модах starbow и sc2bw для СК2, причем по старбов проходят турниры (возможно даже воды с риверами можно найти на трубе)
5931
|
111
|
0
Путь скарабея зависит от наблюдающих, ибо скарабей находиться в двух супер позициях попал/не попал , но в момент наблюдения все и происходит
3373
|
210
|
0
JE SUIS PIZDABAL пишет:
Скарабей Шрёдингера?! :s1:
12269
|
82
|
0
Ни ... себе
17546
|
590
|
0
Лео, ты не до конца по-моему понял о чем Ларго и ко. У тебя во втором тесте(вторая часть) целевая скв стоит в разных положениях. В одном влево-вверх, в другом просто влево итд.
3373
|
210
|
0
надо Таму пригласить в обсуждение, он знает секрет использования ривачков :s26:
50506
|
912
|
0
Я считаю, это всё магия бв.
2091
|
65
|
0
Зелео молодец. Как то с самого начала моей игры в БВ принял за данность некоторые тупняки юнитов и сильно по этому поводу не расстраивался. А когда ривер тупил, всегда списывал это на свой счет, что я что-то сделал не так...
Мне всегда казалось, что я за одну две секунды до вылета скарабея могу предвидеть успешен будет выстрел или нет... :s45:
2091
|
65
|
0
cоль земли пишет:
Согласен! :s26:
3373
|
210
|
0
хотите немного магии бв? После выстрела ривера нажмите стоп :s37:
6417
|
72
|
0
Лео :s48:
106
|
2
|
0
theleo_ua пишет:
Опять же ты не учитываешь тот факт, что сквшка, которую атакуют, появляется с рандомным направлением, а, так как на поворот юнита нужно время, а посылаешь ты их все в одну точку, экс
крипереминетимент неточен! :s45:50506
|
912
|
0
ENOT EBANIY пишет:
:s31:
25002
|
508
|
0
Flki пишет:
ENOT EBANIY пишет:
Тест 3: направление целевой SCVшки теперь всегда вверх: https://youtu.be/gPz8S0MmrGc
Scooter пишет:
спасибо, приятного просмотра
7x-Lisyonok пишет:
theleo_ua пишет:
Как ты мог заметить, я забыл следующие вещи:
- криттеры ползают/летают по рандому (помню на одном мапмейкерском сайте предлагали один из способов генерации случайных чисел в UMS - кидаем криттера в замкнутое пространство, разделенное на несколько локаций, и в какую первую он придет, такое число и генерируем). Такому способу перемещения криттеров близзы даже дали название "собака на свалке" (Junk Yard Dog)
- SCVшка, которая строит здание, выбирает свои действия по рандому
- юнит, который находится вне свободного пространства (SCVшник внутри гейзера без рефинери, 12 собак, закопанных в одну точку, и одновременно выкапывающихся, пробка, которая заказала пилон возле стенки террана и начинает сквозь эту стенку проходить и т д), и автоматически пытается из этого пространства выйти, делает это по рандому (по аналогии, как SCVшка строит здание)
- в UMS я могу по рандому "либо включить, либо не включить" специфические переменные (switch), и на базе этого например выводить на экран каждый раз разный текст
Собственно, все эти вещи сохраняются в реплее. Если создать карту, на которой каждый раз при ее запуске будут генерироваться разный текст, по разному бегать криттер, и по разному SCVшник строить здание, то реплей будет проигрываться всегда одинаково.
Вот можешь посмотреть на ролик: https://youtu.be/F0fBI1fyo_w
карта включает в себя криттера, который каждый раз по разному бегает, циклическое рандомное отображение фрагментов из цитаты про флеша и SCVшника, который заказывает ЦЦ и "по разному бегает" в процессе строительства.
Сначала мы 3 раза пускаем эту карту, чтобы удостовериться, что поведение разное, потом сохраняем реплей и запускаем его 2 раза, чтобы удостовериться, что он проигрывается одинаково
2450
|
26
|
0
7x-Lisyonok пишет:
theleo_ua пишет:
Согласен, это даже хуже.
3621
|
103
|
0
Для разнообразия можно и по другим юнитам пострелять.
Может от текстур зависит.Гуны же тупят из-за текстур как я понял.По моему близы сами и рассказывали.Типа граница текстуры больше чем сама текстура.
Я думаю выстрел ривера не рандомен а имеет определенную математику которую хуй проссышь как говорится.
50506
|
912
|
0
Gamlet пишет:
А я всё-таки склонен верить, что это магия :s46:
3373
|
210
|
0
там алгоритм какой-то, не рандом. Просто он выглядит нелепо, примерно как когда гуны лезут через рампу и начинают оббегать всё вокруг, ища другой выход.
Подло, когда скараб облетает сбоку и врезается, от такого урон входит полный, а когда сзади, там можно отъехать в радиус половинного урона :s30:
12269
|
82
|
0
Largo won easy и ниибет
25002
|
508
|
0
Gamlet пишет:
Да, ты прав, тоже об этом думал. Потом проверю обязательно.
Gamlet пишет:
Вполне возможно что так и есть
Кстати, насколько помню, ты смотрел матчи по starbow, следовательно видел, как там выглядит ривер
106
|
2
|
0
theleo_ua пишет:
ривер тоже всегда лицом в одну сторону появляется?
25002
|
508
|
0
ENOT EBANIY пишет:
Черт возьми, это становится все интереснее и интереснее!
Тест 4: ривера теперь видно на экране: http://youtu.be/pDVmg6rfKbE
Часть 1: только здания
Попытка 1: скарабей сдох между бункером и цц, демейжа целевой SCV нет
Попытка 2: копия попытки 1
Попытка 3: скарабей затупил возле цц, демейжа целевой SCV нет
Попытка 4: копия попытки 1
Попытка 5: скарабей наконец дамажит SCV
Попытка 6: копия попытки 3
Часть 2: здания SCV
Попытка 1: скарабей прикоснулся к верхней нецелевой SCV, там же и умер, демейжа целевой SCV нет
Попытка 2: скарабей убил целевую SCV
Попытка 3: скарабей уже не прикоснулся (отличие от попытки 1) к верхней нецелевой SCV, там же и умер, демейжа целевой SCV нет
Попытка 4: скарабей затупил между бункером и цц, там же и сдох, демейжа целевой SCV нет
Попытка 5: копия попытки 1
Попытка 6: копия попытки 3
3373
|
210
|
0
судя по тестам Зелео эффективность ривера 1/6 :s4:
2094
|
1
|
0
theleo_ua пишет:
А Джастису можно ? Было ? :s17:
Какой-то глюк поиска пути, што вообще может заставить отановиться неостановимые юниты БВ ? :s14:
9014
|
219
|
0
эм.... :s13:
15192
|
736
|
2500
Лео, так получается какие-то ошибки ривера всё-таки равны криворукости: Тут Бису на стоп тыкнул выходит.
Остальное рандомня.
И у тебя свой же хороший пример с тремя группами СКВ по пять штук. Действие соперника - один из рандомных ивентов для игрока => исход рандомный и не просчитывается с 100% точностью.
2495
|
63
|
0
2450
|
26
|
0
Dr. Brain пишет:
Мне кажется, понимал что скарабей уже не догонит вультурки и решил сделать быстрее ещё один выстрел, я бы не назвал это криворукостью.
15192
|
736
|
2500
А может :)
В любом случае, это не затуп а принудительный взрыв скараба.
25002
|
508
|
0
4p)MickeyMouse пишет:
cоль земли пишет:
хотите еще немного магии? Давайте упростим задачу:
Тест 5: бункерочки оно мне поставилУо
Только ривер, одна сцв и 8 бункеров. Делается 12 попыток, из которых по итогу SCVшка 10 раз осталась жива, а 2 раза сдохла.
Тайминги смерти SCV: 2:10 (попытка 5) и 4:03 (попытка 9)
Вы все еще верите, что ривер не рандомный? Тогда мы идем к вам!
З.Ы. Идеи для будущих тестов:
1) 2 ривера (различные комбинации)
2) Другие юниты (кроме SCV). Всех рас
3) Как ведет себя скараб возле границ (пример из реальных игр - битва в PvP возле узкого прохода, когда один из тоссов на возвышенности, причем ривер может быть как у первого, так и у второго)
4) Сделать "карту-реплей", где комп добывает минералы SCVшками, рядом с которыми стоит танк, бункер, турретка (тут подумать, как наиболее достоверно реализовать пример из игровой ситуации), куда (по скрипту же) будет дропаться ривер
5) Другие примеры из реальных игр (например тот, о котором говорил ларго)
6) Риверу отдает приказ игрок (в данном случае я): делается это таким образом, что до приказа комп ничего не делает, а после приказа ривер ползет на несколько клеток вверх, и только когда доползает до "целевой клетки", у компа активируется скрипт "послать целевую SCV через мув" (а ривер в этот момент как раз доползает до радиуса выстрела и стреляет по SCV). Соответственно, фактор "миллисекунд" должен быть сведен к минимуму
7) То же, что и 6, только у SCV активируется скрипт не по риверу, а по скарабу
SteelHawk пишет:
Пока его не забанили, да
SteelHawk пишет:
Тут суть в том, с какой закономерностью этот баг воспроизводится (независимо от того, баг это или встроенный рандом). Мутастек, например, тоже баг, но воспроизводится постоянно и легко контролируется игроком (я могу выделить 1 овера и 11 мут, отдать им приказ и заранее быть уверенным, что они соберутся в стек)
Dr. Brain пишет:
Dr. Brain пишет:
Вполне возможно. Суть темы заключается в том, есть ли такие ошибки, которые:
1) не зависят от игрока протосса
2) не зависят от как от игрока протосса, так и от его оппонента
Если первый пункт более менее очевиден, то второй нет
Dr. Brain пишет:
7x-Lisyonok пишет:
Dr. Brain пишет:
Вполне возможно
reps)S.JIM пишет:
сказал лисенок, увидев, что SCV рандомно поворачиваются при старте карты
813
|
9
|
0
А ларго прав )) от микро тера что то зависит.
Кстати, возможно, у ривера тоже есть "любимая" сторона атаки. Помните как в мутостеке распределяется рикошет. С разных сторон по разному. Возможно и у ривера есть такое. Что вероятность его попадания выше или ниже от того в какую сторону он стреляет. В том числе и распределение сплеша от взрыва скарабея. Так же, я думаю, есть определенные позиции когда стоящее здание или куст создают ситуацию из которых вероятность "затупа" скарабея выше. Например если скв была вроде на прямой линии огня, но начиная убегать заехала за СС или пво и тп.
50506
|
912
|
0
Затупы скарабея придуманы близзами, чтобы тоссы не были полной имбой :s22:
12269
|
82
|
0
Адын хуй, ривера рандомным называть нельзя. А то получается, что если взять ривера и, допустим, добавить 1 сцв и 1 СС на расстоянии 1 см от ривера - ривер в 5 случаях из 6 затупит и не попадет в сцв? Да он 6 раз из 6 снесет бедного сцвшку.
Отсюда вывод:"рандомность" ривера зависит как минимум от: 1) расстояния до цели;
2) количества целей и помех.
Отсюда еще 1 вывод: слово "рандомность" не применимо к ситуации. Подберите другой термин.
Лео, согласен, не?
33553
|
754
|
0
cоль земли пишет:
2091
|
65
|
0
Зелео а как ривак будет стрелять по неподвижной цели?
Может у скараба просчитывается несколько вариантов пути до атакуемой цели? Естественно не все пути одинаково оптимальны и он тупо на рандоме выбирает один из путей. Но он не знает где цель окажется пока скараб летит до цели и когда цель перемещается на следующую клетку алгоритм вычисления путей повторяется, не оптимальный путь накладывается на другой не оптимально выбранный путь и скараб заходит в тупик? :s45:
А если цель будет неподвижна, будет ли видно какие варианты путей бывают и по идее раз цель стоит на месте все должны быть успешные но не все оптимальные?
Короче сам не понимаю до конца что хочу сказать ну надеюсь кто нибудь понял мою мысль :s17:
2091
|
65
|
0
RRRMz пишет:
Вот вот я тоже пытаюсь об этом намекнуть... :s45:
12269
|
82
|
0
Scooter пишет:
Да все ты нормально объяснил. Сейчас дождемся очередных тестов от Лео и посмотрим, что там будет.
50506
|
912
|
0
Во имя Адуна, залезьте в код бв и чекнить как летает этот ёбаный скарабей. Вы ж программисты!
2091
|
65
|
0
На некоторых тестах видно как скараб выбирает наикратчайший путь до цели и словно не знает что между ним и целью есть непреодолимое препятствие.
http://www.youtube.com/watch?v=pDVmg6rfKbE&feature=youtu.be#t=6m8s
2091
|
65
|
0
Scooter пишет:
Может быть скараб изначально выбирает правильный путь и учитывает все препятствия? А когда цель смещается и приходится путь пересчитывать препятствия уже не учитываются? В моей ссылке на тест Зелео это явно видно... :s45:
12269
|
82
|
0
cоль земли пишет:
Если так сделать, то пиздеть не о чем будет!
2091
|
65
|
0
Кажется я чтото понял, погуляю с детьми и напишу...
2094
|
1
|
0
theleo_ua пишет:
Мутастек я бы не назвал багом, с какой стати ? если разброс юнитов в отряде превышает некоторую величину, то строй при движении не сохраняется и юниты все движутся в одну и ту же точку. :s20:
2091
|
65
|
0
Scooter пишет:
Баг в обработке встречи скарабея с препятствием. Наикратчайший путь до цели вычисляется без учета каких либо препятствий на пути между ривером и целью. Вичисляется самый прямой путь до цели.
Идет прямой полёт до цели и функиция чтобы переместить скараба проверяет пуста ли следующая клетка. (Препятствия изначально не обрабатываются ввиду нереальности таких вычислений, так как за время полёта скараба клетку может занять другой объект, все предусмотреть нереально).
Если функция при проверке сообщает что клетка не пуста вот тут то судя по всему и начинается самое интересное. Происходят какие-то вычисления как обогнуть препятствие, которые судя по всему приводят к разным результатам. :s45:
2091
|
65
|
0
А рандомность полета кстати может возникать когда обход препяствия с лева и справа по длине одинаков, то есть можно пролететь как слева так и справа... :s45:
Все дело в том что величина объекта препятствия скарабу тоже не известна, то есть если бы он знал величину препятствия он бы знал с какой стороны его проще облететь... Но он знает только о какой-то одной клетке где чтото уже стоит поэтому часто приходится выбирать как облететь слева или справа, вот вам и множество вариантов поведения, вот тут и работает рандом который тут просто жизненно необходим. Компу же как-то надо принимать решения в неоднозначной ситуации... :s45:
P.S: Рандом простейший влево или вправо.
2091
|
65
|
0
Прочитал еще раз все пункты и понял что мои рассуждения только вершина айсбьерга :s17:
25002
|
508
|
0
RRRMz пишет:
Я тебе больше скажу: если поставить ривера, и на расстоянии его выстрела поставить бункер без препятствий, то ривер тоже продамажит бункер 6 раз из шести.
Термины можешь подбирать какие хочешь, но суть не меняется: есть такие ситуации, где ривер не будет дамажить 6 раз из шести (но как минимум 1 раз из шести продамажит).
Собственно я и хочу такие ситуации найти, причем максимально их упростив (с одной стороны) и максимально приблизив к реальным игровым ситуациям (с другой стороны).
Кстати, мне удалось воспроизвести "рандомность" во второй части теста 4 при одной целевой SCV (вместо двух, как было в тесте 4), видео сделаю позже.
Scooter пишет:
Я думаю, что скорее всего одинаково, но могу ошибаться, так как если на пути к цели будут здания (бункеры), минералы, границы наземной поверхности и прочие препятствия, то теоретически возможно, что ривер поведет себя по разному (но вероятность такого резиста крайне мала).
SteelHawk пишет:
Да господи, вот другие примеры:
- обс на турретке
- летающий дрон / темплар / дарк
- баг с ларвой (жмешь стоп и она двигается ближе к минералам)
- баг с продамаженной крип колони
большинство из этих пунктов (например обс на турретке) воспроизводятся (или воспроизводились, пока их не пофиксили) с такой вероятностью, что можно быть уверенным что воспроизведутся
Что до мутастека, то предположу, что покажи такую возможность "свести, благодаря оверу в другой части карты, муту в стек, и нагнуть террана" близзам в 1998 году, они мигом бы посчитали это за баг и пофиксили (т.е. баг заключается не в том, что воздушные юниты стечатся, а в том, что далеко (от точки приказа) расположенный юнит заставляет стечиться близко расположенных юнитов).
Scooter пишет:
надо будет попробовать для неподвижных целей (1 ривер, 1 SCV и 1 цц например) подобрать такую позицию, при которой скарабей оббегает цц слева, но при перемещении (имею в виду в редакторе карт, а не отдачу приказа) ривера (или SCV) на 1 пиксель вправо ситуация изменяется
2450
|
26
|
0
по моему весьма сомнительное использования рендома для выбора направление влево или вправо ^^
2091
|
65
|
0
7x-Lisyonok пишет:
Ок. Спорить не буду пока до конца не уверен... 7x-Lisyonok посмотри тесты в замедленном повторе, мне кажется там явно видно как устроен алгоритм патчфиндинга у скараба... :s45:
Лео кто-то где-то выкладывал сетку карт в BW и сколько клеток занимают юниты на карте? Можно найти? :s45:
25002
|
508
|
0
theleo_ua пишет:
7x-Lisyonok пишет:
проверил на цц и рефинери при неподвижной целевой SCV - скарабей движется всегда одинаково (ну всмысле изначально например он движется с одной стороны, я перемещаю SCV (либо ривера) на 1 пиксель, и теперь скарабей движется всегда с другой стороны
также проверил, что будет, если целевая (пробка, уже не SCV) будет неподвижна, а нецелевые пробки будут мешать риверу по ней попасть (будут посланы на ривера через мув) - результат (3 попытки) показал как минимум 2 разных исхода (целевая пробка либо дохла либо нет), видео сделаю позже
Scooter пишет:
Что ты имеешь в виду под сеткой карт в БВ? Это http://storage9.static.itmages.ru/i/15/0817/h_1439784282_1799023_fd34e96145.png ?
Scooter пишет:
http://wiki.teamliquid.net/starcraft/List_of_Unit_and_Building_Sizes
2091
|
65
|
0
theleo_ua пишет:
Да то что нужно... :s45:
25002
|
508
|
0
Scooter пишет:
Тогда я без понятия, выложено ли такое в инете. Могу рассказать, как это делать в редакторе карт
2091
|
65
|
0
theleo_ua пишет:
Да я понял что ты с редактора взял... Последний раз в редактор заходил лет 8 назад, сразу как-то не дошло что там должна быть сетка... :s40:
Я так понял что мои догадки по поводу рандомности выбора облёта препятствий не оправдались? :s45:
25002
|
508
|
0
Scooter пишет:
если ты про здания в качестве препятствий и неподвижные объекты в качестве цели, то не оправдались
25002
|
508
|
0
7x-Lisyonok пишет:
theleo_ua пишет:
мне вот интересно, интерцепторы (например когда 12 керриеров и по 8 интерцепторов в каждом) по рандому будут лететь, или всегда одинаково
2094
|
1
|
0
theleo_ua пишет:
Обс над туреткой - ржачный баг, обс обводит туретку вокруг пальца :s17:
Мне ещё рассказывали про то как из пачки лингов можно было пачку мутей сделать, вот это я понимаю баг
Можно было на них билды придумывать :s2:
2450
|
26
|
0
Чотам поитогу, рандом или нэт?
2091
|
65
|
0
По итогу я понял одну вещь. Чтобы выстрел ривера был успешен:
А. Нужно выбирать самую простую траекторию полёта скараба к цели, без препятствий. В идеале прямую.
Б. Атакуемая цель должна стоять на месте.
P.S: Баг возникает в момент когда скарабу нужно обогнуть препятствие, а атакуемая цель в этот момент продолжает движение. Но воспроизводится баг не в 100% случаев. :s45:
2450
|
26
|
0
я хз, из моего опыта бывает так что ривер просто не стреляет, т.е. скарабы есть, цель рядом, выделяешь ривера кликаешь правой кнопкой на цель, ривер к ней ползёт :f:
5162
|
145
|
0
у меня есть своё скромное мнение.
моё мнение в том, что алгоритм, выполняющий действия за ривера и скараба - детерминирован.
а вот игровой диспатчер SC:BW, который контролирует юниты на карте, и раз в какой-то такт "дёргает" диспатчеры всех юнитов, чтобы они сделали часть своих действий и вычислений — нет.
думаю он вайл-тру ходит, и в какой то момент собирает всех юнитов на карте, и вызывает диспатчер каждого. возможно, способ собирания юнитов недетерминирован, или таймер неточен.
предполагаю при этом, что в реплей пишется именно последовательность (время, юнит), т.е в какой момент времени был вызван диспатчер юнита. в силу этого нетерминированность на реплее уже не проявится.
ну это примерно конечно, откуда ж мне точно знать.
12269
|
82
|
0
Терране! Отбивайте ривердроп стаком рабочих!
41000
|
1444
|
0
Scooter пишет:
вот это сюрприз, блеать
просто озарения снизошло :s37: :s40:
25002
|
508
|
0
theleo_ua пишет:
theleo_ua пишет:
Тест 6: https://youtu.be/c5TflY0R83M
Часть 1: копия второй части теста 4 для одной целевой SCV
Попытка 1: SCV выжила
Попытка 2: SCV сдохла
RRRMz пишет:
Часть 2: целевая пробка не движется, но нецелевые пробки мешают риверу по ней попасть (посылаются на ривера через мув)
Попытка 1: скарабей вылез на "горизонтальную линию над пробками", и дальше тупо двигался вправо. Целевая пробка сдохла
Попытка 2: скарабей не вылез (отличие от попытки 1) на "горизонтальную линию над пробками", но тем не менее, целевая пробка сдохла
Попытка 3: целевая пробка выжила
3373
|
210
|
0
RRRMz пишет:
попробую!
25002
|
508
|
0
7x-Lisyonok пишет:
Предположу, что больше да чем нет
7x-Lisyonok пишет:
да, такое бывает, но я пока хз как реализовать "одинаковость" (с целью проверить данный рандом на рандомность)
UEBASHENIY_LENI пишет:
вполне возможно, что так и есть
25002
|
508
|
0
UEBASHENIY_LENI пишет:
Кстати, в таком случае размер реплея очень сильно растет. Если бы ты был программистом из близзов, неужели не захотел бы оптимизировать?
3373
|
210
|
0
4p)MickeyMouse пишет:
не вышло, все рабы сдохли
2091
|
65
|
0
Viktor пишет:
Ага... :s3: Сам в шоке, прям как Менделееву ответ пришёл во сне :s40:
5162
|
145
|
0
theleo_ua пишет: у меня щас новое предположение.
игровой таймер и обработчики юнитов - детерминированные.
а вот опрос триггеров на карте, за счёт которых юниты получают диспатч - разные.
т.е. есть на карте задан триггер у ривера на то, чтобы стрелять, но срабатывает он чуток по разному.
тогда действительно, в реплей достаточно писать лишь конкретные приказы юнитам, а процесс их исполнения отдаётся в руки игрового таймера и диспатчеров. и реплей не будет большим.
25002
|
508
|
0
UEBASHENIY_LENI пишет:
1) я отметил 12 собак и отправил их через А-клик
Вариант А: в реплей запишется 12 приказов
Вариант Б: в реплей запишется 1 приказ
В варианте А реплей занимает больше места, а в варианте Б "разный опрос юнитов диспетчером" приведет к разным результатам
2) я отметил ривера и приказал ему убить SCV. Ривер убил SCV. А потом к риверу приползла собака, он ее убил. А потом гидра и ее он тоже убил.
Вариант В: в реплей запишется 1 приказ "убить SCV"
Вариант Г: в реплей запишется сначала реакция ривера на SCV, потом реакция ривера на собаку, потом на гидру
В варианте Г реплей занимает больше места, а в варианте В "разный опрос юнитов диспетчером" приведет к разным результатам
З.Ы. Не забывай, что реплей реплеем, но гораздо важнее сетевой трафик в мультиплеере, который чем меньше тем лучше (помню играл в БВ на 19600 модеме), следовательно в случае вариантов А и Г придется передавать в разы больше информации по сети
15192
|
736
|
2500
:s13: Напомни?
12269
|
82
|
0
Микки, я ж пошутил :tr:
12269
|
82
|
0
Когда крипка мутирует в санкен - если ее продамажить до хп ниже 100 - она закончит мутацию с 1 или 2 хп здоровья
25002
|
508
|
0
Dr. Tourette пишет:
----------------------------------------
- patch 1.08b
----------------------------------------
- Fixed a bug that caused the game to crash when a damaged morphing creep colony,
- changed into a sunken colony.
(c) patch.txt
2204
|
33
|
0
не читал, но одобряю
1973
|
67
|
0
имхо уровень тупняков скараба корректируется практикой игры. Вывод простой, чем больше практики с ривером в разных ситуациях, тем меньше рандома.
41000
|
1444
|
0
Роберт вышел из запоя и сформулировал суть темы в одном предложении :tr:
1973
|
67
|
0
:s4:
5162
|
145
|
0
theleo_ua пишет: чёт ты усложнил. тебя перекосило в сторону оптимизации реплея.
давай я поясню мысль.
записываем в реплей только "воздействие на юнит".
действие игрока является(в том числе селект мышкой) воздействием на юнит.
теперь: триггеры на карте тоже могут управлять юнитами, но механизм их активации недетерминирован, однако способ срабатывания триггера как-то отмечается в реплее.
итог:
многократное воспроизведение игры на карте с триггерами -> недетерминировано (что мы и видим у тебя с ривером)
воспроизведение реплея с триггером -> детерминировано, но только на фастест, т.к. иначе возникают баги с интерпретации триггеров на карте
воспроизведение реплея без триггера -> строго детерминировано.
3373
|
210
|
0
UEBASHENIY_LENI пишет:
UEBASHENIY_LENI пишет:
:s25:
25002
|
508
|
0
UEBASHENIY_LENI пишет:
не только реплея, а и сетевого трафика, что важнее
UEBASHENIY_LENI пишет:
В общем, вместо того, чтобы расписывать, почему это может неоправданно увеличить сетевой трафик и размер реплея, а также уточнять, какие конкретно триггеры ты имеешь в виду, я просто сделал следующий тест:
1) Берем UMS карту, в которой:
- 1006 UMS-овых триггеров
- многие из них постоянно срабатывают
- триггеры опрашиваются 8 раз в игровую секунду (примерно 11 раз в реальную секунду)
- в течении игры, компы (3 штуки) постоянно воюют между собой и игроком (независимо от действий игрока)
2) Запускаем карту, сразу выходим из игры, сохраняем реплей и смотрим, сколько он занимает места. Это нужно для того, чтобы узнать, какой размер карты изначальных данных в реплее (в моем случае такой реплей занял 148298 байт)
3) Запускаем следующие тесты: игрок в течении всей игры ничего не делает (чтобы случайно не навредить тесту, можно просто свернуть окно БВ в это время), но время игры разное (например первый тест длится минуту, второй 10 минут и т д), и сравниваем размеры реплеев
В моем случае это было так:
Тест 1: 1 минута 22 секунды
Тест 2: 3 минуты 23 секунды
Тест 3: 4 минуты 48 секунд
Тест 4: 32 минуты 59 секунд
Во всех 4 случаях размер реплея получился 148298 байт (столько же, сколько в пункте 2, когда мы сразу alt q q в начале игры), причем компы каждый раз играли по разному
4) Теперь давайте проделаем то же самое, но игрок (т.е. я) будет управлять своими юнитами
Тест 5: 39 секунд, но игрок управляет юнитами
Размер реплея теперь уже 148505 байт
Если не веришь моим цифрам, скачай карту (ссылка в описании) и проделай тесты сам
2450
|
26
|
0
Вот что надо сделать, посмотреть какие байты отличаются у перлеев где ривер ведёт себя по разному
25002
|
508
|
0
7x-Lisyonok пишет:
осмелюсь предположить, что эти байты будут числом под названием "рандомное зерно" (кто не знает что это, читаем это и это)
тем не менее, для теста понадобится:
- прога, которая распаковывает реплеи (не помню как называется, вроде rexplorer, вобщем буду признателен, если кинете мне названия таких прог)
- переделать карту с ривером так, чтобы проигрыш игроку присваивался каждый раз в одинаковое время (иначе отличия скорее всего будут в большем количестве байт)
Это все я смогу сделать, но дальше что? Кто из кузян будет ковырять, что эти байты значат?
Единственное, что здесь можно будет понять без ковыряния, это то, что если отличия будут например в 2-х байтах, то ответ станет очевидным: это то самое рандомное зерно
15192
|
736
|
2500
вот это круто :s12:
2450
|
26
|
0
theleo_ua пишет:
Если будут различаться незначительно, в несколько байт, то только это и останется предположить