Chat:Ru/2022-04-26

From CG community
Jump to navigation Jump to search

aangairbender: Mob pos mismatch (id 79): predicted (120, 1423) actual(120, 1422)

aangairbender: обожаю такие проблемы в симе))

aangairbender: разобрался, я толкал в нецелую точку

BorisZ: я пока вообще забил на симуляцию - мне кажется что тут важнее взаимодействие между героями

BorisZ: они далеко друг от друга, между ними туман

BorisZ: придется наверное вернуться для каких-то моментов на базе но потом потом )

aangairbender: в защите может быть, а атаке сима слишком крутая)

BorisZ: просто если мобы под щитом, то у них движение предопределенное, чтобы понять то с ним будет перебирать ничего не надо

aangairbender: вопрос в том как протолкнуть моба к врагу на базу и кинуть щит, а дальше уже пусть разбирается

BorisZ: но конечно придется что-то делать, я не спорю, у меня сейчас если атака захлебнулась то считай что проиграл

aangairbender: так вот сима с каким-нибудь поиском сможет найти брешь в обороне соперника

BorisZ: это да, но тут вопрос когда может быть важнее чем как

BorisZ: слишком рано начнешь - только ману потратишь

BorisZ: слишком поздно, тоже плохо

tutubalin: там же крутизна мобов от времени зависит

tutubalin: на каком ходу более крутые появляются?

aangairbender: они постепенно хп увеличивают

aangairbender: каждая 2оя волна +1 хп

Uljahn: +1 хп каждые 10 ходов

tutubalin: MOB_SPAWN_RATE = 5; MOB_GROWTH_MAX_ENERGY = 0.5;

tutubalin: можно прикинуть момент, когда мобы становятся достаточно толстыми, чтобы имело смысл их начинать толкать

CyberEcho: >>> Xanrum тогда бы выигрывали стратегии глухой оборны, которые тратят минимум и сидят на базе

Сидя на базе выиграть невозможно. Так как один чужой герой, в отсутствии атакующих, может оборонять базу от _любого_ числа пауков с помощью WIND. А 2 других с помощью WIND и SHIELD взломают любую оборону.

Chibikko: в этом соревновании защита хуже чем нападение? Не получится выиграть, только защищаясь?

aangairbender: если будешь только защищаться, то оппонент тебя затолкает на базу, а сам будет фармить wild mana

wlesavo: Да похоже бластер мету хорошенько встряхнет, я тоже подумываю пробовать более эффективную атаку

aangairbender: как сказали выше 1 защитника достаточно против полностью защитного бота

FeZar97: не имеет смысла держать одного защитника, если оппонент не атакует, надо распознавать уровень агрессивности врага

tutubalin: но бывают же залётные мобы

aangairbender: блин они до сих пор не пофиксили баг, что скорость моба не меняется после контроля

aangairbender: поэтому если вручную считать threatFor, то будет беда (бот думает что моб все еще угроза после контроля)

aangairbender: ух, уже 211 тиков живу против blasterpoard

tutubalin: тоже на это натолкнулся. нельзя верить threatFor

tutubalin: покажи демку

tutubalin: а он засабмитил всё таки?

aangairbender: да, он сейчас топ1

wlesavo: вчера сабмитил, да, там весело было

aangairbender: tutubalin проблема не в том, что нельзя верить threatFor, проблема в том что ты его посчитать не можешь

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

aangairbender: из-за этого я не могу дожить до 220, бот несколько раз подряд контроль ипользует

aangairbender: и маны не хватает в итоге

wlesavo: можно проверить is_controled, если ты не контролил значит на тебя идет если ты контролил то от тебя

Uljahn: можно хранить стейт моба и проверять, совпадает ли новое положение с учётом контроля с реальным положением

Uljahn: если совпадает, то контроль прошёл

aangairbender: если использовать прошлый тик, то можно да

Xyze: я вообще не использую threatFor

Xyze: но кажись понять направление моба после контроля далеко не так просто

Xyze: и в общем случае нереально

Xyze: ибо противник мог подгадить из тумана

wlesavo: ну пожно логично предположить, что если ты не контролил, то его законтролил противник и направил на твою баз

