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

Дарю код игры для программистов и клонирую Хабр

Спортивное программирование
Без всяких условий выкладываю исходники, но не обольщайтесь, это даже заготовкой назвать трудно. Просто проба пера многолетней давности, когда только учился писать. Качество явно не коммерческое, но дома поиграться можно. Внешне уже скомпилённое выглядит так (кликабельно):




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




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

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. Автостоп пока не предусмотрен, игра продолжается даже после того, как последний вражеский юнит уничтожен.
Теги:игры для программистовспортивное программированиепрограммированиеигры
Хабы: Спортивное программирование
Всего голосов 138: ↑132 и ↓6 +126
Просмотры10K

Похожие публикации

Embedded разработчик под stm32
от 100 000 ₽Portal EnergyСанкт-ПетербургМожно удаленно
Инженер-разработчик (С, POSIX)
от 100 000 до 250 000 ₽AurigaМожно удаленно

Лучшие публикации за сутки