Показаны сообщения с ярлыком игры. Показать все сообщения
Показаны сообщения с ярлыком игры. Показать все сообщения

29 Май 2008 г.

Искусственный интеллект роботов. Игры

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

Ведь согласитесь, BEAM-роботы хороши, но это ведь каменный век!

Неплохим подспорьем (тренировкой) на пути к созданию Умного Робота - может стать разработка алгоритмов для виртуальных роботов, и участие в онлайн-чемпионатах алгоритмов. Я уже писал об этом в сообщении Виртуальные соревнования роботов. Поединок программ.

Тогда я упоминал проект Арена Роботов. Недавно со мной связался создатель этого проекта, Александр Залога, и поинтересовался моим мнением относительно своей Арены.

Также, Александр подкинул пару ссылок на в той или иной степени аналогичные проекты:

  • Robot Warfire - это проект, послуживший основной для Арены Роботов. Все довольно примитивно, однако играть, я подозреваю, было очень интересно. Вкратце: на поле выставляется несколько типов предметов: стена, яма, элемент питания, боеприпасы, вражеский робот, дружественный робот. У самого робота есть 4 слота, смотрящих в разные стороны. В слот можно помещать либо оружие, либо глаз робота. Робот видит соседние клетки, если они примыкают к его глазам. Ну и наконец, пишем суперхитрый скрипт поведения и маневрирования, и вперед, на чемпионат... Скриптовый язык, кстати, очень напоминает Бэйсик. Об этой простой, в общем-то, программке писали даже на Игромании!
  • Описание трехмерной арены роботов можно найти на Delphi Lab. Написано, правда, не русскими, но зато ребята очень мощно шагнули в графическом плане.

Кстати, самой крутой игрой по части "игрового искусственного интеллекта" я до сих пор считаю игрушку Генерал от NewGame Software. Ничего лишнего, никакой графики, но уж очень интересно играть. И, как ни странно, безумно реалистично (сочетание реализма и геймплея - это весьма сложная задача для практически любой игры).

Создание игрового ИИ - задача сложная и очень серьезная. Играя в проекты, подобные RoboChamps или Арене Роботов, Вы эту задачу пытаетесь решить.