Xyze: ну а если ты законтролил, в след тик смотришь - is controled, всё норм

Xyze: а на самом деле вы оба кинули контроль

Xyze: а там сумма направлений

Xyze: но он из тумана это сделал

wlesavo: ну с суммой да, но там не так страшно, потому что сумма не будет в тебя направлена скорее всего

Xyze: фиксится двумя нападающими ))

Xyze: но так то да, я понимаю о чем ты говоришь

Xyze: общее представление будет

wlesavo: я трекинг примитивный добавил, в целом польза есть, но на сабмите не заметно

wlesavo: видимо там у меня куча фундаментальных проблем

Xyze: заставь дайвера стоять после 100 хода внутри базы противника

Xyze: чтобы у тебя ветер еле цеплял его

Xyze: зато будет срабатывать дистанция для щита

Xyze: а то ты часто кидаешь мобов перед собой, и для щита тебе нехватает

Xyze: любой дефер выкинет из ветром

wlesavo: да там пока вообще дайверы глупо играют, надо будет досыпать эвристик и правда

FeZar97: сдуфк

FeZar97: упс, не сменил таргет окно)

tutubalin: и раскладку )

DoubtinGiyov: Была инфа когда будет золотая лига? И сколько примерно людей автоматом обычно перекидывает в золото?

Uljahn: обычно лиги открываются в одно и то же время, примерно будет 100-500 автоматом

wlesavo: главное не сабмитить перед открытием

kurnevsky: Сегодня? :)

Uljahn: лега? послезавтра

kurnevsky: Про золото же спрашивали :)

Uljahn: сегодня, раз в два дня же

kurnevsky: ок, спасибо :)

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

Uljahn: объявили точное время открытия золота в дискорде - через 5 часов

BorisZ: хотя получается не всегда

BorisZ: отлично

BorisZ: определенность хоть в чем-то)

BorisZ: мой прогноз что в золото пустят процентов 20-25

BorisZ: то есть 600-800 мест

Uljahn: опять лега будет 200+ и игры встанут к выходным

BorisZ: в легу то как обычно человек 10-20 возьмут чтоб не больше сотни было в конце

BorisZ: ладно чего гадать, все сами увидим )

Uljahn: я посмотрел лидерборд последнего бот-контеста

wlesavo: блин, вроде бы уже столько раз MC писал, а все равно на грабли наступил, для разных юнитов в одной симе действия очень плохо ищутся, автоматической кооперации не получается, а наоборот, одно хорошая последовательность для первого убивает убивает все что найдено для второго, исправил сразу куда то в топ 100 вернулся

wlesavo: я это понимал сразу, но надеялся на чудо, а оно чето не произошло(

BorisZ: монтекарло убивает:relieved:

BorisZ: из газетных заголовков)

wlesavo: не даром у тебя аватарка желтая))

BorisZ: угу, убит монтекарлой

Valdemar: попробовал добавить щит в защите, начал проигрывать дну серебра – они задувают жуков на базу, а герои из-за щита не задуваются и не успевают их убить

Valdemar: видимо надо добавлять просчет уже, эвристик не хватает прикольный баланс

Uljahn: around 20% of the [silver] league should pass

Uljahn: "no sorry, we changed that actually 😅 we intend to make around 450 people pass"

Uljahn: лол

a1.dk: XD

wlesavo: ну с 20 до 15

Uljahn: с 600 до 450

Uljahn: сначала борис угадал, потом я

wlesavo: конечно не бластер, но зато это все в рамках того же МС! :slight_smile: https://www.codingame.com/share-replay/625311824

wlesavo: еще бы по стабильнее играло и нормально бы было

Default avatar.png Indawl: а если трое wind сделают на одного монстра, то он улетит на 6600?

Xyze: ага

wlesavo: у топ 2 такая стратегия

Default avatar.png Indawl: жесть)

Xyze: ну только они должны прям в ряд стоять

wlesavo: они у него просто одинаковыми командами ходят))

Default avatar.png Indawl: прям точка в точку или просто задевать?

Xyze: точнее ветер по одной траектории*

wlesavo: и на одной точке стоят

wlesavo: там примитивная прямо стретегия

