HabraWars


Наверное, многие слышали про такие проекты как RoboWar, Robocode, Robot Battle, Microsoft Terrarium и другие игры для программистов, в которых соревнуются, написанные разными людьми скрипты. Возможно, кто-то даже принимал участие.

Суть таких соревнований заключается в следующем: организаторы придумывают некоторую модель игрового мира и реализуют её симулятор, а участники пишут программы, которые затем запускаются вместе и соревнуются за достижение какой-нибудь заданной цели. Чаще всего в качестве модели игры выбирают битву роботов, а в Microsoft Terrarium был симулятор животного мира.

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


Мы с одногруппником на четвертом курсе писали свой симулятор битвы роботов в качестве курсовой работы. Чтобы долго про него не рассказывать, сделал небольшой ролик с комментариями (лучше смотреть на YouTube):



(YouTube заметно попортил качество, но смысл понятен...)

Пояснение к ролику: каждый робот играет сам за себя, синим цветом обозначены места зарядки батарей, оранжевым — боеприпасы. Роботы изначально не знают карту местности и обследуют её по ходу игры. Красные роботы (их я писал) работают на генетическом программировании, а синие на нечеткой логике.

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

Итак, я предлагаю нечто подобное организовать здесь, на Хабрахабре. Тезисно:
  • Простая модель, предполагающая минимальное количество рутинного кода;
  • Популярный кроссплатформенный язык программирования (скорее всего JavаScript);
  • Небольшое количество времени, требуемое от участников.

Я готов всё это организовать при небольшой вашей поддержке. Для начала требуется некоторое количество потенциальных участников. Что думаете?
+81
6 ноября 2009, 22:01
18
P_r_i_m_a_t 221,3

комментарии (187)

+1
Hellplix #
Опишите подробнее реализацию «робота». Довольно забавно, я бы попробовал.
+1
P_r_i_m_a_t #
Я не на этом симуляторе предлагаю делать — на нем слишком долго. Лучше придумать новую более простую модель. Если участников будет достаточно, я потом отдельным топиком предложу свой вариант.
+2
mezastel #
Мне идея нравится и я предлагаю использовать Robocode, вместо того чтобы что-то новое писать.
С удовольствием поучаствую — если правильно все организуете, с таблицами, рейтингами, и т.д.
+3
P_r_i_m_a_t #
Для Робокода уже много чего написано, кто-то может просто взять готовый код. Javascript хорош тем, что не надо ничего ставить, а новый Canvas в HTML5 позволит рисовать нормальную графику. Таблицы/рейтинги будут обязательно :)
0
adept #
Поддерживаю, начать с какой-то простой реализации, где можно выбрать каких участников запустить на поле (считай выбрать код, который запускается) и потом локально погонять. После этого, если все получится, можно дальше думать про рейтинги, таблицы и т.д.
0
Goodkat #
А как ты будешь разделять ресурсы процессора между роботами?
Надо же, чтобы роботы ходили одновременно или хотя бы поочереди.
Или программировать на каком-нибудь мета-языке, который будет выполняться яваскриптовой платформой?
0
P_r_i_m_a_t #
По очереди будут ходить.
+1
Goodkat #
Понял.
Т.е. управляющий скрипт будет вызывать поочерёдно программы роботов, передавать им список ближайших объектов, координаты и спрашивать у них очередной ход, типа продвинуться на один пиксель туда-то, стрельнуть туда-то и т.п.,

