Пользователь
0,0
рейтинг
15 мая 2009 в 20:14

Colobot и Ceebot

ГеймпадВ мире всегда существовали некоторые закрытые общества, которые доступны только ограниченному кругу людей. Для того, чтобы попасть туда нужно было обладать чем-то необычным. Например, ездить на Bentley или курить Behike.

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

Ведь только мы способны сутками заниматься совершенствованием алгоритма, только мы можем бесконечно долго заниматься проектированием и совершенствованием архитектуры проекта, рисуя никому не понятные UML-диаграммы и странные схемы. Но есть еще один вид занятий, некий закрытый клуб для посвященных, который сгубил не одну тысячу часов, подняв профессионализм его участников до небес. Я говорю про Игры для программистов.

Их существует огромное количество, каждая игра по своему интересна, у каждой своя архитектура, свой API-интерфейс. Так как всех их невозможно охватить в отдельной заметке — я решил начать серию заметок про различные игры.

P.S. Создал открытый блог Игры для программистов.



Colobot


Логотип Colobot


Игра вышла в свет 20 августа 2001, и в ней реализована достаточно качественная по тем временам 3D-графика. Прежде всего игра создавалась для детей. Но как и в случае с детской железной дорогой больше всего в нее играют, конечно, взрослые.

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

Язык программирование CBOT


Все программирование в игре происходит на неком языке CBOT, сильно похожем на синтаксис не то C++, не то Java. Сам язык достаточно мощный, и позволяет реализовывать почти любые Ваши фантазии.

Можно объявлять переменные(пользуясь встроенными типами), использовать циклы for, while и do, создавать не только функции, но и классы и объекты.

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

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

Игра содержит достаточно простой дебаггер (отладчик), позволяющий пошагово выполнять Ваш код, и тут же наблюдать результат.

Отладчик


Хочется отметить, что для меня редактор кода оказался не самым удобным. И документация, все время сбрасывающаяся в начало, периодически выводила меня из состояния спокойствия.
Colo IDE


Перед тем как перейти к серьезной игре Вам предложат пройти курс молодого бойца, где предлагают решить простые задачки. Давайте рассмотрим подобную задачку:

Задачка из курса молодого бойца


Вам необходимо написать программу для робота так, чтобы он прошелся по всем синим плюсикам. Расстояние между каждым поворотом равняется 20 метрам.

К примеру, функция move(12) вежливо попросит робота проехать 12 метров. А функция turn(90) повернет его на 90 градусов.

Наша программа для робота будет выглядеть следующим образом:

  1. // Это строчка изначально встроена в код разработчиками, и предназначена
  2. // исключительно для создания пафоса и пускания пыли в глаза.
  3. extern void object::Solution( )
  4. {
  5.        move(20); // Переместиться к 1 чекпоинту
  6.        turn(90);
  7.  
  8.        move(20); // Переместиться к 2 чекпоинту
  9.        turn(-90);
  10.  
  11.        move(20); // Переместиться к 3 чекпоинту
  12.        turn(-90);
  13.  
  14.        move(20); // Финишировать!
  15. }


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

Локализация



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

Благодаря уже несуществующей компании Фаргус существует отличный русский перевод. Перевод, с которым ознакомился я, был выполнен на отлично.

Вся документация полностью переведена, никаких замечаний у меня не возникло.

Документация


Юзабилити


Юзабилити в игре хромает на обе ноги. Я потратил порядка 40 минут, чтобы понять вообще что к чему. Что такое ресурсы, как их доставать и как из них получать готовых роботов я узнал по чистой случайности.

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

Общие впечатления



Двигаясь от простых миссий к более сложным, постоянно познавая различные аспекты языка, игрок не только учится программированию, но и познает азы алгоритмизации.

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

Хочется отметить, что возможность автоматизации поистине безгранична. Вы можете автоматизировать строительство новых зданий, новых роботов (например, летающих или гусеничных), поиск ископаемых, добычу энергии, подзарядку, охрану Вашей территории и прочие мелкие детали. Разработчики предоставили нам очень удобную абстракцию от лишних деталей, позволяя сфокусировать на достижении конкретной цели.

Нельзя не заметить, что в Colobot встроена прекрасная документация, которой позавидуют многие OpenSource проекты. Все расписано просто и без лишних деталей, приведены примеры использования. Вся документация перелинкована, так что перемещаться по ней очень удобно.

Но в игре существует досадное ограничение на длину кода — не более 20 000 символов для одной программы. Для чего это сделали разработчики — не понятно.

