Bushed Bricks: простая и увлекательная игра на JavaScript

    image

    Русский вариант названия игры, звучит как «Беспризорные блоки», что достаточно емко передает ее сюжетную линию. Негоже достойным представителям рода «четырехугольных» околачиваться где ни попадя. Основной задачей игрока будет поиск им пристанища за что и будут начисляться игровые баллы. Приютить наших «сироток» можно по бортам игрового поля, но только при условии соответствия цвета и достаточного уровня благонадежности. Далее обо всем по порядку…

    Правила и механика игры


    Игровое поле состоит из пустых ячеек (по-умолчанию, 7х7). Со старта игрок имеет набор из пяти блоков, по одному каждого доступного цвета, которые расположены в произвольном порядке. С каждым последующим шагом, прибавляется по два блока случайного окраса. По бортам игрового поля располагаются четыре разноцветные линии символизирующих «приюты», которые готовы любезно принять блок соответствующего цвета, но только при условии соблюдения некоторых условий:

    Во-первых, «приютить» можно только действительно достойных товарищей с хорошей кармой. Блоки улучшают свою карму путем слияния. Блок достигший максимального значения отмечается числом, символизирующим количество объединений. Он все так же может продолжать взаимодействовать с другими блоками своего цвета, но при этом для него открыты настежь двери приюта соответствующего цвета. Динамика роста кармы выглядит примерно так:

    image

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

    Игровые баллы и управление


    За помещение в приют блока, отвечающего всем условиям, начисляется 10 баллов за каждую единицу кармы.

    Доступны варианты управление клавишами навигационного блока ← ↑↓→ и swipe для мобильных устройств.

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

    Исходники игры доступны на GitHub. Поиграть можно там же.

    Обновления


    1. Существенно осложнен процесс использования алгоритмов вроде «стиральная машина». Сейчас перебирая хоть по-часовой, хоть против — сложно зайти сильно дальше 200-го хода. Играя «осмысленно» можно набрать намного больше баллов.

    2. Немного изменен баланс игры. Теперь блоки коричневого цвета будут появляться несколько чаще.

    3. Доработана мобильная версия. Выглядит примерно так:
    Скриншот с мобильного девайса, разрешение 720х1280

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 32

      +1
      А что было использовано при разработке?
      Какие движки, фреймворки и технологии?
      Буду очень признателен за информацию, сам хочу сделать что-нибудь подобное.
        +1
        Никаких сторонних движков и фрейморков — только хардкор… игровой механизм написан с чистого листа на JavaScript
        +9

        Поиграл немного, нашёл простую и эффективную стратегию, задолбался тыкать кнопочки, написал бота — он набрал 412830 очков за 21544 шага. Мог бы и дальше набирать, но стало лень ждать.


        стратегия

        двигать вверх, влево, вниз, вправо и так пока не надоест

          0
          согласен. то же быстро вычислил эту стратегию. автор должен был учесть опыт 2048 и сделать нерабочими самые примитивные стратегии
            0
            +1 к стратегии ))) тоже умаялся и выключил
              +1
              В ближайшем обновлении запланировано внедрение ограничения по продолжительности жизни блока — то-есть «приютить» его можно будет только в течении определенного количества игровых шагов. По истечении отведенного срока — блок будет перекрашен в коричневый цвет и станет просто помехой. На данный момент, думаю установить ограничение в 4 или 5 шагов, но нужно будет проверить опытным путем. Мне кажется, что это существенно усложнит возможность использования «простых и эффективных стратегий».
                0
                Тоже пришел к этой стратегии. Со временем кубиков становится все меньше. Похоже на стиральную машину =)
                  0
                  Вы можете попробовать «усложнить» игру с помощью доп. настроек, например такой вариант shtange.github.io/bushed-bricks/?combo=5&count=4
                    0
                    Не понял, чем это поможет. Открыл игру по вашему линку, понажимал up -> right -> down -> left (и так по кругу), набил 13 тысяч очков, визуально блоков поле больше не становится, очки набираются.

                    Сорри, пока не очень годная игра…
                  0
                  Внес правки в логику, касаемо борьбы с «простыми и эффективными стратегиями». Пробуйте «натравить» вашего бота на игру снова.
                  0
                  Помимо вот этой беспроигрышной стратегии, потенциальный баг — если есть ситуация
                  в столбце находятся синие, например, 8 и 1 (сверху вниз). больше в столбце ничего не находится (не мешает схлопнутся и достигнуть синей, нижней, стороны)
                  При нажатии вниз (что бы убрать 8+1) произойдет схлапывание, но с доски этот блок (9) не снимется, хотя будет «прилеплен» к синей, нижней стороне. Если еще раз нажать вниз — блок исчезнет, очки засчитаются.
                  Это механика специальная или все-таки недоработка?
                    0
                    Это не баг, это фича )
                    0
                    Можно сделать лимитированным количество шагов. Например в тысячу. Тогда суть будет не победить, а найти более оптимальную стратегию, чем гонять кубы по кругу.
                      +1
                      Мне кажется, что более рациональным будет внедрение ограничения по продолжительности жизни блока (подробнее в этом комментарии). Полагаю, это поможет свести на нет стратегию «гонять кубы по кругу».
                      +1
                      Большое спасибо, отличная альтернатива 2048.

                      В на последнем ходе игры обычно выплывает такой баг.

                      Дела уже плохи, но во всяком случае я ещё могу нажать вниз (или вверх) и схлопнуть 4 красных квадрата (верхний правый угол) в один квадрат. Кроме того, при этом ходе схлопнутся две пары жёлтых квадратов (верхние два ряда игрового поля). В итоге, после хода вместо 8 квадратов (4 красных и 4 жёлтых) останется 3 (1 красный и 2 жёлтых), то есть 5 полей станут пустыми. Плюс пока ещё свободно одно пустое поле (возле верхнего левого угла). Итого получается 6 свободных полей, для следующего хода программы, генерирующего два новых квадрата, вполне достаточно.

                      Но тем не менее — Game Over. По всей видимости, у Вас сначала производится проверка на наличие свободного места для добавления двух новых квадратов, а уж потом просчитываются изменения после хода игрока. Возможно, стоит переставить местами эти действия.
                        +1
                        Вы правы, во время тестирования не обратил внимание на этот нюанс.Обязательно исправлю. Спасибо за подсказку
                        +1
                        Не хватает только красивой анимации CSS3 или canvas вместо табличной верстки)
                        Отличная реализация
                          0
                          Это да, не мешало бы привнести больше «лоска». Проект разрабатывался мной в одиночку в свободное время, которого и так не очень много — на некоторые вещи, просто не хватает «рук». Я в большей степени усилия концентрировал на игровом движке. Постараюсь в обозримом будущем найти время для наведения красоты.
                          0
                          Не нашёл никакого челленджа, серьёзный препятствий, да и фейл-стейта тоже. Тупо ходил по кругу (вверх-вправо-вниз-влево), в итоге чего квадраты сами в себя складываются и сбрасывались в аут, коричневые же стремятся к одной ячейке. Вобщем, по механике игра даже не теребит мозг на тему подумать над тактикой, надо разбавлять механиками или менять основную на присутствие тактического челленджа.
                            0

                            Отличная механика. Нормально играть пока не могу так как в хроме на Android телефоне игровое поле никак не помещается в экран, но клетки успешно двигаются.
                            Не думали о мобильной версии?

                              0
                              Для мобильных устройств, разрешение экрана которых по ширине менее 600 пикселей — принудительно устанавливается размер игрового поля 6*6. Похоже, этого не достаточно…
                              Попробуйте сыграть с такими доп. настройками: https://shtange.github.io/bushed-bricks/?size=5&combo=2&count=1 (размер игрового поля 5*5).
                              Есть задумки насчет нативного приложения под андроид, но опять же все упирается в свободное время…
                                0
                                Прошу прощения, забыл ссылку «оживить», а отредактировать уже не могу. Поэтому продублирую, чтобы с телефона удобно было перейти shtange.github.io/bushed-bricks/?size=5&combo=2&count=1
                                  +1
                                  Доработана мобильная версия. Теперь игровое поле должно помещаться на экране.
                                  Скриншот с мобильного девайса

                                  0
                                  Забавно, что бесконечно нажимая (вниз влево вверх вправо), проиграть не получается. Небольшой скрипт на js прошелся 500 000 раз и не проиграл.
                                    +1
                                    Можно даже специально допустить практически безнадёжную позицию, заполнить всё поле, оставив только 3-4 пустых места. Затем, начать нажимать на ← ↑→↓ по кругу и количество заполненных квадратов начинает быстро уменьшаться.

                                    Но лично мне игра понравилась. Думаю, автор найдёт как усложнить процесс.
                                      0
                                      бесконечно нажимая (вниз влево вверх вправо), проиграть не получается

                                      Теперь получится, подробнее в обновлениях к статье
                                        +1
                                        Но этот приём пока остаётся в виде хака. Когда свободных полей становится угрожающе мало, ← ↑→↓ несколько раз позволяет разгрузить позицию. Всё время нажимать по кругу не получится, но периодическое применение карусели позволяет без особых усилий играть до бесконечности.
                                          +1
                                          Борьба с применением более сложных стратегий, чем «стиральная машина» — будет вестись, но несколько позже. На данный момент в высшем приоритете поиск решений для усложнения игрового процесса. Буду пробовать сделать его более увлекательным.
                                          Спасибо Вам за интерес к проекту, конструктивную критику и дельные комментарии!
                                      +1

                                      У мене на телефоне когда свайпишь вниз, то обновляет страницу.


                                      Почему бы не свайпить не все ячейки, а только один ряд или столбик?

                                        0
                                        Игру можно легко отремонтировать усложнить, если поменять цель на:
                                        "удержать/накопить на игровом поле как можно большую сумму оцифрованных фишек".
                                        Это сразу же пристрелит все регулярные алгоритмы а-ля «стиральная машина»
                                          +1
                                          Что ещё не хватает в игре — отсутствует конкретная конечная цель. В 2048 нужно было набрать заветную степень двойки.

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

                                          В тетрисе, к примеру, тоже отсутствует конечная цель (игрок просто играет, пока не проиграет), но там другая фишка — постепенное, заметное и понятное усложнение игры (прежде всего увеличение скорости падения тетрамино + программа подленько подкидывает неудобные фигурки), игра превращается просто в затягивающий процессс элементами транса. Но в Bushed Bricks аналогичного эффекта не ощущается.
                                            +1
                                            Да, вы правы — игровой процесс несколько скучноват… не в последнюю очередь потому, что у игрока нет осязаемой цели. Я работаю над возможными вариациями «усложнения» игры.

                                          Only users with full accounts can post comments. Log in, please.