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

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



Сюжет игры


Земля посылает экспедицию на другие планеты с целью создать колонию. Вы — астронавт, командующий группой роботов, которая должна колонизировать и защитить планету от опасного вторжения.

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

Игровой процесс


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

У каждого робота есть набор скриптов, и любой из этих скриптов в любой момент можно запустить. Скрипты мы пишем сами, и с каждой миссией и уровнем в запасе их становится все больше и больше.

Скрипты пишутся на языке CBOT, который похож по синтаксису на C++, Java, C#. Описание и возможности языка можно найти здесь.

Алгоритм заправщика


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

Алгоритм для бота заправки:
  1. Приехать на завод или склад батарей и взять заряженную.
  2. Найти разрядившийся юнит и подъехать к нему.
  3. Положить рядом с ним новую батарейку.
  4. Удалить старую.
  5. Взять новую (которую перед этим положили).
  6. Установить батарею в юнита.
  7. Взять старую батарею.
  8. Отвезти на строение по подзарядке батареек.
  9. Подождать, пока батарейка зарядится.
  10. Отвезти на склад уже заряженную батарейку.


А что произойдет, если у робота, который заряжает и меняет батареи, закончился заряд?

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

extern void object::FieldRefuel()
{
 
	object power=radar(PowerStation);
	object bot=radar(TrackedShooter); //only watches 1 bot
 
	errmode(0);	//don't exit on errors
 
	while(true)	//infinite loop
	{
		while(bot.energyCell.energyLevel < 0.26) //1/4 energy
		{
			goto(bot.position);
			wait(1);
			goto(bot.position);	//movement correction
			drop(Behind);		//switch cells
			grab();
			turn(90);
			drop();
			turn(-90);
			grab(Behind);
			drop();
			turn(90);
			grab();
			goto(power.position);	//refuel
			wait(7);
			move(-5);
		}
	}
}


Текущее положение дел


Игру выпустила в 2001 году компания Epsitec, и на тот момент она была платной. Позже она была передана в TerranovaTeam, и теперь игра активно дорабатывается и дописывается. Эта бесплатная, некоммерческая версия — Colobot Gold Edition. Разработчики планируют приступить к написанию Colobot 2, обсуждаются идеи.

Чтобы посмотреть готовые рабочие алгоритмы для ботов, можно обратиться к прохождению игры, которое доступно в самой игре. Кроме того, некоторые алгоритмы есть на этом сайте.
Colobot Gold доступна для скачивания на официальном сайте для Windows и Linux.

CEEBOT


Colobot — стратегия в реальном времени, построенная на программировании, но у Epsitec есть игра, еще более ориентированная именно на программирование, на том же движке — Ceebot. Эта игра и ее задания специально адаптированы для обучения программированию.
Но для бесплатного скачивания доступна только часть миссий. Существуют версии игры для различных возрастных категорий от десяти лет.
Официальный сайт игры.

Резюме


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

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

Автор статьи: преподаватель образовательной площадки GeekBrains Дмитрий Полянин

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


  1. Rondo
    28.01.2016 15:37

    кстати, некоторые хабра-юзеры писали свои версии этой игры, вот кусок обсуждения habrahabr.ru/post/264781/#comment_8537677


  1. Delphinum
    28.01.2016 17:12
    +1

    Игре крайне не хватает мультиплеера.


  1. Zifix
    28.01.2016 18:07
    +5

    Игра уникальная, но как для статьи на Хабр ИМХО материала маловато.


  1. Nurked
    29.01.2016 10:55
    +2

    Помню я плевался в своё время: «Вот забава, блин! Переписали черепашку с микрош! Тоже мне — учиться программированию — водить заправщик туда и сюда». Но игру слил и попробовал…

    Ничего более зубодробительного чем сделать самонаводку для пушки, которая установлена на летающем боте, который болтается в атмосфере, который пытается стрелять по летающему муравью, который болтается в атмосфере…

    Короче, скрипты выходят очень весёлые.


  1. Galiaf47
    29.01.2016 13:01

    Каждый раз читая про игры для программистов понимаю, что интереснее писать ботов для MMO. Подскажите, действительно игры с псевдоязыком интереснее чем боты на реальных языках?


    1. Delphinum
      29.01.2016 15:07

      По сути тоже самое, только порог входа в Colobot пониже будет.


  1. Wesha
    29.01.2016 23:58

    Кстати, если мне не изменяет склероз, этот самый робот с рукой-манипулятором мог поменять батарейку в том числе и сам себе. Меня тогда ещё удивляло: чем же он питается, пока старая батарейка уже снята, а новая ещё не поставлена?


  1. VaalKIA
    30.01.2016 05:38

    ЗМЕИНЫЙ БОЙ (Snake Battle) GAMOS, 1992
    www.virtualsoftware.com/gamos/snakebattle/SB-Scrn.gif