1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lisniuse-nomanssky2D

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 22:59 269ff93

Введение

Что такое No Man's Sky:

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/

PS:

Исходный код можно скачать и изучить.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lisniuse-nomanssky2D.git
git@api.gitlife.ru:oschina-mirror/lisniuse-nomanssky2D.git
oschina-mirror
lisniuse-nomanssky2D
lisniuse-nomanssky2D
master