Гонки лидеров
Сделал игру "Гонки лидеров", представляющую собой смесь жанров "Три в ряд" и гонки.
Игра выпущена на платформе Яндекс Игры и использует таблицу лидеров в качестве одной из основных механик взаимодействия игроков.
Система гонок является своеобразной визуализацией таблицы лидеров. Т.е. обгоняя соперника в гонке, ты поднимаешься на строчку в рейтинге.
В головоломке "Три в ряд" игроку предстоит формировать команды управления автомобилем:
- вперед, влево,вправо,
- стрельба вперед,
- бросок бомбы назад,
- дисковые пилы по бокам.
https://yandex.ru/games/app/255838?lang=ru
Match-3 и Пина колада
Знаете, есть такие игры Match-3 (три в ряд), где нужно кристаллики на экране сокращать. Отлично успокаивает мозг и помогает заснуть иногда.
В одной игре можно собирать вот такую фигуру из кристаллов:
️☁️❤️☁️️
❤️❤️❤️
☁️❤️☁️
В этом случае появляется звездочка и затем улетает. Один раз, когда я собрал такую комбинацию, то случайно провел пальцем по экрану телефона и сдвинул игровое поле. Оказывается, при появлении звездочки включается возможность скроллировать экран.
Я погнался за звездочкой, быстрыми движениями водя пальцем по экрану. Игровое поле осталось уже далеко за рамками экрана, а звездочка все летела, разгоняя темноту. В этой освещенной траектории проступал интересный мир — сказочный сад с необычными строениями.
Звездочка куда-то пропала, и полоса, разогнавшая черноту, стала исчезать. По этому затухающему следу я кое-как успел отскроллировать игру обратно к полю с кристаллами.
А однажды я собрал вот такую форму из кристаллов:
☁️☁️❤️❤️
❤️❤️❤️☁️
❤️☁️❤️☁️
Появилась лошадка и поскакала за экран. Будучи готовым к чему-то подобному, я начал преследовать лошадку, перемещая содержимое игрового поля свайпами по экрану телефона.
Лошадка разгоняла затемнение очень эффективно. Она доскакала до сказочной деревни и понеслась дальше по улицам. Я же остановился разглядеть здание с табличкой «Бар». Водя пальцем по экрану, я зашел внутрь, где была нарисована барменша за стойкой.
- Сделать вам прохладительный напиток, ведь вы проделали долгий путь? - поинтересовалась девушка.
- Да, пожалуйста, безалкогольную Пина коладу, - ответил я, не сразу сообразив, что вопрос был задан не текстом на экране, а голосом через динамик на телефоне.
Ответил я, что прикольно, тоже голосом. Нужно было теперь найти кнопку типа «Сделать заказ». Однако, девушка продолжила:
- Серьезно? Безалкогольную?!
- Да, я сегодня и так набрался нормально в гостях.
- Какой интересный выбор, красавчик! Сейчас сделаем вам лучшую Пина коладу во всей игре!
Ого, разработчики сделали распознавание голоса. Может они сделали и распознавание картинки из камеры телефона, и игра «смотрит» на меня сейчас? Хотя девушка сказала «красавчик»... ))
Картинка на экране стала темнеть.
- А почему у вас темнеет так быстро? - спросил я девушку, которая как раз поставила на барную стойку бокал с напитком.
- У нас, по нашу сторону экрана, никогда не темнеет. Это ты начинаешь плохо видеть наш игровой мир.
- А почему?
- Те фигурки, которые вы, игроки, собираете, за несколько минут превращаются в объекты нашей реальности и больше не являются элементом игровой механики. Лошадки теперь бегают тут на лужайке, а звездочки загораются у нас в небе.
- Мне надо снова сокращать кристаллы, чтобы попасть сюда?
- Конечно! Игровая механика — ключ к нашей метаигре. Я буду тебя ждать.
- А ты меня не забудешь в следующую игровую сессию?
- Нет, конечно, бигдата же. Сервера игры помнят все!
Экран потемнел полностью. Сколько бы я ни двигал пальцем по темному экрану, мне не удавалось вернуться к игровому полю с кристаллами — слишком далеко отошел. Было уже поздно, и я выключил телефон.
Завтра вечером перезапущу игру и начну собирать новые фигурки из кристаллов, чтобы освободить мозг от повседневной суеты по эту сторону экрана.
☁️❤️❤️☁️❤️❤️☁️
❤️❤️❤️❤️❤️❤️❤️
❤️❤️❤️❤️❤️❤️❤️
☁️❤️❤️❤️❤️❤️☁️
☁️☁️❤️❤️❤️☁️☁️
☁️☁️☁️❤️☁️☁️☁️
Как подготовить машину к долгой поездке
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
Как компьютерная игра кемеровского бухгалтера выросла в многомиллиардную индустрию
В далеком 1994 году в городе Кемерово жил один 25-летний бухгалтер Евгений Алемжин. Он закончил КемГУ, где изучал математику, умел программировать и иногда играл в разные видеоигры.
Однажды он решил сделать собственную компьютерную игру. Вдохновившись популярной тогда Columns, он придумал свои правила: поле 8х8, заполненное разноцветными шариками, которые можно менять местами. Цепочка из трех шариков одного цвета исчезает, на их место падают новые. Игру так просто и назвал - "Шарики". Запускалась она под DOS, если кто еще помнит такую операционку.
Интернета тогда еще толком не было, идея заработать на компьютерной игре в эпоху всеобщего пиратства казалась смехотворной - в общем, он ее просто так переписал своим друзьям и знакомым. Те, в свою очередь, - своим знакомым, ну и так далее.
Потихоньку игра стала распространяться по всей России. Поскольку DOS быстро устарел, да и выглядела игра неказисто, то многие, к кому игра попадала, стали переписывать ее под Windows - благо, сделать это было очень просто. За 1997-2000 гг. игра обзавелась десятком вышедших в России клонов: Шарики для Win32, Falling Bubbles, еще одни "Шарики", Balls 98, Шарики 99, Alhademic Balls, Color Balls 2000... Одна из них - Balls 98 - даже вошла в CD-сборник «200 лучших игр всех жанров – 16», и ее автор пытался продавать ее на зарубежных сайтах вроде zdnet.com и download.com как shareware - правда, без особого успеха.
Один из клонов "Шариков", Falling Bubbles.
Еще один клон, Alhademic Balls, который позволял изменить шарики на другие фигуры - звездочки или квадратики.
Пока в России уже шесть лет вовсю играли в "Шарики" и его клоны, в остальном мире игра была практически неизвестна.
Но интернет потихоньку развивался, и вот однажды кто-то добавил следующее звено к цепи совпадений и сделал очередной клон "Шариков" (или клон одного из его клонов, это так и осталось неизвестным) на JavaScript под названием Colors Game и выложил на своем сайте.
* * *
Тем временем на другой стороне планеты - в Сан-Франциско, США - жила-была небольшая молодая игровая студия Sexy Action Cool. Она только что выпустила свою первую компьютерную игру - покер на раздевание - и отчаянно нуждалась в стоящей идее для следующей игры. Джон Вичи, один из сотрудников, часто просиживал в интернете на игровых сайтах, и вот однажды он наткнулся на эту самую Colors Game - JavaScript-клон "Шариков".
Разработчики впоследствии не смогли снова найти Colors Game. По их воспоминаниям, она выглядела как-то так:
- А прикольная игра, - сказал Джон Вичи остальным. - Давайте сделаем игру на ее основе.
- О чем ты вообще? - ответили ему. - Это не игра, а фиг знает что.
- Слушайте, ну да, выглядит игра так себе, но в механике что-то есть, вы попробуйте сами.
- Хм, ну да, есть что-то такое... затягивающее.
Так студия Sexy Action Cool стала делать клон Colors Game. Они без изменений воспроизвели игровую механику, но добавили звук, таймер и даже придумали сделать не однотипные квадратики, различающиеся по цвету, а еще и по форме, в виде разноцветных алмазов.
Игру назвали Diamond Mine. Выглядела она гораздо привлекательнее предыдущих клонов, сделанных в России. Игровая же механика "Шариков" была перенесена в Diamond Mine без изменений. Фактически, это была та же игра Алемжина в новой оболочке. Осенью 2000 года студия бесплатно выложила Diamond Mine со встроенной рекламой на своем сайте.
Только к этому моменту название компании Sexy Action Cool было сочтено не слишком подходящим, поэтому ее решили переименовать. Теперь студия стала называться PopCap Games.
Разработчики подозревали, что с такой простенькой игрой как Diamond Mine они вряд ли достигнут успеха (первые отзывы, полученные от друзей и знакомых, - "Это не игра!"), но рассчитывали ее продать какому-нибудь издателю казуальных игр, а вырученных денег должно было хватить, чтобы худо-бедно держаться на плаву до выпуска следующей игры, а там уж как бог на душу пошлет.
По счастью, у разработчиков были кое-какие связи в игровой индустрии. Джейсон Капалка до этого работал в pogo.com, и PopCap Games предложили им купить игру за 40 тысяч долларов. Там на игру посмотрели и отказались.
Тогда разработчики обратились в Microsoft и предложили им купить игру за 30 тысяч долларов. Но в Microsoft тоже отказались.
PopCap Games приуныли, но тут Microsoft выдвинула встречное предложение: игра остается в собственности PopCap Games, а Microsoft берет ее в аренду за 1500 $ в месяц и выкладывает на своем сайте zone.com, среди всяких бесплатных онлайн-игр вроде шахмат, шашек, реверси и пасьянсов.
Единственное, Microsoft не понравилось название (уже существовала другая игра под названием Diamond Mine). На экраны США тогда вышел фильм Bedazzled (в русском прокате – "Ослепленный желаниями"), и Microsoft решили дать игре схожее название, чтобы этим нехитрым трюком привлечь к игре дополнительное внимание.
PopCap Games были не в восторге от нового названия, но деваться особо было некуда. В начале 2001 г. игру выложили на сайте zone.com под названием Bejeweled.
* * *
На сайте zone.com для каждой игры показывалось, сколько в нее людей прямо сейчас играют. У большинства игр цифры держались в районе нескольких сотен, у самых популярных цифры достигали 4-5 тысяч одновременных игроков (это были хорошие показатели для 2001 года).
В Bejeweled, через пару недель после выхода, одновременно играли до 20 тысяч людей - в несколько раз больше, чем в остальные игры.
Прошла еще пара месяцев, а популярность Bejeweled не падала – игра, к немалому удивлению самой PopCap Games, стабильно оставалось одной из самых популярных на сайте.
Студия выпустила еще несколько небольших казуальных игр и одновременно стала развивать внезапный успех Bejeweled – благо, права на игру так удачно остались у них.
В том же 2001-м вышел порт для Palm OS и улучшенная версия для Windows (бесплатная пробная версия с возможностью покупки). За ней последовали сиквелы: Bejeweled 2 (2004) и Bejeweled 3 (2010).
В Bejeweled 2 появились два вида бонусных фигурок, обладавших особыми эффектами, и режим пазла. В Bejeweled 3 стали менять размер игрового поля (классический 8x8 в итоге продержался 16 лет), добавили различающиеся уровни, новые режимы и мини-игры, кучу спецэффектов и бонусов. Но в основе все еще лежала та самая игровая механика, придуманная Алежминым, которой даже дали особое название "match-3".
С годами популярность Bejeweled стала стихать, но тут на мировой рынок пришли смартфоны, популярность казуальных игр возросла на порядки, и, воспользовавшись наработками Bejeweled, многие разработчики бросились делать свои match-3 игры в надежде захватить новую аудиторию.
Сегодня жанр match-3 насчитывает тысячи игр, и новые появляются буквально каждый день.
Candy Crush Saga внешне уже мало похожа на оригинальную игру Алемжина:
* * *
Серия Bejeweled стала мировым феноменом. Общие продажи серии превысили 50 млн копий. Студия PopCap Games стала успешным разработчиком казуальных игр. Их главные активы, помимо Bejeweled, - Zuma, Peggle и серия Plants vs. Zombies. 18 июня 2020 года Музей видеоигр The Strong включил Bejeweled в Мировой зал славы видеоигр.
Самая популярная сегодня игра жанра match-3 - Candy Crush Saga - насчитывает более 250 млн игроков в месяц, принося ее создателям около миллиарда долларов в год. Суммарный размер аудитории и доход всех остальных match-3 игр не поддается оценке.
Евгению Алемжину 52 года, он живет с семьей в Черногории и уже 25 лет работает бухгалтером. На протяжении почти двадцати лет «Шарики» оставались единственной сделанной им игрой. В 2013 году - для развлечения – он выпустил продолжение Шариков под названием Atomic Sky. По аналогии с Welltris (3D-сиквелом Тетриса), который ему когда-то нравился, он перенес механику match-3 в 3D. Изначально бесплатно доступная на Kongregate, Atomic Sky сейчас продается в Стиме за 59 рублей. По оценке SteamSpy, за все время Atomic Sky продалась количеством меньше 1000 копий.
Создание "Шариков" не принесло Алемжину никакого дохода. По закону, правила игры не могут считаться интеллектуальной собственностью, и он никогда не заявлял свои права на клоны "Шариков".
Ни Bejeweled, ни Candy Crush Saga, ни другие популярные клоны «Шариков» не упоминают Евгения Алемжина как изобретателя игровой механики match-3.
Если рассматривать все match-3 игры как клоны "Шариков" - подобно тому, как мы поступаем с Тетрисом - игра "Шарики" Евгения Алемжина, вероятно, становится самой популярной видеоигрой в истории.
Match lift drop - триврядка с пинболом
Всем привет!
Однажды увидел игру Drop the ball, и решил скрестить ужа с ежом её с триврядкой. В результате получилось не так уж плохо, правила такие:
Выставь 3 одинаковых блока в ряд:
- Оранжевые, желтые и красные добавят мишени
- Зеленые бросят в цель шарик
- Фиолетовые добавят полоску магической силы, которая выстрелит особым магическим шаром
также очки магической силы можно получить собрав более 3 любых блоков в ряд
цель можно выбирать тапом по ней
___
Разрабатывал игру, конечно же на Unity, из особенностей разработки рассказать нечего, шарики стукаются по встроенной физике, триврядку сделать тоже не сложно
Для твинов использовал библиотеку LeanTween, но позже распробовал Hotween, рекомендовал бы больше последнюю из-за удобства использования.
Для ios пришлось завести виртуалку, чтобы заливать билды, иначе ни как, ничего сложно в этом не было. Еще при публикации на ios затребовали страницу с тех поддержкой, вывернулся заведя статик страничку на гите, дешево (бесплатно) и сердито.
Думал релизить с паблишером, отозвался только Voodoo, хоть он и занимает ощутимую долю рынка, политика "выложи игру, если она зайдет игрокам то мы вложимся в раскрутку а заберем половину" мне не очень понравилась, поэтому решил выпустить её в самостоятельное плаванье, будь, что будет, спасибо за внимание!
Ссылки на игру:
Google play storeверсия без рекламы на 4pda
версия на ios будет чуть позже
Искажение 3D моделей
Доброго времени суток!
Обращаюсь за советом к людям с опытом в изготовлении 3D моделей...
В мастерской стоит китайский ЧПУ станок ACCTEK AKM1325, уже несколько месяцев успешно режет в 2D режиме. Но вот поступил заказ на 3D и выяснилось, что идёт искажение по Z оси - высота изделия увеличивается по мере продвижения инструмента, т.е. "уплывает" вверх ближе к концу.
Пробовали занижать скорость продвижения фрезы в АртКаме до минимума, ситуация улучилась, но всё равно не идеально, да и работать так медленно просто нереально. Работа идёт по дереву и МДФ
Технические данные:
станок ACCTEK AKM1325
контроллер (в станке) WXhc MKX-IV
шпиндель Wangjiannan DZ-125-5.5 5.5KW 24000RPM
ArtCAM 2017
Match 3
Вопрос со статикой уже решили в фазе работы с 2D.
Подскажите пожалуйста где искать сбой.
Заранее спасибо!
Bing Han Gargen - милая match-3 игра для Android и iOS
Всем привет!
Меня зовут Вероника и я пришла, чтобы рассказать вам об одной милой мобильной игре.Многие ведь любят поиграть в метро или в свободную минутку на учебе/работе? ;)
Игра называется Bing Han Garden, она доступна как для Android, так и для Apple.
Игра выполнена в красочной графике и посвящена такому знаковому для Азии растению как женьшень. Женьшень применяется в традиционной китайской медицине, положительно влияет на иммунную систему и обладает тонизирующии эффектом.
В этой игре можно не только играть в популярные и интересные "три-в-ряд", но и построить красивый женьшеневый сад.Также в этой игре ежемесячно проходит розыгрыш банки настоящего женьшеня - ее получает тот, кто вырастит и продаст со своего сада больше всего виртуального женьшеня. Каждый месяц рейтинг обнуляется - это значит, что шанс получить банку этого прекрасного растения есть у всех игроков :3
Спасибо за внимание!
Автоматическое тестирование уровней в классической Match 3 игре
Во время разработки нашей Match 3 игры появилась необходимость в тестировании проходимости уровней, идея ручного тестирования очень быстро отпала из-за никзой скорости. После этого стали думать на счет автоматического тестирования. Сразу вспомнилась статья на Хабре, где ребята делилилсь подобным опытом. Их идея нас не очень удоавлетворила из-за того, что они тестировали через GUI, хоть и с минимальными анимациями. Этот способ быстрее ручного тестирования, но это не максимум. В своей игре мы решили пойти другим путем - тестировать уровни исключительно моделями игровых объектов и сущностей. В результате ухода из GUI к консоли скорость стала 3-5 минут на 198 уровней (в одном наборе 198 уровней) в зависимости от вида тестирования (вверх или вниз) и количества итераций. В этой статье, как раз, хотим рассказать о том, как проводилось тестирование уровней в нашей игре Travel Jewel (ссылка на Google Play будет указана в конце статьи). Сначала расскажем о том, что за игра, о чем она, о ее особенностях и отличиях от других Match 3 игр, затем о создании уровней и потом уже о самом тестировании, в конце выделим результаты тестирования. Итак, начнем.
Что за игра, о чем
Travel Jewel - классическая Match 3 игра, которая рассказывает истории о достопримечательностях крупных городов России. Дизайн выполнен из элементов корабля и вместо камней используются векторизированные изображения достопримечательностей. В качестве фоновой музыки выбран шум прибоя и крики чаек. Первый набор уровней содержит достопримечательности Петропавловска-Камчатского. Список городов составлен уже полностью, но об остальных городах пока не рассказываем. Механики используются классические: три камня - очки, четыре - очки + камень flash, пять - очки + супер-камень, который уничтожает все камни определенного типа, буква "L" - бомба. Кроме того, в игре реализовано автоматическое перемешивание камней в случае, когда больше нет камней для перемещения. В игре присутствует таблица рекордов трех типов: глобальная, по наборам уровней и по очкам за достижения. И да, в игре также есть ряд достижений, например, за каждый новый день захода в игру или за игру в 1, 5, 10, 50, 100, 150, 198 уровнях и за 3 звезды в них. Если реализовать поддержку Firebase и Unity Ads для iOS на pod'ах, то игру можно опубликовать и в App Store для iOS устройств. Исходя из чего, у всех устройств, даже на разных ОС будет одна большая таблица рекордов и кроссплатформенное сохранение результатов игры.
Игра написана на Java, на движке LibGDX с использованием библиотек Firebase (database, auth, storage, performance, analytics) и Crashlytics, который скоро будет доступен из Firebase. Помимо этого в Firebase используется Cloud Function, которая обновляет таблицу рекордов раз в час.
О создании уровней
О создании уровней много не скажешь, потому что все layout'ы создавались вручную, после этого был сгенерирован список целей для игрока на каждый уровень, как они будут меняться в зависимости от номера уровня и в завершение, все блоки (за камнями которые), решетки и льды были расставлены тоже вручную. В качестве средства для создания уровней использовался Excel. На листе располагалось 4 поля 8х8, первое отвечает за блоки, второй за наличие камня в ячейке, третий - за решетки и четвертый за льды. Проверка на валидность, что не стоит решетка на ячейке, в которой нет камня, делается на формулах. Для экспорта всех данных в файлы и дополнительных проверок были написаны макросы. После этого файл можно сделать более читаемым прогоном через https://jsonlint.com/, например, если это необходимо. Дальше файл отправляется через Firebase Function в Firebase Database, чтобы ключи были сгенерированы по стандартам Google (через push) и не менялись после изменений уровней при повторных заливках, короче говоря, для удобства личного и пользователей. Для пользователей - чтобы после каждого обновления уровней не надо было переигрывать заново. Для первого набора уровней такого способа создания уровней вполне достаточно. В будущем, для второго набора уровней можно уже что-то более дружественное придумать без такого количества этапов и ручной копи-пасты.
О тестировании
Первоначально количество ходов и значения для звезд подбиралось пальцем в небо исходя из логических соображений, что создавало сложности при ручном тестировании - уже на первых уровнях возникали огромные сложности при прохождении и получении хотя бы какого-то количества звезд. В итоге было решено написать бота для получения количества необходимых ходов для завершения целей и значений для звезд. Бот претерпел много изменений с самого начала и теперь выполняется в три этапа: считает сколько необходимо ходов для завершения цели, корректирует эти значения, чтобы шанс прохождения был 60% и затем на этих ходах получает значения для звезд, чтобы с тем же шансом можно было получить 3 звезды. Все шаги можно объединить в один, но это может усложить понимание кода и сделает невозможным или неудобным иметь, так сказать, snapshot промежуточного результата.
Код самой игры приводить не будем, потому что статья не об этом, будут приведены статическая диаграмма классов модели объектов игры и код только самого бота.
После этого необходим базовый класс «игры», который будут расширять классы определенного вида тестирования - вверх или вниз.
Базовый класс «игры»
Базовый класс содержит логику инициализации данных уровня (счета, игрового поля и целей), логику ведения счета и произведения хода, проверку на завершенность целей. К сожалению, на pikabu нет подсветки кода и возможности сворачивать блоки, поэтому выкладываю код на pastebin, чтобы размер поста был адекватным: https://pastebin.com/NqWc3SJt.
Вспомогательные классы базового класса: https://pastebin.com/6w2udRtZ.
Отдельно хотелось бы остановиться на логике совершения хода. Сначала из класса Field получаем список всех возможных ходов и дальше выбираем самый эффективный. Первым выполняется поиск супер-камней, которые уничтожают камни одинакового типа. Приоритет отдается камню, который имеет больше всего похожих камней, то есть с максимальной силой. Стоило бы, конечно, отдавать приоритет согласно целям, есть над чем поработать. Если первый поиск не дал результатов, то выполняется поиск для завершения целей по типам этих целей и случайным образом выбирается конкретный ход для выполнения цели. Дальше смотрим на ходы, где есть камни с любым эффектом, например, flash. Предпоследними проверками ищутся ходы на 5, 4 и 3 камня, если все предыдущие не дали результатов. Если же ни один из них не дал результатов, то выбирается случайный ход. После этого из хода считаются индексы для камня, которым будет совершен ход и индексы, куда будет совершен ход. В завершение – ход выполняется.
UpwardGame
Как не трудно догадаться, этот класс реализует только один метод - start, который в цикле проверяет завершенность целей, делает ход из базового класса и увеличивает счетчик ходов. По завершении работы делает запись в лог о количестве ходов и набранном счете, возвращает результат с теми же данными.
Класс UpwardGame: https://pastebin.com/viQyiAQb.
Тестирование вверх всегда выигрышное, поэтому и возврщается статус WON.
DownwardGame
DownwardGame делает почти то же самое, что и UpwardGame: в цикле проверяет завершенность целей, делает ход и базового класса, но уменьшает счетчик ходов. В случае, если ходы закончились, то цикл завершается. Если при нуле ходов цели все-таки выполнены, то игра считается выигранной. В зависимости от этого делается запись в лог и возвращается соответствующий результат.
Класс DownwardGame: https://pastebin.com/QdkU8rzB.
Метод upward-тестирования
Думаю не надо объяснять построчно, что делает метод. Основная суть в том, что "играется" 1000 игр на каждый уровень, по средним значениям ходов и набранных очков выбираются значения для необходимого количества ходов и звезд для завершения уровня. Из среднего счета звезды получаются следующим образом:
int star1 = (int) (scoreAv * .33f / 100) * 100;
int star2 = (int) (scoreAv * .66f / 100) * 100;
int star3 = (int) (scoreAv / 100f) * 100;
Метод upwardTest: https://pastebin.com/wwzqbKVA.
Данные по наборам уровней хранятся в обычном json-файле (до отправки в Firebase Database, конечно) и читаются с помощью Gson через класс обертку LevelPacks, который содержит только одну публичную property - ArrayList<LevelPack> levelPacks.
Метод downward-тестирования для коррекции количества ходов
Метод прогоняет 100 игр также на каждый уровень и проверяет какой процент пройденных. Если значение меньше, чем 60+-1, то количество ходов увеличивается на единицу, иначе уменьшается.
Метод downward-тестирования для коррекции количества ходов: https://pastebin.com/QsjDAKn3.
Метод downward-тестирования для коррекции значений для звезд
Метод прогоняет также 100 игр и проверяет какой процент игр набрал 3 звезды. Если меньше, чем 60+-1, то значение последней звезды уменьшается на 100, иначе увеличивается на то же значение, после этого первые две звезды рассчитываются также как и при upward-тестировании.
Метод downward-тестирования для коррекции значений для звезд: https://pastebin.com/BGme8p9c.
В конце тестирования все найденные значения проходили логическую проверку глазами. Например, на 25 уровне скорректированное значение для первой звезды - 0, что выглядит неприятно. Оно менялось на 100, а для второй звезды на 200, вместо 100 рассчитанных.
Результат тестирования
После автоматического тестирования проходимости уровней мы получили следующее:
- теперь стало возможно пройти уровни с высоким шансом на успех и звезд можно получить почти всегда 3, тогда как раньше, повторюсь, сложно было пройти уровень и получить хотя бы одну звезду; раньше на 5 уровней требовалась неделя для прохождения и корректировки количества ходов и значений для звезд, сейчас же за один день можно пройти ~20 уровней и не утомиться, к тому же даже не меняя количество ходов;
- тестирование помогло исправить огромное количество багов в логике игры;
- автоматическое тестирование по прежнему требует ручного из-за небольшого количества лишних ходов, однако, можем смело утверждать, что их количество не превышает 25%, что при чистом рандоме для создания камней может кому-то помочь выиграть.
Кроме того, после перехода на автоматическое тестирование выросла скорость тестирования по отношению к ручному - теперь меньше, чем за 5 минут на набор уровней можно получить проходимые уровни.
Послесловие
Да, бот не идеален, он берет только верхние действия и не по всем веткам проходит из-за неверной логики рандома в базовом классе "игры", в методе updateActions верхние два из нижних трех блоков никогда не выполняются (догадка, пока не проверяли). Кроме этого, некоторые ветки выбора также можно улучшить. Например, как отмечалось ранее, при нахождении супер-камня отдавать предпочтение для совмещения тому, который находится в целях.
Возможно у вас будет информация о генерации проходимых и симпатичных уровней определенного размера для Match 3, будем крайне признательны за подобного рода информацию. Также будем благодарны за комментарии и пожелания, особенно по коду!
Ссылка на игру: Travel Jewel - Classic Match 3 game.