Chat:Ru/2020-04-01
WwW: как узнать процент побед от общего исла боев?
735487: WwW: http://cgstats.magusgeek.com/app/ocean-of-code/WwW
amurushkin: у кого как сайт работает? у меня игры с трудом большим открываются. ошибки сети часто сыпятся. при этом с интернетом все ок.
Hamibar: У меня хорошо
Hamibar: Долгий конечно контест. Еще 2/3 а уже не очень хочется что-то дописывать.
Uljahn: хорошо тебе - в голду пройдёшь изи
Alex.swift: Uljahn а ты уже забросил? Ласт сабмит 27
Hamibar: Uljahn а хочется то в легу. Просто нужно передохнуть недельку.
Hamibar: Alex.swift видимо такую вундервафлю готовит, что никто не будет в состоянии с ней сражаться.
BorisZ: Hamibar после перерыва почти наверняка забросишь
BorisZ: лучше уж по полчаса в день выделять, можно переписывать просто все
BorisZ: рафакторить
Hamibar: Это можно да.
Hamibar: Мб карантин не отметят и будет еще 1 марафон)
BorisZ: то что не отменят - это к бабке не ходи, недели явно мало
Hamibar: На все лето контест запустят.:upside_down:
Uljahn: Alex.swift: может ещё попилю, время есть
amurushkin: Hamibar у нас с тобой 0.03 разница :)
Uljahn: на плюсах наверное куча времени остаётся
amurushkin: хз я его даже не меряю. да у меня сейчас особо ничего и не перебирается. путь смотрится в 3 стороны на 1 клетку и все
Uljahn: надо хотя бы на 6 клеток смотреть
Uljahn: чтобы успевать зарядить сник и доплывать к точке, где он даст максимальную неопределённость
amurushkin: у меня у одного cg глючит да?
wlesavo: amurushkin похоже да
amurushkin: что ж за ебань то такая. ни лидерборд ни открывается, ни соперника выбрать. полный пипец. игры смотрятся через раз
Uljahn: скорее всего у прова перегрузки и где-то пакеты дропаются
Uljahn: попингуй серваки
amurushkin: у них похоже закрыты пинги
Uljahn: в смысле icmp протокол блочится?
Uljahn: норм первоапрельская шутка в cheat engine ахах
wlesavo: короче мне отключение сонара не помогало похоже потому что был крайне забагованый код постановки мин
wlesavo: он просто с полным зарядом катался и не ставил ничего
amurushkin: а теперь помогает?
wlesavo: пока не сабмитил, но хуже не делает в реплеях, я просто движение перепиливаю же
wlesavo: хотя хз, включил обратно стало лучше
wlesavo: мистика
MadKnight: amurushkin помнишь Code of Kutulu ?)
wlesavo: ладно, пожалуй сабмитну
wlesavo: ребаланснул движение, мины поправил сильно, хуже не должно стать
wlesavo: теперь сайленс еще поправлю и норм
BorisZ: надо было сначала старый код сабмитнуть повторно
BorisZ: а то сейчас сравнение не корректное
wlesavo: не, я скорее оцениваю на что этот способен, у того устоявшиеся винрейты вполне и я нормально постестил в селфплее
BorisZ: подумаешь что стало хуже а на самом деле стало лучше - просто уехал бот по таблице в верх или вниз
wlesavo: не, хуже не стало точно уже
BorisZ: в зависимости от таго, кто из врагов чаце сабмитил - кому ты сливаешь или кого делаешь
wlesavo: ну кстати спасибо за идею простой оценки
wlesavo: ох под конец винстрик словил, в топ 3 закинуло
wlesavo: короче пока рерайтил словил баг странный, грид вообще странно заполнялся, все перепроверил уже и так и не нашел где накосячил, в итоге откатился обратно на предыдущий сабмит и с него уже более простую оценку написал
Uljahn: на уровне второго места, круто
wlesavo: сегодня еще сайленс переделаю, чтобы прыгал по пути который я оценил, и прыгал когда вариантов достаточно много
wlesavo: ато сейчас это почти просто рандом, с оценкой тупиков и костыльной оценкой урона в конечной точке
amurushkin: MadKnight помню
wlesavo: хм, против симана 9/6, неплохо
wlesavo: 0.07 от первого места)
wlesavo: опа, топ 1
wlesavo: винстрик в 10 побед от ресабмита кови и eulera
BorisZ: wlesavo красавец
wlesavo: не без твоего участия)
MadKnight: amurushkin какой алгоритм у тебя там был?
tutubalin: ого! молодец!
tutubalin: на питоне порвал сишников
wlesavo: я прям доволен, не ожидал совсем
metahom: круто. теперь там и оставайся
wlesavo: ну еще точно есть что улучшать
MadKnight: tutubalin а у тебя что было в CoK ?
YurkovAS: озвучивали простые оценочные? можете подсказать?
wlesavo: YurkovAS генерировать просто случайные пути на определенную глубину и смотреть по ним урон
wlesavo: у меня получается по 3мс на оценку выделено, путей 50-60 генерирует и этого хватает
YurkovAS: wlesavo пути на 1 возможный ход (глубину)? у меня кроме урона (хотя стреляю только за себя) еще разница в кол-ве возможных местоположений моих и противника
YurkovAS: по времени работы в среднем 0мс на с++ и макс 15мс просадки
wlesavo: YurkovAS не, на глубину 15-20 либо пока в тупик не зайдешь, и смотреть например среди самых длинных минимальный урон от мин
YurkovAS: wlesavo если мины прикрутить, какой примерно апп ожидать? например с 100 места.
wlesavo: если все остальное хорошо то мест 50 легко, но если ботлнек не в минах можно не продвинуться
YurkovAS: wlesavo спасибо! у меня сейчас минимакс 1 (глубина). надо будет проверить потом.
wlesavo: просто детекция по истории мин мало дает
735487: MadKnight: amurushkin какой алгоритм у тебя там был? миник кажется на глубину 2. что то типа того
735487: wlesavo: это тебя генерация пути вывела на 1 место?
wlesavo: amurushkin да, ну плюс я баг в минах убрал
wlesavo: не знаю на сколько он значимый был
wlesavo: но по реплей surface срабатывает когда надо
735487: YurkovAS: у меня с минами без детекта мин противника и недоделанным отсечением сайленса у противника до 15 добегает редко. чаще в 20-30 добегает только так. так что в топ 50 с запасом
wlesavo: по реплеям
xoposhiy: А расскажите, что значит "смотреть минимальный урон у мин"? Не понятно :)
wlesavo: урон усредненный по всем противникам и по всем возможным положениям мин в каждой точке пути
xoposhiy: ага, понятнее стало.
xoposhiy: А сколько в худшем у тебя бывает позиций противников трекается?
xoposhiy: какой там порядок получается?
xoposhiy: Я просто отсекаю всю историю дальше двух сайлентов и мины пока вообще не трекаю. И пытаюсь понять, за что первым делом стоит взяться :)
wlesavo: в начальные моменты времени под 190, но реально быстро спускается до +- 20
wlesavo: первым делом хороший трекер
wlesavo: прям полноценный с учетом урона от всех источников
xoposhiy: что-то не понятно, как это. Мины в перемешку с сайлентами должны экспоненциально раздувать количество же
wlesavo: историю мин не обязательно
amurushkin: у меня когда много сайленсов подымается до 400к )) но у меня там отсечения плохие поэтому я сжимаю пути когда их становится больше 20к
amurushkin: а прикрутить историю где был противник пока руки крюки. код не работает )))))
wlesavo: xoposhiy я мерджу кандидатов, сохраняю те точки из пути где были оба, и то же самое с положениями мин
xoposhiy: если они в одну точку придут по разным траекториям то и мины будут в разных местах и путь разный. Как их мерджить то?
xoposhiy: ну то есть я мерджу, забывая весь путь старше второго сайлента, например. Но я и все мины так буду забывать
735487: я сейчас вообще тупо 1 путь выбираю первый в списке а осталные откидываю
wlesavo: ну я запоминаю какая мина на каком ходу поставлена, и эти списки сетирую, тоже самое с путями, храню те точки где этот кандидат точно побывал
wlesavo: то есть от двух разных путей приводящих в одну точку остается только совпадающая часть
wlesavo: ну там тонкости есть конечно, но в целом так работает не хуже чем с++ трекеры с полными путями
amurushkin: а т.е у тебя типа общий ствол остается а ветки отбрасываются?
amurushkin: по типу логического И делаешь?
wlesavo: да, это первая идея самая была, и так и осталось, зато очень удобно разные оценки проворачивать, не нужно отдельно хранить головы
xoposhiy: То есть вот в такой картинке у тебя общего пути вообще не будет? https://awwapp.com/b/ue5ugea6u/#
xoposhiy: видимо, такие ситуации не часто встречаются просто, да?
Uljahn: скорее всего, будут часто встречаться в леге
wlesavo: xoposhiy да
wlesavo: ну как, будут две точки общие
Uljahn: чё за антикиллер? у тебя баг в фаталити был?
wlesavo: нет, я просто прыгнул, я не знал точную позицию для фаталити
wlesavo: а он на шару стрельнул
wlesavo: бот с кучей тайаутов забирался ща до топ два, надо почиинить и может будет топ 1 опять
wlesavo: изи топ1)
Uljahn: воу
amurushkin: молодец. выходит ты крутой алгоритм придумал и хорошо его реализовал
wlesavo: последний сабмит это просто сайленс по тому же маршруту что и ход рассчитанный
wlesavo: ну и придержание сайленса пока не будет чуть больше вариантов для прыжка
wlesavo: но винрейты прям огонь http://cgstats.magusgeek.com/app/ocean-of-code/wlesavo
Uljahn: придерживать - это топ страта
Uljahn: amurushkin: хорошо реализовал - это без багов?))
amurushkin: прямо порекал всех
amurushkin: Uljahn ага без багов да и идея классная
wlesavo: прикол что перед этим был сабмит где-то с 10ю таймаутами и он топ 2 забрался
wlesavo: так что да, хорошо реализовал это баг один подчистил)
metahom: wlesavo, ты по сколько часов в день на контест тратишь?
wlesavo: metahom да не знаю даже, когда как, обычно после работы сидел по паре часов, а сейчас побольше
wlesavo: позавчера например вообще ни строчки
wlesavo: а вчера все что написал пришлось откатить
metahom: прикольно. я думал ты на выходной неделе
wlesavo: ну я как бы на ней, но работа тоже есть какая-то
wlesavo: но я ее почти не работаю сейчас
MadKnight: amurushkin а как ты туда миник запилил когда игрокам надо вместе бегать чтобы не терять sanity ?
metahom: ясно
metahom: ну все равно неплохо. еще бы додержался :)
wlesavo: ну я вообще не думал что хорошо пойдет, я ж ни в одной игре даже до легенды не дошел, а здесь как то мотивации побольше, когда все кругом одну и ту же игру обсуждают
amurushkin: MadKnight я их против себя делал
amurushkin: но вообще у меня там не такие хорошие результаты были
Uljahn: первый контест самым крутым запоминается
Uljahn: первый контест как первая любовь, Automaton2000
Automaton2000: сертификаты забыли обновить, пришлось в дискорд залазить
wlesavo: Uljahn да, наверное, а тут еще и без спешки можно по чуть чуть каждый день делать не упарываясь
wlesavo: а кстати в обычных коротких контестах вуд лиги оставляют?
Uljahn: да
Uljahn: коротких - это обычных 10-дневных?
Uljahn: да даже и в спринте на 4 часа вроде были деревья
wlesavo: ну да, обычных
Uljahn: до сих пор не понимаю смысл деревьев - чему они учат: на говнокоде и костылях с эвристиками в бронзу проходить, либо писать удобно расширяемый код
Uljahn: единственный раз, когда получалось расширять - это когда давали стартер
Uljahn: в поворятах
Uljahn: почему не дают возможность сразу с бронзы начинать...
735487: чтобы заработал 150 опыта на вуде ))
Uljahn: больше нервов потратишь
BorisZ: чтобы не отпугивать неофитов
wlesavo: ну это ради людей которые выше не пройдут, им же тоже хочется поиграть, новообще да, какойнибудь сайленс 69 было бы интересно иметь
BorisZ: простые правила - написал что-то - всех порвал - подкрепление - зависимость
Uljahn: смотрю, несколько топовых игроков застряли таки в вуде, в т.ч. miklla и oreshnik
wlesavo: микла только начал вроде
wlesavo: его ж не пускало в контест
wlesavo: если я не путаю
Uljahn: угу
Uljahn: отмаза засчитывается
Uljahn: эх, так и придётся что-то кодить, чтобы в голду пройти
735487: Uljahn: бери пример с wlesavo. он доказал что можно в топ :)
Uljahn: дак смысла нет доказывать то, что уже доказано :smirk:
735487: а повторить?
Uljahn: я лучше идей покидаю в чатик
Uljahn: как кубер)
735487: есть идеи почему я не могу добавить массив 15 на 15 в структуру к точке?
Uljahn: в плюсах?
735487: блин так неохота переписывать на new и везде править ))
wlesavo: ну у меня кстати пока идеи подиссякли, основное что хотел сделал
Uljahn: я видел, как у тебя бот после взрыва мины соперника попёр через этот райно, хотя до этого избегал его и всплывал
Uljahn: *район
Uljahn: детект мин рулит
wlesavo: ну так он отсек эту мину
Uljahn: угу, это топ страта
Uljahn: теперь ещё научиться расставлять мины так, чтобы отсекать у соперника максимальные участки карты
Uljahn: и в угол его загонять
735487: в шахматном порядке полюбому все покроет )))
wlesavo: кстати да, теперь надо мины, пока он рандомом ставит у меня
Uljahn: с минами можно как с сайленсом сделать - чтобы придерживал и не ставил в неудачных местах
735487: у меня кстати мины он пока тоже глупенько ставит. не на каждый ход когда она готова. может пару тиков подождать
735487: вот у меня придерживает. я не уверен что это хорошо
wlesavo: Uljahn ну вот у меня он так ждал, что при отключеном сонаре катался и мины не ставил вообще
wlesavo: с полными зарядами на всем
735487: имхо надо плыть так чтобы к моменту установки мины быть там где надо
Uljahn: +
Uljahn: для этого надо наперёд симулировать траектории
Uljahn: планировщик заданий мне запили, Automaton2000
wlesavo: можно по ходу траектории оценивать положения для мин, если впереди есть чтото удачное то подождать, или если сайленс не заряжен, а если там все плохо то ставить сейчас
Automaton2000: я не знаю что у меня уже есть
wlesavo: ну на длинну кулдауна сайленса грубо говоря
wlesavo: это вариант
Uljahn: я так и предлагал, когда про 6 ходов вперёд говорил
wlesavo: и желательно чтобы дыр не оставалось в расстановке
wlesavo: короче да, это точно следующий кандидат для оптимизации
Uljahn: дыры можно специально оставлять размером с минимальный остров, и если траектория вписывается вокруг него, а то некоторые по дырам детектят, наверное
wlesavo: дыры в расстановке мин
Uljahn: а
wlesavo: вообще можно симулировать свою карту мин, и делать ее равномернее
wlesavo: но тут уже вопрос перфоманса
Uljahn: с точки зрения противника надо оценивать
wlesavo: ну я об этом как раз
Uljahn: и чтобы при детонации мины не выдавать своё положение
wlesavo: я редко взрываю просто, почти наверняка
Uljahn: https://www.codingame.com/replay/444204817
Uljahn: лол
wlesavo: блин, у меня в этом сабмите баг, двойные команды иногда отправляю
wlesavo: лол
wlesavo: топ 1 который мы заслужили
Uljahn: нет кода - нет багов, но и рейтинг не очень)
wlesavo: https://www.codingame.com/share-replay/444429059
MadKnight: wlesavo как успехи?
Uljahn: странное плавание
Uljahn: так в начале хорошо шёл
Uljahn: а с 60-го хода обезумел
Uljahn: в смысле, фрейма
wlesavo: Uljahn глубины не достаточно чтобы не отрезать путь
wlesavo: но я решил что лучше больше ролаутов на относительно короткую глубину
wlesavo: MadKnight топ 1 :slight_smile:
MadKnight: ух
MadKnight: wlesavo топ 1 в легенде?)
Uljahn: да уж, в леге дай бог в топ-20 удержаться
wlesavo: ну серебро только, но всетаки
Uljahn: за 18 дней напилят переборов на плюсах
Uljahn: на axv
Uljahn: или нейронок натренят
MadKnight: Uljahn а ты что запилил?
wlesavo: да скоро вымету метлой
wlesavo: а, это обычный таймаут был, фуф, чуть за рамки вышел
MadKnight: а двойные команды почему?
wlesavo: MadKnight баг визуализатора
wlesavo: отрисовывал как будто эта же команда еще раз пришла
Arkus: мне может кто нибудь объяснить куда впихивать этот чёртов буст?
Arkus: всем прувет
BorisZ: Arkus ты уточняй про что вопрос, тот сотни задачек и десятки мультиплеер игр, ссылку хоть кинь
Arkus: https://www.codingame.com/ide/puzzle/coders-strike-back
Arkus: BorisZ в этих гоночках...
BorisZ: там вроде один буст на всю игру, ставь первым ходом - не сильно плохо будет
Arkus: проблема в том, чтобы определить, где ентот первый ход
Arkus: там же while
BorisZ: перед while добавь счетчик = 0, в цикле на 1 увеличивай
Arkus: вроде бы выиграл...
BorisZ: Arkus сейчас идет соревнование https://www.codingame.com/contests/ocean-of-code все в него играют, старые игры потом успеешь
Alex.swift: а как вы хендлите ситуацию когда по врагу был сделан удар, потом он сделал сайленс и нанесенный урон оказался реально >0? Просто он после сайленса может еще выстрелить и попасть в себя и это сильно запутывает детект т. к. этот урон мог быть нанесен и до и после
BorisZ: у меня пока упрощенно - если и враг стрелял и я то не обрезаю ничего (
BorisZ: тоже думал помню над этим - мозги вскипели, плюнул
Alex.swift: вот я на этом тоже застрял, хотелось довести детект до хорошего состояния, уже несколько вариантов определения тестил, +- нормально работает только не учитывая если враг стрелял
735487: http://chat.codingame.com/pastebin/9ae89b61-52ae-41dc-88e6-5c62c73f0c03
Alex.swift: о, спасибо
wlesavo: не, этот способ тоже не учитывает
wlesavo: я просто не отрезаю тоже
wlesavo: мечу их как неприкасаемые в этот ход
Alex.swift: т. е. тоже не учитываешь если и враг тоже стрелял?
wlesavo: ну только для тех вариантов которые мерджатся после сайленса
wlesavo: для остальных учитываю
BorisZ: amurushkin это все правильно для взрывов ДО перемещения врага
wlesavo: это все правильно если ты учитываешь полный путь
wlesavo: на момент мерджа рушится
Alex.swift: да, вот как после сайленса считать. Просто мув в принципе еще можно если добавить позиции и до и после взрыва
Valdemar: Alex.swift я в ячейки урон записываю, вроде всегда работает
wlesavo: не должно, точно не теряешь так?
Alex.swift: даже в описанном кейсе что враг сделал сайленс а потом стрельнул в себя?
Valdemar: да
MadKnight: o, Valdemar
MadKnight: чё пилишь?
Valdemar: я храню все возможные позиции врага и сколько он получил урона в каждой позиции получил
Valdemar: MadKnight привет, перебор хода делаю
MadKnight: перебираешь что конкретно?
Valdemar: всякие прыжки на добивания
Valdemar: перебираю все возможные сочетания действий на ходу и оцениваю какую пользу они принесут
Valdemar: не думаю, что это надо прямо сейчас, но просто интересно) и выглядит эффектно
Valdemar: так то мины больше пользы принесут, но мне пока и в топ50 нормально
Alex.swift: wlesavo пытаюсь это все представить. Т. е. у тебя есть на конец хода, например, 10 новых возможных путей и враг получил 2 урона. Дальше нужно отсеять те пути, при которых враг в сумме получил бы другое количество урона?
Alex.swift: идея вроде понятна, но выходит прийдется все-таки сначала имплементить сохранение всех путей(
Valdemar: это не так много
Alex.swift: хотя да, за время которое я потратил на ухитрения по расчету урона мог бы уже сделать
Valdemar: я тоже боялся, но обычно в играх 1-2 тысячи состояний. Часто состояния до 1-10 схлопываются
wlesavo: Alex.swift ну да, в порядке действий каждому кандидату пишешь урон
Valdemar: у меня также сделано
Valdemar: например, если ты выстрелил, потом враг выстрелил и у него на 1хп стало меньше, то нельзя быть увереным, что ты попал, может он сам поэтому надо оставить все варианты, где наносится нужное количество урона
Alex.swift: понял, спасибо. Буду дальше бота ломать
735487: у меня за каждой точкой тягается хп врага в этой точке. поэтому пофиг до мува или после по нему попали. я после того как это сделал перестал противника терять вообще
BorisZ: у всех уже продвинутые трекинги, у меня до сих пор по деревенски - конечные точки просто (
BorisZ: начнешь апгрейдить - все поломается, знаем плавали
amurushkin: у меня тоже до сих пор конечные точки :)
Uljahn: ахах, чел в общаке тоже придумал комплексные числа использовать, только не совсем так, как я хотел