Chat:Ru/2020-09-02
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: я, но забыл зачем. а если меняю то становится хуже
MaddoxX94: IDE не может подключить C# ассиста. Есть решение?
MelnikovIgor: Забить, он вроде и не работал никогда)
Uljahn: проблему обсуждали сегодня в дискорде - админы в курсе, но не могу у себя воспроизвести :smiley:
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:
gsomix: Доброе утро.