Пользователь
587,9
рейтинг
11 марта 2014 в 04:14

Разработка → 2048

19-летний итальянский разработчик Габриэле Чирулли (Gabriele Cirulli) создал чрезвычайно захватывающую игру 2048, скрестив тетрис и «пятнашки».



На каждом раунде в игре появляется две плитки с цифрой «2». Нажимая стрелки, нужно сбросить их в сторону, при этом плитки одного «номинала» складываются. Выигрыш засчитывается при достижении результата 2048.

За удачное сложение начисляются очки, в соответствии с номиналом плитки. Несмотря на кажущуюся простоту, выиграть в 2048 очень непросто. Автор говорит, что у него самого наилучший результат — около 6000, несмотря на то, что он сам играет уже целый день без перерыва. Впрочем, нескольким всё-таки удалось выиграть.



Код программы открыт. Кстати, есть похожие игры Threes и 1024! для iOS.
Анатолий Ализар @alizar
карма
739,5
рейтинг 587,9
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +72
    И почему мне кажется, что какая-то часть дня будет абсолютно потерянной для человечества? Презанятнейшая штука, скажу я вам.
    • +10
      Вот так вот взять и выкрасть начало рабочего дня надо уметь. :)
    • +17
      Предлагаю перепоручить скрипту это дело, а то я тоже уйму времени потерял.
      Просто вставьте в консоль

      var manager = new GameManager(4, KeyboardInputManager, HTMLActuator);
      function move(){ var d = 0; return function(){ manager.move(d); d++; if (d === 4){d=0} } };
      setInterval(move(), 500);
      

      • +4
        Настоящий гик не играет, а выигрывает.
      • +1
        Дальше 256 ни разу не было у меня этим скриптом.
        • +1
          Подобрал более оптимальный алгоритм — этот у меня до 512 добирает.
          Можно более умное что-нибудь сделать. В переменной manager.grid.cells находится текущее состояние поля со значениями ячеек — но что-то лень.

          Там изменился маленько код для инициации поля (добавилась функция для вывода самых высоких оценок)
          var manager = new GameManager(4, KeyboardInputManager, HTMLActuator, LocalScoreManager);
          function move(){ var i = 0; return function(){ var d = [ 1, 0, 3, 0 ]; manager.move( d[i] ); i++; if (i===4){i=0} } };
          setInterval(move(), 500);
          
          • 0
            Я с вашим «читом» набрал 1024 + рядом был 512 почти превратившийся в 1024 :D
          • 0
            Зависает когда все клетки первых двух строк заполенны разными числами :)
            • 0
              Это уже баг игры, вы сами попробуйте играть используя только 3 кнопки управления. Кстати, это хорошая тактика. Вчера так смог победить :)
              • 0
                не игры, а скрипта. именно из-за 3 кнопок.
                • 0
                  Нет нет, баг игры. Потому что я уже не раз играя только с 3 кнопками сталкивался с этим багом. Без этого скрипта
                  • 0
                    А в чем же этот баг игры состоит? С багом скрипта мне очевидно, но вот как он, по-вашему, проявляется в игре? Я что-то недопонял? (Оригинально имел ввиду зацикливание скрипта више)
                  • 0
                    Игра предусматривает использование 4-х кнопок. То есть это не баг, а необходимость нажать 4-ую кнопу. Не раз из-за этого проигрывал.
  • +9
    Да вы негодяй! Как такое можно было выкладывать в понедельникпервый рабочий день? Как теперь работать? :(
    Задумка отличная, и очень затягивает!
  • 0
    Тут есть хорошие математики, которые рассчитают, как игру можно завершить, ну или докажут невозможность?
    • +7
      Загонять все в один угол, чтобы там была самая большая цифра, так как появляются всегда самые маленькие и по мере увеличения чтобы они были ближе к этому углу.
      Грубо говоря если выбрать правый верхний угол то нажимать в основном вправо и вверх.
      • 0
        угу, причем если просто тупо чередовать вверх и вправо — неплохо получается. Иногда нужно сделать влево, потом опять вправо, и дальше тупо вверх-вправо.

        На эту основу можно добавлять целевые функции, типа не просто чередовать, а исходя из конфигурации, но что бы получалось, что в самом верхнем угулу всегда самое большое, и вниз и влево — всегда уменьшаются.
        • 0
          Работает до 256, дальше думать надо, но все равно бОльшее число нельзя вытаскивать из угла.
          • 0
            за какое-то количество убитого времени улучшил стратегию. Хотя, её уже описать сложнее, попробую рассказать идею. Возьмем за начало отсчета левый нижний угол, строки и столбцы пронумеруем. 1-4 Собирать максимальное значение в клеточке будет стараться на 2-3 строке, первого столбца. Движение «вправо» не используется вообще.

            Первый столбец — результирующий
            Второй столбец — «рабочая область»
            Третий и четвертые — «зона вброса»

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

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

            С другой стороны, решение задачи ханойский башен работает для любых n.

    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Я когда в первый раз играл и еще не до конца понял логику перемещения блоков, дошел до 512.
        В последующие несколько подходов, когда разобрался, как оно работает, и тщательнее продумывал ходы, дальше 256 не уходил.
        Видимо, нужно прокачивать стратегические навыки ;-)
      • НЛО прилетело и опубликовало эту надпись здесь
  • +9
    аддиктивную -> захватывающую
    • НЛО прилетело и опубликовало эту надпись здесь
    • +5
      Это каламбур, намёк на слово «аддитивный».
  • +3
    Одно понять не могу: при чем здесь тетрис?
    • +3
      Да, игра ближе к Triple Town, чем к тетрису.
  • +1
    Эх, стрелки… Вот так всегда, зайдешь с планшета и нужно стрелки нажимать
    • 0
      А вы попробуйте жестами в стороны по доске поводить, на iOS работает.
  • –5
    Поставил «1024!» на iOS, не впечатлило, если честно
  • +5
    Кхм. Тогда, пользуясь случаем, представляю вам свою игру — Hex LED. Смысл тот же, но всё происходит на шестиугольном поле. Игра уже неделю в Google Play, и эту же неделю ждёт рассмотрения в App Store.
    play.google.com/store/apps/details?id=com.spiralcodestudio.hexled



    За счёт такого поля игра становится более вариативной и появляются даже различные тактики. Сначала я в ней набирал до 10000 очков, и думал, что до 20000 невозможно дойти, но недавно набрал более 40000, что меня крайне удивило. Максимальное число 4096 и присутствуют три набора фишек. Сделал платной без рекламы и внутриигровых покупок так как это дело мне порядком надоело.

    Прототип был сделан за 4 часа для конкурса, финальная версия была сделана за неделю. Сделано на Corona SDK.

    Буду признателен если поиграете и оставите отзыв!
    • +2
      Можно было бы хоть lite-версию выделить, за 15 минут не разберёшься, стоит ли внимания игра.
      • +3
        Хм. Сейчас сделаю.
      • +2
        Выкладываю APK Lite версии:
        spiralcodestudio.com/tmp/Hex%20LED%20Lite.apk

        Короткая ссылка: goo.gl/eYi9Ll
        • +2
          Ух. Меня затянула ваша лайт-версия. Люблю игры, написанные с душой. Эта как раз из таких. Сам сейчас пишу свою первую игру под Android (пятнашки :)) и ваша игра, скажу я, круче некуда) Хороших продаж) Была бы у меня карточка — купил бы без промедления. А так — играю в лайт.
          ЗЫ: на ходу, правда, играть немного неудобно одной рукой — иногда перекидывает не в ту сторону
          • +2
            Спасибо за лестный отзыв! Игру правда делал с душой.
            Моя другая игра — Laser Puzzle, сейчас платная в App Store и бесплатная с видео рекламой в Google Play. Изначально она была платной и там, и там, и всё было неплохо, только на Android мало продаж. Решил сделать бесплатной с рекламой и тут посыпались гневные отзывы… терпеть этого не могу. Люди жалуются, что в бесплатной игре реклама… А обратно платной уже не сделать, Google запрещает.

            А хотите, я вам сделаю полную версию с рекламой? Только на рекламу нажимайте пожалуйста, от неё неплохо идут деньги.
            • +2
              А хочу) а то как-то напрягает, когда стоят 3 фишки по 512 в ряд и ничего с ними сделать нельзя)
              • +2
                Вот, пожалуйста. Полностью функциональная версия с рекламой.
                spiralcodestudio.com/tmp/Hex%20LED.apk

                Короткая goo.gl/t2Sii1
                • +1
                  Спасибо большое (самизнаете что уже когда-то плюсовал, так что обойдусь словами.
                  А вообще это довольно рискованно — выкладывать ссылку на всеобщий доступ. Кто-то менее сознательный возьмёт, вырежет рекламу лаки патчером и выложит на тот же 4pda)
                  • +1
                    Ну это не менее рискованно чем выкладывать в google play. От пиратства включать параноика бесполезно. В платной версии присутсвует защита, а ломать уже бесплатную версию малоизвестного разработчика занятие сомнительное.
                    Кстати только что версия для iOS перешла в статус In Review! Ура!
    • +8
      Буду признателен если поиграете и оставите отзыв!
      Какой-то не совсем уместный призыв, учитывая тот факт, что она платная.
    • 0
      А игра тем временем вышла на iOS itunes.apple.com/app/id830218249
  • –6
    Выкладываем свои рекорды.
    Мой рекорд на данный момент
    • 0
      6272
      • +1
        7028 с первой попытки.
        • 0
          11888 (почти дошёл до 2048)
  • +23
    Я старался держать одну линию статичной, и делал ходы только так что бы линия могла накапливать большие стеки по нарастающей. И получилась довольно малозатратная по ходам победа :)
    • +3
      Я бы хотел сказать, что мне сразу стало неитересно, но это было бы ложью.
    • 0
      Пожалуй, наиболее разумная стратегия. Единственное её слабое место — в моментах, когда в той линии, в которой копится результат — пусть это будет верхняя горизонтальная линия — оказывается пустое место, а сдвиги вверх и влево более недоступны.
      В таком случае целесообразно выполнить пару сдвигов вниз и вверх. Если повезёт — новые элементы появятся именно в пустующем столбике. Если нет — то может потребоваться некоторое усилие для восстановки порядка следования элементов в верхней линии. Но это лучше, чем делать сдвиг вправо, ибо если новый элемент окажется в верхнем левом углу, то на этом игру можно заканчивать.
    • +3
      Весь день коту под хвост…
      image
      • +1
        Но рекорд то побили, так что, день прошел не зря)
        • 0
          А у нас тут рекордами меряются? Тогда вот:
          • 0
            Ну что же,
            image
            Примерно понятно, как ловить максимум — нужно в нижнем ряду собрать две 1024-ки по углам.
            • +2
              Пожалуй, хватит…
              image
              • +1
                Надо отписаться в трекере от этого поста, каждый раз захожу и снова запускаю!
              • 0
                И антирекорд (до и после финальной цепочки ходов):
                image
                Хотя, в позиции, приведённой ниже, должно было бы получиться ещё очков на 50-60 меньше — совершенно непонятно, за счёт чего. Может быть, там выпадало настолько больше «четвёрок»?
        • +3
          Не хочу показаться завистником, но тут сложнее пройти в меньшее количество ходов(с меньшим количеством очков), чем наоборот :)
          • 0
            Это да! Но и игру слишком долго тоже не затянешь, тк повышается вероятность геймовера.
        • 0
          deleted
    • 0
      Использовал аналогичную стратегию. 20888 очков
    • 0
      Я сделал это :) Стратегия — по возможности не трогал нижнюю линию, накапливал отсортированную последовательность — 128, 256, 512, 1024. Ну а затем собрать еще 128 и склеить все вместе
      image
    • 0
      Аналогично
      720x1280 px
  • +1
    Какой однако молодой и талантливый разработчик, судя по профилям.
  • +14
    Ненавижу тебя, alizar! Верни мне утро!
    • +9
      Я меняю свое мнение, наконец-то сложив этот пазл с результатом 21284.
      Ненавижу тебя, alizar! Верни рабочий день!
      • +3
        Именно поэтому я читаю хабр только по вечерам
        • 0
          Убитые вечера тоже считаются :) 2 вечера потратил на это
  • +1
    Кстати, по механике игры неплохо было бы, если и три одинаковых номинала складывались, давая бонусы.
    • 0
      Результат не будет степень двойки и в механику, как раз-таки не вписывается.
      • 0
        Почему же 2^3 = 8. Складывались, в смысле фишки складывались, а не операция сложения)
    • 0
      Логичным обобщением для данной задачи будет использование не только бинарной, но и произвольной системы счисления. В частности, троичной :)
  • +1
    Огромное спасибо, еще один уничтоженный день моей жизни
  • +1
    Стратегия максимального числа в углу действительно работает =)
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Более того: эта игра — клон saming.fr/p/2048/, который заимствовал идею у 1024, который копипастил уже у Threes — финалиста в Excellence in Design на IGF 2014.
  • НЛО прилетело и опубликовало эту надпись здесь
  • –9
    АААААААААААААААААА!!! вот это вещь! Больше 256 пока не набрал :-)
  • –5
    Обычный клон троек. В чем прикол?
  • +9
    А теперь можно просто сидеть и наблюдать за магией 2048-AI
    • +1
      Бот собрал ячейки 1024, 512, 256, и геймовернулся на попытке объединить две 128. Всё тлен.

      Завербую его себе на скринсейвер…
      • +3
        А у меня этот гадёныш всё собрал с первой попытки!
      • +1
        А бота за день, видать, перепаяли — стал жрать в полтора раза больше ресурсов, зато за 3 запуска — 3 чистых победы.
  • +6
    Блин, хочу такую на android. Интересно, что быстрее будет: подождать или написать самому…
    • +2
      Я тоже вот думаю, сесть написать, что ли… ) Пока играю в версию от Lerg
      • +2
        Астрологи объявили неделю клонов «2048».
        Количество клонов «2048» увеличилось вдвое. ;)
        • 0
          Кстати, даже под WP, где по традиции считается, что «игр нет», написали уже четыре клона.
          Причём судя по тайлу одного из них, автор явно присутствует на хабре. Пользуясь случаем, передаю привет ;)
    • +2
      Она, кстати, прямо в браузере нормально работает, вместо стрелок свайп по области с числами.
      • 0
        К сожалению, не все так гладко

        • 0
          У вас, вероятно, не очень свежий андроид (это вообще андроид?). Я запускал на 4.4, там в стандартном браузере движок от хромиума 30, в более ранних версиях версия webkit примерно соответствует chromium 12. Можно попробовать поставить Chrome/Chrome Beta.
          • 0
            Galaxy S4, прошивка стоковая последняя (4.4), браузер стандартный. В хроме не пробовал.
    • 0
      В маркете уже появилось куча игр 2048. Но неясно, которая из них самая-самая.
      • 0
        Видимо официальное приложение — это. Но оно у меня, как и браузер (дельфин), последние 2 дня не отображает цифры. Пустые клетки и всё.
        • 0
          Нашел последний рабочий коммит 92399414eb8fa4907621a9de530169063fdfc619, следующий 74494bb5f512265f913272e7b0748bf1958c1cbf с комментарием «modify the game to allow using transforms» ломает игру на моем смартфоне. Откатился у себя назад, поигрываю по дороге на работу.
  • 0
    I scored 20344 points at 2048
  • 0
    После того, как мне приснилось, что я двигаю ящики с зерном по расчерченному полю, а при соприкосновении они «схлопываются», поняла, что нужно как можно скорее покончить с этой игрой.

    Стратегия «Держать большие числа примерно в одном месте» очень помогла, но под конец удержать её было уже сложно, вот такая анархия получилась:
  • +1
    Гм, а можно и так.
  • +1
    • +1
      Спасибо, хотя бы так прошел…
  • 0
    Написал консольную версию на питоне. Пока что код выглядит ужасно и почти не закомментирован, ибо писалось всё сегодня ночью.

    bitbucket.org/dsupiev/cli-2048

    Тестил под виндой и под маком, вроде норм. Если будут проблемы с клавишами под никсами — добавьте в словарь ARROWS какие хотите кнопки.

    Если кому интересно, могу статейку накатать.
  • +1
    Если вдруг кому-то нечем занять выходные, в новой версии можно продолжать игру после получения 2048:

    image
    • +1
      Это нечестно с их стороны! 37560. Уже хватало материала, чтобы собрать 4096, но увы…
      • 0
        Два дня играю
        image
        image

        И все таки прошел =) Затягивающая штука!
        Использовал стратегию трех кнопок. Выстраивал змейкой последовательность.
        • 0
          У меня 4096 тоже получилось, но счет меньше — 50224. На то, чтобы ловить 8192, очень жалко времени :(
  • +1
    Ещё клон. Но вместо степеней двойки там числа Фибоначчи.
    themoreyouknow.github.io/fib/
    Игра нетривиальная, но чтобы добраться до действительно интересного уровня нужно больше часа. На поле 3*4 или 3*3 она была бы лучше.
    • +1
      За что!? ))
      Скрытый текст
      • 0
        Если нажимать вверх и влево по очереди (а когда движение заканчивается — один раз вправо, и снова вверх-влево), то за пять минут можно дойти почти до тысячи.

        Скрытый текст
        image
      • +2
        Это ужас…
        image
  • +2
    phoenix.dj/65536
    Русская локализация будет к вечеру, если не забуду.
    Удачного понедельника ;)
    • 0
      Штатный бот почему-то фейлится на сборе 32768 (уже не один раз проверил). Кто-нибудь может понять, почему? Подозреваю, что там что-то не так с приоритетами ходов…
      habrastorage.org/files/01e/047/39d/01e04739d0134778a51bd046b18a8c19.png
    • 0
      Напрягает шрифт для цифр, хотелось бы полный клон с той же анимацией сдвига и шрифтом иначе крайне трудно отделаться от ощущения плохой подделки. К тому же лицензия позволяет, насколько я понимаю.
      • 0
        Я при адаптации в свой движок вырезал некоторые моменты, чтоб не мешались при проверке, а потом забыл их вернуть… Виноват, исправлюсь. Только либо завтра, либо вечером — сегодня занят, справляю апгрейд до версии 2.0 :)
        • 0
          Да вы не торопитесь, исправляйте потихоньку, главное-то чтобы пилилось в удовольствие :)
    • 0
      Извиняюсь за занудство, но если у вас будет время, то сделайте что-нибудь с плавающим кернингом в цифрах при сдвиге.
    • 0
      Сделайте возможность продолжить игру в удобное время)
      • 0
        Да, в таких масштабах надо подумать над сохранениями :)
  • 0
    Интересно, а есть ли клон с троичной системой счисления, где 3 квадратика схлопывались бы в 9 и т.д.? И назывался бы он 19683 (3^9 = 19683).
    • 0
      Через некоторое время вирус «2048» мутирует, и среди прочего мы увидим и «19683» ;)
      • +1
        Заказ принял :)
        • 0
          Оповестите тогда, когда закончите. Сам хотел сделать, да времени мало для этого :(
          • 0
            Я вот думаю, какой размер поля делать. Если собирать в ряд 3 ячейки, то 4х4 явно мало. Выбираю между 6х6 и 9х9
            • 0
              С точки зрения троичной системы счисления — лучше 9*9, и уж точно не 4*4, т.к. это будет идеологически неправильно. А само 19683 потом можно и изменить, в зависимости от того, насколько будет легко или сложно, т.е. взять 3^8 или 3^10 или другую степень.
            • 0
              Кстати о размерах полей и принятых заказах! Пожелание: несколько уровней сложности в том же 2048 не помешал бы. Easy выше выкладывали 8х8. Что-то подобное можно и для остальных вариаций
  • +1
    Коллекция клонов:
    Усложнение
    Мультиплеер
    4096
    8192
    65536
    9007199254740992
    Трёхмерная
    Четырёхмерная

    Bыше уже упоминалось:
    FIB
    • +1
      Четырёхмерка хороша :) 3D тоже неплохая…
      • +2
        Нет, у 3D слишком большой размер. Получить 16384 было несложно. Думаю, при неограниченном времени реалистично дойти до 2^20. А вот 4D действительно удачная.
    • 0
  • +1
    image
    • +1
      Нет времени объяснять. Вы монстр!
      • 0
        На reddit обнаружилась картинка с плиткой 16384. Вот они действительно монстры :)
        • 0
          Мне только интересно, сколько у вас ушло времени на эту игру? :)
          • 0
            Думаю, в сумме часа 2-2.5. Там было около 5000 ходов, на большинство ходов уходила секунда или две.
  • 0
    del
  • +2
  • 0
    сегодня обнаружил в репозиториях maemo игрушку «2048», сразу же установил, пока максимальный рекорд 512
    <оффтопик>в репозитории кроме «2048» появилось еще пара популярных игрушек с android под китайским авторством</оффтопик>
  • –1
    Вот еще один клон игры на D dlang.ru/forum/236-klon-2048-na-d
  • 0
    image
    Игра 2048 батником на Windows

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.