Рандомность ривера
avatar

theleo_ua

flag race

25002

min

|

508

sup

|

0

gas
5436
92


Ну что, уважаемая кузятина, настало время восхитительных историй?

Кому интересно, с чего все началось, читаем первый спойлер:



Однажды, одна интересная девушка тосс 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) Привет микимаус?


здесь должны были быть рандомные сиськи


А я напоминаю, что первое правило кузов: никогда не спорь с зе...в общем жду мнение джастиса по этому поводу

Комментарии

avatar Lionel flag race

1748

min

|

40

sup

|

0

gas
01:25 13.08.2015

Ларго повержен.
avatar Quaresma flag race

14489

min

|

449

sup

|

0

gas
02:09 13.08.2015

я заметил что чем дальше путь скарабея тем больше рендома в его действиях.
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
03:01 13.08.2015

Мне кажется, что движок бв вычисляет все действия и настоящего рендома в процессе игры нет.

Т.к. на этом основано проигрывание реплея: известно только начальное положение (копия карты, по видимому с доп. данными) и набор совершённых игроками действий с привязкой ко времени. При этом сколько бы раз мы не просмотрели реплей, скарабей летит всегда одинакого.

Однако при старте игры присутствует некоторый рендом при переходе от шаблона карты к реальной карте на которой проходит игра. К примеру отчётливо видно что СКВ в разных итерациях эксперимента смотрят в разные стороны, вероятно это и влияет на поведение скарабея.





Впрочем, я не верю, будто бы глобальные знания могут помочь значительно лучше управлять ривером, т.к. нужные факторы наверняка просто невозможно учесть человеческим мозгом в выделенное на это время, а это значит, что при анализе поведение скарабея следует рассматривать как случайное. А это в свою очередь означает, что ларго всё равно не прав, да и контролит наверняка хуёво.
avatar Viktor flag race

41000

min

|

1444

sup

|

0

gas
04:56 13.08.2015

:s4:

Ну ради красного словца мог бы и пожалеть последнего отца мейн админа и хотя бы не искажать посыл, коль упоминаешь моё имя.

А именно,
Largus: ...я сделал выводы на основе своего опыта
Largus: если они ошибочны - что ж, так тому и быть

Leo: возможен тот факт, что рандом играет меньшую роль, чем я думаю (т.е. он есть, но вносит от силы 10% искажения а не 50% как я предполагаю)
Largus: или играет такую роль, что им можно пренебречь

Ну а теперь, раз ты решил доебаться, поиграем по этим правилам :s42: :s40:

Касаемо твоего эксперимента, а точнее его чистоты. СКВ стоят по-разному. Ай-яй, зэлео, ну как же так. Миллиметры и секунды мы учитываем, а то, что взаимное положение юнитов изменилось, нет.

Попахивает самозаовном.

Теперь возьми бункер (реальная игровая ситуация) или хоть цц, который чинят несколько СКВ, и начни стрелять по нему ривером. Не забудь записать видео и посчитать промахи, если таковые будут обнаружены :s37: Тут чистота практически гарантирована, потому что условия не меняются.
avatar REPS.RU|StArSO flag race

21125

min

|

256

sup

|

0

gas
05:10 13.08.2015

Ну алгоритм я думаю точно какой-нибудь у скарабея есть. Но возможно, алгоритм старый и кароче, былоб круто если в ск2 был ривер. Но ривера нет и поэтому ск2 не топчик.
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
05:44 13.08.2015

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 пишет:
А это в свою очередь означает, что ларго всё равно не прав, да и контролит наверняка хуёво.


ларго терран
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
06:05 13.08.2015

Viktor пишет:
Ну ради красного словца мог бы и пожалеть последнего отца мейн админа и хотя бы не искажать посыл, коль упоминаешь моё имя.

А именно,
Largus: ...я сделал выводы на основе своего опыта
Largus: если они ошибочны - что ж, так тому и быть

Leo: возможен тот факт, что рандом играет меньшую роль, чем я думаю (т.е. он есть, но вносит от силы 10% искажения а не 50% как я предполагаю)
Largus: или играет такую роль, что им можно пренебречь


Абсолютно не понял, что за красное словцо, где искажен посыл, что меняет тот текст который ты процитировал, к чему он.

Я это воспринимаю как "2 человека лисенок хотят прийти к истине", и расписал плюсы и минусы разных точек зрения (независимо от того, какую точку зрения в итоге примет каждый собеседник).

Можешь подробнее пояснить, что конкретно тебе не нравится и почему?

Viktor пишет:
Ну а теперь, раз ты решил доебаться, поиграем по этим правилам


Где кто к кому решил доебаться? Why so serious?

Viktor пишет:
Касаемо твоего эксперимента, а точнее его чистоты. СКВ стоят по-разному. Ай-яй, зэлео, ну как же так. Миллиметры и секунды мы учитываем, а то, что взаимное положение юнитов изменилось, нет.

Попахивает самозаовном.


Эмоции это всегда хорошо, но я каментом выше уже ответил лисенку по этому поводу с выкладыванием новых тестов, где эти нюансы учтены.

Запах самозаовна теперь устранен, надеюсь?

Может лучше перейдем с "самозаовн" стиля на попытки прийти к истине, безотносительно того, кто заовнится, как считаешь?

Viktor пишет:
Теперь возьми бункер (реальная игровая ситуация) или хоть цц, который чинят несколько СКВ, и начни стрелять по нему ривером. Не забудь записать видео и посчитать промахи, если таковые будут обнаружены Тут чистота практически гарантирована, потому что условия не меняются.


Давай не будем забегать вперед, и для начала проанализируем, какие проблемы есть во втором и третьем тестах, что я выложил
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
06:17 13.08.2015

REPS.RU|StArSO пишет:
Ну алгоритм я думаю точно какой-нибудь у скарабея есть. Но возможно, алгоритм старый и кароче, былоб круто если в ск2 был ривер. Но ривера нет и поэтому ск2 не топчик.


ривер есть в модах starbow и sc2bw для СК2, причем по старбов проходят турниры (возможно даже воды с риверами можно найти на трубе)
avatar JE SUIS PIZDABAL flag race

5931

min

|

