1 еу
Модели блоков2014-05-08 15:24:59
Введение
Не так давно в статье Скелетная анимация рассказывалось о новом движке для мобов, который позволяет использовать модели и анимацию из программы CraftStudio. В этой же статье речь пойдет об этом же самом движке, но уже адаптированном для отрисовки и анимации некоторых блоков.
Рендер мира в Minecraft
На картинке ниже представлена архитектура стандартного цикла отрисовки мира в Minecraft:
Небольшое пояснение к схеме. Как известно весь мир Minecraft физически состоит из чанков 16х16х128 блоков. Однако в движке рендеринга он разбивается еще на 8 частей по вертикали, т.е. на регионы с размерами сторон 16х16х16 блоков. Далее, на первом этапе (который выполняется только тогда, когда в регионе изменились какие-то блоки) происходит отбор блоков имеющих собственные модели, которые помещаются в список ModelList. Все остальные блоки конвертируются и заносятся в память GPU в виде одной единственной функции, последующие вызов и выполнение которой происходит очень и очень быстро.
Собственно отрисовка (скорость которой и измеряется в FPS) происходит на втором этапе. Каждый из регионов 16х16х16, полученных на этапе подготовки, проверяется на видимость на экране (т.е. находится в поле зрения игрока) и если он виден, то для него вызывается ранее созданная функция GPU. Затем уже происходит перебор всех блоков из ModelList и если они расположены не слишком далеко от игрока, то они так же отрисовываются на экране со своими моделями.
И того, если мы хотим использовать вместо стандартных моделей наш движок, то достаточно заменить блок, в котором рендерится модель (на схеме он называется "Стандартная отрисовка OpenGL") и задача будет выполнена. Однако мы пошли чуть дальше и задались вопросом: а что если попробовать отрисовку моделей на нашем движке сделать двух типов - одну с использованием стандартных функций OpenGL (то, что в нем уже было и что используется для отрисовки мобов), а вторую с использованием формата, в котором рисуются все остальные блоки и который понимает "Конвертер в формат GPU" (см. схему)? Тут же встает и еще одна проблема: после попадания в GPU внешний вид блока менять уже нельзя и никаких открывающихся крышек или выдвигающихся ящиков там быть не может.
Решение проблемы
Поскольку все модели в нашем движке представлены отдельными объектами, структура которых у всех одинакова, и различаются они лишь количеством прямоугольников в них, то сделать два режима отрисовки не составило никаких проблем. А вот вторая проблема немного сложнее. Но и ее удалось решить. Чтобы блок не утратил способность к анимации было решено в статическом состоянии рисовать его средствами GPU (т.е. так, как будто он обычный блок без своей собственной модели), а в состоянии анимации (открытие крышки, выдвижение ящика) средствами OpenGL (т.е. также, как и раньше). Кроме того - дополнительным бонусом мы получили корректное освещение блоков на новом движке.
Попробуем же теперь отрисовать примерно ~3800 ящиков обоими движками и сравним результаты:
Можно заметить, что FPS с использованием старого(слева) рендера и нового(справа) для отрисовки ящиков отличается в 3 раза. Ящики не светятся как лампочки и не исчезают при удалении игрока от них. В среднестатистических хранилищах с парой сотней ящиков падения FPS практически не будет заметно вовсе.
В заключении несколько скринов из студии с готовыми моделями и анимациями блоков:
Не так давно в статье Скелетная анимация рассказывалось о новом движке для мобов, который позволяет использовать модели и анимацию из программы CraftStudio. В этой же статье речь пойдет об этом же самом движке, но уже адаптированном для отрисовки и анимации некоторых блоков.
Рендер мира в Minecraft
На картинке ниже представлена архитектура стандартного цикла отрисовки мира в Minecraft:
Небольшое пояснение к схеме. Как известно весь мир Minecraft физически состоит из чанков 16х16х128 блоков. Однако в движке рендеринга он разбивается еще на 8 частей по вертикали, т.е. на регионы с размерами сторон 16х16х16 блоков. Далее, на первом этапе (который выполняется только тогда, когда в регионе изменились какие-то блоки) происходит отбор блоков имеющих собственные модели, которые помещаются в список ModelList. Все остальные блоки конвертируются и заносятся в память GPU в виде одной единственной функции, последующие вызов и выполнение которой происходит очень и очень быстро.
Собственно отрисовка (скорость которой и измеряется в FPS) происходит на втором этапе. Каждый из регионов 16х16х16, полученных на этапе подготовки, проверяется на видимость на экране (т.е. находится в поле зрения игрока) и если он виден, то для него вызывается ранее созданная функция GPU. Затем уже происходит перебор всех блоков из ModelList и если они расположены не слишком далеко от игрока, то они так же отрисовываются на экране со своими моделями.
И того, если мы хотим использовать вместо стандартных моделей наш движок, то достаточно заменить блок, в котором рендерится модель (на схеме он называется "Стандартная отрисовка OpenGL") и задача будет выполнена. Однако мы пошли чуть дальше и задались вопросом: а что если попробовать отрисовку моделей на нашем движке сделать двух типов - одну с использованием стандартных функций OpenGL (то, что в нем уже было и что используется для отрисовки мобов), а вторую с использованием формата, в котором рисуются все остальные блоки и который понимает "Конвертер в формат GPU" (см. схему)? Тут же встает и еще одна проблема: после попадания в GPU внешний вид блока менять уже нельзя и никаких открывающихся крышек или выдвигающихся ящиков там быть не может.
Решение проблемы
Поскольку все модели в нашем движке представлены отдельными объектами, структура которых у всех одинакова, и различаются они лишь количеством прямоугольников в них, то сделать два режима отрисовки не составило никаких проблем. А вот вторая проблема немного сложнее. Но и ее удалось решить. Чтобы блок не утратил способность к анимации было решено в статическом состоянии рисовать его средствами GPU (т.е. так, как будто он обычный блок без своей собственной модели), а в состоянии анимации (открытие крышки, выдвижение ящика) средствами OpenGL (т.е. также, как и раньше). Кроме того - дополнительным бонусом мы получили корректное освещение блоков на новом движке.
Попробуем же теперь отрисовать примерно ~3800 ящиков обоими движками и сравним результаты:
Можно заметить, что FPS с использованием старого(слева) рендера и нового(справа) для отрисовки ящиков отличается в 3 раза. Ящики не светятся как лампочки и не исчезают при удалении игрока от них. В среднестатистических хранилищах с парой сотней ящиков падения FPS практически не будет заметно вовсе.
В заключении несколько скринов из студии с готовыми моделями и анимациями блоков:
Подписывайся на наши соц сети
Чтобы быть в курсе всех новостей проекта и принимать активное участие во всех его событиях подписывайся на наши соц сети:
Расскажи друзьям
Если тебе понравилось это обновление, то обязательно рассказывай о нём друзьям
2й. Перестройте тогда и лбп он уж совсем старый... На нано могу конешно зайти поглазесь написать оу круто но на етом екскурсия закончится пойду на лбп и забуду. Лучшеб делать обновки для всех сервов =3
И будет тоже самое что с новайсом.Пусть так и будет как было.
Dr_WeB, ты уверен в этом на 100%? Я отстроил рынок Лбп. Значит и спавн под стиль рынка запилить хочу.
Я за den522811 Пусть дадут мерку
Second.
Я так понимаю, что сейфы будут тоже с анимацией?! И этот движек вообще только на зевсе?
Я так понимаю, что сейфы будут тоже с анимацией?! И этот движек вообще только на зевсе?
Да, сейфы будут с анимацией.
Прикольно
Позже на всех серверах, пока на Зевсе, да.
:0 Нано впечатлил ))
круто, молодцы.
Отлично, старая видеокарта снова в деле
Норм
ничего не понял
Суть в том, что после обновления в местах большого скопления шкафов и тому подобного игра больше не будет тормозить.
Норм
Круто
успел , написать среди первецов. Щас почитаем чо тут как.
Скоро роботы ураааааааааааааа!
Когда интересно будет обнова на роботов?
Есть.
Красивый спавн будет).
Отлично
Зашибись.
Это следующее обновление?
Это следующее обновление?
Меха? Отлично, теперь раскатывание игроков примет истинную форму
А так же, я очень надеюсь...
Разведка сообщает...
Это будущий спавн Nano
Разведка сообщает
Как и думал, "ниочинь"...
Прикольно!)
я воше не чё не понел что ето?
Да ну прикольно будет :3, 3D няшность
после "разведка сообщает" мне страшно))
Интересно, как с новым движком будут отрисовываться блоки - производные структур ( Частица БАКа, вызывающая лаги если их много. Уран, синтезирующийся на урановых фабриках)
Частица бака - это не блок, это энтити.
Класно,это типо обнова на 9 мая?
Раздел "Разработка". Если вы в этом совершенно ничего не понимаете, можете просто пройти мимо, воздержавшись от комментариев вроде "ничего не понял".
Крутяк).
Чё за роботы?
скорее всего скоро будет первая миссия!
На следующую обнову 2 планету откроют админ говорил.
Как раз хотел предложить убирание неудобных моделек сундуков/шкафов с помощью соответствующей настройки(у больших хранилищ жутко тормозит), и тут такая новость.
мне больше интересно , что там за робот , быть может новая текстура андройда или что-то новенькое ?
больше походит на гварда
Для тех кому интересно:
3 последних скриншота - это спавн сервера Нано.
Вот с карты: [ 7,-1 ].
Достоверность информации 10 из 10.
3 последних скриншота - это спавн сервера Нано.
Вот с карты: [ 7,-1 ].
Достоверность информации 10 из 10.
Прикольно
Не плохо)
Все круто. Но уже перебор идет с этими новымы робортами(или что это)
Хороший спавн на нано будет
Заинтересовал новый спавн. В особенности - хренолетик из колды.
admin, Вы обещали открытие аналогичного сервера Zeus, только мирный так вот сколько ждать, больше месяца?
Для сервера все готово за исключением некоторых незначительных штрихов. Все новые планеты мы делаем в чем-то уникальными, поэтому лучше повременить с запуском, но зато придать свою особую атмосферу.
У вас там своя атмосфера?
круть
Довольно интересно.
Разведка ваша меня заинтересовала!
Меня тоже заинтерисовала!
С какой скоростью работает администрация?
Со скоростью света!
Согласен, только была обнова и тут новая та еще загружается)
Крутякккк))
А есть ли шанс, что за счет новых разработок будете доработаны и, наконец, введены в игру наноблоки?
Больше всего жду эту фикчу
Один наноблок это 512 обычных блоков, соответственно для нормальной производительности весь цикл, который показан на картинке выше, должен быть ускорен в 500 раз. Поэтому сегодня можно вести речь только и блоках со стороной в 2, максимум 4 куба.
=(
Так может их стоит урезать до разрешения 4х4? Все равно возможностей для творчества и детализации откроется просто огромное количество.
Согласен. 16*16 не нужны особо, не с чем играться. А так будет все же лучше, чем никак.
надо пробовать, тестировать, смотреть производительность
хм, а как же то старое видео, в котором тестировалась производительность замка в сравнении с этим же замком, но в наноблоках? (за основу был взят хогвартс вроде бы)
или в том видео был какой-то секрет?
(по видео создавалось ощущение мол:вот обычный мир, вот наноблоки, сильных проседаний фпс нет, радуйтесь!ждите!надейтесь!)
или в том видео был какой-то секрет?
(по видео создавалось ощущение мол:вот обычный мир, вот наноблоки, сильных проседаний фпс нет, радуйтесь!ждите!надейтесь!)
Так, а кто сказал, что производительность это только лишь FPS?
admin, а робот на второй картинке будующего спавна нано , это как декор будет или какая то реальная машина , что она будет делать ?? А может в нее можно сесть и управлять как в TITANFALL )))Вот было бы круто, типо такое кибер тело ))
Это просто феерическое наслаждение смотреть как быстро и хорошо идет разработка наших серверов,а вот роботы интересно)
Супер!
Почему будущий спавн нано похож на какую-либо точку респа в отстроенных городах?И то,бывает и лучше.
А мне кажется он просто идеально вписывается в название сервера, т.к он сделан для тестов разработок, вид спавна смахивает на некую Базу/лабораторию.
именно так
Хорошо
А я то думал, что хоть на день победы будет что-то интересное!
Прикольно)
А когда новые серверы откроют?
А когда новые серверы откроют?
Админ,анимацию других предметов введут?
Или объем?!
Или объем?!
Всё будет, терпения.
как же надоели с новыми сервами..=_= Вы ходябы рынки на все сервера добавте, в жопу нам новые сервера, нужно разобраться с серверами где вообще онлайн почти равен 0
_CMW_ писал(а):
как же надоели с новыми сервами..=_= Вы ходябы рынки на все сервера добавте, в жопу нам новые сервера, нужно разобраться с серверами где вообще онлайн почти равен 0Дурочек?Это новый спавн нано(будущий).
Напишите ли вы апи под наш сервер, для конвертирования любых моделей и последующего перенесения их в майнкрафт?
Конвертирование из чего во что?
Наверное, он имеет в виду превращение обычных 3D моделек(от 3DS MAX, например) в xml описание, пригодное сразу для добавления на наш сервер.
Да.
супер
Админ, а почему не оптимизировать прорисовку воздуха на карте? То есть сделать его не как блок, а как пространство. Как-бы это сложно ни было, это возможно даже без затрагивания движка, и это я знаю не по наслышке. Я делал это еще на beta 1.8.1, соответственно производительность повысится, а в пространстве станет больше возможностей. Например ставить рычаг, кнопку и факел на угол без каких либо проблем. Если конечно это осуществить. "-" нагрузки из-за воздуха. "+" производительности.
Разве воздух является блоком как таковым? Он же лишь условность.
А вы о чем? Воздух вообще не вызывает никаких процедур рендеринга. Куда уж оптимальнее?
Я я же сказал, что появится больше возможностей.
Воздух - пустая ячейка массива. Никакого рендера давно нету.
Подробнее, ибо что-то я сомневаюсь об том, что вы вообще понимаете о реализации этой части игры, на что намекают ваши слова:
Я делал это еще на beta 1.8.1
Подробнее, ибо что-то я сомневаюсь об том, что вы вообще понимаете о реализации этой части игры, на что намекают ваши слова:
а в пространстве станет больше возможностей
А что это за робот на второй картинке ?)
Если это будет следующей обновой ( появятся роботы) , то это будет какой-то TITANFALL ))) , особенно если в этих роботов можно будет садиться (инженеру))))
Если это будет следующей обновой ( появятся роботы) , то это будет какой-то TITANFALL ))) , особенно если в этих роботов можно будет садиться (инженеру))))
Немного не по теме, но... В КМ курицы тоже исчезают, если их будет слишком много на 1 чанк?
Мне все нравятся,админ давай эти блоки на все сервера
Торговку голд на Новайс введите, Или бендера на недельку туда завезите, а то люди бегут с него.
Разберитесь с основными серверами, а красоту оставьте на потом.
Разберитесь с основными серверами, а красоту оставьте на потом.
Я с тобой согласен.А Novice наверное давно заброшенная админами планета.
Никто с него не бежит, бендер там не нужен, а вот торговка голд не помешала бы.
Кому не нужен а кому позарез. Сервер вроде как для новичков, ок. Но когда-то человек перестает быть новичком, хочется перейти на нормальный сервер, где есть биржи, никель, торговка голд и прочие вещи, присущие нормальным серверам. А никак этот переход и не выполнить, экспорт не работает. С нуля то начинать не хочется. Хоть раз в пол года бы давали возможность пересылки.
Круто
Как сделать safe
сУПЕР
нормас