На самом деле, если бы я стал делать что-то подобное проекту Александра, вот на что я бы обратил внимание в первую очередь:

  1. Позаботился бы о наличии в игре реализма.
    • Выбор типа шасси. У каждого типа шасси свои особенности - разная проходимость, разная скорость передвижения, и т.д. Основные типы шасси: колесное, шагающее, прыгающее, ползающее, гусеничное, летающее, плавающее, амфибия и т.п.
    • Выбор набора датчиков. Тепловые, световые, видеокамера, радары разной дальности, дальномеры и т.п. Набор датчиков сильно влияет на способ выбора цели, скорость наведения, скорость движения по пересеченной местности; на способ обхода препятствий и построения маршрута движения и т.п.
    • Выбор набора оружия. Разная поражающая способность, разный вес, разный нагрев, разное потребление припасов и боезапаса. Я бы даже сделал оружие более приближенным к реальному. Т.е. например, пневматическая стрельба железными пульками; укрепленная на роботе бензопила и т.п.
    • Выбор количества и типа элементов питания. Солнечные батареи, различные аккумуляторы (какие-то работают дольше, но и заряжаются дольше, какие-то всем хороши, но имеют очень большой вес) и т.п. Это будет сильно влиять на зависимость робота от подзарядки.
    • Выбор брони. Ну здесь главное - вес. Чем тяжелее броня, тем сложнее роботу двигаться, а следовательно, тем больше он жрет энергии и медленнее ходит.
    На самом деле, настоящий робототехник действует по сути точно также: выбирает шасси, набор датчиков, тип элементов питания. Ну оружие и броня - только в случае роботов сумо или роботов для чемпионатов по стрельбе в цель.
    Реализм прибавляет игре привлекательность, но важно при этом не забыть о геймплее. Если выбора слишком много - глаза начинают разбегаться, и интерес к игре пропадает, либо сводится к перебору многих сотен вариантов оснащения робота, даже не доходя до главного - до алгоритма его поведения...
  2. Я бы сделал игру достаточно простой в графическом исполнении, но такой, чтобы максимальное число людей могли за игрой наблюдать онлайн. Например, чтобы можно было смотреть за игрой через браузер.
  3. Я бы сделал формат задания роботов и алгоритмов их поведения максимально стандартизированным. Например, есть такой язык RoboML, я о нем написал целую статью в свое время: Язык описания роботов - RoboML.
    Это весьма проработанный язык для описания роботов и их поведенческих функций. Как показывает практика, стандартизация в современном мире - это задача №1. Также, можно использовать стандарты, совместимые с Microsoft Robotics Studio, это еще более перспективное направление. Например, как вам такая идея: робот может работать согласно алгоритмам, созданным в Visual Programming Language? :) Ведь потом благодаря Robotics Studio можно будет перенести наработки алгоритмов на использование с совершенно реальными роботами!
  4. Систему управления я бы организовал из множества блоков "если". Например:
    • Если увидел цель - сближайся на максимальной скорости и тарань ее.
    • Если зарядки осталось 20% - ищи электростанцию.
    • Если зарядки более 20% и никто не нападает - свободный поиск..
    Это обыкновенный алгоритмический способ управления. Все алгоритмы более низкого уровня (поиск пути, захват цели) - пусть будут реализованы внутри игры. И для задания алгоритмов верхнего уровня я бы сделал нормальный обычный интерфейс, можно даже интерфейс на сайте, чтобы никуда не надо было ходить и ничего не нужно было бы скачивать.
    Таким образом, игра будет иметь больше игроков, ведь алгоритм может придумать почти каждый, а на С или на чем-нибудь еще - умеет программировать лишь ограниченное число людей. Даже после появления .Net...
    Но для истинных любителей, конечно, можно оставить альтернативную возможность создания полномасштабной программы управления.
  5. Добавил бы игрокам вселенскую цель, помимо уничтожения друг друга. Ведь сами подумайте, вот например в Арене Роботов. Там есть электростанции, от которых роботы подзаряжаются. Напрашивается следующая тактика: ищем электростанцию, заряжаемся, сидим ждем. Приходит враг - расстреливаем его, заряжаемся снова, ждем дальше. Разве интересно?! А представьте два противника и две электростанции - и сидят ждут друг друга...
    Нужна вселенская цель, которой заканчивается игра. Скорее всего, захват какого-либо артефакта, или флага.
  6. Добавил бы возможность командной игры. Это чрезвычайно важно в любой онлайн-игре. Банальный хороший чат. И как следствие - нужна возможность перепрограммирования роботов "на лету". И еще как одно следствие - необходима возможность создания и сохранения нескольких типов поведения, которые можно быстро, одним кликом мыши, менять друг с другом в процессе игры (типа мирное существование, избегание боев, агрессивность и т.п. Кстати, чтобы перепрограммирование не было слишком частым, лучше всего ввести зависимость этой возможности от наличия на роботе, например, некоего радиоприемника. А вместо радиоприемника ведь всегда можно поставить хорошую пушку, так что возможность перепрограммирования в данном случае компенсируется.

Да, кстати, если вдруг кто захочет такую вот штуковину написать - с удовольствием предоставлю бесплатный хостинг :) Обращайтесь!

7 Май 2008 г.

Виртуальные соревнования роботов. Поединок программ

Microsoft проводит соревнования симуляций. Онлайн это видно через SilverLight, на сайте RoboChamps. Симуляция пишется, естественно, с помощью Robotics Studio. Кстати, господа, кто программировать умеет! Ведь Microsoft может запросто предложить победителю работу, так что, мимо ушей такие вещи пропускать не стоит! Я - так вообще, всегда был любителем таких вот вещей. Эх, было бы времени немножко - обязательно забацал бы симуляцию своего марсоходика!

Идея, кстати, не нова. Вот, например, был проект когда-то - Арена роботов. Смысл абсолютно такой же: пишем программу, используя специальный редактор, программа наша должна управлять виртуальным роботом. Отправляем программу организатору соревнований, он запускает чемпионат, и победитель получает приз. Все, собственно, просто. Сайт, надо заметить, существует с 2005го года :)

Если уж перечислять, то позволю себе также упомянуть еще разок RoboBrawl, замечательную онлайн флэш-игру, где можно поучавствовать в битвах роботов друг с другом. Весьма интересно, я в свое время полдня рабочего времени убил, играясь в нее :)

MechWarrior

Безумно популярная в прошлом вещь - AD&D, не могла обойти роботов, и имеет в своем составе конечно же, и вселенную MechWarrior. Про эту вселенную написано много книг, создано несколько жутко популярных компьютерных игр (серии MechWarrior, MechCommander).

Но это все конечно не было бы так интересно, если бы энтузиасты действительно не захотели бы создать реальную, а не виртуальную, модель "меха" (т.е. боевого робота).

