Chat:Ru/2020-04-15

From CG community
Jump to navigation Jump to search

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: в момент использования

Default avatar.png AgaspherLukich: что-то я даже зацепиться не могу, с какой стороны подступиться и как проверки состояния делать. Скажите это синтаксис какого языка? какой то специально для этой игры написаный?

wlesavo: язык ты сам выбираешь

Default avatar.png AgaspherLukich: в выпадающем меню? это разве не просто подсветка?

MadKnight: struct X a;

   int y = (a=(struct X){5}, a.x=4, 3);

MadKnight: смотрите как можно в сишке

Default avatar.png AgaspherLukich: оу реально язык переключается

MadKnight: AgaspherLukich какой язык выбрал?

Default avatar.png Moonrise105: как то можно получать исходный код игры?

MadKnight: корабликов?

amurushkin: в описании ссылка

Default avatar.png Moonrise105: вообще любой

MadKnight: не всех

Default avatar.png Moonrise105: ааа, понял

Default avatar.png Moonrise105: спасибо

Default avatar.png Moonrise105: то есть если он есть, то будет в описании?

MadKnight: ага

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

MadKnight: зависит от игры

MadKnight: и как именно ты их хочешь тут применять?

Default avatar.png Moonrise105: сделать геном из набора действий, симуляцию, какую-то оценочную функцию и мутации

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

Uljahn: так-то ГА раньше популярны были тут, но потом на минимакс и MCTS все перешли, либо нейронки

Default avatar.png Moonrise105: так симуляцию же буду у себя запускать и обучать их

Uljahn: а, в офлайне

Uljahn: а что в результате обучения будет? коэффициенты эвристик?

Uljahn: если ты про текущий контест, то карты в нём рандомные, соперники тоже меняются

Default avatar.png AgaspherLukich: MadKnight, С выбрал, других не изучал ранее, да и С только на бассейне.

Default avatar.png Moonrise105: это будет вектор, состоящий из кодов, каждому из которых присвоено определенное действие

Default avatar.png Moonrise105: и при этом при определенных условиях действие будет не просто к следующему переходить, а перескакивать на n действий

MadKnight: lol

MadKnight: ты через ГА собрался алго генерить?)

MadKnight: ну удачи, через несколько лет может до -3vel дойдёт

Default avatar.png Moonrise105: да я вот поэтому и спрашиваю, спасибо)

MadKnight: Moonrise105 как ты оценивать собираешься коды?)

MadKnight: у тебя же 99% не будут иметь смысла

MadKnight: это почти то же что и если они компилиться не будут

Default avatar.png Moonrise105: какие подходы тогда лучше использовать?

Uljahn: зависит от игры

MadKnight: ты в кораблики играешь?

Default avatar.png Moonrise105: нет

MadKnight: в гоночки?

Default avatar.png Moonrise105: у нас тут закрытый хакатон

MadKnight: уууу

Default avatar.png Moonrise105: квиддич

MadKnight: а

Default avatar.png Moonrise105: ну там такое офк не прокатит

MadKnight: мграл

MadKnight: играл

MadKnight: тебе надо прямо во время боя ГА запускать

MadKnight: и подбирать конкретные действия конкретным юнитам прямо под текущий ход

MadKnight: Moonrise105 понял идею?

Default avatar.png Moonrise105: очень в общем, не особо шарю

MadKnight: "очень в общем" ?

MadKnight: что это вообще значит

Default avatar.png Moonrise105: ну короче идею понял, но как реализовывать не представляю

MadKnight: перебирай ходы просто

MadKnight: и симулируй

MadKnight: и оценивай результат

Default avatar.png Moonrise105: а врагов мне как симулировать?

MadKnight: а их надо предсказывать

MadKnight: пытаться предугадать, что они будут делать

MadKnight: чтобы ГА нашёл траекторию как обойти противника и забить гол

Default avatar.png Moonrise105: понял, благодарю

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: насколько помогает оценить тяжело. в леге место не меняется от этого особо а на результаты конкретных игр влияет