Chat:Ru/2022-04-26
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: еще бы по стабильнее играло и нормально бы было
Indawl: а если трое wind сделают на одного монстра, то он улетит на 6600?
Xyze: ага
wlesavo: у топ 2 такая стратегия
Xyze: ну только они должны прям в ряд стоять
wlesavo: они у него просто одинаковыми командами ходят))
Indawl: прям точка в точку или просто задевать?
Xyze: точнее ветер по одной траектории*
wlesavo: и на одной точке стоят
wlesavo: там примитивная прямо стретегия
Xyze: ну на одной точке не обязательно
wlesavo: я про конкретно топ2
Xyze: а ну эт да
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
Indawl: а в чем смысл в исходнике:
public Vector symmetricTruncate(Vector origin) {
return sub(origin).truncate().add(origin); }
mihei: симметричное округление координат относительно центра карты
aangairbender: я правмльно понимаю, что может прийти такие vx vy что модуль скорости будет меньше 400?
aangairbender: из-за откидывания дробной части при отправке инпута игрокам
aangairbender: а то чего-то симуляция не сходится с реальными значениями на 1
Uljahn: конечно может
aangairbender: я вижу что после применения ветра скорость пересчитывается, но не вижу чтоб потом vx vy где-то truncate делались
aangairbender: (если вытолкнуть за предели базы)
aangairbender: блин и как тогда симулировать пермещение мобов если скорость кривая приходит
Indawl: обновлять положение а в симе не обращать внимание
BookSaver: Поехали
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: кажется что дальше чем на пару ходов тут симулировать все равно смысла мало
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 хуже фармит ману
Indawl: а как узнать количество wild маны?
Indawl: самому как-то считать?
Xyze: ага
Xyze: а зачем?
Indawl: как вариант, чтобы убить моба до захода на базу, а потом другого, которого скажем не успеваешь до захода, но успеваешь сначала первого, а потом второго
Indawl: при оценки тот и тот вариант норм, а вот по факту разница есть
Indawl: но скорее всего не нужно)
Xyze: так а почему именно дикая нужна?
Xyze: точнее количество*
Xyze: если ты делаешь симу, оно легко считается в момент удара
Xyze: если ты ифками, ну на самом деле тож самое
Xyze: пойми был ли твой персонаж на дистанции > 5000 от своей базы в момент удара
Xyze: если был - wild mana += 2
Xyze: вроде в супер общем случае нельзя её посчитать, так как ты не имеешь информации, куда тебя отправил противник контролем
Xyze: но за исключением этого момента всё просто считается ибо удар делается после твоего хода, но до ветра
Xyze: блин, я тут подумал, получается если хочется кастануть контрол на вражеского героя, надо сохранять этот ход?
Xyze: а то на следующем не будет понятно что он делает
Indawl: у него будет iscontrolled
Xyze: но я забуду куда я его отправил
AntonT: у него будут vx, vy?
Xyze: у героя?
Xyze: The next 5 integers only apply to monsters (will be -1 for heroes).
Xyze: я просто не смотрел туда, поверил описанию на слово
AntonT: а я вообще не проверял) просто предположил)