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

Методы, описанные в статье, не претендуют на истину в последней инстанции. Я описываю то, как это было сделано мной ТАМ, в местах отсутствия интернета и сильнейшего воздействия на психику.

Часть первая — создание формы клиента.
В VBA есть формы… с формами работать приятнее и самое главное — привычнее. Для BomberMan'а мне понадобилось 12 миниатюр и немного творческого подхода в Paint:

— пустая клетка

— бетонная стена

— целая кирпичная стена

— полуразрушенная кирпичная стена (в момент взрыва имитация исчезновения)

— бомба

— яркий огонь взрыва

— догорающий огонь после взрыва (аналогичное исчезновение)

— могилка RIP

— зеленый человечек

— красный

— синий

— желтый

Игровое поле размером 19х29, из них 9х14 бетонных стен. Принцип построения игровой формы таков: на форму необходимо добавить 8 эталонов миниатюр (Visible = false, с них мы просто будем копировать изображения) и 19х29=551 пустых ячеек Image, в них мы будем подставлять эталонные текстуры. Оставшиеся четыре изображения (разноцветные человеки) будут перемещаться над игровым полем по координатам.

Создадаем форму в VBA Экселя.



При инициализации формы необходимо расставить пустые ячейки Image1..551 и цветных человеков по своим местам. Цикл от 1 до 551, с присвоением параметров координат Left и Top. Ну и менюшку подключения набросал.



Клиент сам по себе приложение простое. Далее отслеживаем нажатия клавиш, двигаем человечка и записываем его координаты в файл. Одновременно с этим постоянно считываем и отображаем изменения на игровом поле. Это основа.

Часть вторая — взаимодействие клиента с сервером.
Я организовывал игровой процесс через текстовые файлы. Первый файл — это игровое поле 19 строк по 29 чисел в каждой. 0 — пустая клетка, 1 — затухающий огонь, 2 — яркий огонь, 3 — разрушенная стена, 4 — целая стена… и т.д Сервер работает с простой последовательностью из чисел.



Еще четыре файла отвечают за текущие координаты каждого из игроков и его свежие бомбы. Таким образом программа, выступающая в качестве сервера, считывает четыре файла с координатами, обрабатывает игровое поле для следующего момента времени и выплевывает главный файл, который в свое время считывает каждый из клиентов.

Часть третья — сервер.
Сервер штука умная. Это отдельное приложение и внутри тикает таймер, по нему подгружаются файлы с координатами каждого из игроков

Оффтопик
Да-да, с голыми координатами, без защиты от телепортации, если вы понимаете о чем я. Привет сослуживцам, не понимающим, как я убегал из заточения среди бомб… Вообще говоря, мой клиент умел и сквозь бомбы пробегать. Режим бога, так сказать. А я всегда ссылался на «баг в бета версии» :)

и генерируется поле для следующего момента времени.



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

Функция взрыва, кстати говоря, была реализована в виде рекурсии. Вся связная цепочка бомб взрывалась в один момент времени, а не по очереди. Поочередный врыв потребовал бы слишком большого FPS, что я не мог себе позволить. А так взрыв получался эффектным и затухал единовременно. На скриншоте правда видны небольшие разногласия в затухании, но это, видимо, вызвано тормозами на стороне клиента.



На Ваш суд получилось своего рода краткое теоретическое описание принципов работы сетевого Бомбермена на VBA.

P.S. Что бы не говорили, а год это очень мало… Сколько еще хотелось успеть сделать, но не хватило времени.

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


  1. AndrewNikolaevich
    06.04.2015 21:00
    +3

    Никогда бы не додумался до такого, вот что значит креатив. Автору респект.
    P.S. Креативный и толковый программист и дисплея микроволновки визуализатор музыки сделает. Успехов!


  1. igor_suhorukov
    06.04.2015 21:37
    +4

    Сколько за время службы среднестатистический солдат может написать игр на VB?)


  1. lostpassword
    06.04.2015 22:13
    +14

    Сколько еще хотелось успеть сделать, но не хватило времени.
    Военная служба по контракту — выбор настоящих мужчин программистов!


  1. EvilBeaver
    06.04.2015 22:44
    +6

    Я делал на Flash стрелялку-убивалку, где врагами были командир части и его зам. Игра пользовалась успехом даже у офицеров :)


    1. kefiijrw
      06.04.2015 22:51
      +1

      Я во время службы мечтал написать систему учета военнослужащих — график дежурств, нарядов, автоматический подсчет занятости, подготовка списка смен к заступлению на дежурстве — в общем, всё то, что приходилось мне вручную. Но представляю, какую офицерскую реакцию вызвал бы ответ «Поднимаю веб-сервер для написания админки учета» на вопрос «че делаешь?». Ведь есть же солдатик.


  1. DIMOSUS
    07.04.2015 04:18
    +9

    А мне как-то пришлось переносить сохранку игры (Elite) с компа на комп. Доступа к usb не было, сети тоже. В итоге распечатал сохранку в HEX виде на А4 и отсканил на другом компе. Потом немного кодинга и собрал отсканенный текст обратно в бинарние. Солдатская смекалка беспощадна.


  1. GeckoPelt
    07.04.2015 09:53
    +4

    Вот нападет враг, а мы против них хрясь, бомбермена на Excel!


    1. susnake
      07.04.2015 10:07

      Давно пора все войны перенести в онлайн.
      Хочет одна страна напасть на другую — хрясь, запустили сервак какой-нить CS или Battlefield и пусть воюют там. Без ущерба для людей, зданий, животных и природы.


      1. Priest
        07.04.2015 10:14

        Только представьте что там за читы будут делать…


        1. susnake
          07.04.2015 10:31

          Я эти 2-е игры привел в качестве примера, как одни из самых известных. Можно вообще создать какую-бубнить стороннюю игру. Да и к тому же есть же всякие античиты.


      1. 074909
        07.04.2015 22:58

        Так уже :)
        ru.wikipedia.org/wiki/ERepublik
        «Игра представляет собой отражение реального мира, в котором игроки (граждане) могут участвовать в политической, экономической, общественной и военной жизни государств.»
        www.erepublik.com/ru


    1. oWart Автор
      07.04.2015 10:10
      +11

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


  1. DIMOSUS
    07.04.2015 10:35
    +2

    Я еще грязный снег побелкой белил…


    1. oWart Автор
      07.04.2015 11:02
      +1

      а я здание гуталином красил…


      1. AlexBin
        07.04.2015 12:11
        +4

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


        1. GeckoPelt
          07.04.2015 14:10
          +1

          Рабочее название — «В/ч 31337»


        1. EvilBeaver
          07.04.2015 15:37
          +2

          К сожалению, полностью прочуствовать игру смогут только те, кто служил. Для остальных это будет просто нечто про тупых военных и не более.


        1. seokirill
          07.04.2015 16:04

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