Создайте несколько уровней и обрушьте на них внешнюю стену.
Цели
Давайте воспользуемся тем, что я сделал до сих пор, чтобы сгенерировать несколько базовых уровней, которые будут использоваться для дальнейшего производства.
Как я собираюсь это сделать?
Я нахожусь в той точке, где у меня есть способ сделать несколько стабильных уровней, которые не вызовут сбоев, нарушающих игру. Мой 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 тестовых уровня, которые я буду использовать в следующих функциях. Сегодня был легкий день, и я очень доволен.
Завтра
На завтра, думаю, я постараюсь сделать так, чтобы персонаж мог путешествовать с одного этажа на другой. До скорого.