Xyze: ну на одной точке не обязательно

wlesavo: я про конкретно топ2

Default avatar.png Indawl: а

Xyze: а ну эт да

Default avatar.png Indawl: хотя под правило такое поведение на 6600 попадает

aangairbender: wlesavo в повторе 115 тик красный толкнул моба и сам побежал убивать его

aangairbender: спас оппонента:joy:

aangairbender: выглядит круто конечно

Xyze: опять балуешься предсказывая противника?)

aangairbender: ты выше написал что МС для одного убивает последовательность для второго, решил другим алгоритмом или какой-то трюк для МС?

Xyze: что он тебе поможет, а ты сам против себя

Xyze: то есть угадал

Xyze: есть трюки для мс

Xyze: на самом деле это даже не трюк

Xyze: это подход еще с CSB

Xyze: допустим глубина 4, у тебя 3 моба

Xyze: для MC один Солюшн будет иметь 12 ходов

Xyze: всё

Xyze: решение откидывается если оно хуже предыдущего, ты каждый раз ищещь последовательность в 12 ходов

aangairbender: то есть искуственно ввести пошаговость?

Xyze: не 4 + 4 + 4

Xyze: это наоборот полный уход от пошаговости

Xyze: у тебя решение обязано быть цельным

Xyze: а вот как раз в 3 монтекарло друг за другом и будет проблема

Xyze: когда у тебя ну лучшее решение из 4 для первого

Xyze: он там и дует, и вообще красавчик

Xyze: а первый ход твоего второго - щит на моба рядом с первым )))

Xyze: в его личной оценке он молодец

Xyze: а совокупность ходов стала вообще неоч

Xyze: а вот если бы это было при Солюшене из 12 ходов, ты бы просто его выкинул

Xyze: да, жалко терять красивые ходы из-за одного плохого хода во всей последовательности

wlesavo: aangairbender это известное поведение :smiley:

aangairbender: я все еще не до конца понял идею:sweat_smile:

Xyze: а ты просто mc делал когда нить?

wlesavo: Xyze не, тут кстати чтобы работало приходится все предсказания отключать, ато он знает что его атаку отразят и не пытается даже

Xyze: для этого тоже есть подходы, просто они немного всё портят

aangairbender: у меня мс в леге в крестиках ноликах, смитси в леге в pokerchiprace

Xyze: ты должен играть против 2 ботов

Xyze: пасисвный и активный

Xyze: а score = min(pas, act)

Xyze: это пессимистичный подход

wlesavo: aangairbender MC в леге UTTT? точно не MCTS?

wlesavo: если так то интересно прямо что ты там сделал такого

aangairbender: аааа вот в чем была проблема, я думал МС это монте карло

Xyze: ну да

Xyze: но монте карло три серч

aangairbender: у меня мктс в крестиках

Xyze: это уже не то ))

Valdemar: aangairbender MC и MCTS два разных алгоритма

wlesavo: а ну это тут часто путают

aangairbender: а мс тогда что еще раз

Xyze: обычный монте это супер простая идея

Valdemar: первый - что-то рандомим и оцениваем второй - рандомим, но вместо оценки играем игру до конца

Xyze: сделай последовательность ходов -> просимулируй -> посчитай оценку -> если лучше стало сохрани -> если хуже выкинь

Xyze: последовательность обычно просто рандом ходы

Xyze: берешь не умом и ифками, а процессорным временем

wlesavo: но когда много сущностей взаимодействуют эта простая идея тяжело заводитсяконечно

Xyze: ну эт уже детали

Xyze: зато из мс в генетика буквально 1 телодвижение

Valdemar: можно 3 разом рандомить и надеяться на чудо)

Xyze: я так и делаю

Xyze: ну пока что

wlesavo: я когда разделил стало лучше играть вроде

Xyze: у меня оценка глупая пока, но я вижу что они четко ей следуют

Xyze: ты разделил всех 3 чтоли?

Xyze: или на 2 группы?

wlesavo: ну для одного считаю, потом он в симе ведет себя по найденой последовательности

wlesavo: до этого было две группы

wlesavo: хотя конечно хз, вот нападение новое лучше играет когда вместе ищут

