Проект "Эксперимент":
50 этажей
Здесь пока не будет скриншотов или демок, я расскажу только общую идею
Введение
С чего бы начать... Всё началось
с Туборга, который должен был творить, потому что он был с того, что однажды, дождливым весенним вечером я сидел и думал. Я хотел создать что-то на мейкере. Желательно, что-то интересное. Я на время отогнал мысль о Viola Stella 2
(Она же Rosa Stella), поскольку самоповторение не будет чем-то интересным. А я хотел сделать что-то необыкновенное, по крайней мере, непривычное для себя.
Иногда я смотрю на игры с интересным геймплеем, сделанные на мейкере. Замечаю, почти все они сделаны с использованием скриптов. Возникает такое ощущение, что без скриптов сделать уже ничего нельзя. И я решил.
И я решил поставить эксперимент. И поработать в этот раз не с сюжетом, а с геймплеем. Сделать такой геймплей, что будет непривычен для мейкера.
И без единой строчки скриптов.
Но с чего начать?
Что взять за основу? Но недолго я мучился этим вопросом. Вдохновение мне дал Chrysler Building из игры Parasite Eve. Когда я играл, меня будто осенило: Генератор лабиринтов! 77... Хотя, 77 это, пожалуй, многовато... 50 этажей, генерируемых случайно, новые с каждой игрой. И вообще рандомизовать игровой процесс, повысить реиграбельность. Разная экипировка, развитие разных веток магии при каждом прохождении. И т.д. и т.п. Разнообразить стандартную боевую систему, заставить в боях включать мозг. И, повторюсь,
без скриптов
Сюжет
Ну, что сказать? Сюжет - это не самая сильная сторона проекта. Два разнополых персонажа поднимаются на верхний этаж башни, поскольку не могут спуститься вниз. Это на первый взгляд. Несомненно, всё будет немного глубже, хоть и не очень. Лавстори будет - без неё никак.
Будет ещё один неигровой персонаж, на которого, по идее, и свалятся все остальные сильные эмоции и чувства. Неумелый писатель... Нет, больше ничего не скажу, не хочу спойлерить.
Геймплей
Ну, про геймплей я всё сказал ещё во введении. Генератор лабиринтов, битвы, для которых стоит использовать немного тактики, разные характеристики, экипировка и оружие в каждом новом прохождении. Я пока не знаю, что мне сделать удастся, а что нет, и как хорошо всё получится
(Я не строю надежд, что получится шедевр - я не настолько оптимистичен и амбициозен).
Но проект, я не думаю, что брошу, ибо одну из самых сложных частей я сегодня
(04.05.11) уже сделал -
генератор лабиринтов на эвентах готов!
Постскриптум
Если интересно, могу вкратце рассказать способ его работы. Полностью приводить ничего не буду. Полную версию алгоритма можно будет найти в самой игре после завершения (или демке, если не сдержусь или откажусь от создания):
Каждый этаж представляет собой поле 5х5. И каждой клетке соответствует переменная, в которой содержатся её выходы и номер набора предметов интерьера. Выходы записываются с помощью бинарного кода. Если есть выход влево, то это 1. Если вниз - то 2. Если вправо, то 4, и если вверх, то 8. Итого 15 комбинаций. Нужно пятнадцать карт с различными комбинациями. А выбрать карту, на которую телепортируешься, с учётом переменных несложно.
Основной вопрос был в том, чтобы заполнить эти двадцать пять переменных. Не все они были задействованы, конечно, многие были равны нулю. Перед циклом генерации случайным образом с опорой на уровень сложности выбирается размер лабиринта в клетках - от 10 до 20 в среднем.
Итак, всё начиналось с точки с координатами X,Y - координатами карты, где находился игрок. В этой точке создаётся новая клетка со случайными выходами. Потом случайным образом, опираясь на количество выходов, выбирается направление движения. Потом начинается цикл. Случайным образом, опираясь на выходы в соседних клетках, создаётся новая клетка (причём, с вероятностью 1/3 она может игнорировать находящуюся рядом клетку и перезаписать её), но в том случае, если она пуста. После чего выбирается направление, опять же с опорой на наличие выходов в другую сторону.
В случае отсутствия доступных выходов (например, когда создаётся тупик, путь упирается в стену или ограничен соседними клетками) генерация текущей клетки происходит вновь. Если опять не удалось найти новое направление, то начинается поиск так называемых "незакрытых" клеток - то есть тех, у которых со стороны выхода в качестве соседа находится пустая клетка, - и генерация продолжается уже оттуда. Если не удалось найти незакрытых клеток, поле очищается и генерируется заново.
В тот момент, когда количество созданных клеток становится равным размеру лабиринта, основной цикл генерации прекращается и начинается завершающий цикл генерации. Рядом с каждым из незакрытых входов создаётся тупик - клетка, не имеющая выходов кроме тех, что необходимы для закрытия.