Тогда необязательно даже писать логику роботов на яваскрипте, каждый желающий может писать на чём захочет, а игра будет опрашивать компы игроков (перед началом игры каждый игрок сообщает свой адрес)
0
P_r_i_m_a_t #
Это не самый удобный вариант — многие за НАТом сидят, не все смогут в определенное время у компа быть.
+1
Goodkat #
Я подразумевал вебсерверы, кто-то пишет на пехапе, кто-то на руби, кто-то на яве, кто-то на питоне и т.п. если нет хостинга, то и свой комп пойдёт.
0
NermaN #
Лучше так чем только на яве
0
P_r_i_m_a_t #
Хотя в Робокоде есть сендбоксинг, чего в браузере сделать не получится. Надо думать…
0
kurokikaze #
В браузере нельзя сделать Sandboxing? Почему?
0
P_r_i_m_a_t #
Общий-то он и так есть, а между кодом участников как?
0
kurokikaze #
Ну вообще каждый может свой код выполнять у себя. Если вы имеете в виду разграничение в пределах одного выполнения — можно засовывать код участников в замыкания например.
0
P_r_i_m_a_t #
Хм, а доступ к DOM, например, можно ими закрыть для определенной функции?
0
kurokikaze #
Хм. Сейчас попробую.
+1
kurokikaze #
Ну вот как то так.
0
P_r_i_m_a_t #
Отлично! Спасибо.
+1
kurokikaze #
Вот второй вариант, без объекта window.
0
P_r_i_m_a_t #
Для соревнования придется код запускать на одной машине.
0
GooRoo #
У Robocode есть одно преимущество… это Java. Мне кажется это более разумным вариантом.
0
mezastel #
И я про то же…
0
nehxby #
Java — не всегда и не для всех преимущество.
Имхо, заявление холиварное. С таким же успехом я могу сказать — у Ubuntu есть одно преимущество… это Linux
+1
GooRoo #
Это всё должно решаться голосованием. Я к примеру принципиально программирую только на С++ (ну и Haskell учу), но в голосовании, руководствуясь здравым смыслом, выбрал бы Java и уж никак не Javascript.

Я думаю, большинство программистов начинают путь все-таки с более «традиционных» языков… Мало кто из начавших сразу с веба, становится настоящим профессиональным программером.
0
cronoc #
гы) почти оффтоп, да и поздно уже: принципиально под C++ — это как?) Т.е. если надо будет задачу решить (производственную, научную, учебную, интересную, за деньги) на каком-то другом языке — откажетесь?)
0
GooRoo #
Зависит от задания ;) В целом, я стараюсь браться за те задания, к которым хорошо подходит C++, потому что стараюсь не расширять познания, а углублять. Но если и правда задача интересная, то могу и на чём-то другом писать — благо, кое-какие знания имеются.
0
cronoc #
однако-однако)… понимаю, принимаю)
0
kurokikaze #
Я за. Было бы очень интересно.
0
alexnikulkov #
+1. никогда в подобном не участвовал, но было бы интересно.
0
Banzeg #
Подписываюсь :)
0
YuronN #
Согласен поучаствовать.
0
Avart #
А почему на 1:51 синий с красным в друг-дружку не стреляли?
0
kurokikaze #
Возможно оба отступали )) Там же логика определённая у них :)
0
P_r_i_m_a_t #
Патронов не было (верхний правый индикатор под роботом).
0
destel #
Я за. Когдато рубился в necrobones.com/atrobots/ но там язык ассемблерного типа.
Было желание организовать что-то похожее, с кучей фишек, но на руби. Но с энтузиазмом возникли проблемы :)
0
Levsha100 #
Я-за.
0
redchrom #
По моему было бы лучше что-то кросс-платформенное (java или python) с управлением через сокеты.
+3
P_r_i_m_a_t #
Я тоже об этом думал, но в таком случае всем, даже зрителям, придется себе что-то устанавливать. А так потом можно будет результаты с возможность просмотра боев на сайте выкладывать… Да и Javascript знают больше, чем Java и Python.
0
redchrom #
А зачем зрителям в реальном времени смотреть, пусть довольствуются видео :) Да и хабра-эффектом завалит.
0
P_r_i_m_a_t #
Если битва будет одной большой кучей (как на видео), то да — можно одно видео выложить. Но тогда большое значение играет удача. Оптимальнее устраивать бои 1 на 1 каждого участника с каждым, например, тогда видео будут тонны.
0
naryl #
Разные роботы сильны в разных ситуациях. Например, моё творение для AT-Robots каким то чудом около 80% матчей заканчивало на втором месте. Первое место всегда менялось.
0
sse #
Можно какой-нть простой язык типа basic компилять в байткод и гонять хоть на сервере, хоть в Flash-плеере прямо в браузере юзера.

А компилить basic в байткод можно тоже на сервере — ты ему код, он тебе файл с байткодом, который потом можно скормить flash-плееру.

