Новая версия игры 2048
Легендарная игра 2048 мне очень понравилась - гениально проста и интересна, но быстро надоела. Поэтому хотелось придумать что-то очень похожее на нее, сделать продолжение. Переиграв во все вариации игры 2048 (тетрис, карточки и тд) хотелось чего-то более интересного. Долго размышляя над этим вопросом, я вспомнил про старую добрую игру MAX8, в которую играл на кнопочном телефоне:
Суть игры заключается в сложении положительных и отрицательных чисел. Вы выбираете по горизонтали, а противник по вертикали. Кто больше набрал, тот молодец.
Конечно же я решил объединить эти две игры, и назвал ее 2048 v2:
Получилось очень интересно и увлекательно, но только первое время, так как был режим игры только с ботом. Долго пыхтя над гугловским многопользовательским режимом, удалось сделать игру по интернету. После этого игра стала бесконечной...
Если этот пост будет интересен, опубликую про то как я ее создавал, как впустую потратил деньги на рекламу, и как вышел на доход.
2048 v2: игра-головоломка в прямом и переносном смысле
Думаю многие играли в игру 2048, где нужно передвигать кубики, чтобы они комбинировались и складывались в большое число. Игра довольна интересная, но одноразовая, т.к. в принципе суть игры - это собрать число 2048, которое в свою очередь собирается после пару часов игры, выработав определенную стратегию. Игра конечно же не заканчивается, например на поле размером 4х4 можно собрать число 131072. Выбрав поле побольше, размер максимального числа также увеличивается. в принципе это игра на внимательность)
Зайдя в Play Google в поисках новой игры, увидел в рекомендованных 2048 v2. Увидев только цифры на скриншотах игры, сразу показалась головоломка очень простой. Войдя в приложение, на экране появились эти самые цифры:
Что нужно делать с этими цифрами стало понятно спустя 5 минут. Попробуйте также, не читая инструкции разобраться в правилах.
Ну а если вы не живете по принципу сначала сломал, затем начал читать инструкцию, тогда читайте далее :).
Правила игры: вы выбираете выгодные для себя числа по горизонтальной линии, на которой находится курсор, а противник по вертикальной. Кто набрал больше очков, тот и выиграл.
Не особо понятная видео инструкция от разработчика:
Отличительные особенности данной версии:
-Появились отрицательные числа
-Новый дизайн
-Режим игры по интернету
Максимальный счёт в игре 2048
Всегда было интересно, какой же максимальный счёт возможен в 2048. Доходя до очередного числа степени двойки, задумывался: "а потом"? Ширина клетки не резиновая, а пять знаков (65536) занимают почти всю эту самую ширину.
В общем, - результат несколько предсказуем. Просто уменьшается размер шрифта.
И да, максимально возможное значение в клетке - 131072, так как заполняя оставшиеся клетки числами вдвое меньше предыдущего, на самой последней должно выпасть "8", а это невозможно, так как игра выкидывает лишь или двойки, или четвёрки.
Эксперимент закончен, дальше играть задолбало.
P.S. Знаю, что не спортивно, так как режим тренировочный, но достичь подобного результата на обычном нереально, так как очень часто приходилось делать Undo для того, чтобы выпала нужная цифра на нужном месте.
2048, OLED, Arduino
Решил поделиться с вами своим относительно старым проектом, а именно игра 2048 на arduino. Делал достаточно давно и просто потому что было скучно. Вывод реализовал на OLED дисплей 128х64.
Со временем код портировал и на STM32, благо C++ портируется достаточно просто.
Управление, как вы уже успели заметить, выполняется с помощью джойстика. Нужен ли там именно джойстик, а не кнопки? Нет. Почему я использую джойстик? Потому что могу.
В игре реализован подсчет счета, рекорда(с записью рекорда в EEPROM), а так же 1 отмена за игру. Как показала практика, самое сложное это отображение. Сложно сделать его достаточно красивым при таком разрешении. Саму обработку игрового процесса можно продумать и реализовать за пару часов.
В жизни это дело выглядит красивее, чем на фото. Проверка на gameover тоже есть, достаточно эффективная. Сначала поиск пустых ячеек, а, если их нет, поиск 2 одинаковых чисел рядом. Если сделать это все в корпусе, на кнопках и маленьком аккумуляторе(или вообще CR2032, почему нет?), Получится очень портативная игровая консоль. Интересно, что было бы, если бы такая штука появилась в СССР, на равне с волком яйцеловом? Что вы об этом думаете?
Реверс-инжиниринг игры 2048
Вот цель нашей работы. Взломать 2048 на огромный результат по сути сделать мод.
ТАКС НАЧНЁМС
Первое с чего я начал так это с того, что закинул apk в онлайн декомпилер (java decompiler), чтобы посмотреть в каком методе рализована генерация чисел. Это оказался addStartTile()V. И вот реализация этого метода в smali.
Ну вот теперь мы поняли, что генерация двойки это 0x2. Теперь нужно заменить двойку на более большое число например на 16384, он получает 0x5000 (hex). Но мы не можем просто так заменить 0x2 на 0x5000, необходимо изменить параметр так как при создание объекта v0, указывает на исходный код директива .field. По этому делайте сами...
Ладно, шучу я долго над этим думал и пришёл к выводу, что нужно заменить const/4 v0, 0x2 на const/16 v0, 0x5000. Так как показано на следующей картинке.
Ну а теперь давайте сделаем так чтобы эти фишки заполняли все поля. Изменяем параметр точно так же как на следующей картинке.
КОНЕЦ
В заключение хочу добавить, что если вам лень это делать и этот пост вам ничем не помог, то специально для вас я оставляю ссылку на мой сайт где вы можете скачать эту игру.