|
Игры / Games Общий игровой форум |
27.06.2010, 04:00
|
#46
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Infinity Pre-Alpha
Thank you, Mister Genious, you've just saved our Universe!
[sarcasm]
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
27.06.2010, 10:09
|
#47
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Infinity Pre-Alpha
Сообщение от Nex
По поводу очень больших пространств(?)
А что если разработчики делают не реальные размеры, а "наугад" допустим дистанция между планетами 2-4,000 единиц, а размер игрока 0,001 единиц и получаются не очень большие цифры.
|
Да нет, на таких маленьких размерах с камерами будет тяжело работать, тут решение другое. Надо смотреть в сторону реализации GPS приемников, которые визуализируют в 3D свои карты.
Хотя я не изучал это направление, но погу предположить что пространство разбито на определенные отрезки по всем осям и координаты каждого куба (пускай это будет куб) определяются целыми числами, а внутри каждого куба берутся свои локальные координаты в определенных масштабах, например для float a бы взял -100 000... +100 000, теперь умножим на максимальное значение int (точне диапазон от - до +) для определения квадранта = 200 000 * 4 294 967 295 = 858 993 459 000 000 мтров по каждой из осей. Внушительные размеры получаются... а если взять тип Long...
Правда придется писать свою математику которая пересчитыват такие координаты для всех объектов. Но так как у них есть математическая модель, то скорее всего это у них уже реализовано, ну возможно другим способом, т.к. я просто предположил как это может быть...
|
(Offline)
|
|
27.06.2010, 10:13
|
#48
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Infinity Pre-Alpha
Сообщение от Nex
По поводу очень больших пространств(?)
А что если разработчики делают не реальные размеры, а "наугад" допустим дистанция между планетами 2-4,000 единиц, а размер игрока 0,001 единиц и получаются не очень большие цифры.
|
Если там будет 200 миллиардов звезд, даже с размером игрока в 0.001 единиц, делая статичный центр координат в условном центре галактики, на окраинах у тебя начнутся глюки с полигонами, бо видюха такие огромные числа, да еще и с большой частью после запятой не переварит нормально. Кстати, идея привязать центр координат к кораблю игрока для нормального отображения моделей в любой точке галактики родилась из наблюдения за EVE. Если в игре указать камере следить за чьим-то кораблем, который собирается совершить прыжок к другой станции этой же системы, то во время прыжка за несколько секунд, пока камера еще следит за кораблем, можно заметит как его на удалении начинает страшно колбасить по части геометрии (и это не LOD, так как он вычисляется относительно камеры, а камера рядом с кораблем до последнего), явно видно как скачут полигоны из-за больших значений координат. Поэтому я решил, что в ивке либо центр координат привызан к кораблю игрока, либо он свой для каждой "локации" (например рядом со станцией или воротами) и перемещается к следующей локации при варпе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2010, 10:22
|
#49
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Infinity Pre-Alpha
А центр координат как подмечено будет находится в цента того куба, в котором сейчас находится игрок.
|
(Offline)
|
|
27.06.2010, 10:25
|
#50
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Infinity Pre-Alpha
Сообщение от pax
А центр координат как подмечено будет находится в цента того куба, в котором сейчас находится игрок.
|
Ну да, как-то так.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2010, 10:41
|
#51
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Infinity Pre-Alpha
Хотя я даже зря взял отрицательный диапазон float, т.к. координаты квадрантов и так будут иметь свой знак. Пусть будет 0...200000
Допустим необходимо отрисовать квадрант игрока и все квадранты вокруг него, т.е. например игрок находится в квадранте Q1(10,12,-10) и имеет координаты P1(59000, 30200, 4000) а например база находится в координате Q2(11,11,-9) и имеет координаты P2(9000, 200, 40000), то вычисляем локальную позицию базы так PL2 = (Q1-Q2)* 200000 + P2 = (-1, -1, -1) * 200000 + (9000, 200, 40000) = (-191000, 199800, -160000)
А координаты игрока не изменятся, т.к. это будет текущий квадрант.
UPD: Посмотрел на расчеты и понял, что предложенный в начале диапазон лучше подходит, т.к. координаты внутри текущего квадранта будут "лучше" т.к. будут иметь меньший порядок. В итоге получается, что для 27 квадрантов (куб 3х3х3) максимальная координата будет ±300000 что вполне устраивает.
Еще я посчитал какие расстояния можно получить при использовании типа long - приблизительно 3 689 348 814 741 910 322 000 000 метров по каждой из осей.
|
(Offline)
|
|
27.06.2010, 13:21
|
#52
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Infinity Pre-Alpha
У меня смутное подозрение, что billion можно ещё перевести как миллион
P.S. где-то слышал, что тут какая-то фигня с переводом.
P.P.S. Гугл переводчик говорит что это миллиард
Нашел!
Английский перевод - миллиард
Американский- в 10 в 12 степени
Если предположить, что на планету нужно выделить 4 числа по 8 байт (координаты и тип), то на описание 1 миллиарда планет требуется 32 гигабайта памяти. Умножим на 200 : 6.4 терабайт памяти. Вполне реальная для сервера цифра.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2010, 16:16
|
#53
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Infinity Pre-Alpha
И как уже было сказано мной, наверняка информация о планетах вокруг звезды создается в момент, когда в неё кто-нибудь прилетает. Возможно, что и звёзды не сразу все записаны, а только те, к которым можно прилететь из тех систем, где сейчас есть игроки. Таким образом получается совсем крошечный массив данных, в который новые звезды записываются по мере открытия возможности к ним прилететь.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
27.06.2010, 18:19
|
#54
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Infinity Pre-Alpha
На таких то технологиях, да Parkan Online... Случайная генерация планет уже есть, генерацию баз сделали еще в первом паркане, все это довести до ума и разнообразить... эх... ляпота бы была.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Amatsu за это полезное сообщение:
|
|
27.06.2010, 19:05
|
#55
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Infinity Pre-Alpha
На таких то технологиях, да Parkan Online...
|
Даааа... Крутая игра была. Все части прошел по нескольку раз.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
27.06.2010, 23:41
|
#56
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Infinity Pre-Alpha
Сообщение от Igor
Если предположить, что на планету нужно выделить 4 числа по 8 байт (координаты и тип), то на описание 1 миллиарда планет требуется 32 гигабайта памяти. Умножим на 200 : 6.4 терабайт памяти. Вполне реальная для сервера цифра.
|
Вам не приходило в голову, что для получения координат любой из планет и ее типа так же может быть применен генератор "не случайных чисел". И хранить информации о каждой планете нафиг не нужно, а достаточно одного целого числа для генерации целого сектора какой-либо галактики (а то и целой галактики), содержащей в себе сотни тысяч звездных систем.
|
(Offline)
|
|
28.06.2010, 00:00
|
#57
|
|
Ответ: Infinity Pre-Alpha
чего объяснять человеку если он не понимает что источник энтропии для генератора случайных чисел можно задавать принудительно, получая при этом всегда одинаковые последовательности ?
при этом хранить чего либо о мире вообще не надо, нужно хранить информацию о игроках и том как они взаимодействуют с игровой вселенной
|
|
|
Эти 5 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
28.06.2010, 10:15
|
#58
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Infinity Pre-Alpha
Сообщение от pax
Еще я посчитал какие расстояния можно получить при использовании типа long - приблизительно 3 689 348 814 741 910 322 000 000 метров по каждой из осей.
|
С учетом того, что диаметр нашей галактики примерно 950 000 000 000 000 000 000 метров, то нам вполне хватит такого подхода для симуляции галактики Млечный путь. В нем как раз примерно 200 миллиардов звездных систем.
|
(Offline)
|
|
30.06.2010, 11:18
|
#59
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Infinity Pre-Alpha
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:13.
|