Chat:Ru/2020-09-02

From CG community
Jump to navigation Jump to search

MadKnight: да наверное дней 20 по 3ч

MadKnight: или 24д по 5ч

tutubalin: а я тут в Hive поиграл наконец-то. тоже интересно было бы бота для неё пописать. но вот непонятно, достаточно ли только графику изменить, или сама игра тоже под копирайтом

vrabosh: скорей всего под копирайтом, там издатель есть.. но можно же свое подобное придумывать

vrabosh: тут из за неимения графики, хорошо бы придумывать игры которые в асски смотрятся неплохо.

vrabosh: олдскульное типа.. под современный лад.

MadKnight: vrabosh ну так придумай

MadKnight: tutubalin а ты смитси пилил?

Uljahn: придумать мало, надо прототип показывать сразу

Uljahn: а то на словах можно много нафантазировать, а в итоге это так и останется флудом в чате

MadKnight: сама идея может оказаться так себе

MadKnight: го действовать vrabosh

MadKnight: Uljahn ты когда последний раз чё-нить кодил на CG ?)

vrabosh: лучше задачки решать)

vrabosh: пукаю игры дела CG)

MadKnight: мультиплееры - это целая пачка задачек в 1

Uljahn: MadKnight: когда новый изи пазл утвердили, я его зарешал, и снова стало 100% решённых изи пазлов :)

MadKnight: го лучше со мной комбинировать все алгоритмы поиска в 1, чтобы получить франкенштейна

MadKnight: я уже 3 скомбинировал\

Uljahn: я думаю, надо пилить реальный AI, который будет по истории ходов противника относить его к какому-либо классу противников, для которых известны уязвимости (неоптимальности в игре) :)

MadKnight: ага, и начнёшь ещё больше побеждать более слабых противников

MadKnight: 97% -> 98%

vrabosh: MadKnight в какую игру играешь?

MadKnight: гоночки

vrabosh: давайте в другую

vrabosh: у меня там и так норм очков дали

MadKnight: в какую

vrabosh: Ghost in the Cell - вот смотрю, тут мало перемены

Uljahn: она на графах

MadKnight: ну го победи моего бота

vrabosh: щаз как раз просматриваю игры

vrabosh: какие тут еще простые?

vrabosh: кроме трона

MadKnight: гоночки

MadKnight: тебе физика проста?

MadKnight: или хочешь ифы?

MadKnight: с ифами можешь про готовку

vrabosh: где симуляция проще всего будет делать?

vrabosh: мне просто потестировать ГА и МЛ у себя на компе.

vrabosh: Ghost in the Cell или про кухню?

MadKnight: да говорю тебе, гоночки самые простые для этого

MadKnight: там самое небольшое ветвление возможностей

vrabosh: да как?

MadKnight: что как?

MadKnight: как ты собираешься кухню через нейронки?

vrabosh: там же физика.. как тут может быть просто?

MadKnight: физика намного проще

vrabosh: ну хз.. я еще правила не читал

MadKnight: для нейронки

MadKnight: логика для нейронки намного сложнее физики

vrabosh: как я симулирую у себя это все?

MadKnight: скину тебе функцию

vrabosh: и я смогу сделать копию игры на питоне у себя?

MadKnight: https://www.codingame.com/playgrounds/1939/basic-simulation-and-evaluation/simulating-a-single-pod

MadKnight: или просто это возьми

vrabosh: ну допустим как просчитать идеальную езду среди 3 точек?

vrabosh: для 1 машинки

MadKnight: а в чём проблема?

vrabosh: во всем

MadKnight: в чём

MadKnight: бери и просчитывай просто

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

MadKnight: вектор это просто (х;у)

vrabosh: не знаю про то как работать с заносами

MadKnight: сложение векторов это просто (х1+х2;у1+у2)

vrabosh: ну он имеет же направление

MadKnight: ну да ну и что?

MadKnight: направление находится в (х;у)

vrabosh: это просто, но такого простого мне штук 10 будет появлятся.. а еще штук 10 я небуду знать. что можно былобы сделать

MadKnight: так ты практикуйся

vrabosh: вот дай мне формулу, котоаря мне построит график... пути

MadKnight: нейронка и построит

MadKnight: чё за график пути?

MadKnight: ты о чём ваще

Bayson: есть векторная математика для игр

Bayson: много книг

vrabosh: (0,0) скорость 10кмчас ехал я в (10,10) но на (2.2) решил ехать в (2,15)

MadKnight: Bayson а ты что пилишь?

Bayson: там всё расскажут и про векторы и про углы

vrabosh: Bayson чтоб мне начать в это играть, надо как минимум 3 дня потратить на изучение

Bayson: 3 дня, я думаю это очень оптимистично)

MadKnight: ты не можешь посреди хода решить в другую сторону ехать vrabosh ты можешь только раз в ход т.е. у тебя будет (0;0) + 10км

MadKnight: а потом сменишь

MadKnight: Bayson а ты в мульти играешь?

Bayson: я так просто пишу рандомные задачки на плюсах, что бы скилзы языка не потерять

Bayson: я тут не играю

vrabosh: вот мой ход сейчас на 0.0

MadKnight: го в мульти

MadKnight: они прикольные

vrabosh: в этом ходу меняю направление.. скорость 100%

vrabosh: ехал в 10.10

vrabosh: решил в 0.10

MadKnight: ты не можешь вот так менять

MadKnight: ты делаешь ускорение

vrabosh: какая функция будет? которая мне нарисует график пути на координтной плоскости?

MadKnight: ускорение - это прибавление вектора направления*thrust

MadKnight: к вектору скорости

MadKnight: т.е. (10;10) + (direction) * thrust

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

MadKnight: всмысле нарисует?

vrabosh: скорость пока не трогает она вегда 100%

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

vrabosh: у себя нарисовать, посмотреть

MadKnight: ненене ты передаёшь куда поворачиваться

MadKnight: машинка туда ускоряется

MadKnight: бустится

MadKnight: через velocity + direction*thrust

vrabosh: либо я забыл игру, либо ты чтото не то говоришь

MadKnight: но у неё остаётся инерция

vrabosh: print('{} {} {}'.format(str(ncx),str(ncy),thr))

vrabosh: вот что передаю, кооринаты же

MadKnight: > ненене ты передаёшь куда поворачиваться

vrabosh: я могу хоть в 0.0 ехать

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

vrabosh: он повернет и поедет туда

MadKnight: машинка поворачивается в сторону ncx ncу

MadKnight: ненене он бустнется туда

MadKnight: но инерция никуда не денется

MadKnight: инерция продолжит толкать не туда

vrabosh: ну так будет ехать тудаже, если поставлю 0.0. будет ехать в 0.0?

MadKnight: будет буститься в 0 0

MadKnight: буст будет прибавляться к инерции

vrabosh: вот я и говорю, какая формула, которая с инерцией мне нарисует кривую

MadKnight: т.е. ехать будет в сторону инерции+буст

vrabosh: ты меня с этим путаешь thr = "BOOST"

MadKnight: velocity += acceleration position += velocity velocity *= 0.85

MadKnight: буст - это просто траст 650

MadKnight: а траст - это то же что и буст, только вместо 650 - 100

vrabosh: ого он на 650 аж разгоняется?

MadKnight: ага

vrabosh: не берем игру щаз вцелом.. чисто пример не точный к игре

vrabosh: я на 0.0, сейчас мой ход, еду в сторону 10.10 без заносов.. скорсоть 100

vrabosh: передаю данные на 0.10 100

vrabosh: как мне нарисовать движение машины?

vrabosh: и буду всегда передавать 0.10 100 пока не доеду

vrabosh: это для того, чтобы я знал, в каких координатах я буду на 2 ход, на 3 ход

vrabosh: заране

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

MadKnight: он вообще игнорирует расстояние

MadKnight: он смотрит только на угол на который машинке надо повернуться

vrabosh: пофиг на игру, я про пример говорю..

vrabosh: как это вычислять?