111

sup

|

0

gas
07:02 13.08.2015

Путь скарабея зависит от наблюдающих, ибо скарабей находиться в двух супер позициях попал/не попал , но в момент наблюдения все и происходит
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
07:56 13.08.2015

JE SUIS PIZDABAL пишет:
Путь скарабея зависит от наблюдающих, ибо скарабей находиться в двух супер позициях попал/не попал , но в момент наблюдения все и происходит

Скарабей Шрёдингера?! :s1:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
08:37 13.08.2015

Ни ... себе
avatar Tрехглозый flag race

17546

min

|

590

sup

|

0

gas
09:00 13.08.2015

Лео, ты не до конца по-моему понял о чем Ларго и ко. У тебя во втором тесте(вторая часть) целевая скв стоит в разных положениях. В одном влево-вверх, в другом просто влево итд.
Тема про бв на кузах :s46: :s46: :s46: :s46: :s46:

29999 pts :s58: :s58: :s58: :s58: :s58: :s58: :s58:

avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
09:17 13.08.2015

надо Таму пригласить в обсуждение, он знает секрет использования ривачков :s26:
avatar fofo flag race

50506

min

|

912

sup

|

0

gas
11:07 13.08.2015

Я считаю, это всё магия бв.
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
11:59 13.08.2015

Зелео молодец. Как то с самого начала моей игры в БВ принял за данность некоторые тупняки юнитов и сильно по этому поводу не расстраивался. А когда ривер тупил, всегда списывал это на свой счет, что я что-то сделал не так...

Мне всегда казалось, что я за одну две секунды до вылета скарабея могу предвидеть успешен будет выстрел или нет... :s45:
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
12:02 13.08.2015

cоль земли пишет:
Я считаю, это всё магия бв.


Согласен! :s26:
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
14:39 13.08.2015

хотите немного магии бв? После выстрела ривера нажмите стоп :s37:
avatar 7x-Fenr flag race

6417

min

|

72

sup

|

0

gas
16:09 13.08.2015

Лео :s48:
avatar Enot ebaniy flag race

106

min

|

2

sup

|

0

gas
20:39 13.08.2015

theleo_ua пишет:
7x-Lisyonok пишет:
Однако при старте игры присутствует некоторый рендом при переходе от шаблона карты к реальной карте на которой проходит игра. К примеру отчётливо видно что СКВ в разных итерациях эксперимента смотрят в разные стороны, вероятно это и влияет на поведение скарабея.


Очень конструктивное замечание, большое спасибо! Намечается своеобразная дуэль "чья точка зрения окажется ближе к истине", интрига 80 уровня!

Продолжаем под спойлером:


Опять же ты не учитываешь тот факт, что сквшка, которую атакуют, появляется с рандомным направлением, а, так как на поворот юнита нужно время, а посылаешь ты их все в одну точку, экскрипереминетимент неточен! :s45:
avatar fofo flag race

50506

min

|

912

sup

|

0

gas
20:58 13.08.2015

ENOT EBANIY пишет:
экскрипереминетимент

:s31:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
22:19 13.08.2015

Flki пишет:
Лео, ты не до конца по-моему понял о чем Ларго и ко. У тебя во втором тесте(вторая часть) целевая скв стоит в разных положениях. В одном влево-вверх, в другом просто влево итд.


ENOT EBANIY пишет:
Опять же ты не учитываешь тот факт, что сквшка, которую атакуют, появляется с рандомным направлением, а, так как на поворот юнита нужно время, а посылаешь ты их все в одну точку, экскрипереминетимент неточен!


Тест 3: направление целевой SCVшки теперь всегда вверх: https://youtu.be/gPz8S0MmrGc

Scooter пишет:
Зелео молодец. Как то с самого начала моей игры в БВ принял за данность некоторые тупняки юнитов и сильно по этому поводу не расстраивался. А когда ривер тупил, всегда списывал это на свой счет, что я что-то сделал не так...

Мне всегда казалось, что я за одну две секунды до вылета скарабея могу предвидеть успешен будет выстрел или нет...


спасибо, приятного просмотра



7x-Lisyonok пишет:
Мне кажется, что движок бв вычисляет все действия и настоящего рендома в процессе игры нет.

Т.к. на этом основано проигрывание реплея: известно только начальное положение (копия карты, по видимому с доп. данными) и набор совершённых игроками действий с привязкой ко времени. При этом сколько бы раз мы не просмотрели реплей, скарабей летит всегда одинакого.


theleo_ua пишет:


Из того, что реплеи проигрываются правильно, не следует, что в игре нет рандома. Можно просто выпавшие значения рандома писать в реплей, и все будет проигрываться как надо. Да и сам алгоритм рандома можно оптимизировать так, чтобы таких записей (без потери качества рандомности чисел) было как можно меньше (с целью оптимизации размера реплея).

Пример 1: юнит, стреляющий в юнита на возвышенности или в деревьях. Нанесет он демейж или нет, зависит от рандома, но в реплее все проигрывается правильно.

Пример 2: игрок поставил себе расу random. В реплее будет всегда одна и та же выпавшая ему раса

Пример 3: тот самый случай с направлением сцвшек, который ты заметил - в реплее направление будет всегда одно и то же

Пример 4: ты играешь с melee компом и пишешь реплей. Комп определяет свою страту по рандому. Самое смешное, что где-то (не помню уже где) читал, что в самых первых версиях БВ, где только появились реплеи, именно такие игры с компом проигрывались неправильно, так как в реплеи не сохранялся рандом, соответственно при первом просмотре реплея комп рашил 4 пулом, а при втором развивался. И потом это пофиксили.



Как ты мог заметить, я забыл следующие вещи:



- криттеры ползают/летают по рандому (помню на одном мапмейкерском сайте предлагали один из способов генерации случайных чисел в UMS - кидаем криттера в замкнутое пространство, разделенное на несколько локаций, и в какую первую он придет, такое число и генерируем). Такому способу перемещения криттеров близзы даже дали название "собака на свалке" (Junk Yard Dog)

- SCVшка, которая строит здание, выбирает свои действия по рандому

- юнит, который находится вне свободного пространства (SCVшник внутри гейзера без рефинери, 12 собак, закопанных в одну точку, и одновременно выкапывающихся, пробка, которая заказала пилон возле стенки террана и начинает сквозь эту стенку проходить и т д), и автоматически пытается из этого пространства выйти, делает это по рандому (по аналогии, как SCVшка строит здание)

- в UMS я могу по рандому "либо включить, либо не включить" специфические переменные (switch), и на базе этого например выводить на экран каждый раз разный текст



Собственно, все эти вещи сохраняются в реплее. Если создать карту, на которой каждый раз при ее запуске будут генерироваться разный текст, по разному бегать криттер, и по разному SCVшник строить здание, то реплей будет проигрываться всегда одинаково.

Вот можешь посмотреть на ролик: https://youtu.be/F0fBI1fyo_w

карта включает в себя криттера, который каждый раз по разному бегает, циклическое рандомное отображение фрагментов из цитаты про флеша и SCVшника, который заказывает ЦЦ и "по разному бегает" в процессе строительства.

Сначала мы 3 раза пускаем эту карту, чтобы удостовериться, что поведение разное, потом сохраняем реплей и запускаем его 2 раза, чтобы удостовериться, что он проигрывается одинаково
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
23:47 13.08.2015

7x-Lisyonok пишет:
А это в свою очередь означает, что ларго всё равно не прав, да и контролит наверняка хуёво.

theleo_ua пишет:
ларго терран

Согласен, это даже хуже.
avatar Gamlet flag race

3621

min

|

103

sup

|

0

gas
13:09 14.08.2015

Для разнообразия можно и по другим юнитам пострелять.
Может от текстур зависит.Гуны же тупят из-за текстур как я понял.По моему близы сами и рассказывали.Типа граница текстуры больше чем сама текстура.
Я думаю выстрел ривера не рандомен а имеет определенную математику которую хуй проссышь как говорится.
avatar fofo flag race

50506

min

|

912

sup

|

0

gas
13:14 14.08.2015

Gamlet пишет:
Я думаю выстрел ривера не рандомен а имеет определенную математику которую хуй проссышь как говорится.

А я всё-таки склонен верить, что это магия :s46:
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
16:09 14.08.2015

там алгоритм какой-то, не рандом. Просто он выглядит нелепо, примерно как когда гуны лезут через рампу и начинают оббегать всё вокруг, ища другой выход.
Подло, когда скараб облетает сбоку и врезается, от такого урон входит полный, а когда сзади, там можно отъехать в радиус половинного урона :s30:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
16:11 14.08.2015

Largo won easy и ниибет
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
16:17 14.08.2015

Gamlet пишет:
Для разнообразия можно и по другим юнитам пострелять.
Может от текстур зависит.Гуны же тупят из-за текстур как я понял.По моему близы сами и рассказывали.Типа граница текстуры больше чем сама текстура.


Да, ты прав, тоже об этом думал. Потом проверю обязательно.

Gamlet пишет:
Я думаю выстрел ривера не рандомен а имеет определенную математику которую хуй проссышь как говорится.


Вполне возможно что так и есть

Кстати, насколько помню, ты смотрел матчи по starbow, следовательно видел, как там выглядит ривер
avatar Enot ebaniy flag race

106

min

|

2

sup

|

0

gas
16:33 14.08.2015

theleo_ua пишет:
Тест 3: направление целевой SCVшки теперь всегда вверх: https://youtu.be/gPz8S0MmrGc


ривер тоже всегда лицом в одну сторону появляется?
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
19:48 14.08.2015

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
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
23:26 14.08.2015

судя по тестам Зелео эффективность ривера 1/6 :s4:
avatar LLlapoBep flag race

2094

min

|

1

sup

|

0

gas
06:26 15.08.2015

theleo_ua пишет:
А я напоминаю, что первое правило кузов: никогда не спорь с зе...в общем жду мнение джастиса по этому поводу


А Джастису можно ? Было ? :s17:

Какой-то глюк поиска пути, што вообще может заставить отановиться неостановимые юниты БВ ? :s14:
avatar LimYoHwan flag race

9014

min

|

219

sup

|

0

gas
08:39 15.08.2015

эм.... :s13:
avatar Rus_Brain flag race

15192

min

|

736

sup

|

2500

gas
09:37 15.08.2015

Лео, так получается какие-то ошибки ривера всё-таки равны криворукости:
Also I don't recommend you using Stop, since doing so will destroy any scarabs that belong to the reaver.
Bisu vs Light: http://www.youtube.com/watch?lis...age#t=606s (смотреть на 10:06)
Тут Бису на стоп тыкнул выходит.
Остальное рандомня.
И у тебя свой же хороший пример с тремя группами СКВ по пять штук. Действие соперника - один из рандомных ивентов для игрока => исход рандомный и не просчитывается с 100% точностью.
avatar reps)S.JIM flag race

2495

min

|

63

sup

|

0

gas
09:54 15.08.2015


avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
11:35 15.08.2015

Dr. Brain пишет:
Тут Бису на стоп тыкнул выходит.

Мне кажется, понимал что скарабей уже не догонит вультурки и решил сделать быстрее ещё один выстрел, я бы не назвал это криворукостью.
avatar Rus_Brain flag race

15192

min

|

736

sup

|

2500

gas
11:42 15.08.2015

А может :)
В любом случае, это не затуп а принудительный взрыв скараба.
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
17:27 15.08.2015

4p)MickeyMouse пишет:
судя по тестам Зелео эффективность ривера 1/6


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 пишет:
И у тебя свой же хороший пример с тремя группами СКВ по пять штук. Действие соперника - один из рандомных ивентов для игрока => исход рандомный и не просчитывается с 100% точностью.


Dr. Brain пишет:
Лео, так получается какие-то ошибки ривера всё-таки равны криворукости:


Вполне возможно. Суть темы заключается в том, есть ли такие ошибки, которые:

1) не зависят от игрока протосса
2) не зависят от как от игрока протосса, так и от его оппонента

Если первый пункт более менее очевиден, то второй нет

Dr. Brain пишет:
Тут Бису на стоп тыкнул выходит.


