|
|
|
Железный канал: «C, С++» |
|
|
Dimaxx 985 EGP
Рейтинг канала: 8(868) Репутация: 204 Сообщения: 5757 Откуда: Северодвинск Зарегистрирован: 26.06.2002 |
|
ТехноМаг : |
Поэтому сверху и снизу я генерю дополнительные кластеры
|
Я выше написал как проще. 1 кластер с игроком в центре и фильтровать все, что не попадает в видимость (границы) кластера.
_________________ "Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Кажется нашел решение. Этот "кэш" появился из-за того, что я не знал, как можно у UE уже заспавненные элементы перебирать. Щас вроде разобрался как это устроить через Итераторы. Попробую переписать.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
В общем решение такое-же, к какому пришел Брабен в 91-92 годах.
Уменьшаем кол-во звезд в секторах до 75. Уменьшаем размер кластера (сейчас стоит 32768) в 27 раз (до 1214, а лучше я думаю до, 1024, ибо Power of Two).
Немного меняем алгоритм генерации, чтобы один пиксель текстуры соответствовал 9ти кластерам.
Геним 27 кластеров при старте, и при необходимости подгружаем/выгружаем по 9 штук за раз.
Профит.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
SecondShadow 365 EGP
Рейтинг канала: 6(372) Репутация: -4 Сообщения: 1454 Заблокирован Откуда: Бийск. Алтай. Зарегистрирован: 09.02.2008 |
|
Читал, читал. Что-то у вас не так. Не с программой, а с мозгами. Чего все так сложно то? Чего хотите от такой сложности?
добавлено спустя 2 минуты:
Млечный путь считаем в 3d астропульсом всем миром на видеокартах. Вам такая же точность нужна?
_________________ Склероз - классная болезнь, ничего не болит и новости каждый день.
Последний раз редактировалось: SecondShadow (22:17 12-10-2014), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
SecondShadow : |
Что-то у вас не так. Не с программой, а с мозгами.
|
Эм, а где тут сложности, простите?. Проще только с диска грузить, как Димакс посоветовал. Для сравнения http://www.jongware.com/galaxy1.html
Мой код может слегка медленнее, но в реализации попроще будет Как по алгоритму, так и по количеству строк.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (22:20 12-10-2014), всего редактировалось 1 раз |
|
|
SecondShadow 365 EGP
Рейтинг канала: 6(372) Репутация: -4 Сообщения: 1454 Заблокирован Откуда: Бийск. Алтай. Зарегистрирован: 09.02.2008 |
|
ТехноМаг : |
Эм, а где тут сложности, простите?.
|
Я не про сложность, а про точность спрашивал. Дело думаю не в алгоритме, а в претензиях в точности. Зачем такая?
добавлено спустя 6 минут:
The Milky Way in Frontier - Ваш пример.
Попытки реального расчета https://ru.wikipedia.org/wiki/MilkyWay@Home
Реальные расчеты на EG http://www.elite-games.ru/conference/viewtopic.php?t=51798
_________________ Склероз - классная болезнь, ничего не болит и новости каждый день.
Последний раз редактировалось: SecondShadow (22:56 12-10-2014), всего редактировалось 2 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Что-то путаете. Позиционная точность мне не нужна. Я просто пытаюсь сделать полноразмерную модель некой галактики, обладающей динамической подгрузкой саб уровней (галактика -> кластер -> звезда - > планета), причем без генерации поверхности, которой достаточно будет простой ч/б текстуры в качестве параметра, и которая будет показывать внятный FPS на Unreal Engine 4.
И сам вопрос изначально возник из-за того, что в UE достаточно сложно совместить какие-либо абстрактные параметры с реальным, но динамически создаваемым актером (класс AActor, который за визуализацию отвечает). Сейчас я нашел как это дело обойти, и все проблемы исчезли.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (23:05 12-10-2014), всего редактировалось 2 раз(а) |
|
|
XArgon 1425 EGP
Репутация: 395 Сообщения: 4153 Откуда: Интернеты Зарегистрирован: 06.08.2005 |
|
Вечер добрый!
Не так давно я здесь интересовался кросс-компиляцией с Линукса на Виндоус...
Cкрытый текст (кликните здесь для просмотра)
AnrDaemon : |
XArgon : |
Ну всё, разобрался.
По сути - в командной строке сама команда "g++" заменяется командой для MinGW, в моём случае - "x86_64-w64-mingw32-g++" или "i686-w64-mingw32-g++" (для 64- и 32-битной целевой платформы, соответственно.)
|
Эти бинарники не предназначены для ручного запуска.
|
И тем не менее - по незнанию, уже 2-ой месяц так компилирую, всё работает...
|
Сейчас интересует похожая тема - может, кто знает, подскажет средства для компиляции с Линукса -> на OSX? (в репо ничего похожего не нашел, в Гугле - тоже пока теряюсь в догадках, а имеется ли удобный способ это сделать...)
Думаю уже - виртуальную машину с Маком что-ли попробовать установить?...
|
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 1(2) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
вот тут чуваки сделали форк ct-ng и утверждают что Darwin может быть как host так и target
не проверял
_________________ This is what you get ...
(c) Radiohead |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
XArgon : |
Сейчас интересует похожая тема
|
вот тут вот мануальчик есть.
http://www.bpiwowar.net/2012/06/cross-compiling-for-os-x-with-distcc-on-linux/
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (07:28 16-10-2014), всего редактировалось 1 раз |
|
|
Minx 979 EGP
Рейтинг канала: 2(19) Репутация: 135 Сообщения: 10528 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005 |
|
ТехноМаг : |
ну под Си их кот наплакал, и как правило они тянут за собой туеву кучу зависимостей. Тут одно из условий заказа - скопировал, запустил, профит...
|
Попроще - Poco, посложнее - ACE.
Скопипастил, запустил - профит.
ACE помонстроузнее и поолдскульнее, но на нем очень мощные и гибкие вещи можно делать. Однако, не всякая птица долетит до середины Шмидта.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (01:16 12-11-2014), всего редактировалось 1 раз |
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 1(2) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
о! тож спрошу чего-нить
ТехноМаг : |
Уменьшаем размер кластера (сейчас стоит 32768) в 27 раз (до 1214, а лучше я думаю до, 1024
|
а это в каких попугаях?
особенно в сопоставлении с корабликом
я так понял эффективный грид там +/- (вру) всего 500k uu
хотя точность float позволяет +/- 8М
но в астрономических масштабах всё равно копейки
_________________ This is what you get ...
(c) Radiohead
Последний раз редактировалось: Sh.Tac. (01:50 13-11-2014), всего редактировалось 5 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Sh.Tac. : |
ож спрошу чего-нить
|
А пес его пока знает. Галактика 1024/1024 кластеров влезла на ура. Но это звезды. Дальше (когда доделаю эту дурь) буду с FOV играться в сторону уменьшения, что позволит разместить звездную систему весьма в скудном диапазоне координат. (ну и плюс реалтайм масштабирование небесных объектов естно).
Есть еще мысли как можно задействовать ихнию систему левел стриминга, предварительно собрав видимое звездное небо в кубмапу (но конешно хочется все честно выводить...)
добавлено спустя 6 минут:
Sh.Tac. : |
а это в каких попугаях?
|
В стандартных "нереальных" юнитах. (100 - 1 метр вроде (очень вру))
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (16:25 13-11-2014), всего редактировалось 2 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Ой вей. Отойдем ненадолго от генератора. Столкнулся с такой виндовой баго/фичей.
есть код, который берет настройки утилиты из виндового реестра:
Cкрытый текст (кликните здесь для просмотра)
Код: |
void LoadSettings()
{
HKEY hKey;
DWORD size = MAX_PATH;
DWORD type = REG_SZ;
char buffer[MAX_PATH];
memset(&setting, 0, sizeof(Settings));
if (RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Delta-Proxima\\Cloud"), 0, 0, 0, KEY_QUERY_VALUE, 0, &hKey, 0) == ERROR_SUCCESS) {
//пробуем загрузить элементы. Если попытка неудачна, то возвращаем нули
if (RegGetValue(hKey, 0, TEXT("user_id"), RRF_RT_ANY, &type, &buffer, &size) == ERROR_SUCCESS)
strcpy(setting.user_id, buffer);
if (RegGetValue(hKey, 0, TEXT("user_auth_code"), RRF_RT_ANY, &type, &buffer, &size) == ERROR_SUCCESS)
strcpy(setting.user_auth_code, buffer);
if (RegGetValue(hKey, 0, TEXT("folder_person"), RRF_RT_ANY, &type, &buffer, &size) == ERROR_SUCCESS)
strcpy(setting.folder_person, buffer);
if (RegGetValue(hKey, 0, TEXT("folder_group"), RRF_RT_ANY, &type, &buffer, &size) == ERROR_SUCCESS)
strcpy(setting.folder_group, buffer);
RegCloseKey(hKey);
}
} |
|
RegCreateKeyEx, чтобы создавал сразу ветку реестра, если ее нету.
сами данные в формате REG_SZ
Однако на втором запросе (иногда, если данные пересохранить, то на 3ем и 4ом) вместо данных приходит file_not_found по неизвестным мне причинам (а иногда все ок, но опять же если пересохранить и изменить функцию запроса).
Вчера этот код работал, но не работал через функцию RegQueryValueEx, щас наоборот. Весь мозг уже себе сломал...
вот функция сохранения. Она всегда нормально работает.
Cкрытый текст (кликните здесь для просмотра)
Код: |
bool SaveSettings()
{
HKEY hKey;
DWORD size = MAX_PATH;
DWORD type = REG_SZ;
if (RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Delta-Proxima\\Cloud"), 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0) == ERROR_SUCCESS) {
//пробуем сохранить элементы. Если попытка неудачна, то возвращаем false
if (RegSetKeyValue(hKey, 0, TEXT("user_id"), type, setting.user_id, strlen(setting.user_id)) != ERROR_SUCCESS ||
RegSetKeyValue(hKey, 0, TEXT("user_auth_code"), type, setting.user_auth_code, strlen(setting.user_auth_code)) != ERROR_SUCCESS ||
RegSetKeyValue(hKey, 0, TEXT("folder_person"), type, setting.folder_person, strlen(setting.folder_person)) != ERROR_SUCCESS ||
RegSetKeyValue(hKey, 0, TEXT("folder_group"), type, setting.folder_group, strlen(setting.folder_group)) != ERROR_SUCCESS)
return false;
RegCloseKey(hKey);
}
return true;
} |
|
UDP: на 5ой странице гугла таки нашел. Windows8 бла бла бла. Переделал с использованием AppData пользовательской директории...
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (15:23 17-11-2014), всего редактировалось 3 раз(а) |
|
|
Dimaxx 985 EGP
Рейтинг канала: 8(868) Репутация: 204 Сообщения: 5757 Откуда: Северодвинск Зарегистрирован: 26.06.2002 |
|
Прошу пардону, а зачем реестр пачкать? ini-файл около exe'шника решит все проблемы. WritePrivateProfileString/GetPrivateProfileString и никакого гемора.
_________________ "Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс |
|
|
Hvala Mne 881 EGP
Репутация: 184 Сообщения: 1380 Откуда: где-то меж звезд Зарегистрирован: 08.02.2001 |
|
В реестр лучше не какать. Если OLE/автоматизация не нужна, не трогай реестр, я считаю.
_________________ скромный подданный Королевства Боронов |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Ну моем случае рядом с exe не стоит этот файл хранить, ибо для разных профилей разные ключики будут. А вот в AppData\\Roaming самое оно.
добавлено спустя 29 секунд:
НО там разницы только getenv("APPDATA") добавить перед читалкой.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (18:49 17-11-2014), всего редактировалось 1 раз |
|
|
AnrDaemon 859 EGP
Рейтинг канала: 8(787) Репутация: 37 Сообщения: 12297
Зарегистрирован: 17.10.2004 |
|
Читаем msdn, проверяем lpdwDisposition.
_________________ Люблю свободный полёт... :) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(21) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
AnrDaemon : |
проверяем lpdwDisposition.
|
там кабэ только два значения приходит могут. Мол уже создан - открыл. Или не создан - создал и открыл.
Т.е. этот флаг нам проверять смысла нету, ибо кода ошибки там все равно не будет.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
AnrDaemon 859 EGP
Рейтинг канала: 8(787) Репутация: 37 Сообщения: 12297
Зарегистрирован: 17.10.2004 |
|
Там не код ошибки, там код статуса выполнения запроса!
Его надо проверять! Раз ошибки дальше по ходу логики лезут.
_________________ Люблю свободный полёт... :) |
|
|
|
|
|
Железный канал: «C, С++» |
|