+ Если flash, то проблема с графикой решается очень просто.
0
P_r_i_m_a_t #
Ну, Canvas в HTML5 тоже проблему c графикой решает. А Javascript все же приятнее, чем Basic.
0
redchrom #
Так а данные через HTTP передавать что-ли?
0
P_r_i_m_a_t #
Зачем куда-то что-то передавать? Все в браузере на Javascript запускается — и симулятор и роботы.
0
redchrom #
А, теперь понял. В общем и на javascript можно, тем более я могу и на ocaml писать используя ocamljs :)
0
sse #
Не, смысл не в том, jscript или basic или что-то еще.
Смысл в том, чтобы собирать в байткод. А на чем будет написана виртуалка, которая будет гонять этот байткод, неважно. Можно и в canvas + jscript. А можно и на java на сервере, чтобы как можно быстрее прогнать и определить победителя.
0
P_r_i_m_a_t #
В случает с Javascript байткод вообще не понадобится — все будет выполняться в браузере.
0
sse #
Непонятно, как тогда будут играться роботы несколько участников одновременно. Каждый у себя в брайзере запускает всех остальных?
0
kurokikaze #
Сервер у себя запускает всех. Возможно даже в «безголовом» браузере типа Rhino.
0
P_r_i_m_a_t #
Можно и без сервера — браузер справится.
0
kurokikaze #
С сервером матчи будут автоматическими. А в браузере кто то должен будет запускать.
0
P_r_i_m_a_t #
Можно и на сервере сделать — гугловский V8 можно отдельно подключать для выполнения JS.
0
P_r_i_m_a_t #
Код всех участников будет хранится на сервере (в текстовом виде). Грубо говоря много .js файлов. Для проведения соревнования я у себя в браузере все это запущу (симулятор подгружает с сервера .js файлы) и сформирую таблицу результатов. Каждый также сможет у себя запускать, чтобы проверить результаты.
+2
sse #
Писец. Не обижайтесь, но, по-моему, jscript съел ваш мозг.
Вы попробуйте подумать в направлении «проект» -> «архитектура» -> «технология», а не наоборот. А то вы проектируете от js и его особенностей, и прикручиваете все больше костылей.
0
P_r_i_m_a_t #
Тут два пути: либо суть игры будет в постоянном допиливании игроками своих роботов — тогда нужна серверная часть, которая будет постоянно обсчитывать результаты обновленных роботов, либо второй вариант, при котором каждый пишет своего робота некоторое время (неделю допустим), а потом за один раз проводится соревнование и открываются исходники всех роботов. Для второго варианта яваскрипт очень даже подходит, потому что смысла прятать код после объявления результатов уже не будет.
+1
sse #
Не, я совершенно не думал про то, чтобы спрятать код.
Просто изучая подобные «продукты»-симуляторы, можно заметить, что там есть фичи, как:
— онлайн-просмотр матча
— запись видео
— турниры (это когда гоняют роботов на сервреде до победного конца, иногда несколько часов в режиме non-stop)
— накопление статистики за всю историю существования систем и т.п.
— еще наверное, что-то, что я пока не знаю.

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

Извините, если слишком серьезно к этому отнесся :)
0
P_r_i_m_a_t #
Что мешает в онлайне просмотреть матч в браузере? Наоборот проще. Если нужно будет на сервере, что-то выполнять, как я выше писал, гугловский V8 можно подключать в C++ и выполнять любой JS код.
0
sse #
Ничего не мешает, совершенно верно. На первый взгляд. А на второй — ну выполнится скрипт, дальше что — как вы с ним взаимодействовать извне будете? Нужен API, который будет просунут внутрь v8.

Я совершенно не тверждаю, что эта задача из разряда невыполнимых — ничего не мешает ее сделать. Но также ничего не мешает нафигачить еще десяток костылей и продолжить наворачивать их только потому, что было с самого начала 100% решено писать на js.

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

Не настаиваю впрочем: ваша игра — ваши правила )
+1
P_r_i_m_a_t #
API есть: code.google.com/apis/v8/embed.html

Чем JS+V8 отличается от скажем lua или angelscript, которые для таких целей обычно используются?

У JS есть преимущество — участники смогут писать и тестировать код прямо в браузере, не устанавливая на компьютер вообще ничего. Это избавит меня от заботы о совместимости симулятора с разными системами.
0
sse #
Не сомневаюсь, что есть API; но так и так придется писать stub, который и будет через ентот embedAPI просунут внутрь v8. Никаких преимуществ js тут не дает.

Далее уже понял, ответил ниже.
0
sse #
Блин, опять же, вы бросаетесь решать задачу первым попавшимся методом. Ну упомянули вы, как будут идти матчи онлайн; ок, про первую задачу принято.

