В это утро я волновался. Волновался о том, что все пойдет не совсем так, как это было у меня на локали. Это третья наша игра помимо тетриса и змейки, но она имеет одно кардинальное отличие — весь баттл происходит на одном поле. И так как теперь все игроки пользуются одной доской то возможны проблемы многопоточного доступа к ней. На локали все работало, но это не значит, что оно так же будет работать у ребят. Вот и волновался. Шел в офис Yukon как на экзамен 🙂
И конечно же, по закону подлости после того, как все участники зарегались — игра стала. Спасибо Леониду за то что был рядом и подсказывал советы, как можно было бы выкрутиться. Откатились до прошлого стабильного релиза и запустились! Хух… Я тем временем стал ловить неуловимые NPE. Решилось все достаточно просто, но не сразу. Так что и у меня случился codenjoy — только изнутри бомбермена.
Перерыв на обед. Пиццерия. Разговоры про выбор карьеры и будущее айти… И обратно в офис.
На этот раз запустили последнюю (исправленную) версию игры, так что ребятам пришлось подстраивать свои алгоритмы. Моя отмазка была «заказчик вдруг поменял требования» — сильно не били, и ладно.
Вот, кстати, видео второй половины игры… На нем можно отследить нескольких харизматичных бомберменов — у каждого свой стиль разрушений.
Вовсе не удивительно, почему ребята окружили Леонида и что-то долго его расспрашивали про стратегию…
А вот и пару фоточек. Жаль, что не много…
День проведения воскресенье это супер! Понравилась игра, азарт, тренинг после тетрис-тренинга уже был с другими ощущениями — знал с чего лучше начинать, а конечно детали отличались, так как игра, алгоритм другой. Понравилось быть вместе с другими участниками тренинга в одной комнате. Шум вначале мешал, а потом не замечался, а потом кажется даже помогал. Зато было реальное ощущение командной игры 🙂 Понравилось как Сашка помогал всем. Круто что все играли со всеми на одноме поле, это здорово заряжает Бомбермен рулит. Мне показалось что для старта он даже легче чем тетрис (может потому что в тетрисе геометрия как-то посложнее… фигурки крутятся итд) Очень круто что Саша спросил фидбек посередине тренинга — когда ощущения очень свежи |
Отличная игра, для меня, как новичка в программировании, это очень интересно! Продолжайте в том же духе! |
Формат взагалі классний, на тренінгах дізнаєшся шось нове і зразу чешутсья руки попробувати, тобто від теорії до практики. Тут навпаки — всі зразу берутсья кодити і вже з цього далі розвиваються бурні дискусії та ідеї. Добре коли для цього є багато часу, шоб і попробувати різні підходи і поспілкуватись з учасниками, чудовий спосіб весело і корисно провести день. На реальних проектах ми частіше всього маєм справу з більш високорівневим програмуванням і алгоритми залишаютсья для реалізації окремих методів, цей тренінг як раз те що треба щоб набити руку на подібних задачах і чуть змістити фокус. Бомбермен після тетрісу сподобався більше, другий раз вже знаєш шо до чого, лише вникнути в правила нової гри і уігааа! На одному полі цікавіше, більше азарту. Як показали алгоритми деяких учасників стратегія може бути дуже різна, є простір для фантазії)) |
Кстати, когда официальная часть окончилась, некоторые ребята остались еще немного поиграть! И это в Воскресенье! Вот пример тру айтишников!
Мне было очень любопытно провести баттл лучших алгоритмов участников на отдельном поле в ускоренном режиме. Итак, алгоритм Леонида (leokom) и мой (apofig). Fight!
Создал удобную мне модель матрицы игры, с методами для анализа того что находится слева-справа-сверху-снизу, чтобы не заморачиваться на строки/колонки/символы
Так как очки начислялись по максимуму за взрыв соперника (1000), то решил сфокусироваться на поиске ближайшего соперника и беге за ним:
«Ближайший» определялся геометрически — как минимальная длина гипотенузы прямоугольного треугольника, две вершины которого составлены из координат текущих позиций моей и соперника.
В процессе бега за соперником, вполне могла возникнуть ситуация когда ближайшим становится другой из них — и тогда переключаюсь на него
Бег: если по горизонтали от соперника дальше чем по вертикали — стараюсь бежать по горизонтали если это возможно (ну и наоборот).
Улучшение которое сделал ближе к концу: Если в какой-то момент времени есть 2 одинаково хороших варианта хода — делать тот, откуда есть больше свободных выходов.
Если в процессе бега рядом стенка которую можно взорвать — ставлю бомбу, и бегу дальше
Если соперник уже недалеко от меня, ставлю бомбу (критерии этого «недалеко» экспериментальным путём менялись во время игры)
На митчоперов вообще не обращал внимания никак (не убегал, не взрывал их)
Бомбермен apofig работал по достаточно простому принципу. Его главная задача — разрушать коробки. Он наблюдает за бомбами и не отправляется на те участки, где будет ударная волна. Он наблюдает за митчоперами и не ходит туда, где они могут появиться, вместо этого он от испуга ставит бомбу в том же месте и убегает. Он не наблюдает за другими бомберменами, просто они воспринимаются как препятствие на пути. Apofig ищет выход из сложившейся ситуации — не всегда оптимально, часто замуровывает себя бомбами в тупике. Гуляя по карте он ставит бомбу напротив коробки, если видит ее. Гуляет по карте он рэндомным образом, но все же пытается дойти по прямой линии до следующего тупика перед тем, как поменяет направление движения. Так же 1 к 5 что он передумает на распутье. На этом все.
1 thought on “Отчет о Bomberman Codenjoy #1 2013-04-21”