7x-Lisyonok пишет:
Мне кажется, понимал что скарабей уже не догонит вультурки и решил сделать быстрее ещё один выстрел, я бы не назвал это криворукостью.


Dr. Brain пишет:
А может :)
В любом случае, это не затуп а принудительный взрыв скараба.


Вполне возможно

reps)S.JIM пишет:


сказал лисенок, увидев, что SCV рандомно поворачиваются при старте карты
avatar Kaban1 flag race

813

min

|

9

sup

|

0

gas
21:39 15.08.2015

А ларго прав )) от микро тера что то зависит.
Кстати, возможно, у ривера тоже есть "любимая" сторона атаки. Помните как в мутостеке распределяется рикошет. С разных сторон по разному. Возможно и у ривера есть такое. Что вероятность его попадания выше или ниже от того в какую сторону он стреляет. В том числе и распределение сплеша от взрыва скарабея. Так же, я думаю, есть определенные позиции когда стоящее здание или куст создают ситуацию из которых вероятность "затупа" скарабея выше. Например если скв была вроде на прямой линии огня, но начиная убегать заехала за СС или пво и тп.
avatar fofo flag race

50506

min

|

912

sup

|

0

gas
23:17 15.08.2015

Затупы скарабея придуманы близзами, чтобы тоссы не были полной имбой :s22:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
03:31 16.08.2015

Адын хуй, ривера рандомным называть нельзя. А то получается, что если взять ривера и, допустим, добавить 1 сцв и 1 СС на расстоянии 1 см от ривера - ривер в 5 случаях из 6 затупит и не попадет в сцв? Да он 6 раз из 6 снесет бедного сцвшку.
Отсюда вывод:"рандомность" ривера зависит как минимум от: 1) расстояния до цели;
2) количества целей и помех.
Отсюда еще 1 вывод: слово "рандомность" не применимо к ситуации. Подберите другой термин.
Лео, согласен, не?
avatar ProRok flag race

33553

min

|

754

sup

|

0

gas
06:23 16.08.2015

cоль земли пишет:
Залупы скарабея

avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
06:53 16.08.2015

Зелео а как ривак будет стрелять по неподвижной цели?

Может у скараба просчитывается несколько вариантов пути до атакуемой цели? Естественно не все пути одинаково оптимальны и он тупо на рандоме выбирает один из путей. Но он не знает где цель окажется пока скараб летит до цели и когда цель перемещается на следующую клетку алгоритм вычисления путей повторяется, не оптимальный путь накладывается на другой не оптимально выбранный путь и скараб заходит в тупик? :s45:

А если цель будет неподвижна, будет ли видно какие варианты путей бывают и по идее раз цель стоит на месте все должны быть успешные но не все оптимальные?

Короче сам не понимаю до конца что хочу сказать ну надеюсь кто нибудь понял мою мысль :s17:
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
06:55 16.08.2015

RRRMz пишет:
Адын хуй, ривера рандомным называть нельзя. А то получается, что если взять ривера и, допустим, добавить 1 сцв и 1 СС на расстоянии 1 см от ривера - ривер в 5 случаях из 6 затупит и не попадет в сцв? Да он 6 раз из 6 снесет бедного сцвшку.
Отсюда вывод:"рандомность" ривера зависит как минимум от: 1) расстояния до цели;
2) количества целей и помех.
Отсюда еще 1 вывод: слово "рандомность" не применимо к ситуации. Подберите другой термин.
Лео, согласен, не?


Вот вот я тоже пытаюсь об этом намекнуть... :s45:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
08:11 16.08.2015

Scooter пишет:
Короче сам не понимаю до конца что хочу сказать ну надеюсь кто нибудь понял мою мысль

Да все ты нормально объяснил. Сейчас дождемся очередных тестов от Лео и посмотрим, что там будет.
avatar fofo flag race

50506

min

|

912

sup

|

0

gas
08:36 16.08.2015

Во имя Адуна, залезьте в код бв и чекнить как летает этот ёбаный скарабей. Вы ж программисты!
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
09:08 16.08.2015

На некоторых тестах видно как скараб выбирает наикратчайший путь до цели и словно не знает что между ним и целью есть непреодолимое препятствие.

http://www.youtube.com/watch?v=pDVmg6rfKbE&feature=youtu.be#t=6m8s
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
09:13 16.08.2015

Scooter пишет:
На некоторых тестах видно как скараб выбирает наикратчайший путь до цели и словно не знает что между ним и целью есть непреодолимое препятствие.

http://www.youtube.com/watch?v=p....be#t=6m8s



Может быть скараб изначально выбирает правильный путь и учитывает все препятствия? А когда цель смещается и приходится путь пересчитывать препятствия уже не учитываются? В моей ссылке на тест Зелео это явно видно... :s45:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
09:40 16.08.2015

cоль земли пишет:
Во имя Адуна, залезьте в код бв и чекнить как летает этот ёбаный скарабей. Вы ж программисты!

Если так сделать, то пиздеть не о чем будет!
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
11:32 16.08.2015

Кажется я чтото понял, погуляю с детьми и напишу...
avatar LLlapoBep flag race

2094

min

|

1

sup

|

0

gas
13:34 16.08.2015

theleo_ua пишет:
Тут суть в том, с какой закономерностью этот баг воспроизводится (независимо от того, баг это или встроенный рандом). Мутастек, например, тоже баг, но воспроизводится постоянно и легко контролируется игроком (я могу выделить 1 овера и 11 мут, отдать им приказ и заранее быть уверенным, что они соберутся в стек)


Мутастек я бы не назвал багом, с какой стати ? если разброс юнитов в отряде превышает некоторую величину, то строй при движении не сохраняется и юниты все движутся в одну и ту же точку. :s20:
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
15:24 16.08.2015

Scooter пишет:
Кажется я чтото понял, погуляю с детьми и напишу...


Баг в обработке встречи скарабея с препятствием. Наикратчайший путь до цели вычисляется без учета каких либо препятствий на пути между ривером и целью. Вичисляется самый прямой путь до цели.

Идет прямой полёт до цели и функиция чтобы переместить скараба проверяет пуста ли следующая клетка. (Препятствия изначально не обрабатываются ввиду нереальности таких вычислений, так как за время полёта скараба клетку может занять другой объект, все предусмотреть нереально).