Что насчет остальных задач, которые я привел?
0
P_r_i_m_a_t #
Все остальные задачи будут решаться серверной частью, которая будет использовать V8.

Я думал про другие варианты — JS наиболее удобен при большом количестве участников.
0
sse #
А, вероятно я вас неправильно понял.
Т.е. вы предлагаете для централизованных соревнований иметь-таки сервер (ок), а для локально (ну, потестить там) грузить прямо в браузер? Тогда дважды ок :)
0
P_r_i_m_a_t #
Да. Если кратко, процесс выглядит таким образом: игрок заходит на сайт, регистрируется и у него открывается редактор с шаблоном кода и арена для тестирования своего робота — с сервером при этом общения не будет, все на локальной машине. Когда игрок своего бота дописал, нажимает кнопку Сабмит и код уходит на сервер. Там уже его серверная прога тестирует с другими ботами.
+2
romik #
А вы знаете, что некоторые предпочитают писать код в нормальных IDE ;-)
+3
ramovsky #
+за Java
+Python
0
P_r_i_m_a_t #
Python тоже как вариант, есть Embedded Python для C++, который позволит изолированно код выполнять, но опять проблема с кросс-платформенностью самого симулятора — придется под каждую систему собирать отдельно и тестировать. Неудобно.
–2
naryl #
Почему бы не запускать AT-Robots под dosbox? Откуда такая неприязнь к ассемблеру? :D
+1
Azy #
Да как раз с пайтоном и кроссплатформенностью проблем никаких.
0
naryl #
С управлением через сокеты клиент сможет любой язык использовать. Разве нет?
0
P_r_i_m_a_t #
А как потом это все запускать безопасно?
0
redchrom #
Можно на машинах участников и запускать. Если не будет устраивать скорость, то можно и утолкать в виртуалки.
0
P_r_i_m_a_t #
Это сложно, если участников будет много — всех собрать одновременно в онлайне не получится.
0
Crashus #
I'm in
0
ramovsky #
У одного фенотип был живучий. Вот бы им еще и спаривание с обменом знаний…
Записывайте и меня.
0
ndlspark #
Код можно выполнять на сервере, а участникам отправлять только текущую боевую обстановку :)
0
ndlspark #
Так можно и используемые каждым роботом ресурсы контролировать, и обеспечить поддержу сразу нескольких языков.
Плюс ещё можно отделить машину на которой будут крутиться роботы от Web сервера через который будет идти трансляция, что сделает систему независимой от внешних нагрузок.
–3
naryl #
Всё фигня. Единственная настоящая программерская игрушка — ATR А всё, что не ASM и даёт неограниченные ресурсы — не Ъ.
0
naryl #
Для справки: роботы в ATR управляются процессорами с тактовой частотой 50 Герц.
0
P_r_i_m_a_t #
Ресурсы можно ограничить временем.
+1
the_ghost #
Я за javascript — буду писать код как умею, безо всяких ООП :)
–2
man_without_face #
вы наверное из-за такого принципа, безработный…
+2
the_ghost #
Из-за такого принципа зарабатываю не написанием сложных js скриптов, а пользуюсь jQuery :)
0
nekt #
я тут прикинул… с ростом популярности jquery найти хорошего javascript программиста сильно уменьшаются…
+1
the_ghost #
С ростом популярности велосипеда вероятность найти хорошего бегуна тоже уменьшается?
Думаю, что не будь jQuery, количество хороших js-программистов вряд ли бы увеличилось :)
0
budda #
а весной Sun проводила точно такой конкурс, какой Вы предлагаете
там нужно было использовать их какую то новую яву (пардон я не программист), тогда я так из интереса зашел посмотреть
там на сайте была регистрация участников и нужно было видоизменить стандартный модуль поведения робота, что бы он эффективней перемещался, жалко письмо из рассылки уже удалил :(

поищите на их сайте, может что то осталось меньше велосипед изобретать бы пришлось…

меня просто удивило, что здесь столько it-шников и никто об этом не знает…
0
naryl #
JavaFX. Это на Sun Tech Days было.
0
nekt #
В питере на ЦЦ тоже было.
0
P_r_i_m_a_t #
Да таких соревнований сотни были, смысл изобретения велосипеда в новой игровой модели, под которую ещё ничего не написали. Иначе не интересно — любой может взять готовый эффективный код.
0
nuclear #
Записывайте меня
Будет хоть повод JS выучить :)
0
fobazzz #
Я тоже за js
Он наверно самый популярный и тогда игра будет более массовой.
0
Terror #
Интересная идея, готов поучаствовать
0
dotneter #
>Популярный кроссплатформенный язык программирования (скорее всего Javаscript);
Есть же JavaFX или Silverlight. Каждый сможет выбрать язык на свой вкус и цвет.
0
P_r_i_m_a_t #
А выполнять их вместе потом как? Задача будет достаточно простой, чтобы можно было уложиться в 50 строк кода, например. Поэтому выбор языка не будет таким уж принципиальным.
0
dotneter #
>А выполнять их вместе потом как?
Не совсем понятен вопрос, но тут есть два варианта.
1) Компилируемый язык — в общем то совсем без разницы так как на выходе получается байт код и его соответственно можно запустить где угодно.
2) Скриптовый язык — создается инстанс движка языка, через него прогоняется скрипт для получения реализации робота, приводим его к базовому роботу, чего нибудь с ним делаем где угодно.

Думаю многим написать 50 строк кода на их основном языке будет в мильон раз приятнее чем писать их на javascript.
0
P_r_i_m_a_t #
Так представляете столько придется предусмотреть языков, чтобы всем хорошо было.
0
dotneter #
Если решения принимать в виде скомпилированных модулей, то предусматривать придется только скриптовые. Думаю python'а и ruby за глаза хватит, ну а если будет много желающих чего то еще, всегда можно до прикрутить.
0
P_r_i_m_a_t #
Ещё PHP. Для каждого нужно будет интерфейсы взаимодействия описывать. Тестировать все это.
+1
nekt #
интерфейсы взаимодействия? Читаем из стандартного потока ввода, выдаем в стандартный поток вывода.
0
P_r_i_m_a_t #
Можно так, но в любом случае остается проблема безопасности выполнения кода.
+1
nekt #
выполнять с правами пользователя, что не может читать никаких папок-файлов?

–1
P_r_i_m_a_t #
Не может выполнение кода вне виртуальной машины быть безопасным. Вы бы стали на своем сервере чей-то скомпилированный c++ код выполнять? Пусть даже с урезанными правами. Хотя ему все равно нужно подгружать библиотеки всякие.
0
nekt #
ну да. естественно на виртуалке. как же иначе? И без доступа к сети.
0
P_r_i_m_a_t #
Я про application virtual machine. Чем в частности является гугловский V8.
0
nekt #
я уже понял что яваскрипт — это решенный вариант.
0
darvin #
мне на своем под openvz с hardened профилем — совсем не страшно. ну получит он рута на своей машине, что дальше-то? из openvz все, допустим, сотрет? я сотру его учетку и заблокирую по ip. все.
Самое страшное что может сделать root на openvz — разослать спам, но это решается отключением openvz-гостей от сети )
+1
Hint #
Больше года назад у меня была идея создания онлайн-игры для программистов (бои роботов).
Написал игровой сервер (свой «мир» со своими правилами, код в стиле pascal), php-обвязку (взаимодействие с игровым сервером по TCP/IP), js-скрипты (отображение боев, редактор кода). В итоге, уже вполне можно было соревноваться: писать свой код, тестировать на ботах, выставлять своих роботов на бой (немного поиграли с друзьями)… и все это в браузере. В планах было сделать систему заработка денег (турниры, дуэли), апгрейда роботов. Уже составил ТЗ на разработку флешки (чтобы бои были более красочными).
А потом как-то все заглохло (занялся другим проектом). Да и, честно говоря, опыта web-разработки тогда было маловато (тот случай, когда на код годичной давности без слез не взглянешь =)

Прочитал тему, захотелось развернуть скрипты на каком-нибудь сервере и дать ссылку (уже вполне можно было бы «поиграть»). Но потом подумал, что дополнительная нагрузкам (не говоря о возможном хабраэффекте =) моим проектам ни к чему. Дам просто ссылку на архив (в нем win32 приложение со встроенным игровым сервером, php класс для общения с этим сервером, js-скрипт для отображения боев в браузере, небольшой ридми). Возможно, кому-нибудь будет интересно. Но сразу предупреждаю, что это, можно сказать, мой первый блин =)

dump.ru/file/3719813
0
nehxby #
говонодамп.ру

При нажатии на ссылку «Скачать» открывает попап с рекламой какой-то игрули. Испугался, оглянулся на жену, первая мысль: «просекут, что по порно-сайтам хожу» :)
0
nehxby #
Сервер не запускал, но приведенное описание и примеры — достаточно интересны. В отличие от приведенного автором топика видео, игра пошаговая, направления движения/атаки — четыре.
0
Hint #
Все-таки загрузил скрипты на сервер:
robots.evermore.ru/
0
nehxby #
каптча не пускает зарегиться. прововал раз 10, не мог я 10 раз ошибиться!
0
darvin #
если будет писаться на питоне для питона, помогу чем смогу
0
MiXeR #
Супер, хочу принять участие!
0
Quadrix #
Кто из роботов выиграл??? Не могу досмотреть — глаза закрываются.
0
P_r_i_m_a_t #
Мой красный робот :)
0
Quadrix #
Мне нравится идея. Сам когда-то участвовал в студенческих олимпиадах ACM. C удовольствием бы принял участие.
0
hTLK #
С удовольствием приму участие.

P_r_i_m_a_t, если есть такая возможность, я бы порекомендовал Вам собрать список всех, кто захотел принимать участие, а когда дело дойдёт до запуска, то разослать всм приглашения через хабрапочту. Т.к. я очень хочу участие принять, но боюсь пропустить какой-то из топиков-продолжений.
0
P_r_i_m_a_t #
Я разошлю потом всем из этого топика.
+2
DnV #
Когда ждать?
Хорошо было бы выставить на обсуждения планируемые правила и логику игры.
0
P_r_i_m_a_t #
Когда обдумаю вариант реализации и логику игры — выложу следующий пост. Как скоро — не знаю.
0
MiXei4 #
Меня тоже запишите :)
0
StWoland #
Почему-то никто не предожил использовать Red5 + Flash/Flex для написания арены. А это вполне даже реально, вопрос только в хостинге)
0
vitalikk #
Подумаю над подобным, спасибо.
0
darvin #
считаю, нужно делать какой-то универсальный интерфейс, может какую-то библиотечку с биндингами, чтобы можно было писать на любом удобном языке ботов — python/java/ruby (если будет на сервере выполнятся) или еще c/cpp/c# всякие. тогда будет что-то принципиально новое и полезное, так как все текущие проекты только один язык поддерживают
0
Nerten #
Начать можно с малого.
0
darvin #
от архитектуры зависит принципиальная возможность такого, тут вообще предлагали в браузере запускать ботов на javascript. тогда о c/python и думать не получится
0
P_r_i_m_a_t #
Первый вопрос в безопасности — для выполнения чужого когда на сервере нужен sandbox из которого ни при каких условиях выбраться наружу нельзя. Я не представляю как для всех возможных языков это сделать. Даже если это возможно — это очень большая работа. Второй вопрос — зачем? Правила игры будут такими, при которых не будет необходимости писать километры кода, важнее будет логика/тактика, поэтому я не понимаю проблемы написать пусть даже 100 строк кода на яваскрипте, с которым все так или иначе сталкиваются в работе.
0
Nerten #
Хотел бы принять участие :) Опыта в подобных боях правда нет, но всегда мечтал о такой игре.
Была мысль написать робота для MUD, но до конечной реализации не дошло дело.
0
naum #
Возможно повторюсь с кем-то выше, тяжело было осилить все комментарий, когда тебя подмывает желание написать.

Что реально понравилось в вашей реализации — легковесно, без излишка.

Что предлагаю со своей стороны, вместе с посильной помощью в реализации, тестировании и участии.

— Оффлайн клиент: возможность посмотреть свой код в действии, встроенный отладчик, поддержка ~10 известных языков программирования (в формате скриптов, есть готовые удобные либы с хорошей лицензией), подсветка синтаксиса с кодефолдингом и прочие радости жизни, hot seat в том числе, возможность подгрузки готовых скриптов (как своих, так и оппонентов). Адекватный, но минималистичный GUI & etc.

— Сервер (ladder, maze generator, различные режимы игры, включая Code Limit [ограничение на размер скрипта])

Tech Preview реализуется за неделю.
–1
naum #
Как вариант, использование WSH (а тут уже и питон, перл, руби, паскаль, бейсик и прочее, прочее, прочее).
+2
darvin #
WSH — это Windows script Host? И где это потом запускать?
–1
naum #
Пока проблем не вижу. Давайте я сейчас голословить не буду, немного терпения.
+2
naryl #
Возможно проблема в том, что пока ещё не на каждом десктопе в этом мире Microsoft© Windows®
+1
darvin #
… и далеко не на каждом сервере. Когда нибудь, в далеком прекрасном будущем, эта ужасная проблема будет побеждена.
0
nekt #
… никто не будет вспоминать про какой-то там Microsoft©. Разве что понастольгировать
0
Shemet #
Интересно было бы принять участие.
0
darvin #
habrahabr.ru/blogs/sport_programming/74536/ — мой вариант правил, предлагаю обсудить
0
darvin #
вариант с поддержкой всех языков и выполнением на сервере: пошаговая битва, программы участников запускаются в виртуальных машинах (например, openvz — нетребовательно к ресурсам совершенно), принимают на вход файл (или stdin) с входящими данными, отдают «хосту» файл с выходящими коммандами роботам (или в stdout). Хост принимает комманды и раздает файлы на следующий ход. Программы-роботы участников просто наделить минимальными правами, проблем не будет. Средней паршивости сервер сотню openvz одновременно запустит раз плюнуть, особенно если дистрибутив в них порезать. Будет запускаться все, что запускается в linux
0
P_r_i_m_a_t #
У меня вариант получше — арендавать датацентр на 1000 серверов, каждому участнику выдать пароль от ssh и потом по сети все сервера опрашивать :) Зачем все эти трудности? Предполагается, что это будет такая казуальная игра, на которую каждый потратит допустим час-два своего времени.
+1
GooRoo #
+ неделю на изучение Javascript ;)
0
darvin #
кажуальная игра, для которой надо учить javascript
0
P_r_i_m_a_t #
Так или иначе будет некоторый компромисс, если вы готовы реализовать свой вариант с сервером и OpenVZ — пожалуйста. А так — весь ЯваСкрипт учить не придется, для реализации небольшого алгоритма достаточно знать основные структуры и типы данных.
0
nekt #
Запишите меня, благо js — один из основных языков, мне учить ничего не надо будет.
0
NaDiRu #
Много занимался подобными программами. Так и не понял алгоритм красных) Можно было бы действовать по-активнее.

По поводу конкурса — тут был бы хороший организатор, а желающие всегда найдутся (где ещё найти желающих, как не в NP-полных задачах). Будут идеи — будут и участники.
0
panandy #
Сначала испугался js, хотел чтобы много языков было, а потом понял — вам же не фреймворк писать на js, я думаю будет простое апи, а значит особо ничего учить не надо. Просто базу, которая не очень отличается от других популярных языков.
0
nekt #
Я чувствую после этого топика поднимется небольшая волна таких игрулек :)
0
darvin #
ага. пишу свой велосипед с интерфейсом через файлы/пайпы )
0
winger #
Поучаствовал бы. Хотя имхо java в качестве языка подошла бы лучше)
+2
mikhanoid #
Опять война и уничтожение… Блин :) Сделайте уже игру, в которой надо будет что-нибудь собирать. Например, группа роботов собирает некую фигурку из клеточных блоков. Кто быстрее соберёт, тот и победил :)
0
FTM #
Ух ты! Количество желающих участвовать довольно высоко. Давайте уже Ваше соревнование.
0
krolser #
Посмотрите на itpw.mimuw.edu.pl/
У них без разницы на чём писать, главное, чтобы программа соблюдала протокол и умела писать и читать в input и otput.
+1
Hint #
Год назад пытался сделать онлайн-игру для программистов, но опыта разработки было мало (как и свободного времени), поэтому все заглохло буквально через месяц. Но поиграть все-таки получилось.

Результат:
robots.evermore.ru/?c=help

Буфер_обмена01.jpg - image uploaded to Picamatic

всё через браузер, html + js
0
dab512 #
А почему заглохло?
Все же вроде бы работает?
0
dab512 #
присоединяюсь
0
A0n3 #
С радостью присоединюсь, есть опыт игры в Robocode и навыки js.
0
winger #
Увидел на главной пост про игру Liquid wars. Имхо, эта игра неплохо подходит — простое управление, неплохая зрелищность, простота логики

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