Xyze: может времени не хватает просто?

wlesavo: мождет конечно

Xyze: а то получается ты просто не даешь одному мешать второму

Xyze: но шанс коопа --

wlesavo: может баги просто

wlesavo: не, кооп тут через то что второй под первого подстраивается

Xyze: ну так о том и речь

Xyze: что первый никогда не идет на кооп

wlesavo: это да

Xyze: и шанс оказаться в такой ситуации второму просто меньше, хоть и имеется

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

wlesavo: в нападении*

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

Xyze: сделай поиск на 16 направлений

Xyze: ну или на 8

Xyze: на 4 ему просто тяжело ходить

wlesavo: > поиск с влево-вправо-вверх-вниз у меня 8 направлений просто + мув к пауку

Xyze: и разную длину шага можно

Xyze: 800 400

Xyze: предледование паука без 400 невозможно

Xyze: преследование*

Valdemar: Xyze вот кажется, что рассматривать варианты типа "идем наперерез жуку" лучше, чем N направлений

wlesavo: можно совмещать

Valdemar: а то в поле зрения 1 жук, но поиск выжирает время, потому что бродит вокруг

Valdemar: или совмещать, да

Bezbiletnik: как выйти из режима вставки(insert) в vim?

Valdemar: escape

wlesavo: вот стабильно бы так играло а не через раз и хорошо бы было https://www.codingame.com/replay/625355503

Xyze: Valdemar в этом кажется как раз и проблема

Xyze: как ты найдешь ход встать перед жуком, сделать wait потом wind

Xyze: когда ты по факту урезал его возможность свободно передвигаться

Bezbiletnik: Valdemar Да, но как сделать это здесь

Xyze: любое ограничение свободы действия в поисковых алгоритмах аукается

Xyze: а при полной свободе тебе не хватит тут времени

Valdemar: Xyze у меня такое в эвристике есть, т.е. вместо "подойти, встать, скастовать" смотрим действие "идти в эту точку и оттуда кастовать ветер" но я пока симуляцию не оформил, может есть подводные камни

Xyze: в эту точку - это куда?

Xyze: в паука?

Valdemar: да, в любую точку, из которой его можно сдуть через t ходов

Xyze: хм, ну хз хз

Xyze: я так скажу, у меня в CodeRoyale не было вообще ходов по типу "идти к какому то месту"

Xyze: только относительное передвижение

Valdemar: в общем надо попробовать, может в итоге забью и сделаю по простому с относительным движением

Xyze: так точно всегда проще обкатать симу

Valdemar: в обороне такое не завелось, т.к. надо далеко симулировать, чтобы увидеть что жук ударит базу, например или нужна сразу оценка умнее чем hp*1000+mana


Default avatar.png Indawl: а в чем смысл в исходнике: public Vector symmetricTruncate(Vector origin) {

       return sub(origin).truncate().add(origin);
   }

Default avatar.png Indawl: ?

mihei: симметричное округление координат относительно центра карты

Default avatar.png Indawl: а, точняк, спс

aangairbender: я правмльно понимаю, что может прийти такие vx vy что модуль скорости будет меньше 400?

aangairbender: из-за откидывания дробной части при отправке инпута игрокам

aangairbender: а то чего-то симуляция не сходится с реальными значениями на 1

Uljahn: конечно может

aangairbender: я вижу что после применения ветра скорость пересчитывается, но не вижу чтоб потом vx vy где-то truncate делались

aangairbender: (если вытолкнуть за предели базы)

aangairbender: блин и как тогда симулировать пермещение мобов если скорость кривая приходит

Default avatar.png Indawl: обновлять положение а в симе не обращать внимание

BookSaver: Поехали

Default avatar.png Indawl: а если на героя применили wild, то он сходит и по его новым координатам его откинет на 2200?

aangairbender: да, если не вышел из радиуса

BorisZ: странно, в золоте только 35 игр сыграло и пишет что закончен пересчет

Uljahn: ограничили на период промоушнов

Uljahn: "We'll switch back when current submissions are low"

a1.dk: да ладно, полностью защитный бот в золоте... я не особо верил, думал завтра дописывать атаку

Uljahn: найс, сколько LoC?

a1.dk: LoC? 467 место если об этом

Uljahn: lines of code

Uljahn: щас psyho на твиче стримил, 440-е место, там почти 1к на плюсах

a1.dk: 200 python

Uljahn: :scream_cat:

Uljahn: крутой фарминг

a1.dk: без комментов и лишних функций 150

a1.dk: ^_^

a1.dk: ну то плюсы

Uljahn: с классами? без scipy?

a1.dk: без классов на функциях

a1.dk: scipy не пользовал

a1.dk: время на ход <5 ms

BorisZ: у меня тоже на ифах бот кстати

BorisZ: типа надо защищаться - выбрали защитника - выбрали цель и что делать и так далее

BorisZ: тк видимо и останусь, буду улучшать условия и отдельные задачи

BorisZ: кажется что дальше чем на пару ходов тут симулировать все равно смысла мало

Default avatar.png Indawl: а если сдувать в самого себя, то какая траектория выберется?

BorisZ: rocket jump

aropan: Ну вы даете - был где-то 100-200 когда в серебро заслал полтора дня назад, а сейчас 500 в голде.

aropan: Там все вдруг поняли как писать надо?

aropan: Не то, что я жалуюсь, но думал не так быстро буду на дно идти.

aropan: О, а еще там баги пофиксили https://www.codingame.com/forum/t/spring-challenge-2022-bugs-questions/195480/75

dbf: Там еще мало игр играется, рейтинг может быть нестабитный

aropan: Не-не, все, я злюсь, сажусь писать. )

wlesavo: Uljahn у меня питоновская примитивная версия не сильно хуже плюсовой, уверен если бы трекинг туда добавил хотя бы такой же то было бы на уровне

Xyze: а я извиняюсь, а тут человеки пишут на форуме

Xyze: "I think it’s useless to give us the total collected MANA instead of how much MANA we still have during the game"

Xyze: это реально так?

wlesavo: нет

wlesavo: проверил специально даже

Xyze: ладно, а то выглядело странно, я даже не задумывался такое проверять

wlesavo: ага

wlesavo: да у меня бы бот вообще не работал если б так

Xyze: блин, еще немного симу допилить надо, а хочется уже с оценкой играться

Xyze: баги ловить

Xyze: и вот это вот всё

wlesavo: а какой поиск у тебя?

Xyze: у меня пока просто МС

Xyze: на глубину 5

Xyze: пока даже не игрался сильно с параметрами

Xyze: знаю только что на глубине 10 хуже фармит ману

Default avatar.png Indawl: а как узнать количество wild маны?

Default avatar.png Indawl: самому как-то считать?

Xyze: ага

Xyze: а зачем?

Default avatar.png Indawl: как вариант, чтобы убить моба до захода на базу, а потом другого, которого скажем не успеваешь до захода, но успеваешь сначала первого, а потом второго

Default avatar.png Indawl: при оценки тот и тот вариант норм, а вот по факту разница есть

Default avatar.png Indawl: но скорее всего не нужно)

Xyze: так а почему именно дикая нужна?

Xyze: точнее количество*

Xyze: если ты делаешь симу, оно легко считается в момент удара

Xyze: если ты ифками, ну на самом деле тож самое

Xyze: пойми был ли твой персонаж на дистанции > 5000 от своей базы в момент удара

Xyze: если был - wild mana += 2

Xyze: вроде в супер общем случае нельзя её посчитать, так как ты не имеешь информации, куда тебя отправил противник контролем

Xyze: но за исключением этого момента всё просто считается ибо удар делается после твоего хода, но до ветра

Xyze: блин, я тут подумал, получается если хочется кастануть контрол на вражеского героя, надо сохранять этот ход?

Xyze: а то на следующем не будет понятно что он делает

Default avatar.png Indawl: у него будет iscontrolled

Xyze: но я забуду куда я его отправил

AntonT: у него будут vx, vy?

Xyze: у героя?

Xyze: The next 5 integers only apply to monsters (will be -1 for heroes).

Xyze: я просто не смотрел туда, поверил описанию на слово

AntonT: а я вообще не проверял) просто предположил)