воскресенье, 25 сентября 2016 г.

Обновление Wappo 2 1.10

Обновление пришлось выпустить из-за ошибки в созданном мной уровне 108, из-за которой он стал непроходимым. Добавил одну разрушаемую стену в правом нижнем углу:
На всякий случай прошел все уровни от 101 до 125 до конца, два-три из них точно вышли отличные.
Наконец нашел, куда в движке вставить проверку прав приложения, а то в Android 6 если вручную не предоставить игре право доступа к памяти, информация о пройденных уровнях не сможет быть записана или прочитана, и игра при каждом запуске будет начинаться с самого начала. Вот это сообщение:

понедельник, 19 сентября 2016 г.

Неразрешимый уровень в Wappo 2

К сожалению, вчерашний релиз Wappo 2 содержит ошибку в 108 уровне (это дополнительный уровень, разработанный мною). Его можно пройти только в том случае, если не считать поражением ситуацию, когда Wappo и Xarduc попадают на клетку с выходом одновременно.
Придется выпускать внеплановое обновление.

воскресенье, 18 сентября 2016 г.

Обновление Wappo 2 1.9

Свершилось! Сегодня опубликовал обновление с 25 новыми уровнями! Все 25 созданы разработанным мною ранее генератором уровней, о чем я писал в предыдущем сообщении. Часть я вычистил от неиспользуемых стен, у части оставил, т. к. это может усложнить жизнь игроку.
Попутно нашел два небольших бага. В одном случае телепортировавшиеся друг за другом Xarducs сливались в сильного монстра не на текущем ходу, а на следующем (хотя это было неизбежно, но могло дать Wappo шанс убежать и при неправильных ходах игрока.
Второй баг еще веселее. Из за него пришлось выкинуть красивый 126 уровень, т. к. он был разрешим лишь при наличии бага. Суть в том, что Wappo мог наступить на телепорт с уже стоящим в нем монстром, и не умереть, а спокойно телепортироваться.
Ссылка на игру в Play Market.

пятница, 16 сентября 2016 г.

О новых уровнях Wappo 2

В оригинальной игре Wappo 2 было ровно 100 уровней разной сложности, и при определенной сноровке ее можно пройти за неделю-другую в обеденный перерыв. А что дальше? Спасибо Елене Волчек, которая неделю назад поинтересовалась, когда будут новые уровни. Елена также рассказала мне про игру про Минотавра (похожую на Wappo 2), в которую она играла на Nokia.
Я нашел описание той игры, и нашел генератор уровней к ней. И хотя игра в Минотавра проще, чем Wappo 2, она позволила мне понять, что генератор уровней для подобных игр возможен.
Первым делом мне пришлось сделать приложение на Java, которое находит решение на стандартных уровнях Wappo 2. За основу я взял свою игру, выкинув из нее все, относящееся к графике и звуку.
Этому приложению я "скормил" прекрасные 86 и 87 уровни, решения по которым он нашел. Правда, решения не оптимальные, но иного и не ждешь от последовательного перебора. Можно, конечно, усовершенствовать алгоритм, чтобы он искал все возможные решения и выбирал кратчайшее, но я этого делать пока не стал.
Затем я добавил генератор карт на основе случайных чисел и заставил его работать с решателем в тандеме, генератор генерирует случайные карты, производится поиск решения. Если оно не найдено, карта отбрасывается, если решение найдено, и оно короткое, то тоже отбрасывается. Из пары сотен сгенерированных карт порой подходящей кажется лишь одна.
Результат я вывожу в консоль, которую впоследствии перенаправил в файл.
Вот пример карты, созданной моим генератором:
┌─┬─┬─┬─┬─┬─┐
│ │ │ │ │ │ │
├─┼─┼─┼─┼─┼─┤
│ │█│ │ │X│ │
├─┼─┼─┼─┼─┼─┤
│ │ │ │ │█│W│
├─┼═┼═┼═┼─┼─┤
│ │ │ │ │ ║ │
├─┼═┼─┼═┼─┼─┤
│ │ │ │ │ │ │
├─┼═┼─┼─┼─┼─┤
│░║ ║ │ │ ║ │
└─┴─┴─┴─┴─┴─┘

Здесь в левом нижнем углу дверь выхода, W - главный герой, X - монстр, черные прямоугольники - телепортеры, одиночные линии на сетке обозначают клетки игрового поля, двойные линии играют роль неразрушимых стен.
Завтра потестирую карты на игре, и если они заставят меня поломать голову, добавлю их в игру сверх стандартных уровней!

среда, 7 сентября 2016 г.

Обновление Wappo 2 1.8

Опубликовал обновление Wappo 2 1.8, и почти сразу же обнаружил небольшой недостаток, связанный с тем, что при телепортации монстр теряет оставшиеся ходы. Если монстр зайдет вслед за Wappo в один телепорт, то они оба остаются в одной клетке во втором телепорте, и игра не заканчивается, поскольку оба отходили. Эта ситуация легко воспроизводится на уровне 86, для чего надо походить три раза: ←, ↓, ↑. Ситуация показана на картинках.



Первое же решение, которое пришло мне на ум, - проверять, догнал ли монстр главного героя как до телепортации, так и после нее. Шесть строчек кода, и все работает. Обновление опубликую а Play Market позднее.

понедельник, 5 сентября 2016 г.

Доработка Wappo 2

Началось с того, что в игре Wappo 2, которую я портировал на Android (ну как портировал, полностью написал свой код), обнаружился баг в 86 уровне. Баг забавный в том плане, что уровень можно пройти двумя способами. В оригинале на телефоне Benq-Siemens AX72 этого бага не было, и способ прохождения уровня 86 только один!
Два вечера я искал причину бага у себя в алгоритме, и по мере поисков код сократился раза в два! На сегодня баг устранен, и все персонажи теперь ведут себя, как в оригинале. В Play Market обновление пока не выкладывал, потому что занялся переделкой игровых персонажей. Они у меня теперь объемные, как в оригинале. Создавал персонажи с помощью программы для трехмерного моделирования Blender, рендерил их в разных позах, сохраняя спрайты. На Wappo потребовалось сделать 12 картинок, на Xarducs (игровых монстров) тоже 12 на простых, и 24 на супермонстра, который может ходить диагонально.
Ниже представлен прототип Xarducs:

Скоро обновление.