Привет!
Интересует данная тема. Погуглил почитал. Стало интересно. Мир ограничивается размером float. Под плавное перемещение в 3Д пространстве необходимо иметь хотя бы 3 числа после запятой. Получается, что мир при этом можно создать 10х10 км ?
Ну т.е. получается:
1. 123456.7 = 1000х1000 км (аццкая плавность движения - тобишь рывки)
2. 12345.67 = 100х100 км ( плавность лучше, но могут наблюдаться рыки)
3. 1234.567 = 10х10 км(хорошая плавность, но маленькое пространство)
Внимание вопросы:
1. Всё ли я правильно понял ?
2. Если я всё правильно понял, как решаются и решаются ли подобные проблемы ? (допустим мне нужна сцена 50х50 км)
Спасибо.
Gladiator
> как решаются и решаются ли подобные проблемы ?
Решаются частями.
Misanthrope
> как решаются и решаются ли подобные проблемы ?
Естественным образом: тормоза не дадут сделать слишком большой мир :D
Gladiator
Такие проблемы решаются так называемой асинхронной догрузкой мира, в рамкой юнити это LoadLevelAdditiveAsync.
А вообще, чтобы все не померло, проще делать через AssetBundle, поскольку их можно выгружать из памяти.
Fate Li
А вот, допустим, у меня что-то видно за пределами 10 км диапазона... Я должен заранее подгрузить соседние области ?
Gladiator
> Внимание вопросы:
> 1. Всё ли я правильно понял ?
Да. Ну может быть и не 10х10, но порядок чисел правильный.
> 2. Если я всё правильно понял, как решаются и решаются ли подобные проблемы ?
Разделением мира на большие квадраты. При переходе игрока из одного квадрата в другой, все объекты автоматически сдвигаются так, чтобы центр мировой системы координат находился в новом квадрате.
Ещё во всяких космических программах при перемещении между планетами и прочими телами обычно вместо того чтобы двигать камеру, двигают сами тела вокруг камеры, так чтобы она всегда находилась в центре мировой системы координат.
Gladiator
> А вот, допустим, у меня что-то видно за пределами 10 км диапазона... Я должен
> заранее подгрузить соседние области ?
Именно. Загрузку можно спокойно осуществлять в фоне. В Unity для этого есть класс WWW.
В целом 10 на 10 км, это огромнейший мир, просто представьте что вы пешком идете 10км и сколько на пути вы можете повстречать объектов).
Fate Li
> В целом 10 на 10 км, это огромнейший мир
Думаю топикастер пишет космический симулятор, а там мегапарсеки блин:)
Misanthrope
> Думаю топикастер пишет космический симулятор, а там мегапарсеки блин:)
Для космосима вряд ли кто додумался бы генерить кубы со стороной 10км, ибо пустых там будет триллионы). Оно там по другому делается).
Для космосима точность в миллиметрах не нужна ;)
а правда интересно, что за игра предполагается, если 50 км с разрешением 1 мм.
demax
> а правда интересно, что за игра предполагается, если 50 км с разрешением 1 мм.
Не принципиально. Представь, ты переехал в игре в другое поселение за 50км, а у тамошних жителей глаза в орбитах дёргаются во время анимации. На больших расстояниях от центра координат первым делом страдают анимация и физика.
alexzzzz
> Представь, ты переехал в игре в другое поселение за 50км
да я час тока ехать буду)) нужно ли это? почему не сцену новую загрузить?
Можно не 50км, а 10км, и не переехать, а перелететь на вертолёте или метле.
> почему не сцену новую загрузить?
Потому что раздражает.
Скажем так, тема космическая это да.. Пока точно сказать размер мира сложно, но он будет замкнутым и в нём будут происходить бои по определенным правилам.. Но т.к. у нас космические корабли, то двигаться они будут быстро, размер некоторых из них, тоже может быть не маленький.. Мне кажется для космического корабля пролететь 10 км, это разогреть двигатель просто )
Тема в архиве.