Комментарии 37
Спасибо за материал.
Было бы здорово если бы вы описали как собственно начать. Такой себе hello world для Robocode. Думаю это помогло многим хотя-бы попробовать и понять в чем же суть, как происходит бой и так далее.
Было бы здорово если бы вы описали как собственно начать. Такой себе hello world для Robocode. Думаю это помогло многим хотя-бы попробовать и понять в чем же суть, как происходит бой и так далее.
Если вы читаете на английском, то уже сейчас можете начать отсюда:
robowiki.net/wiki/Robocode/My_First_Robot
Я же на выходных постараюсь перевести эту статью. Да и вообще, если будет спрос, постепенно переведу все основные статьи из робовики.
Так же, может быть интересным посмотреть ролики на youtube по запросу robocode. Особенно стоит уделить внимание роликам от пользователя Azaxxo
robowiki.net/wiki/Robocode/My_First_Robot
Я же на выходных постараюсь перевести эту статью. Да и вообще, если будет спрос, постепенно переведу все основные статьи из робовики.
Так же, может быть интересным посмотреть ролики на youtube по запросу robocode. Особенно стоит уделить внимание роликам от пользователя Azaxxo
Если хотите посмотреть как выглядит бой, на youtube можете посмотреть, набрав в поиске слово robocode. Вот пример группового рубилова на небольшом прямоугольном поле: www.youtube.com/watch?v=HsGUoA13PMo
Во, именно этой визуализации не хватает в статье. Теперь поняв, что к чему — могу даже автору кое-что посоветовать. По сути один из главных аспектов — это уход от столкновения (в данном случае от снаряда). А это я как то моделировал :)
Там не всё так просто. Радар бота не детектит летящие снаряды. О снарядах можно узнать, только когда они куда-то попадают. Радар детектит только положение и характеристики других ботов, попавших в поле зрения. А остальное – лишь предположения, расчет вероятностей, и т.д. В этом-то и интрига :)
Это конечно усложняет, но выход один — надо уходить с прямой линии противника, т.е. находить такое положение, где все прямые от центров противника тебя не касаются — и будет тот же алгоритм обхода столкновений.
В принципе да, наверное. Тут дело усложняется тем, что положение корпуса противника известно, но положение башни с пушкой – нет. А ведь башня может вращаться в любую сторону, независимо от корпуса. То есть невозможно определить, куда направлена пушка противника и куда он будет стрелять, нет прямых линий, можно лишь с некоторой вероятностью предполагать направление (сектор огня противника), но и это сложно. Для этого нужно собирать и анализировать статистику, при этом одни используют теорвер, другие – матстатистику, и т.д. Наиболее продвинутые используют нейронные сети и генетические алгоритмы. Автор с этим, по-видимому, справился лучше остальных. :)
На самом деле и не нужно знать положение башни и момент выстрела. Нужно просто исходить из наихудшего сценария. Так как если бы пушки всех танков были бы направлены на тебя. И ты уходишь от всех с приоритетом от тех кто ближе, стреляя одновременно по тем которые близко и мешают маневрировать.
Сети и генетика — тут будет слишком медленно работать и на самом деле не нужно. Любой детерминированный алгоритм будет работать выгоднее.
Сети и генетика — тут будет слишком медленно работать и на самом деле не нужно. Любой детерминированный алгоритм будет работать выгоднее.
Tomcat — дуелист, т.е. он умеет драться только один на один, по этому далее я буду говорить о дуэли.
Нет худшего вариант. Есть диапазон позиций, которые робот может занять за время подлёта пули, ~ от -45 до +45 градусов. И любой угол обстрела, в общем случае, равно вероятен.
Далее, основной инструмент в игре — мат статистика. Теор вер играет уже на много меньшую роль, нейронные сети удачно сумел запрограммировать только один человек, а гинетические алгоритмы используются «оффлайн» — т.е. дома у себя какие-нить параметры тюнишь часами, а потом выкладываешь затюненую версию. Собственно так я и потерял корону:)
Нет худшего вариант. Есть диапазон позиций, которые робот может занять за время подлёта пули, ~ от -45 до +45 градусов. И любой угол обстрела, в общем случае, равно вероятен.
Далее, основной инструмент в игре — мат статистика. Теор вер играет уже на много меньшую роль, нейронные сети удачно сумел запрограммировать только один человек, а гинетические алгоритмы используются «оффлайн» — т.е. дома у себя какие-нить параметры тюнишь часами, а потом выкладываешь затюненую версию. Собственно так я и потерял корону:)
> И любой угол обстрела, в общем случае, равно вероятен.
Ну, это же не правда. В каждый конкретный момент — есть разница и зависит от количества и расположения противников. Не могут же они стрелять дугой — только по прямой.
Ну, это же не правда. В каждый конкретный момент — есть разница и зависит от количества и расположения противников. Не могут же они стрелять дугой — только по прямой.
Я говорил только о дуэли, так что противник строго один. И он может стрелять куда угодно, хоть в противоположно направлении. Хотя как раз в этом ничего страшного нет.
А, ну и может стрелять и стреляет — это разные вещи. Например, тех кто стреляет прямо по позиции Tomcat'а в момент выстрела, или полагает, что Tomcat будет двигаться строго прямо на максимальной скорости, Tomcat разрывает >99-0. Но в случае более продвинутых техник прицеливания уже намного сложно хотя бы примерно определить направление полёта пули.
Вопрос в том на основании чего можно судить о положение башни с пушкой противника. Что вообще «видит» «наш» танк?
Посмотрел немного, там все оказывается серьезно :)
Хорошо бы вы осветили бы вопрос набором статей — о радарах, управлении движением, и т.д. конкретными темами, чтобы человеку было легко сделать первую версию примитивного танчика…
Хорошо бы вы осветили бы вопрос набором статей — о радарах, управлении движением, и т.д. конкретными темами, чтобы человеку было легко сделать первую версию примитивного танчика…
Да, я постараюсь на следующей недели подготовить статью об устройстве игры и с описанием первых шагов
Написал статьи с первыми шагами и физикой игры
Отличный ролик. Многое становится понятнее. tvv, у вас же есть некоторый опыт в этом, вы бы не могли оформить статейку? Так, глядишь, народ вокруг вас и начал бы собираться.
Та не, у меня энергии не хватит. Может быть потом, если будут достижения, сравнимые с автором данной статьи…
Кстати, для меня в Robocode наибольший интерес представляют командные бои (teamrumble), вот этим бы наиболее интересно было заняться.
Кстати, для меня в Robocode наибольший интерес представляют командные бои (teamrumble), вот этим бы наиболее интересно было заняться.
я бы, всё-таки, порекомендовал эти 2 ролика:
www.youtube.com/watch?v=dqHmp_kMz-U
www.youtube.com/watch?v=eqlPbtO3rQY
Потому как они лучше освещают о чём речь идёт в данной статье.
www.youtube.com/watch?v=dqHmp_kMz-U
www.youtube.com/watch?v=eqlPbtO3rQY
Потому как они лучше освещают о чём речь идёт в данной статье.
Ну, депрессии и личная жизнь (с Маринами) описаны здорово. Про робота — как-то мельком.
А почему именно танчики, а не CoreWar?
Отлично. Я сам недавно увлекся Robocode, написал нанобота пару месяцев назад, запостил туда. Понравилось. Мое мнение, чтобы войти хотя бы в ТОП 50, придется посвятить этому дело минимум человеко-месяц, и то и более. Это так, навскидку.
Пока что временно отложил, вместе с друзьями другой программерской забавой забавой увлекся (Salatron). Но я обязательно продолжу и с Robocode. Хотя мне одному скучновато немного, так как, увы, друзей Robocode не впечатлил, ну да ладно. Вот если бы кто-то замутил что-то типа клана, пожалуй, попросился бы вступить. ))
Пока что временно отложил, вместе с друзьями другой программерской забавой забавой увлекся (Salatron). Но я обязательно продолжу и с Robocode. Хотя мне одному скучновато немного, так как, увы, друзей Robocode не впечатлил, ну да ладно. Вот если бы кто-то замутил что-то типа клана, пожалуй, попросился бы вступить. ))
В моём случае на то чтобы попасть в топ 50 потребовалось 2 года и ещё 3 месяца на то чтобы попасть в топ 3:) Но сейчас, для меня, я думаю потребуется не более человеко-недели на то чтобы с нуля забраться в топ-50.
А кланы там как-то не приняты.
А кланы там как-то не приняты.
Хотел попробовать, а там только Java/.NET :( Биндингов к другим языкам нету?
<paranoia>
Да, ловко ВПК стран(ы) наиболее вероятного противника стоят ИИ боевого робота.
Как изящно — сами строгают/пилят люди, только выбирай наиболее качественное решение вопроса. Снимаю шляпу.
</paranoia>
А как зарелизить своего бота, что бы он участвовал в соревнованиях и учитывался в рейтинге?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как я стал чемпионом Robocode