Если функция при проверке сообщает что клетка не пуста вот тут то судя по всему и начинается самое интересное. Происходят какие-то вычисления как обогнуть препятствие, которые судя по всему приводят к разным результатам. :s45:
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
15:30 16.08.2015

А рандомность полета кстати может возникать когда обход препяствия с лева и справа по длине одинаков, то есть можно пролететь как слева так и справа... :s45:

Все дело в том что величина объекта препятствия скарабу тоже не известна, то есть если бы он знал величину препятствия он бы знал с какой стороны его проще облететь... Но он знает только о какой-то одной клетке где чтото уже стоит поэтому часто приходится выбирать как облететь слева или справа, вот вам и множество вариантов поведения, вот тут и работает рандом который тут просто жизненно необходим. Компу же как-то надо принимать решения в неоднозначной ситуации... :s45:

P.S: Рандом простейший влево или вправо.
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
15:47 16.08.2015

1) Иногда ривер не хочет стрелять даже если у него есть скарабеи и ты приказываешь ему стрелять (например выделяя ривера, и нажимая правой кнопкой мыши на юните врага)

2) Иногда скарабы не достигают цели (я не рассматриваю здесь вариант, когда ривер стрелял в вультуру и она убежала в противоположную сторону, т.е. скараб просто физически не успел ее догнать, ибо здесь и ежу понятно, что причина фейла не в рандоме, а в скорости и времени жизни скараба):

- скарабей начинает дико тупить, прикасаясь к нецелевым вражеским юнитам (что приводит к отсутствию демейжа целевому юниту)

- скарабей приклеивается к зданию (либо надолго, либо навсегда, пока не сдохнет) что приводит к отсутствию демейжа целевому юниту (как например в вышеприведенном воде Jangbi vs Fantasy)

- скарабей движется не туда куда надо даже в чистом поле, причем без реальной на то причины




Прочитал еще раз все пункты и понял что мои рассуждения только вершина айсбьерга :s17:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
20:59 16.08.2015

RRRMz пишет:
Адын хуй, ривера рандомным называть нельзя. А то получается, что если взять ривера и, допустим, добавить 1 сцв и 1 СС на расстоянии 1 см от ривера - ривер в 5 случаях из 6 затупит и не попадет в сцв? Да он 6 раз из 6 снесет бедного сцвшку.
Отсюда вывод:"рандомность" ривера зависит как минимум от: 1) расстояния до цели;
2) количества целей и помех.
Отсюда еще 1 вывод: слово "рандомность" не применимо к ситуации. Подберите другой термин.
Лео, согласен, не?


Я тебе больше скажу: если поставить ривера, и на расстоянии его выстрела поставить бункер без препятствий, то ривер тоже продамажит бункер 6 раз из шести.

Термины можешь подбирать какие хочешь, но суть не меняется: есть такие ситуации, где ривер не будет дамажить 6 раз из шести (но как минимум 1 раз из шести продамажит).

Собственно я и хочу такие ситуации найти, причем максимально их упростив (с одной стороны) и максимально приблизив к реальным игровым ситуациям (с другой стороны).

Кстати, мне удалось воспроизвести "рандомность" во второй части теста 4 при одной целевой SCV (вместо двух, как было в тесте 4), видео сделаю позже.

Scooter пишет:
Зелео а как ривак будет стрелять по неподвижной цели?


Я думаю, что скорее всего одинаково, но могу ошибаться, так как если на пути к цели будут здания (бункеры), минералы, границы наземной поверхности и прочие препятствия, то теоретически возможно, что ривер поведет себя по разному (но вероятность такого резиста крайне мала).

SteelHawk пишет:
Мутастек я бы не назвал багом, с какой стати ? если разброс юнитов в отряде превышает некоторую величину, то строй при движении не сохраняется и юниты все движутся в одну и ту же точку.


Да господи, вот другие примеры:

- обс на турретке
- летающий дрон / темплар / дарк
- баг с ларвой (жмешь стоп и она двигается ближе к минералам)
- баг с продамаженной крип колони

большинство из этих пунктов (например обс на турретке) воспроизводятся (или воспроизводились, пока их не пофиксили) с такой вероятностью, что можно быть уверенным что воспроизведутся

Что до мутастека, то предположу, что покажи такую возможность "свести, благодаря оверу в другой части карты, муту в стек, и нагнуть террана" близзам в 1998 году, они мигом бы посчитали это за баг и пофиксили (т.е. баг заключается не в том, что воздушные юниты стечатся, а в том, что далеко (от точки приказа) расположенный юнит заставляет стечиться близко расположенных юнитов).

Scooter пишет:
А рандомность полета кстати может возникать когда обход препяствия с лева и справа по длине одинаков, то есть можно пролететь как слева так и справа...

Все дело в том что величина объекта препятствия скарабу тоже не известна, то есть если бы он знал величину препятствия он бы знал с какой стороны его проще облететь... Но он знает только о какой-то одной клетке где чтото уже стоит поэтому часто приходится выбирать как облететь слева или справа, вот вам и множество вариантов поведения, вот тут и работает рандом который тут просто жизненно необходим. Компу же как-то надо принимать решения в неоднозначной ситуации...

P.S: Рандом простейший влево или вправо.


надо будет попробовать для неподвижных целей (1 ривер, 1 SCV и 1 цц например) подобрать такую позицию, при которой скарабей оббегает цц слева, но при перемещении (имею в виду в редакторе карт, а не отдачу приказа) ривера (или SCV) на 1 пиксель вправо ситуация изменяется
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
01:08 17.08.2015

по моему весьма сомнительное использования рендома для выбора направление влево или вправо ^^
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
04:06 17.08.2015

7x-Lisyonok пишет:
по моему весьма сомнительное использования рендома для выбора направление влево или вправо ^^


Ок. Спорить не буду пока до конца не уверен... 7x-Lisyonok посмотри тесты в замедленном повторе, мне кажется там явно видно как устроен алгоритм патчфиндинга у скараба... :s45:

Лео кто-то где-то выкладывал сетку карт в BW и сколько клеток занимают юниты на карте? Можно найти? :s45:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
05:08 17.08.2015

