caveman

Дневник разработчика. Ящики

Оценить эту запись
Прервался на некоторое время от основной разработки и реализую задумку двухмесячной давности - сделать головоломку в духе "сокобана" на мейкере.
С тех пор вышли кнопки, и я догадался совместить приятное с полезным и приделать к игре старого доброго Джона Донжона.

Сам процесс создания и работы будущей игры довольно занимательный для мейкера, потому и решил потратить толику времени и написать эту статью.


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

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

1) На просторах интернета был найден генератор уровней от нашего соотечественника (находится на этом сайте. У него, в отличие от других есть огромное преимущество: он консольный.
2) У генератора нет особых настроек, и он по данной "комнате" в аски графике, вида
Спойлер шаблон:

Код:
 
#########
#   #   #
# #     #
#     # #
##      #
#       #
#*  ***##
##    * #
# #   # #
#########

генерит комнату с расставленными ящиками, кнопками и героем тоже в аски графике. Так как автором он задумывался как "идеальный" в плане сложности, то на одну комнату он выдает один и тот же вариант. Поэтому переходим к пункту
3) Генерация комнаты-заготовки. Алгоритм простой - я в экселе задаю комнату 4мя параметрами: ширина, высота, количество препятствий и число кнопок/ящиков, рандомно раскидываю препятствия и кнопки, сохраняю это в файл в отдельную папку, где лежит генератор.
4) Запускаю батник, для удобства сидящий в корневой папки, он заходит в папку с уровнем, запускает генератор с параметром файла комнаты. По наличию файла решения смотрю, отработал ли ген (ведь могут быть нерешаемые комнаты), если нет - повторяю процедуру с п. 3.
5) В итоге у меня есть файл сгенеренной головоломки:
Спойлер соко:

Код:
S_A
#########
#   #@  #
# # $   #
#  $  # #
##$     #
#       #
#*$ ...##
##    . #
# #   # #
#########


6) Засасываю файл скриптом и генерю по нему комнату. Я нашел скрипт какого-то японца для генерации рамдомных подземелий и переработал его:
- У меня есть несколько карт-шаблонов (4 - по типам подземелий-комнат), в каждом из них есть:
-- 20 видов пола (10 по 2 - обычный и "с трещиной", "с трещиной" выпадает раз на шесть где-то)
-- 5 видов стена+потолок (стены двухтайловые)
-- событие кнопки, событие ящика и 5 событий для препятствий (так проще их расставлять далее)
- Есть карта, на которую происходит генерация, там все и рисуется. На ней стоит событие старта (это FadeIn и фраза в начале уровня через общее событие)
- На событии ящика и кнопки в каждом шаблоне есть реакция на нажатие и толкание, но основная логика происходит в скрипте, который дергается в начале уровня и после каждого толкания. Он проверяет наличие ящиков на кнопках и ставит нужные селфсвитчи, а также обсчитывает победу, дергая другое общее событие (я фразой победы и портом далее)
7) Остальное аналогично недавно вышедшим "кнопкам": живой титульник, междууровние и конец.
8) Забыл добавить, музыка в игре мидишная и тоже рандомится (по пять на каждую тему)
9) Всего в игре 40 уровней разбитых, как и в кнопках, на 4 темы. Естественно при желании, за полчаса можно накидать куда больше, но хотелось бы, чтобы не надоело совсем к концу.
10 Вот, как-то так, а в бонус - скрины сгенеренных карт:
Спойлер скрины:





11) Даже после скорого выхода думаю доработать игру, попробовав внедрить разные непростые штуки:
- кривые комнаты (вместо прямоугольника)
- систему баллов (сравнивая с идеальным решением по количеству шагов)
- подсказку
- рестарт левела (пока есть только загрузка)

12) Игра разработана под эгидой и лого CaveMonsters, подборкой и рисованием всей графики занимается MaraMonster.

Отправить "Дневник разработчика. Ящики" в Digg Отправить "Дневник разработчика. Ящики" в del.icio.us Отправить "Дневник разработчика. Ящики" в StumbleUpon Отправить "Дневник разработчика. Ящики" в Google Отправить "Дневник разработчика. Ящики" в VKontakte Отправить "Дневник разработчика. Ящики" в Facebook

Обновлено 22.09.2014 в 21:54 caveman

Категории
Без категории

Комментарии

  1. Аватар для Валера
    Ничего в первых скринах не понял.
    Но, раз работает, значит хорошая вещь!
  2. Аватар для caveman
    скопируй в блокнот и проставь старенький шрифт терминал
  3. Аватар для Валера
    Так же выглядит, как на скрине.
  4. Аватар для caveman
    не знаю тогда - у меня толково показывает. Листер еще тоталкомандировский хорошо кажет.
  5. Аватар для Yuryol
    Никогда не любил рандомные уровни.
    Что представляет собой игра с уровнями, сделанными человеком? Проработанные, идущие от простого к сложному, каждый уровень по-своему уникальный и интересный, загадку можно решить обычно или одним или парой способов.
    Что получается в играх с рандомными уровням? Сотня уровней, идущие вразноброс по сложности, да и сгенерированные обычно как попало - всё навалено где попало, решается десятком способов, челенджа не вызывает, желания пройти - тоже, ведь уровней в общем-то бесконечное кол-во. Они хороши только как убивалки времени, но я например, лучше покемонами время убью(
    Вот и на скринах видим скучноватые комнаты - на первом всё решается за пару секунд, на втором - всё навалено как попало. Поэтому я довольно сильно разочарован, что игра пойдет в том направлении, ибо очень ее жду
    Но, конечно, сделать игру с генерируемыми уровнями на мейкере - это трудно, здорово и интересно. Такого в русском мейкере же еще вроде не было?
    Поэтому как игрок я ооооченн разочарован, но как "типа-разработчик" с нетерпением жду, чтобы посмотреть как это будет осуществлено
  6. Аватар для caveman
    Я как "типа-разработчик" получаю огромное удовольствие от процесса создания этой недельной мини игры.
    Кроме того, я как "типа-игрок" местами получаю удовольствие при тестировании от заковыристых, но в то же время "как же я не подумал раньше" решений сгенеренных загадок.
  7. Аватар для Arnon
    caveman, используй тег [ CODE ] там моноширинный шрифт
  8. Аватар для caveman
    Благодарю, я думал об этом, но не пробовал.
  9. Аватар для caveman
    Немного новостей, хороших и не очень:
    1) Хорошая новость. Для начальной версии ожидается только финальная сценка от Мары.
    2) Плохая новость. Генератор уровней от отечественного автора (равно как и найденные зарубежные аналоги) оказался слабеньким для больших комнат. 8*8 уже заставляют их задуматься. В связи с этим, уровней стало меньше и максимум - тот же 8*8. Скорей всего, там все решалось простым перебором, потому так.
    Впрочем, сегодняшнее прохождение игры частенько заставляло меня крепко призадуматься, так что, может, это и к лучшему. Писать же свои умные алгоритмы, извините, не тот возраст - нет студенческого запала