MadKnight: короче мне идти пора

MadKnight: читай мой код

vrabosh: ну или пускай даже в игре

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

MadKnight: можем через дискорд продолжить

vrabosh: было вот такое, и я ей всегда передаю данные 0 10 100

MadKnight: я там WhiteFoxMadness

MadKnight: го меня найди

MadKnight: я пошёл

vrabosh: дождусь здесь)

vrabosh: а вообще ктото понял мою задачу. что я хочу?

vrabosh: мне кажется гоноками надо играть, когда хотябы до 9 класса освою материал..

gsomix: vrabosh, напиши симуляцию одного хода по правилам. Чтобы отобразить траекторию, то симулируй на несколько ходов вперед.

gsomix: Правила для игры открываются в золотой лиге. Еще есть описание у Magus.

http://files.magusgeek.com/csb/csb_en.html

gsomix: Или то, что MadKnight скинул.

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

gsomix: А мне кажется, хороший повод разобраться с векторами и физикой на примере. :)

Uljahn: ещё acceleration через тригонометрию вычислять надо, а сначала найти угол поворота пода к цели на текущем ходу

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

vrabosh: я сейчас не осилю столько много инфы..

Uljahn: прикол был на контесте, когда правил физики не было вообще, всю инфу вычисляли по реплеям :)

gsomix: Просто идти от учебников скучно, и сразу не поймешь, что потребуется для задачи. :)

vrabosh: я то уже поинмаю, что мне примерно надо знать.. теперь осталось поэтапно это все узнать.

vrabosh: а потом уже начинать практиковать в гоночках

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

gsomix: vrabosh, там же не в симуляции проблема. :)

vrabosh: не понял о чем ты

gsomix: От того, что я понимаю, как написать симуляцию для CSB, моя позиция в рейтинге не увеличивается.

vrabosh: может вы както по особому играете и забиваете на все физические правила игры? поэтому я вас не понимаю.. а то вы так говорити как будто все оч легко

vrabosh: gsomix еще как увелиться, т.е. ты один аспект игры знаешь идеально

vrabosh: тебе не надо замарачиваться про это.. работаешь уже над логикой

gsomix: vrabosh, ну, правила не очень сложные. А вот уже в поиске оптимальных ходов я уже ничего не понимаю.

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

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

Uljahn: тебе Мэд написал формулы для предсказания

Uljahn: правда, в векторной форме)

vrabosh: вот пример: я начинаю в токи 100 100, еду в 200 200 скорость 100 так 2 хода, на третем ходу я передаю данные 50, 200 100, и так 10 раз подрят передаю

vrabosh: где машина будет на : 1, 2, 3, 4, 5 ходу?

vrabosh: тут же ускорение, заносы работают. не просто только векторы

gsomix: vrabosh, а тут только ускорение, трение и повороты.

Uljahn: ускорение тут - это прибавка к начальной скорости на данном ходу

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

gsomix: vrabosh, я не пойму. Ты хочешь какую-то волшебную аналитическую формулу, которая по твоему описанию выдаст координату? :)

vrabosh: что тут волшебного. это обычная школьная задача 9класса

gsomix: Ключевое слово здесь "аналитическую".

vrabosh: да

gsomix: Напиши симуляцию — получишь координаты в нужные моменты времени.

vrabosh: как ее написать?

Uljahn: скопировать из статьи магуса

gsomix: По формулам девятого класса. :)

gsomix: На каждом шаге их можно использовать, чтобы получить координаты, скорость и угол на следующем шаге.

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

Uljahn: складываем результаты по шагам в массив, и потом можно вывести на диаграмму https://i.imgur.com/ezQGZll.jpg

BorisZ: а посчитать позицию в уме не получится, там же трение есть - умножение на 0.85 каждый ход

gsomix: BorisZ, можно на листочке. :upside_down:

vrabosh: Uljahn вот как раз я такие диагрмы хочу научится делать.

vrabosh: ну вриципе да, в статье которую скинули все расписано

vrabosh: надо просто сесть и день выделить на это

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