theleo_ua пишет:
надо будет попробовать для неподвижных целей (1 ривер, 1 SCV и 1 цц например) подобрать такую позицию, при которой скарабей оббегает цц слева, но при перемещении (имею в виду в редакторе карт, а не отдачу приказа) ривера (или SCV) на 1 пиксель вправо ситуация изменяется


7x-Lisyonok пишет:
по моему весьма сомнительное использования рендома для выбора направление влево или вправо ^^


проверил на цц и рефинери при неподвижной целевой SCV - скарабей движется всегда одинаково (ну всмысле изначально например он движется с одной стороны, я перемещаю SCV (либо ривера) на 1 пиксель, и теперь скарабей движется всегда с другой стороны

также проверил, что будет, если целевая (пробка, уже не SCV) будет неподвижна, а нецелевые пробки будут мешать риверу по ней попасть (будут посланы на ривера через мув) - результат (3 попытки) показал как минимум 2 разных исхода (целевая пробка либо дохла либо нет), видео сделаю позже

Scooter пишет:
сетку карт в BW


Что ты имеешь в виду под сеткой карт в БВ? Это 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
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
07:20 17.08.2015

theleo_ua пишет:
Что ты имеешь в виду под сеткой карт в БВ? Это http://storage9.static.itmages.r...e96145.png ?



Да то что нужно... :s45:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
07:32 17.08.2015

Scooter пишет:
Да то что нужно...


Тогда я без понятия, выложено ли такое в инете. Могу рассказать, как это делать в редакторе карт
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
09:47 17.08.2015

theleo_ua пишет:
Тогда я без понятия, выложено ли такое в инете. Могу рассказать, как это делать в редакторе карт


Да я понял что ты с редактора взял... Последний раз в редактор заходил лет 8 назад, сразу как-то не дошло что там должна быть сетка... :s40:


Я так понял что мои догадки по поводу рандомности выбора облёта препятствий не оправдались? :s45:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
10:39 17.08.2015

Scooter пишет:
Я так понял что мои догадки по поводу рандомности выбора облёта препятствий не оправдались?


если ты про здания в качестве препятствий и неподвижные объекты в качестве цели, то не оправдались
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
12:16 17.08.2015

7x-Lisyonok пишет:
Мне кажется, что движок бв вычисляет все действия и настоящего рендома в процессе игры нет.

Т.к. на этом основано проигрывание реплея: известно только начальное положение (копия карты, по видимому с доп. данными) и набор совершённых игроками действий с привязкой ко времени. При этом сколько бы раз мы не просмотрели реплей, скарабей летит всегда одинакого.


theleo_ua пишет:




Как ты мог заметить, я забыл следующие вещи:

- криттеры ползают/летают по рандому (помню на одном мапмейкерском сайте предлагали один из способов генерации случайных чисел в UMS - кидаем криттера в замкнутое пространство, разделенное на несколько локаций, и в какую первую он придет, такое число и генерируем). Такому способу перемещения криттеров близзы даже дали название "собака на свалке" (Junk Yard Dog)

- SCVшка, которая строит здание, выбирает свои действия по рандому

- юнит, который находится вне свободного пространства (SCVшник внутри гейзера без рефинери, 12 собак, закопанных в одну точку, и одновременно выкапывающихся, пробка, которая заказала пилон возле стенки террана и начинает сквозь эту стенку проходить и т д), и автоматически пытается из этого пространства выйти, делает это по рандому (по аналогии, как SCVшка строит здание)

- в UMS я могу по рандому "либо включить, либо не включить" специфические переменные (switch), и на базе этого например выводить на экран каждый раз разный текст



Собственно, все эти вещи сохраняются в реплее. Если создать карту, на которой каждый раз при ее запуске будут генерироваться разный текст, по разному бегать криттер, и по разному SCVшник строить здание, то реплей будет проигрываться всегда одинаково.

Вот можешь посмотреть на ролик: https://youtu.be/F0fBI1fyo_w

карта включает в себя криттера, который каждый раз по разному бегает, циклическое рандомное отображение фрагментов из цитаты про флеша и SCVшника, который заказывает ЦЦ и "по разному бегает" в процессе строительства.

Сначала мы 3 раза пускаем эту карту, чтобы удостовериться, что поведение разное, потом сохраняем реплей и запускаем его 2 раза, чтобы удостовериться, что он проигрывается одинаково




мне вот интересно, интерцепторы (например когда 12 керриеров и по 8 интерцепторов в каждом) по рандому будут лететь, или всегда одинаково
avatar LLlapoBep flag race

2094

min

|

1

sup

|

0

gas
13:27 17.08.2015

theleo_ua пишет:
Да господи, вот другие примеры:

- обс на турретке
- летающий дрон / темплар / дарк
- баг с ларвой (жмешь стоп и она двигается ближе к минералам)
- баг с продамаженной крип колони


Обс над туреткой - ржачный баг, обс обводит туретку вокруг пальца :s17:

Мне ещё рассказывали про то как из пачки лингов можно было пачку мутей сделать, вот это я понимаю баг

большинство из этих пунктов (например обс на турретке) воспроизводятся (или воспроизводились, пока их не пофиксили) с такой вероятностью, что можно быть уверенным что воспроизведутся


Можно было на них билды придумывать :s2:
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
00:20 18.08.2015

Чотам поитогу, рандом или нэт?
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
04:21 18.08.2015

По итогу я понял одну вещь. Чтобы выстрел ривера был успешен:

А. Нужно выбирать самую простую траекторию полёта скараба к цели, без препятствий. В идеале прямую.

Б. Атакуемая цель должна стоять на месте.


P.S: Баг возникает в момент когда скарабу нужно обогнуть препятствие, а атакуемая цель в этот момент продолжает движение. Но воспроизводится баг не в 100% случаев. :s45:
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
04:48 18.08.2015

я хз, из моего опыта бывает так что ривер просто не стреляет, т.е. скарабы есть, цель рядом, выделяешь ривера кликаешь правой кнопкой на цель, ривер к ней ползёт :f:
avatar Clockware flag race

5162

min

|

145

sup

|

0

gas
04:56 18.08.2015

у меня есть своё скромное мнение.
моё мнение в том, что алгоритм, выполняющий действия за ривера и скараба - детерминирован.

а вот игровой диспатчер SC:BW, который контролирует юниты на карте, и раз в какой-то такт "дёргает" диспатчеры всех юнитов, чтобы они сделали часть своих действий и вычислений — нет.

думаю он вайл-тру ходит, и в какой то момент собирает всех юнитов на карте, и вызывает диспатчер каждого. возможно, способ собирания юнитов недетерминирован, или таймер неточен.

предполагаю при этом, что в реплей пишется именно последовательность (время, юнит), т.е в какой момент времени был вызван диспатчер юнита. в силу этого нетерминированность на реплее уже не проявится.
ну это примерно конечно, откуда ж мне точно знать.
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
06:35 18.08.2015

Терране! Отбивайте ривердроп стаком рабочих!
avatar Viktor flag race

41000

min

|

1444

sup

|

0

gas
07:09 18.08.2015

Scooter пишет:
По итогу я понял одну вещь. Чтобы выстрел ривера был успешен:

А. Нужно выбирать самую простую траекторию полёта скараба к цели, без препятствий. В идеале прямую.

Б. Атакуемая цель должна стоять на месте.

вот это сюрприз, блеать
просто озарения снизошло :s37: :s40:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
07:44 18.08.2015

theleo_ua пишет:
Кстати, мне удалось воспроизвести "рандомность" во второй части теста 4 при одной целевой SCV (вместо двух, как было в тесте 4), видео сделаю позже.


theleo_ua пишет:
также проверил, что будет, если целевая (пробка, уже не SCV) будет неподвижна, а нецелевые пробки будут мешать риверу по ней попасть (будут посланы на ривера через мув) - результат (3 попытки) показал как минимум 2 разных исхода (целевая пробка либо дохла либо нет), видео сделаю позже


Тест 6: https://youtu.be/c5TflY0R83M

Часть 1: копия второй части теста 4 для одной целевой SCV

Попытка 1: SCV выжила
Попытка 2: SCV сдохла

RRRMz пишет:
Отбивайте ривердроп стаком рабочих!


Часть 2: целевая пробка не движется, но нецелевые пробки мешают риверу по ней попасть (посылаются на ривера через мув)

Попытка 1: скарабей вылез на "горизонтальную линию над пробками", и дальше тупо двигался вправо. Целевая пробка сдохла
Попытка 2: скарабей не вылез (отличие от попытки 1) на "горизонтальную линию над пробками", но тем не менее, целевая пробка сдохла
Попытка 3: целевая пробка выжила
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
08:08 18.08.2015

RRRMz пишет:
Терране! Отбивайте ривердроп стаком рабочих!

попробую!
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
08:15 18.08.2015

7x-Lisyonok пишет:
Чотам поитогу, рандом или нэт?


Предположу, что больше да чем нет

7x-Lisyonok пишет:
я хз, из моего опыта бывает так что ривер просто не стреляет, т.е. скарабы есть, цель рядом, выделяешь ривера кликаешь правой кнопкой на цель, ривер к ней ползёт


да, такое бывает, но я пока хз как реализовать "одинаковость" (с целью проверить данный рандом на рандомность)

UEBASHENIY_LENI пишет:
у меня есть своё скромное мнение.
моё мнение в том, что алгоритм, выполняющий действия за ривера и скараба - детерминирован.

а вот игровой диспатчер SC:BW, который контролирует юниты на карте, и раз в какой-то такт "дёргает" диспатчеры всех юнитов, чтобы они сделали часть своих действий и вычислений — нет.

думаю он вайл-тру ходит, и в какой то момент собирает всех юнитов на карте, и вызывает диспатчер каждого. возможно, способ собирания юнитов недетерминирован, или таймер неточен.

предполагаю при этом, что в реплей пишется именно последовательность (время, юнит), т.е в какой момент времени был вызван диспатчер юнита. в силу этого нетерминированность на реплее уже не проявится.
ну это примерно конечно, откуда ж мне точно знать.


вполне возможно, что так и есть
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
08:20 18.08.2015

UEBASHENIY_LENI пишет:
предполагаю при этом, что в реплей пишется именно последовательность (время, юнит), т.е в какой момент времени был вызван диспатчер юнита. в силу этого нетерминированность на реплее уже не проявится.
ну это примерно конечно, откуда ж мне точно знать.


Кстати, в таком случае размер реплея очень сильно растет. Если бы ты был программистом из близзов, неужели не захотел бы оптимизировать?
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
10:39 18.08.2015

4p)MickeyMouse пишет:
попробую!

не вышло, все рабы сдохли
avatar Scooter flag race

2091

min

|

65

sup

|

0

gas
11:30 18.08.2015

Viktor пишет:
вот это сюрприз, блеать
просто озарения снизошло


Ага... :s3: Сам в шоке, прям как Менделееву ответ пришёл во сне :s40:
avatar Clockware flag race

5162

min

|

145

sup

|

0

gas
18:49 18.08.2015

theleo_ua пишет:
Кстати, в таком случае размер реплея очень сильно растет. Если бы ты был программистом из близзов, неужели не захотел бы оптимизировать?
у меня щас новое предположение.
игровой таймер и обработчики юнитов - детерминированные.

а вот опрос триггеров на карте, за счёт которых юниты получают диспатч - разные.
т.е. есть на карте задан триггер у ривера на то, чтобы стрелять, но срабатывает он чуток по разному.

тогда действительно, в реплей достаточно писать лишь конкретные приказы юнитам, а процесс их исполнения отдаётся в руки игрового таймера и диспатчеров. и реплей не будет большим.
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
21:46 18.08.2015

UEBASHENIY_LENI пишет:
тогда действительно, в реплей достаточно писать лишь конкретные приказы юнитам


1) я отметил 12 собак и отправил их через А-клик

Вариант А: в реплей запишется 12 приказов
Вариант Б: в реплей запишется 1 приказ

В варианте А реплей занимает больше места, а в варианте Б "разный опрос юнитов диспетчером" приведет к разным результатам

2) я отметил ривера и приказал ему убить SCV. Ривер убил SCV. А потом к риверу приползла собака, он ее убил. А потом гидра и ее он тоже убил.

Вариант В: в реплей запишется 1 приказ "убить SCV"
Вариант Г: в реплей запишется сначала реакция ривера на SCV, потом реакция ривера на собаку, потом на гидру

В варианте Г реплей занимает больше места, а в варианте В "разный опрос юнитов диспетчером" приведет к разным результатам

З.Ы. Не забывай, что реплей реплеем, но гораздо важнее сетевой трафик в мультиплеере, который чем меньше тем лучше (помню играл в БВ на 19600 модеме), следовательно в случае вариантов А и Г придется передавать в разы больше информации по сети
avatar Rus_Brain flag race

15192

min

|

736

sup

|

2500

gas
08:23 19.08.2015


- баг с продамаженной крип колони
:s13: Напомни?
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
08:33 19.08.2015

Микки, я ж пошутил :tr:
avatar RRRMz flag race

12269

min

|

82

sup

|

0

gas
08:35 19.08.2015

Когда крипка мутирует в санкен - если ее продамажить до хп ниже 100 - она закончит мутацию с 1 или 2 хп здоровья
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
08:52 19.08.2015

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
avatar Galliant flag race

2204

min

|

33

sup

|

0

gas
08:54 19.08.2015

не читал, но одобряю
avatar neobaby flag race

1973

min

|

67

sup

|

0

gas
10:38 19.08.2015

имхо уровень тупняков скараба корректируется практикой игры. Вывод простой, чем больше практики с ривером в разных ситуациях, тем меньше рандома.
avatar Viktor flag race

41000

min

|

1444

sup

|

0

gas
11:28 19.08.2015

Роберт вышел из запоя и сформулировал суть темы в одном предложении :tr:
avatar neobaby flag race

1973

min

|

67

sup

|

0

gas
15:05 19.08.2015

:s4:
avatar Clockware flag race

5162

min

|

145

sup

|

0

gas
18:11 19.08.2015

theleo_ua пишет:

1) я отметил 12 собак и отправил их через А-клик

Вариант А: в реплей запишется 12 приказов
Вариант Б: в реплей запишется 1 приказ

В варианте А реплей занимает больше места, а в варианте Б "разный опрос юнитов диспетчером" приведет к разным результатам

2) я отметил ривера и приказал ему убить SCV. Ривер убил SCV. А потом к риверу приползла собака, он ее убил. А потом гидра и ее он тоже убил.

Вариант В: в реплей запишется 1 приказ "убить SCV"
Вариант Г: в реплей запишется сначала реакция ривера на SCV, потом реакция ривера на собаку, потом на гидру

В варианте Г реплей занимает больше места, а в варианте В "разный опрос юнитов диспетчером" приведет к разным результатам

З.Ы. Не забывай, что реплей реплеем, но гораздо важнее сетевой трафик в мультиплеере, который чем меньше тем лучше (помню играл в БВ на 19600 модеме), следовательно в случае вариантов А и Г придется передавать в разы больше информации по сети
чёт ты усложнил. тебя перекосило в сторону оптимизации реплея.
давай я поясню мысль.
записываем в реплей только "воздействие на юнит".
действие игрока является(в том числе селект мышкой) воздействием на юнит.
теперь: триггеры на карте тоже могут управлять юнитами, но механизм их активации недетерминирован, однако способ срабатывания триггера как-то отмечается в реплее.

итог:
многократное воспроизведение игры на карте с триггерами -> недетерминировано (что мы и видим у тебя с ривером)
воспроизведение реплея с триггером -> детерминировано, но только на фастест, т.к. иначе возникают баги с интерпретации триггеров на карте
воспроизведение реплея без триггера -> строго детерминировано.
avatar 4p)MickeyMouse flag race

3373

min

|

210

sup

|

0

gas
20:22 19.08.2015

UEBASHENIY_LENI пишет:
чёт ты усложнил


UEBASHENIY_LENI пишет:
итог:
многократное воспроизведение игры на карте с триггерами -> недетерминировано (что мы и видим у тебя с ривером)
воспроизведение реплея с триггером -> детерминировано, но только на фастест, т.к. иначе возникают баги с интерпретации триггеров на карте
воспроизведение реплея без триггера -> строго детерминировано.

:s25:
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
00:39 20.08.2015

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 байт


Если не веришь моим цифрам, скачай карту (ссылка в описании) и проделай тесты сам
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
06:48 20.08.2015

Вот что надо сделать, посмотреть какие байты отличаются у перлеев где ривер ведёт себя по разному
avatar theleo_ua flag race

25002

min

|

508

sup

|

0

gas
07:06 20.08.2015

7x-Lisyonok пишет:
Вот что надо сделать, посмотреть какие байты отличаются у перлеев где ривер ведёт себя по разному


осмелюсь предположить, что эти байты будут числом под названием "рандомное зерно" (кто не знает что это, читаем это и это)

тем не менее, для теста понадобится:

- прога, которая распаковывает реплеи (не помню как называется, вроде rexplorer, вобщем буду признателен, если кинете мне названия таких прог)
- переделать карту с ривером так, чтобы проигрыш игроку присваивался каждый раз в одинаковое время (иначе отличия скорее всего будут в большем количестве байт)

Это все я смогу сделать, но дальше что? Кто из кузян будет ковырять, что эти байты значат?

Единственное, что здесь можно будет понять без ковыряния, это то, что если отличия будут например в 2-х байтах, то ответ станет очевидным: это то самое рандомное зерно
avatar Rus_Brain flag race

15192

min

|

736

sup

|

2500

gas
07:55 20.08.2015

Во всех 4 случаях размер реплея получился 148298 байт (столько же, сколько в пункте 2, когда мы сразу alt q q в начале игры), причем компы каждый раз играли по разному
вот это круто :s12:
avatar 7x-Lisyonok flag race

2450

min

|

26

sup

|

0

gas
02:38 22.08.2015

theleo_ua пишет:
осмелюсь предположить, что эти байты будут числом под названием "рандомное зерно"

Если будут различаться незначительно, в несколько байт, то только это и останется предположить

Добавить комментарий

Авторизуйтесь чтобы отправить комментарий