Сообщения, созданные пользователем slaytor
17 апреля 2017 20:01
Ни разу не делал ничего подобного, но представляю себе примерно такую схему обобщенно:
- есть заранее отрисованные объекты (все что есть вообще), хранящиеся на сервере по отдельности
- 3х-мерный массив карты с адресацией по осям координат, где лежит тип объекта, то есть json, где по xyz указан тип объекта и его углы направления
- процедура генерации этого массива, которая учитывает свойства каждого типа объекта и их совместимости для склеивания, наложения и т.п.
- сфера видимости камеры помноженная на 1.2 (эта цифра зависит от скорости движения)
- в памяти нужно всегда держать только эту сферу, в виде куска из общего json
- серверный обработчик, получающий абсолютные координаты камеры и отдающий список типов объектов, которые присутствуют в сфере, где координаты камеры в центре, по одному (только в одном экземпляре)
- клиентский обработчик, который грузит в кэш объекты из списка (которых там еще нет), то есть в кэше, всегда лежат объекты в единичном экземпляре, которые присутствуют в сфере
- серверный обработчик, получающий абсолютные координаты камеры и отдающий сферу (кусок json), где координаты камеры всегда в центре
- клиентский обработчик, который обновляет с сервера json (сферы) при движении
- клиентский обработчик, контролирующий чтобы все из сферы было отображено на сцене и удалено лишнее (что за пределами)
- к примеру, есть 4 уровня детализации: с 0 до 0.3 (радиус сферы) - 1 уровень … и с 0.9 до 1.2 - 4 уровень детализации (самые примитивные lod)
Пожалуйста, поправьте, если я что-то не учел и схема не рабочая или дополните или покритикуйте.
- есть заранее отрисованные объекты (все что есть вообще), хранящиеся на сервере по отдельности
- 3х-мерный массив карты с адресацией по осям координат, где лежит тип объекта, то есть json, где по xyz указан тип объекта и его углы направления
- процедура генерации этого массива, которая учитывает свойства каждого типа объекта и их совместимости для склеивания, наложения и т.п.
- сфера видимости камеры помноженная на 1.2 (эта цифра зависит от скорости движения)
- в памяти нужно всегда держать только эту сферу, в виде куска из общего json
- серверный обработчик, получающий абсолютные координаты камеры и отдающий список типов объектов, которые присутствуют в сфере, где координаты камеры в центре, по одному (только в одном экземпляре)
- клиентский обработчик, который грузит в кэш объекты из списка (которых там еще нет), то есть в кэше, всегда лежат объекты в единичном экземпляре, которые присутствуют в сфере
- серверный обработчик, получающий абсолютные координаты камеры и отдающий сферу (кусок json), где координаты камеры всегда в центре
- клиентский обработчик, который обновляет с сервера json (сферы) при движении
- клиентский обработчик, контролирующий чтобы все из сферы было отображено на сцене и удалено лишнее (что за пределами)
- к примеру, есть 4 уровня детализации: с 0 до 0.3 (радиус сферы) - 1 уровень … и с 0.9 до 1.2 - 4 уровень детализации (самые примитивные lod)
Пожалуйста, поправьте, если я что-то не учел и схема не рабочая или дополните или покритикуйте.
04 апреля 2017 08:06
Привет.
Только начинаю изучать возможности движка, подскажите пожалуйста,
очень интересует возможность создавать огромные безшовные карты.
Т.е. можно ли путем загрузки и выгрузки ресурсов сделать огромный мир и чтобы это не сказалось на требованиях к памяти и т.п.?
На пример, планету на миллион квадратных км.
Если такое можно, подскажите куда смотреть?
Только начинаю изучать возможности движка, подскажите пожалуйста,
очень интересует возможность создавать огромные безшовные карты.
Т.е. можно ли путем загрузки и выгрузки ресурсов сделать огромный мир и чтобы это не сказалось на требованиях к памяти и т.п.?
На пример, планету на миллион квадратных км.
Если такое можно, подскажите куда смотреть?