
Жанр этот, игры для программистов, из-за довольно высокого порога вхождения никогда не был популярен. А жаль. Потому что, как учил дядько Суворов, тяжело в учении — легко в бою. Я не милитарист и не оракул, но здравый смысл подсказывает, что довольно скоро некоторым из нас придётся писать ПО для «гаджетов» типа этого (кликабельно):

Пока на одну такую тачанку приходится один оператор, но массовое производство снизит себестоимость, и каждый рядовой почувствует себя полководцем, управляя отрядами дронов. Однако за всеми не уследишь, многое придётся отдать автоматике. И автономностью дрона как боевой единицы дело не ограничится. Один в поле не воин. Программисты распределённых систем будут нарасхват.
DroneSoft.com — это то место, где хотелось бы наготовить впрок некоторое их количество. Как говорится, «si vis pacem, para bellum», что означает «хочешь мира — купи парабеллум» :) При этом всё-таки хотелось бы сочетать полезное с приятным. Типа так — можно будет с чистой совестью сказать «я не играю, мам, я учусь Родину защищать». И дальше сидеть полночи за компом, плодя ботов-фермеров для Warcraft или EVE, чтобы заработать сто-пицот баксов на карманные расходы бедному студенту :)
UPD: временно некликабельны большие скриншоты по этой ссылке (хабраэффект), но доступны превьюшки побольше, чем здесь)

Вернёмся к нашим баранам, то бишь дронам. Вот краткий репортаж о локальном конфликте (всего лишь 1000 на 1000 — разве это много?) дронов Берсерк и Комрад. Все параметры идентичны, за исключением пяти строк кода в прошивке. Берсерк действует как и положено этому персонажу — увидел врага, несётся на встречу. Врагов не видно — бредёт куда глаза глядят. А Комрад, если не видит неприятеля, идёт к сослуживцу, тем и отличается.
Результат — 499 Комрадов выжило после схватки. Казалось бы, соотношение 1 к 2, но боевая арифметика не так проста, это не значит, что 500 Комрадов завалят 1000 Берсерков. Вообще, многое удивляло. Например то, как Комрады образуют полумесяц, который коллапсирует в рой, как рой выбрасывает протуберанцы, вытягивается эллипсом и снова собирается в шар на новом месте. Я это не программировал, оно само так. Сразу вспомнился «Рой» Майкла Крайтона, недавно тут его тоже поминали.
Кстати, наблюдать это действо «вживую», да на большом экране, весьма психоделично и медитативно. Человек может бесконечно долго смотреть на три вещи: на горящее пламя, на текущую воду, и на работающего другого человека. А война — тоже работа, хоть и одна из самых грязных. Лишний повод её автоматизировать.
Добавлю ещё словечно насчёт графики, почему она так примитивна, и почему хотелось бы её такой оставить. Вдохновляли меня экраны радаров авиадиспетчеров (кликабельно):

Полагаю, что операторы дронов в ближайшем будущем будут видеть на своих мониторах в основном не видео прямого эфира из гущи событий, а всё ту же радарную геометрию. Есть ещё такое слово — «визуализация». Думаю, не обязательно делать игру (именно для программистов) похожей на саму реальность. Надо лишь показать то, что скрывается под ней — скрытые закономерности, уже канувшие в тёмное прошлое причины и потенциальные возможности пока не реализованного будущего, зоны вероятностей и пути альтернатив. Сие куда полезнее миллионов полигональных плоскостей и прочих шейдеров. Но если очень хочется, можно на фоне спутниковых карт рисовать. Что может быть реалистичнее?
А, да, чуть не забыл! Собственно, вот он, подарочек, с инструкцией, без которой ничего не заработает:

G1.zip (80 Кб)
Инструкция по эксплуатации
Запускаем G1.exe, окно сразу разворачивается на весь экран. File → New. В появившемся диалоговом окошке вводим ширину и высоту игрового поля, в пикселах (лучше выбрать значения чуть меньше разрешения вашего монитора, если не хотите скроллировать, просто вычитайте размер меню, тулбара и рамки окна). ОК. Создан новый документ (каждая игра — отдельный документ). Окно документа можно развернуть.
С окном документа появилось и два дополнительных окошка — Индикатор и Камера. Индикатор будет показывать слева и справа количество юнитов противоборствующих кланов, а посередине — преимущество одного из кланов, количество юнитов побеждающих минус количество юнитов проигрывающих на данный момент. Камера показывает один из участков игрового поля в увеличенном масштабе. Область видимости перемещается левым кликом в то место игрового поля, где хотите видеть подробности. Окно камеры можно увеличивать, область видимости будет увеличена соответствующим образом.
Game → Unit Random Generator... — вызываем диалог создания юнитов. Выбираем количество юнитов, которое будет сгенерировано (не обязательно генерить всех за один за раз, но обычно я не парюсь, и делаю именно так). Выбираем клан, за который они будут воевать. Тело — тут пока нет выбора, у всех одинаково стандартное. Инсталлируем софт, прошивку. Тут выбор тоже не богат — или Берсерк, или Комрад.
Для облегчения выбора области, на которой будут сгенерированы юниты, есть две кнопки — Левая половина и Правая половина. Не забываем их кликать, а то при генерации юнитов вперемежку бои далеко не так зрелищны, а отмены генерации пока нет.
Game → Play. И понеслась. В процессе не забываем поглядывать на Индикатор (кто кого с каким преимуществом побеждает) и не забываем перемещать Камеру (само окно желательно туда, откуда юниты уже убежали, а область видимости — на линию фронта).
Есть опция, которую можно переключать не останавливая игру — View &rarr Toggle Show Courses. Если отключить эту опцию, то юниты буду изображаться не кружками, а точками-пикселами, и не будут видны крестик, указывающий текущее направление юнита, и линия-курс к этому крестику.
Последняя команда — Game → Stop. Автостоп пока не предусмотрен, игра продолжается даже после того, как последний вражеский юнит уничтожен.

