Chat:Ru/2020-04-15
metahom: плюс 1 к ulearn
TheHexter: Ещё есть на openedu.ru два связанных курса по C# от УРФУ.
metahom: даа? а кто читает?
TheHexter: Егоров и Окуловский
TheHexter: Правда он маленько теряет в актуальности
TheHexter: не обновляли давно его
TheHexter: Но, тем не менее, основы-то никуда не денутся.
metahom: надо глянуть. хотя наверное это то же что на ulearn
BorisZ: чет все тормозит, игры в сабмите еле-еле ползут, а текущее место вобще раз в полчаса обновляется
tutubalin: А C# где-то кроме Unity используется*
tutubalin: ?
BorisZ: да дофига где - мся микросовтовсая экосистема
tutubalin: а если не Unity и не Microsoft?
BorisZ: не знаю, я не спец (
BorisZ: я где-то год назад вакансии мониторил в городе - было ощущение что ну не меньше трети было с сишарпом, больше джавы точно
BorisZ: вот и я стал таймауты ловить( всего-то 200 путей пытаюсь оценить
BorisZ: а еще непонятно как играет против всех с этими тормозами сайта
BorisZ: топов вроде бъет, боссу проигрывает
amurushkin: босса можно обойти если стабильно бить топов а ему хотя бы не всегда проигрывать
BorisZ: дак сабмиты по часу идут
BorisZ: я с такой надеждой и засабмитил, хоть и сырой совсем поиск еще
wlesavo: в других мульти интересно тоже или только контест
wlesavo: ато в троне итак 1000 игр на сабмит
tutubalin: каждый раз, когда контест, кто-то ддосит
Uljahn: может, реплеи выкачивают для обучения нейронок)
tutubalin: возможно кого-то своего пушат
tutubalin: http://chat.codingame.com/pastebin/83e26d93-91df-47df-93d4-8eb0d56939e8
tutubalin: 1. делаешь бота, который заходить в топ, но не побеждает босса. 2. при этом, если он видит, что первые ходы противника — это N, N, W, S, то он ему поддаётся 3. делаешь версию этого бота, которая первые четыре хода делает N, N, W, S
tutubalin: 4. сабмитишь миллион ботов первого типа
5. ???
6. PROFIT!
BorisZ: не факт же что фейковая версия дойдет до топа )
Valdemar: tutubalin 6. получаешь бан, за мультаккаунт
wlesavo: помоему чтобы в легу пройти проще бота написать нормального чем досить)
Uljahn: да и призов вроде нет
BorisZ: 50 минут на сабмит (
BorisZ: даже не дошел до босса
metahom: та же тема. вчера в топ 10 был, сегодня не могу до босса дойти
wlesavo: ух ты, поднялся до босса в троне, мож пройду таки в легу
amurushkin: давай я прошел и ты сможешь :)
wlesavo: ну я сделал мега примитивную штуку, если она пройдет в легенду я немного разочаруюсь
wlesavo: фактически та же максимизация влияния, но добавил что когда в закрытом пространстве прижиматься к своему треку, чтобы когда кто-то проиграет открывалась территория
wlesavo: без глубины
wlesavo: о, 4ый на 50%
wlesavo: босс там высоковато сидит конечно
wlesavo: чуть просадил босса, мож пройду таки, еще бы сабмиты не были таакими долгими
miklla: блин, так дразнишь моей любимой игрой TRON, я когда писал там код не знал ни альфа-беты, ни ещё некоторых штук, всё ещё мечтаю когда-нибудь в неё вернуться :)
miklla: у меня там просто минимакс :)
wlesavo: у меня код на 200 строк) сабмитнулся прямо под босса, думаю за 5 процентов не обгоню уже
amurushkin: а я умудрился написать такой код что минимакс хреново играет а смитмакс более менее :)
amurushkin: загадка прямо :). надо будет когда нибудь взяться
amurushkin: я вообще хочу в идеале все игры пройтись и довести до топа леги
wlesavo: хм, босса вроде просадил, мож ща еще раз ресабмитну
wlesavo: 2 часа на сабмит, норм конечно так
wlesavo: ладно, сабмитнул, еще 2 часа :expressionless:
wlesavo: опа, выше босса на 50%
wlesavo: наверное пройду
amurushkin: посмотрел у меня в конечном варианте оценка это разница меня против всех остальных в вороном и все. ну и на 4 глубину это считает
wlesavo: у меня на глубину 1 без учета хода противника вообще
Uljahn: wlesavo: а что считает, что за максимизация влияния? площадь по Вороному?
wlesavo: да, просто максимум площади по вороному для возможных направлений хода
wlesavo: 230 строчек
wlesavo: ну и потом если закрыт, то есть площадь по вороному одинаковая для разных направлений максимизирую количество соседних клеток в которых свое тело
wlesavo: свое тело либо граница карты
wlesavo: но вороной в нумпае конечно классно считается
wlesavo: не знаю на сколько у меня там эффективно, но зато красиво
amurushkin: ты так в тупик не заходишь то с максимизацией? я штрафую если он идет туда где все углы закрашены
wlesavo: я проверяю что не тупик на всякий случай
wlesavo: но именно прикол в том чтобы к своему телу прижиматься
wlesavo: чтобы не закрыть себя случайно когда откроется пространство
amurushkin: у меня это по вороному само собой как то получается
wlesavo: когда ты закрыт вороной не работает
amurushkin: работает я же чуток в глубь смотрю
amurushkin: и противника учитываю
wlesavo: ну по крайней мере в моей реализации
amurushkin: но вообще у меня не особо сильный бот тоже. 176 место в леге
wlesavo: ну я если пройду в легу дальше врядли буду улучшать
wlesavo: лучше во что нибудь еще
amurushkin: ну там в леге дофига людей. можно и чуть более высокие цели поставить
wlesavo: ну судя по тому что такой примитивный код может пройти да
amurushkin: fantastic bits еще прикольная. я смог в легенду на ифах пройти :)
wlesavo: но тут надо ускорять оценку сильно, в моем варианте там не хватает скорости чтобы глубже считать
Uljahn: а как ты в нумпае считал вороного?
wlesavo: делаю из головы градиентное заполнение, и дальше сравниваю для своего игрока с другими массив logical _and(a>b, a>c, a>d)
Uljahn: ага, спасибо
wlesavo: опа, прошел в легу
wlesavo: 5 часов промоушен ждать, офигеть
Uljahn: гратц
wlesavo: у меня проблема с гдаентным заполнением что я его делаю не нумпайно, по хорошему надо бы, но то что я пытался сделать работало хуже чем моя рекурсивная версия
wlesavo: градиентным
Jokero: сонар сканирует противника в момент использования или в момент ответа?
Jokero: какую позицию противника он покажет, ту в которой противник был в момент использования сонара или ту, где он был в момент когда мне ответ пришел?
StepanSmirnov: в момент использования
AgaspherLukich: что-то я даже зацепиться не могу, с какой стороны подступиться и как проверки состояния делать. Скажите это синтаксис какого языка? какой то специально для этой игры написаный?
wlesavo: язык ты сам выбираешь
AgaspherLukich: в выпадающем меню? это разве не просто подсветка?
MadKnight: struct X a;
int y = (a=(struct X){5}, a.x=4, 3);
MadKnight: смотрите как можно в сишке
AgaspherLukich: оу реально язык переключается
MadKnight: AgaspherLukich какой язык выбрал?
Moonrise105: как то можно получать исходный код игры?
MadKnight: корабликов?
amurushkin: в описании ссылка
MadKnight: не всех
Moonrise105: то есть если он есть, то будет в описании?
MadKnight: ага
Moonrise105: я тут совсем недавно, генетические алгоритмы здесь хорошо работают?
MadKnight: зависит от игры
MadKnight: и как именно ты их хочешь тут применять?
Moonrise105: сделать геном из набора действий, симуляцию, какую-то оценочную функцию и мутации
Uljahn: учти, что время на ход сильно ограничено, много насимулировать не успеешь - решение может не сойтись к оптимуму
Uljahn: так-то ГА раньше популярны были тут, но потом на минимакс и MCTS все перешли, либо нейронки
Moonrise105: так симуляцию же буду у себя запускать и обучать их
Uljahn: а, в офлайне
Uljahn: а что в результате обучения будет? коэффициенты эвристик?
Uljahn: если ты про текущий контест, то карты в нём рандомные, соперники тоже меняются
AgaspherLukich: MadKnight, С выбрал, других не изучал ранее, да и С только на бассейне.
Moonrise105: это будет вектор, состоящий из кодов, каждому из которых присвоено определенное действие
Moonrise105: и при этом при определенных условиях действие будет не просто к следующему переходить, а перескакивать на n действий
MadKnight: lol
MadKnight: ты через ГА собрался алго генерить?)
MadKnight: ну удачи, через несколько лет может до -3vel дойдёт
Moonrise105: да я вот поэтому и спрашиваю, спасибо)
MadKnight: Moonrise105 как ты оценивать собираешься коды?)
MadKnight: у тебя же 99% не будут иметь смысла
MadKnight: это почти то же что и если они компилиться не будут
Moonrise105: какие подходы тогда лучше использовать?
Uljahn: зависит от игры
MadKnight: ты в кораблики играешь?
MadKnight: в гоночки?
Moonrise105: у нас тут закрытый хакатон
MadKnight: уууу
MadKnight: а
Moonrise105: ну там такое офк не прокатит
MadKnight: мграл
MadKnight: играл
MadKnight: тебе надо прямо во время боя ГА запускать
MadKnight: и подбирать конкретные действия конкретным юнитам прямо под текущий ход
MadKnight: Moonrise105 понял идею?
Moonrise105: очень в общем, не особо шарю
MadKnight: "очень в общем" ?
MadKnight: что это вообще значит
Moonrise105: ну короче идею понял, но как реализовывать не представляю
MadKnight: перебирай ходы просто
MadKnight: и симулируй
MadKnight: и оценивай результат
Moonrise105: а врагов мне как симулировать?
MadKnight: а их надо предсказывать
MadKnight: пытаться предугадать, что они будут делать
MadKnight: чтобы ГА нашёл траекторию как обойти противника и забить гол
MadKnight: чем лучше предсказываешь противника, тем агрессивнее играет ГА
MadKnight: а чем лучше оценочная, тем лучше общая тактика у бота
wlesavo: лол, короче эти 200 строк засабмитились на #175 в легенде
wlesavo: не прям хорошо, но выше чем я мог ожидать
amurushkin: меня скинул или нет?
amurushkin: хехе грош цена выходит моему алгоритму на глубину 4 если его обошел тот который смотрит на глубину 1 ))
wlesavo: ну не скинул, но обошел чуть, да
wlesavo: но это конечно рофел
Alex.swift: что-то все резко с ocean of code переключились
wlesavo: почему все
Alex.swift: эх, переписал пол бота на плюсы, понял что ничего не выиграл учитывая что писал чисто на stl и перфоманс такой же и вернулся к свифту(
Alex.swift: ну хоть багов пару нашел пока переписывал код
BorisZ: переписывать тяжко, особенно если под конец контеста
BorisZ: я как-то переписывал, но там был на 10 дней, обычный
Alex.swift: ну да, и от спешки много не оптимально сделал
amurushkin: нужен конвертер кода ))
Alex.swift: вообще сейчас 1 место часто валит бота: после обновления путей пересчет мин. Каждую точку, с которой ставил мины, развернуть на 4 стороны, и для каждой мины взять ее рейнж поражения. Вы это как храните?
Uljahn: можно на первом ходе почти всё предрассчитать, всех соседей, все области дамага и т.д.
BorisZ: я точки с которых поставлены мины считаю заново каждый ход, с них строю карту урона
BorisZ: по тупому совсем - если 4 мины с этой точки, то каждой точке по 2/4 урона, если в рейндже этой четверть мины то 1/4
Alex.swift: вот у меня это построение карты урона не выдерживает такой сложности. Точку, где игрок стоял, умножить на 4 а потом еще на 9 и это все собрать в 1 сет
Alex.swift: по 2/4 урона только месту с миной или и ее соседям?
BorisZ: мине
BorisZ: соседям по четвертинке
BorisZ: если мина не с одного кандидата а с трех, то все делю на три для каждой мины
Alex.swift: а много на это времени уходит?
BorisZ: не знаю, думаю что совсем не уходит
BorisZ: за один проход по списку
BorisZ: для каждой ячеки карты - счетчик урона, изначально 0, потом прохожу по списку мин и увеличиваю счетчики
Alex.swift: а область вокруг врага если у него заряжена торпеда считаешь за урон?
BorisZ: неа (
BorisZ: мне кажется что тогда всегда шарахаться будешь от врага то, он ходит с облаком своего урона
BorisZ: но не знаю, не пробовал
BorisZ: ты же сам тоже со своим уроном ходишь, чего его бояться )
Alex.swift: ну я пока-что поставил только в случае если у меня нет заряда, а у него заряжена. Надо потестить помогает ли
BorisZ: а если на область мин зайдешь с таким же уроном то размена не будет
Alex.swift: + в зависимости от расстояния к игроку урон меньше если дальше
Uljahn: BorisZ почти в леге, круто
BorisZ: не, там 2,5 скора до босса
BorisZ: не заехать
amurushkin: я на каждом тике прохожусь по всем координатам и если там ставилась мина то вокруг нее беру точки прибавляю на карту урона. а на количество позиций делю потом уже в оценке
amurushkin: облако дамага если у противника заряжена торпеда использую
amurushkin: но я там комплексно учитываю его кулдаун. есть ли у него сайленс еще. сколько у нас хп. чтобы если у меня больше то не боялся сближаться
amurushkin: насколько помогает оценить тяжело. в леге место не меняется от этого особо а на результаты конкретных игр влияет