Создайте несколько уровней и обрушьте на них внешнюю стену.

Цели

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

Как я собираюсь это сделать?

Я нахожусь в той точке, где у меня есть способ сделать несколько стабильных уровней, которые не вызовут сбоев, нарушающих игру. Мой grid_manager может использовать любой текстовый файл и генерировать уровень.

Итак, я хочу, чтобы на внешней стороне любой карты, которую я делаю, было кольцо стен, и я хочу, чтобы на внешнем крае этой карты была супер стена. Двигаясь вперед, супер стена будет совершенно непроходимой ни при каких обстоятельствах.

Первое, что я собираюсь сделать, это создать спрайт и префаб суперстены.

Затем я напишу быстрый скрипт на Ruby, чтобы добавить кольцо стен и теги суперсемей в свой файл пола. После этого я сделаю несколько этажей и сохраню их в своей среде Unity.

Спрайт Super Wall

Вот и все. Простой спрайт-заполнитель super wall.

Кстати, я немного подумал об оформлении этой игры. Что касается конечного продукта, я думаю, что постараюсь избежать стиля ретро-пиксель-арт. Я могу использовать пиксели, но если я это сделаю, они будут такими крошечными:

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

Хорошо, я превратил свой спрайт суперстены в сборный, так же, как я сделал все остальное в сборном.

Обновите grid_generator, чтобы увидеть тег суперстены

Я обновил свой grid_generator, чтобы он принял новый тег «x» и разместил там суперстену.

Этот код - ужасный беспорядок, но я, вероятно, исправлю его позже. По сути, он просто создает новый super_wall из каталога prefab и помещает его на экран и в модель. Он также помещает туда пол, так как я хочу, чтобы под стенами всегда был пол.

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

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

На мой форматтер пола с рубином

Я хочу, чтобы мой форматировщик пола на Ruby принимал текстовый файл (как и мой генератор Unity C #), а затем очищал теги, чтобы сгенерировать другой текстовый файл, который будет более механически законченным уровнем.

Возьмем, к примеру, мой тестовый уровень:

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

Это простой алгоритм:

Поскольку ни один из моих уровней не будет больше 300x300, и это средство форматирования, вероятно, не будет работать во время игрового процесса, я просто ударил его вместе с полным игнорированием производительности.

Вот короткое видео о Ruby Formatter в действии:

Я пошел дальше и также уменьшил масштаб всех плиток. Вот мой недавно отформатированный уровень в игре:

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

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

Хорошие и плохие новости

Хорошая новость заключается в том, что моя новая тестовая сетка игровых объектов, кажется, не вызывает проблем с производительностью после загрузки. Я надеюсь, что единство достаточно умен, чтобы знать, что подавляющее большинство этих объектов не меняется и, следовательно, не нуждаются в перекрашивании. Кажется, это так.

Плохая новость заключается в том, что моя тестовая сетка составляет ~ 32x 50, и для первой загрузки на экран требуется ~ 1,5 секунды.

Если я увеличу масштаб, начальную загрузку игры, вероятно, придется преобразовать в полосу загрузки или потребуется короткий период загрузки ~ 5 секунд от одного уровня к другому. Посмотрим.

Давайте проведем стресс-тест

Я пошел дальше и создал исключительно большой уровень.

Этот уровень ~ 160 х 160

Он загружается примерно за 3 секунды, и опять же, после загрузки нет проблем с производительностью. Это фантастическая новость.

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

Завтра

На завтра, думаю, я постараюсь сделать так, чтобы персонаж мог путешествовать с одного этажа на другой. До скорого.