А ведь они захотели! Самое простое - создать костюм меха, и это было сделано (и я думаю, неоднократно).

Описание другого смешного проекта по построению модели меха из подручных материалов (по сути дела из всякого хлама) - описан в блоге the Warehouse (англ. warehouse - склад, кладовая).

Однако, костюм костюмом, хлам хламом, а мех - это все-таки огромный пилотируемый боевой робот, а совсем не костюм из тряпки и пары алюминиевых реек (и уж тем более не крохотная моделька, собранная из мусора)! Поэтому, часть энтузиастов на костюмах не остановилась - а занялась проблемой всерьез. Всерьез, и надолго. Один из таких проектов, Mechanized Propulsuion Systems, является публичным и до сих пор действующим.

Текущий прогресс можно посмотреть на их сайте, как и галерею фотоизображений уже созданных деталей.

MPS - проект не единственный. Например, целый список подобных проектов (немного более любительских) можно найти на сайте BattlePicts.

Было бы очень здорово, конечно, увидеть живой экземпляр меха. Уже созданные на сегодняшний день экзоскелеты - это очередной шажок в данном направлении. Кто знает, может быть и в нашем, реальном мире, когда-нибудь мехи, как рыцари Cредневековья, будут охранять границы государств, и вести войны... Кто знает!

3 Март 2008 г.

Игры про роботов и не только

Подсказали оригинальную онлайн-игру на Flash - RoboBrawl (букв. "драка роботов"). Вкратце - это аркадная игра с видом сверху, где на небольшом ринге сражаются 5 роботов. Возможна даже сетевая игра. С удовольствием потратил 20 минут на изучение, но когда понял, что вещь хорошая, и можно бы поиграть и больше - заводить аккаунт и начинать качаться с нуля уже не хотелось. Так что не повторяйте мою ошибку, и после одного-двух боев зарегистрируйтесь! Интерфейс - на английском, но интуитивно все очень понятно.

Кроме того, хочу представить просто суперскую по задумке игру под названием Crayon Physics Deluxe. Она, правда, к роботам отношения имеет мало, но игра действительно замечательная. Предназначена для детей, но я сам, когда мне показали эту вещь, играл не отрываясь полдня в урезанную версию, и потом показал всем возможным знакомым...

Вот видео самой игры с YouTube:

Не правда ли, шикарно!? Рисуешь что-то - и оно оживает... Обычно такие игры очень сложны в реализации либо в управлении. Здесь проблемы с управлением нет (ведь нужно только рисовать), а реализацию - увидим...

Да, к сожалению, на сегодняшний день игра Crayon Physics Deluxe еще не готова. Зато можно скачать ее урезанную версию и дополнительные уровни к ней. Кроме того, советую подписаться на уведомление о выпуске игры, этим Вы добавите автору энтузиазма и стремления закончить такую замечательную задумку.

9 Январь 2008 г.

Игры о роботах

Вот и кончились праздники!

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

Кто-то скажет, что это хлам, но мне очень нравится. Так что в эти выходные играл, например, в такие игры как Sven и Warcraft 1.

Кстати, в сентябре этого года буду поступать в аспирантуру. Тема - связана с нейронными сетями и робототехникой, так что ждите много полезной информации по этому поводу.

В любом случае, сейчас будем наверстывать упущенное за выходные...

Первым делом, раз уж начал говорить о играх, расскажу немножко о лучших играх о роботах.

Начнем с самого старого. Как известно, одной из самых интересных идей в робототехнике является построение боевых роботов, а этим знаменита целая вселенная из серии ролевых игр AD&D - BattleTech.

Вот как, примерно, выглядит настольная игра серии BattleTech:

В настоящее время настольные ролевые игры не слишком популярны, хотя гораздо более доступны, чем раньше. Виной тому, конечно, компьютерные игры того же жанра. Вселенную BattleTech в компьютерном игровом мире представляют две золотых серии игр: MechCommander и MechWarrior. Первая - тактика в реальном времени, вид сверху. Насколько я еще помню, общий ход игры такой: закупаем роботов и снаряжение к ним, проходим миссию, убивая роботов противника, за это дают деньги, на которые снова можно что-то купить...

Игры же серии MechWarrior - это симуляторы боевых роботов с видом из глаз. Очень динамичный бой, при этом - все как в книжке, т.е. контроль перегрева и т.д. Про книжки о вселенной BattleTech я уже писал - в «Чтиве».