На официальном сайте Вы также сможете найти довольно большой архив уже готовых программ. Используйте уже написанные программы, улучшайте их и присылайте им обратно на сайт. Начните уже наконец хоть как-то вносить свой вклад в великое дело OpenSource!

Ceebot



Нельзя не упомянуть о том, что существует и версия Colobot для учебных заведений. Ceebot достаточно уверенно развивается, и даже обзавелся собственным сайтом http://ceebot.org, где публикуется различный обучающий материал.

Гонки


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

Чего только стоит программирование футбольного матча и гонки роботов!

Футбол


Хотите поучаствовать в схватке с знакомым программистом? Без проблем, для Вас доступен режим Арена! Докажите, что Вы умеете лучше программировать на деле!

Война


Также можете ознакомиться с небольшим видео, которое я нашел на youtube.com, иллюстрирующем процесс программирования в Colobot:

youtube.com/watch?v=RlyKxjKXQcY

На официальном сайте доступна демо-версия игры для скачивания и ознакомления.

И не забудьте посоветовать эту игру знакомым мальчикам(девочкам?) — вдруг это будущий гений программирования!

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

Удачи!
Станислав @v673
карма
103,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (47)

  • +2
    Классно! надо попробовать
  • 0
    Играл как-то в нее, но относительного опытному программисту это уже слишком легко. Была мысль переписать ИИ у ботов, но стало лениво. :)
    Самые дурацкие миссии — это когда самому нужно что-то сделать, а не программой прогнать, как дошел до одной такой — так и забросил.
    • +29
      Обзоры игр для опытных программистов я обязательно напишу позже. Если, конечно же, хабраобщественность поддержит.
      • 0
        На мой взгляд, это достаточно интересно, почему бы и нет?
      • 0
        Я бы тоже с радостью почитал.
      • 0
        Обязательно поддержит!
      • 0
        поддерживаю! раньше любил игру «The incredible machine» и ей подобные, а тут — все еще сложнее и наверное интересней.
      • 0
        Есть ещё такая интересная игрушка. как Uplink. Напишите обязательно и про неё! Хотя она и не столько для программистов =)
  • +4
    начинающему программисту(ака школьнику) это в 100 раз лучше чем паскалить до посинения. По крайне мере в те времена играл в колобота очень увлеченно
    • 0
      +1
      в то время учился гдето в 10 классе, игруха очень затянула. прошел за неделю. Местами слишком просто. Но качественнее игр на подобную тематику до сих пор нету :(
  • +2
    О да, это великая игра. Я о ней в 2001 году первый раз и узнал — демку заиграл до дыр.
  • +2
    Я помню раньше играл в crobots и probots — консольные игры, программирование боевых роботов на C и Pascal соответственно.
    И кстати будете освещать игры не забудьте про Core Wars можно для неё отдельный пост даже выделить…
    • –1
      Хотя Core Wars будет наверно сложноват для большинства нынешних программистов.
      • +2
        Не надо грязи. До сих пор люди пишут и на плюсах, и на ассемблере.
        • +3
          Да я никого не хотел обидеть. Извините. Вырвалось. :-[
  • +1
    да, в нашу молодость мы гоняли пучка на Logo — был такой язык программирования вроде…
    • 0
      черепашку
  • +1
    от майкрософта был тоже очень интерестный проект, назывался Terrarium. погуглил, оказывается он еще жив
    • 0
      млин, с отрицательной кармой ссылки не вставляются? :(
      weblogs.asp.net/bsimser/archive/2008/07/16/reintroducing-terrarium-now-with-2-0-goodness.aspx
  • +1
    Хехе, когда-то было заскриптовал целый мир такой:
    — добывается руда, перерабатывается
    — делаются батарейки, вставляются в роботов
    — роботы строятся, отправляются на поле скирмиш-боя, где подзарядка
    И так теоретически до бесконечности, если трупики собирать.
    • +1
      А я нашел карту, где есть месторождения урана и руды, и в результате толпа ботов нечеловеческих размеров билась на равнине, усыпая трупами своими пустоши.
      • 0
        Карты вроде можно рисовать хоть в паинте ..)
  • +1
    Давным-давно программировал боевых роботов в ROBOT WARFARE 1
    Вот это была реальная жесть :)
    Официальный сайт, к сожалению, сейчас ведет в никуда
    • 0
      Прекрасная была игра, в своё время тоже узнал о ней из игромании и играл с огромным удовольствием. Всё было там как надо, разве что все операции в языке требовали игрового времени(то есть робот мог долго думать если в его коде было например много IFов), а решалось это использованием массивов с командами вместо if условий, в которые в качестве индекса подставлялось условие. Вобщем это было на мой взгляд ужасно и неправильно.

      Давно хотел бы лицезреть более развитую аналогию этой игры. Было бы просто безумно интересно попрограммировать виртуального робота и посражаться им с кем-нибудь из знакомых программистов.

  • +3
    robocode.sourceforge.net/
  • +8
    ИМХО специально заточенные под программирование игры могут быть полезны начинающим программерам. Гораздо интереснее и забойнее — написать бота к нормальной online игрушке, у которой есть защита кода, защита от ботов, отсутствует документация и api, т.е. классический пример типичного современного enterprise продукта 8)
  • +2
    Ждем постов про Robocode, Terrarium, Project Hoshimi и серию Electric Junge ;)
  • 0
    Еще очень интересно программировать электронные системы в игре Garris Mod.
    Есть там такой раздел WireMod, в котором на настоящем Си и асме можно прогить прошивку для проца, который через шину будет управлять всей системой). Возможности почти безграничны

    Вот пример: www.youtube.com/watch?v=b60OXjCeDbE
  • 0
    А про многопользовательские или он-лайновые напишите?
  • +10
    Езди на Bentley. Кури Behike. Играй в Colobot.
  • 0
    Вспомниются игра UpLink :) В свое время очень много времени провел за ней :)
    • +3
      это уже, скорее, аркада.
      • 0
        Но обойти её вниманием — нельзя! ИМХО.
  • +2
    В 11 классе участвовал в заочном туре студенческой олимпиады. Задача стояла в написании бота для игры в лабиринт. Двух ботов от двух разных команд высаживают на карте, ее топология неизвестна. Боты могут ходить и стрелять, причем стены они видят, только когда натыкаются на них. Начальное местоположение противника неизвестно, но информация о всех его ходах доступна. Задача в том, чтобы убить противника или найти выход. Довольно забавная штука получилась, особенно интересно было потом наблюдать за результатами дуэлей, когда наш бот, определив местоположение противника, напролом бежал его убивать. Вроде даже в десятку вошли.
  • +1
    А мне вот вспомнились «игры для программистов» с платформы ZX-Spectrum, на которой многие взрослели. Помнится было что-то вроде «Soldier of Future» графической визуализацией программирования и развернутым конструированием самих роботов-солдат (чем больше ячеек памяти поставишь, тем длиннее код, но тем меньше ресурсов под оружие и т.п.)
    Есть и еще одно направление, помимимо игр жанра «напиши код чтобы оно побежало». Я имею ввиду развернутые Life-game проекты, Virus на том же Спектруме. Создаешь конфигурацию саморазвивающегося организма-вируса со множеством параметров но в формате игры «Жизнь», пересылаешь на BBS в назначеное время, а там уже админ демонстративно стравливает присланных участников друг с другом, организуя турнир. Ну и попутные торжественные мероприятия.
    В общем хотелось бы узнать и о такого рода проектах. Заранее спасибо
  • 0
    А в тему ли будет такая разновидность игр, как hacker-mode в The Matrix?
  • +3
    подразумевается, что программист после трудового дня придет домой и будет играть в программиста?!
    • +1
      Да — мы такие.
      • +1
        "… Турбины толкать способны взглядом, вращать любовь по небосводу, заставляя рыдать природу..." =)) Почему то Ундервуд вспомнился.
  • 0
    Большое спасибо за обзор! Давно хотел что — нибудь такое попробовать. В универе выпала возможность писать программы для робота, в лаборатории робототехники тусовался ) Времена прошли, а тяга осталась к железу ) Уже поднаедают все эти БД, UI,… Интересно видеть как от твоих рук что — то «оживает».
  • 0
    Кстати, для такой вещи, как колобот, по моему мнению, лучше бы подошел язык с более сладким синтаксисом. Руби, например.
    • +1
      Игра 2001 года и как бы намекает… =))
      • 0
        Руби появился в 95м (некрокоммент).
        • 0
          ппц я долго вдуплял в Ваш и свой коммент =)
          • 0
            Я с Википедии попал в пост случайно совершенно :)
  • 0
    Заинтересовался ) скачаю. Спасибо за интересную статью
  • 0
    Наверное для таких игр язык должен быть событийно-ориентированным, думаю удобнее чем бесконечный цикл и куча if-ов.

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