No Man’s Sky — это игра, посвящённая космическим приключениям и выживанию. Теоретически в игре есть 18 446 744 073 709 551 616 планет, которые могут исследовать игроки, что практически бесконечно. Кроме того, поскольку игра использует алгоритмы для генерации планет, она не занимает много места на диске и может полностью работать в автономном режиме.
В настоящее время наиболее активным онлайн-сообществом является Baidu Tieba: No Man’s Sky Tieba.
После выхода No Man’s Sky я увидел множество статей и постов, посвящённых анализу этой игры. Авторы этих постов были как технически подкованными игроками, так и теми, кто не разбирается в технологиях, а также опытными геймерами. После прочтения мнений этих экспертов я, как разработчик, решил лично изучить эту удивительную игру с алгоритмами.
На самом деле вся вселенная генерируется случайным образом и остаётся неизменной, но положение каждой звёздной группы или системы фиксировано и имеет абсолютный идентификатор и координаты. Поэтому мы можем назвать их и загрузить на сервер в No Man’s Sky.
Все объекты во вселенной No Man’s Sky создаются из одной координатной точки случайным образом, но этот случайный процесс не является истинно случайным, а псевдослучайным, с определёнными правилами внутри.
Система животных в No Man’s Sky не очень хорошо проработана, и планеты слишком однообразны, явно являясь незаконченным продуктом. Как разработчик H5, я могу создать подобный полуготовый продукт с алгоритмом за неделю.
Разработка заняла менее 48 часов.
Прежде всего, стоит отметить, что принципы технологии, используемые в No Man’s Sky, практически идентичны тем, что я использовал в своём демонстрационном проекте, от создания вселенной до генерации звёздных систем и даже цветов планет.
Теоретически мой демонстрационный проект содержит 3,13 * 10^30 звёздных групп, каждая из которых имеет 150 постоянных звёздных систем, в среднем по 7 планет в каждой. Это означает, что существует примерно 3,29 * 10^32 планет, что может немного отличаться от количества планет в No Man’s Sky. Честно говоря, я не уверен, какое число больше.
Камера и вселенная разделены, и для рендеринга фиксированной области вселенной используется знакомый всем процесс генерации. Можно свободно перемещаться по всей вселенной с помощью клавиш WASD.
Проект создан с использованием HTML5 Canvas 2D API без использования сторонних игровых движков на основе холста. Весь код написан вручную, и основной код не превышает 600 строк.
Текущая версия включает рендеринг всей карты вселенной и простую визуализацию постоянных звёздных систем (скорость вращения, цвет, размер и радиус орбиты).
Кроме того, в процессе разработки этого демонстрационного проекта я приобрёл новые знания и понимание алгоритмов.
Клавиатурные клавиши: W A S D (соответственно вверх, влево, вниз и вправо). Мышь: дважды щёлкните по планете, чтобы войти в постоянную звёздную систему.
http://case.tiesec.org/noMansSky2d/
Исходный код можно скачать и изучить.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )