Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Вклады
                Кубы - Структура Блочного Мира

Кубы — Структура Блочного Мира

Опубликованно: 24.06.2017, 20:07
Последняя редакция, Andry: 25.06.2017 23:09

header

Этот фреймворк все еще находится в процессе разработки — я буду держать вас в курсе изменений. :)

Как гласит название: «Кубы(Cubes) — это основа для блочных-миров (также называемая« bloxel »или« minecraft-like »). Он предлагает простой способ добавления/удаления блоков, скины блоков, полезные инструменты и нужное пользовательское поведение. «Кубы» сами по себе не будут содержать инструментов для крафтинга или функциональные возможности для RPG, они будут только помогать вам управлять блочной системой.

Как все начиналось

Летом 2011 года я (destroflyer) запустил небольшой клон minecraft (как почти каждый jMonkey) — ничего особенного, я просто хотел создать небольшой блок, в котором игроки могут ходить, размещать или удалять блоки и сохранять эти карты , Это не занимало много времени до тех пор, пока я не наткнулся на batch-boxes-to-improve-performance, текстурный атласа и оптимизации сетки». К счастью, мне удалось заставить их хорошо работать, и даже сыграть несколько раундов с другом. Код был очень быстрым и грязным, и в это время началось обучение в университете. «Игра больше никогда не запускалась и была скрыта в папке jME-проектов — до недавнего времени.

Почти каждый два дня появляется новая тема на форуме, где люди говорят о «мирах блокселей», оптимизации сетки, дозировании и.т.д. … Когда начались дискуссии о графических интерфейсах GUI фреймворка(Nifty и его предстоящих альтернативах), я подумал: «Почему Разве вы не создаете блок-мир-структуру, которую люди могут легко использовать? :)

Я снова прочитал свой старый код (главным образом, управление куском и оптимизатор сетки) и начал кодировать этот фреймворк с нуля. Через несколько часов я смог сделал блочный-мир рабочим, и через 2 дня он работал уже так, как я и хотел.

На данный момент «блочный-движок» включает в себя все необходимые функции для мира, подобного minecraft, и даже несколько полезных инструментов (например, загрузка блоков из карт высот, шумов и.т.д.) — время публикации первого пред просмотра. :)

Как это работает

Вершинные буферы, UV-координаты, управление кусками, грани блоков, … … … … нет, просто шучу. :P Я думаю, все, кто знает об этой теме, знают, как работают bloxel-engine. И в случае, если вы этого не сделаете — Есть ооочень много тем об этом на форуме и даже в статьях в Интернете … Я не хочу все объяснять, это уже объяснялось людьми, которые могут сделать это намного лучше меня.

Тем не менее, вот основные сведения: Блоки объединяются в куски (например, 16x256x16 блоков), поэтому необходимо обновлять только соответствующие куски, когда блок добавляется/удаляется/что либо еще. Трудная вещь при рендеринге — только визуализировать видимые грани. Если у вас огромная гора блоков, вам нужно всего лишь отобразить блоки на поверхности. И даже в этом случае только грани, указывающие наружу. ;) Фреймворк делает все это для вас, не нужно беспокоиться. Вы, как пользователь, можете просто добавлять/удалять блоки по своему желанию, не зная о кусках, оптимизированных геометриях и.т.д.

⇒ Вы добавляете блок ⇒ Вы видите блок :)

Представление

Производительность на мой взгляд хорошая. В тестовом случае у меня была сцена с 1,350,000 блоков (в 4x1x4 кусках размером 16x256x16) и 20 движений блока в секунду — результат был 1200 FPS. Среднее время генерации оптимизированной геометрии для куска составляло 5 мс.

Конечно, есть случаи, когда каждая грань должна быть визуализирована. Но даже в самых тяжелых случаях у меня никогда не падал ниже 300-400 FPS, поэтому на этом этапе разработки это должно быть хорошо (подробнее о возможных улучшениях позже).

Применение

Достаточно скучные слова о теории. Вот как вы используете фреймворк. :) Это происходит в разных частях:

  1. Настройки
    1. Зарегистрируйте свои блоки
    2. Постройте свой блочный мир

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

Скриншоты

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

test_physics
etherblocks_third_person
wireframe_view
test_shapes
scene_mountains

Инструменты

Фреймворк предлагает несколько инструментов для вашей игры с блочным миром:

Дальнейшие улучшения / «Незавершенное производство»

Следующий список содержит вещи, которые еще не являются (!) частью фреймворка, но считаются полезными. Если у вас есть какие-то идеи о том, чего не хватает или какие могут быть интересной особенностью, пожалуйста, скажите мне и (надеюсь), это появится в списке дел. :)

  • Wiki: список включенных тестовых приложений (уроки, Карта высот, шум, модификации, …)
  • Wiki: список включенных тестовых данных (Assets, блоки, …)
  • Wiki: написать отсутствующие инструкции для некоторых инструментов (например, как создать пользовательские фигуры блоков)
  • BlockTerrain: поддержка динамического подсчета кусков (автоматически добавлять куски, если нужно добавить блок находящийся за пределами загруженного ландшафта)
  • Lights: Реализуйте эффективный способ вычисления, если на блок влияние «светового блока» и соответственно модифицирует его текстуру

Где это доступно?

Этот фреймворк доступен как плагин в jMonkeyEngine SDK (Сервис → Подключаемые модули), так что пользователи могут легко загружать и интегрировать библиотеку.

Надеюсь, эта вещь поможет некоторым из вас, ребята, когда она будет выпущена. Любые идеи, подсказки и комментарии по этому поводу будут ценны. :)


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.