Uljahn: это я когда-то давно в matplotlib делал с упрощенной симой

vrabosh: и я как представляю себе обьем работы который надо сделать, перед тем как начать играть.. то все желание пропадает играть в гонки)

vrabosh: это на месяц работы для меня.

gsomix: А мне бы понять бы, что дальше с этой симуляцией делать. :)

BorisZ: даешь на вход случайные значения скорости, например на 5 ходов вперед и проверяешь где ты есть

gsomix: То есть написать симуляцию при известных правилах — это техническая задача.

BorisZ: потом оцениваешь, например по расстоянию до следующего чекпоинта

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

BorisZ: это будет наисный монте карло метод

gsomix: Получается Монте-Карло?

gsomix: Ага.

BorisZ: *наивный

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

vrabosh: BorisZ лучшие ходы перебором ищатся? или есть формулы?

vrabosh: типа на сколько повернуть градусов перед поворотом, насколько скинуть скорость итд

vrabosh: допустим я еду по прямой туда обратно.. то можно завернуть чуть ниже, преварительно, а потом надоезжая резко повернуть, он при заносе задом заденет точку и сразу поедет обратно

BorisZ: перебором, не знаю насчет формул, не силен в этом ( если с коллизиями то точно нет никаких таких формул

vrabosh: такое математически просчитывается или это перебором ищется?

vrabosh: тогда здесь ии должен зайти.

gsomix: Не думаю, что тут какую-то адекватную аналитику можно вывести.

gsomix: Я в дискорде сегодня кидал статью по управлению машинками, которые движутся по заданной траектории. Там регуляторы, которые подстраивают движение.

vrabosh: гонки прикольная штука, там смотрю много тем раскроется для меня.. надо в них более подготовлиными влиться

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

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

gsomix: BorisZ, хорошо, а в среднем, что дает лучший результат в подобны задачах: улучшение поиска или улучшение формулы для оценки?

BorisZ: а формулы и ПИДы - хз, совсем не в тема, может Uljahn знает

Uljahn: формула тут одна -3Vel :)

Uljahn: gsomix: всё важно, и количество сим, и оценка, и предсказание противника

BorisZ: gsomix в гонках оценка довольно простая, а в общем - и то и то важно

gsomix: Да, там в External resources просто отличнейший материал про Steering.

gsomix: BorisZ, Uljahn, ок, спасибо.

BorisZ: после того как этот наивный монтекарло заработает, улучшаем перебор - это либо генетика либо отжиг

BorisZ: ну или если получится то вариация MCTS какая-то

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

vrabosh: мне кажется ГА тут бы зашел.. если симуляцию сделать быстую у себя на компе

vrabosh: на Си придется писать

vrabosh: впринципе в статье уже написали

Uljahn: на гитхабе есть несколько стартер-ботов уже с симой

gsomix: BorisZ, занятно. Я по работе чаще сталкивался с классическими методами оптимизации, вроде вариаций на тему градиентного спуска. А тут совсем другие условия, что приходится уходить в эвристические алгоритмы.

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

BorisZ: это как я понимаю, я тут нифига не авторитет )

gsomix: Да, я про это хотя бы краем уха что-то слышал, в отличие от минимакса или MCTS. %)

gsomix: BorisZ, спасибо!

YurkovAS: + в гонках можно попрактиковаться с алгоритмами: GA, minimax, smitsimax. на всех в топ100 войдешь

gsomix: YurkovAS, о, а мой утренний вопрос дошел? :)

YurkovAS: какой?

gsomix: YurkovAS, три месяца работы над ботом — это сколько в часах примерно?

YurkovAS: в среднем по 2-5ч в день. там еще были перерывы на отпуск, другие 2 конкурса, 2 оптимизации

BorisZ: YurkovAS над каким ботом 3 месяца?

YurkovAS: в общем много времени трачу. наверное больше всего тратится впустую на проверку очередной идеи (безрезультатной)

YurkovAS: не оптимизирую время, делаю в свое удовольствие. базовые знания хотелось бы улучшить, чтобы меньше времени на эксперименты тратить.

YurkovAS: BorisZ гиперсоника

YurkovAS: но и другие не меньше делал: ксб, крестики, покер

BorisZ: ого 10 место, респект

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

YurkovAS: спс

BorisZ: то есть реально сопротивление высокое

YurkovAS: в процессе получаешь новые знания в алгоритмах, оценочных и ускорении. в общем мне все нравится: не быстро, но прогресс есть

amurushkin: соглашусь. я пока csb и uttt неделями ковырял много чему научился

amurushkin: даже avx чуток применял

tutubalin: Главный урок, который я вынес из UTTT: в какой-то момент времени нужно перестать экспериментировать с размерами квадратного колеса на велосипеде и поставить уже круглые.

Uljahn: "больше всего тратится впустую на проверку очередной идеи (безрезультатной)" - так это и есть главный результат, когда складывается понимание, почему гипотеза не сработала

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

Uljahn: особенно, в условиях ограничений

gsomix: YurkovAS, спасибо.

gsomix: amurushkin, AVX помогло?

amurushkin: gsomix ну я там пару вычислений буквально всего пробовал. одну фукцию а 3 действия. мне не помогло а YurkovAS ему ускорило вычисления

amurushkin: mykeich: ты явно что то сломал в боте в csb. я в этот заход много раз тебя обыграл. в прошлый раз не смог тебя обогнать

mykeich: amurushkin может быть

mykeich: amurushkin а ты что нового добавил?:)

mykeich: я всего лишь убрал код отвечающий за фильтр ходов по коллизиям и вот такой странный результат

amurushkin: mykeich: я засабмитил тот же код что починил 3 дня назад. а до этого сегодня попробовал поменять глубину. вот назад вернул

amurushkin: у меня был баг в функции проверки пересечения с чеком

amurushkin: и то он с ним был на 16 месте ))

mykeich: Важный кусок кода с выкидыванием ходов с использованием щитов, но я не могу в нем разобраться:)

amurushkin: а кто его писал?

mykeich: я, но забыл зачем. а если меняю то становится хуже

Default avatar.png MaddoxX94: IDE не может подключить C# ассиста. Есть решение?

MelnikovIgor: Забить, он вроде и не работал никогда)

Default avatar.png MaddoxX94: Утром работал(

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

Default avatar.png MaddoxX94: Правда на линуксе, если это как -то влияет =D

MadKnight: https://sun1-92.userapi.com/nK4qk693GT_dRkKzrA25H4Y7bkiqQGVqYSydZA/kZ48Zt4QeeY.jpg го смотреть америкосское ТВ

TimeIsOut: go

Pyhesty: народ, а где найти ссылку на недельный контест?

Uljahn: пазл недели или какой контест?

amurushkin: его дата пока не известна

amurushkin: пока можно пойти в раздел мультиплеер. там тоже самое только без ограничения по времени

Uljahn: угу, там в основном прошедшие контесты, есть ещё коммьюнити мультиплееры от местных кодеров

Pyhesty: Uljahn я не в курсе, а есть ещё пазл недели? =) хотел найти контест недели, появлялась ссылка в понедельник, но пропустил

Uljahn: на колокольчик кликай и внизу линк Show read

Uljahn: https://www.codingame.com/training/medium/target-firing

Uljahn: вот последний пазл недели вроде

Pyhesty: спасибо чувак

Uljahn: это случайно выбранный пазл из всех, за его решение дают ачивку, если ещё не получил

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

Uljahn: а так - обычный пазл

Uljahn: пазлы добавляют в разделе https://www.codingame.com/contribute/community?type=puzzle

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

Uljahn: нужен 20-й или 24-й уровень, уже не помню

Pyhesty: гуд сенькс комрад

gsomix: Хм. А gajim сильно изменился за последние годы. :)

tutubalin: эх, не стал я королём CGFunge. второе место только.

tutubalin: код похож на тест роршаха в ASCII

YurkovAS: :thumbsup:

Default avatar.png GoyardCase: Привет, парни

gsomix: Доброе утро.