Как стать автором
Обновить

Colobot и Ceebot

Время на прочтение 5 мин
Количество просмотров 33K
ГеймпадВ мире всегда существовали некоторые закрытые общества, которые доступны только ограниченному кругу людей. Для того, чтобы попасть туда нужно было обладать чем-то необычным. Например, ездить на 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

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

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

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

Удачи!
Теги:
Хабы:
+120
Комментарии 47
Комментарии Комментарии 47

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн