Evgenijj
> На расстоянии в 23 000км земля становится белым шаром.
А перед этим было сообщение OUT OF MEMORY? Патч установил?
Evgenijj
> А еще сделай клавишу выключения программы alt-F4
А разве alt-F4 не работает?
Evgenijj
> Еще одно замечание, на низкой высоте, на которой заметны горы и всякие
> выпуклости незачто зацепится взгляду, горы не детализированы, нет
> дополнительной детальной текстуры. На большой высоте видна текстура и
> освещение, но выпуклости как бы незаметны. Так может лучше на большой высоте
> сделать рендеринг поверхности методом попиксельной глубины , а не тратить
> ресурсы на генерацию сетки, а сетку включать на высоте 20-30 км от поверхности,
> тогда генерируем улучшеную сетку , а на то , что вне пределов видимости
> забиваем.
Что ещё за метод попиксельной глубины? Parallax occlusion? А как быть с краями планеты?
Вообще рендеринг по-моему не тормозит, долго идёт именно загрузка/генерация (10-100 мс на текстуру). Изменение алгоритма рендера не поможет - всё равно текстур надо будет сгенерить столько же. Создание геометрии тоже быстрое - 0.5-1 мс на патч. Вот что тормозит, это передача сгенеренной карты высот на ЦПУ для построения геометрии, оно занимает ~50 мс. Надеюсь от него избавиться, применив рендер в VBO, но пока там есть некоторые проблемы.
Ещё один способ избавиться от геометрии - рендерить трассировкой лучей в BBox-ах патчей. Позже надо будет поэкспериментировать с этим методом.
koaa310
> 1. странное затенение кольца. (это оно не исчезает, просто резко затеняется)
Проверил, похоже эта планета в очень далёкой галактике, 80 мегапарсек, а на таких расстояниях идут потери точности. Я описывал свой метод борьбы с ним - перенос камеры в локальную систему координат галактики, потом планетной системы. Так вот на первый перенос я пока забил, отсюда и потери точности. Кроме глюков с кольцом, ещё освещение планеты прыгает скачками, да? А так же автопилот промахивается мимо планеты, и при посадке на поверхность планеты и ускорении времени камера не остаётся на месте, а движется по окружности. Последний глюк заметен даже в нашей галактике.
Короче надо либо довести систему до ума, либо сделать тупо математику на самодельных 128-битных числах. Если делать SDK движка, иерархическая система указания координат будет неудобной...
koaa310
> 2. Исчезновение "звезды"
Всё правильно. Та звезда что в центре - это спрайт из VBO звёзд. Все звёзды узла октри рисуются одним махом спрайтами из статичного VBO, и секутся только ближней плоскостью, которая на расстоянии 0.01 парсека - это и есть исчезновение. Две другие звезды - это уже солнца, два компонента двойной системы, они рисуются вместе с планетами, когда камера достаточно близко, или "в режиме телескопа". Т.е. когда размер всей планетной системы больше пикселя.
Ещё возможна такая ситуация: если звезда без планет или с очень маленькой системой, её моделька при отлёте должна исчезать ближе 0.01 парсека, но минимальное расстояние фиксируется на 0.01. Поэтому вблизи этого расстояния возможно мигание - то ничего не рендерится, то рендерится одновременно и моделька, и спрайт. Невозможно будет точно синхронизировать расстояние, на котором происходит выключение спрйта и включение планетной системы - ведь первое считается на GPU, второе на CPU.
По-идее нужно для каждого спрайта в VBO устанавливать своё расстояние отсечки, чтобы он исчезал, когда начинает рендериться планетная система. А это значит, что в VBO к каждой вершине надо добавить ещё один float, а это плохо. И мигания при переключении не избежать. Плавный блендинг тоже даст плохой результат.
Короче, я пока не знаю, что с этим делать.
Neptune
> По-моему есть разница, когда ждать - или при перелёте к звезде минуту висит окошко...
вообще то я имел ввиду нагенерировать предварительно, перед запуском программы (например при инсталяции). А во время исполнения просто подгружать.
По идее же всеравно когда оно гененрируется. сейчас или 3 дня назад. Результат будет фактически тот же. А если сгенерировать сотню другую планет, вместо генерации во программы можно спокойно загружать уже готовые вещи. Эффект будет точно такой же, только тормоза пропадут. (если пропадут конечно :) )
Ну, что имеет смысл генерировать а что нет это уже тебе виднее, но думаю надо минимум пару "верхних" уровней планет иметь. А то получается я подлетаю к планете, просто глянуть на неё из далека, а она уже начинает тормозить. т.е. "верхние" уровни тоже генерируются заметно долго.
в общем, надеюсь ты понял что я имею ввиду :)
кстати, ты можешь сохранять последнюю настройку скорости времени? а то задолбался после каждого запуска время останавливать :)
Кстати.. А одиночные планеты, которые вообще без звёзд, просто в пространстве - будут такие? Кажется у них даже есть название - "планемо", если не ошибаюсь; про них даже в ролике выложенном тут ранее "для вдохновения" упоминалось.
UPD: И да, кстати.. По поводу собственно игрового процесса. В такой огромной вселенной может имеет смысл сделать не только генерацию собственно звёзд и планет, но и форм жизни на них, городов, космических кораблей, и, если уж пошла такая пьянка - даже сюжетов, м? Может стоит посмотреть? Генерация городов - http://www.youtube.com/watch?v=-d2-PtK4F6Y&feature=related
это как пример, там в ссылках ещё много чего подобного и более лучшего. Генерацию различных кораблей можно сделать на модифицированной т.н. "Суперформуле" - http://en.wikipedia.org/wiki/Superformula модифицированной под 3D-случай.
Это я так.. Из разряда "Мечтать-то не вредно! Вредно не мечтать!" :-)
Neptune
> Они вызваны тем, что не устранены))
Ну, это очевидно)
Просто не похоже на обычные разрывы в лодах - было бы хоть частичное совпадение по вершинам, а там сплошная щель...
koaa310
> А если сгенерировать сотню другую планет, вместо генерации во программы можно
> спокойно загружать уже готовые вещи. Эффект будет точно такой же, только
> тормоза пропадут. (если пропадут конечно :) )
> Ну, что имеет смысл генерировать а что нет это уже тебе виднее, но думаю надо
> минимум пару "верхних" уровней планет иметь. А то получается я подлетаю к
> планете, просто глянуть на неё из далека, а она уже начинает тормозить. т.е.
> "верхние" уровни тоже генерируются заметно долго.
> в общем, надеюсь ты понял что я имею ввиду :)
Пару сотню? А каких именно? Откуда я знаю, куда юзер захочет полететь? Каждая планета уникальна!
Тормоза не пропадут, а слегка уменьшатся. Вон, глянь как планеты Солнечной системы подгружаюся.
Верхние уровни генерятся за 10-20 мс, так что нет смысла с ними изворачиваться. Первое время после запуска главные тормоза - это подгрузка шейдеров, коих дофига создаётся (cache/shaders/), а планеты и луны долго генерят только детальные уровни.
Возможно, у тебя глюк с кратерами? У меня на ATI иногда начинаются зверские тормоза при генерации планет с кратерами, чтобы отключить их нафиг в конфиге есть настройка r_BugCraters.
koaa310
> кстати, ты можешь сохранять последнюю настройку скорости времени? а то
> задолбался после каждого запуска время останавливать :)
Ок, сделаю
Jerry Rezet
> Кстати.. А одиночные планеты, которые вообще без звёзд, просто в пространстве -
> будут такие? Кажется у них даже есть название - "планемо", если не ошибаюсь;
> про них даже в ролике выложенном тут ранее "для вдохновения" упоминалось.
Можно сделать. Но, во-первых, как их искать? Ткнуть в звёздочку не получится - почти чёрная она. Случайно наткнуться при межзвёздном полёте - почти невероятно. Во-вторых, как их освещать? Там ведь в большинстве случаев полнейшая темнота будет.
Jerry Rezet
> UPD: И да, кстати.. По поводу собственно игрового процесса. В такой огромной
> вселенной может имеет смысл сделать не только генерацию собственно звёзд и
> планет, но и форм жизни на них, городов, космических кораблей, и, если уж пошла
> такая пьянка - даже сюжетов, м? Может стоит посмотреть?
Надо, но не будут ли звери и корабли слишком однообразными, "антропоцентричными"? Всей фантазии всего человечества не хватит, чтобы придумать формы жизни и продукты цивилизаций даже для нашей галактики. А процедурные - сомнительная вещь. Более-менее красиво можно заселить те системы, которые игрок будет посещать по ходу прохождения single-player игры, без возможности отклониться от курса. Но это плохой вариант для такого движка.
stream
> Просто не похоже на обычные разрывы в лодах - было бы хоть частичное совпадение
> по вершинам, а там сплошная щель...
Так устроен движок - надо всё обновлять.
Полетал вокруг марса и земли. если сильно не приближаться то фпс держится в районе 50.
Полетел к первой попавшейся звезде и полетал там вокруг планет. При подлете на достаточном удалении от планеты фпс падает до 15 и держится таким секунд 10-20, а снизу пишет что т\он там генерирует.
В общем предзагруженные планеты работают все таки быстрее :)
Neptune
> А каких именно? Откуда я знаю, куда юзер захочет полететь? Каждая планета уникальна!
Ты так и не понял что я имел ввиду. :)
Гляди: нет абсолютно никакой разницы когда генерируется плнета, сейчас или неделю назад. Следовательно можно предварительно сгенерировать десять/сто/тысячу разных планет, а когда у тебя возникнет необходисость "генерировать" планеты во время работы программымы, то можно просто выбрать одну из предварительно сгенерированных. Для пользователя это будет выглядеть точно так же, как будто планета сгенерирована только что.
Это конечно несколько снижает вариативность, но если предварительно сгенерировано достаточно много варианто вто это будет совсем не заметно. Будут теже самые случайно сгенерированные планеты. т.е. тебе не надо знать кудо человек полетит, куда бы он не полетел, ты при запросе к плантее выберешь из заранее подготовленногонабора нужную и подсунешь её как будто ты её только что "придумал". ... надеюсь понятно :)
В общем это так, один из возможных способов ускорить все это планетарное безобразие :)
Я думаю памяти не хватит
Допустим сгенерированные данные одной планеты занимают 100мб
Тогда 100 планет это уже 10гб
А в системе несколько планет, так что 100 будет мало.
И вообще это читинг, и имхо идет в разрез с сутью движка :)
ну я же не предлагаю всю планету генерировать. Некоторые "тяжелые" вещи, на которых можно съэкономить. Или несколько "верхних" уровней, что бы при подлете к планете или в её превью все работало быстро.
> И вообще это читинг, и имхо идет в разрез с сутью движка :)
:DDDD
кстати, как вариант: можно генерировать постоянно некоторое кол-во данных (например верхних уровней планет) в отдельном потоке. И хранить их там "до востребования". А когда нужна будет планета, просто забирать оттуда, вместо того что бы генерировать её "на лету". Так и вариативность останется.
Ну конечно это все имеет смысл только в случае если поможет победить тормоза.
Jerry Rezet
> Кстати.. А одиночные планеты, которые вообще без звёзд, просто в пространстве -
> будут такие? Кажется у них даже есть название - "планемо", если не ошибаюсь;
> про них даже в ролике выложенном тут ранее "для вдохновения" упоминалось.
>
> UPD: И да, кстати.. По поводу собственно игрового процесса. В такой огромной
> вселенной может имеет смысл сделать не только генерацию собственно звёзд и
> планет, но и форм жизни на них, городов, космических кораблей......
Сколько советчиков. А автор всего один. Бедняга.
koaa310
Во-первых, повторяемость планет у меня была (ещё до процедурных), и я долго от неё отказывался. Во-вторых, 100 планет явно мало для разнообразия, вот 10^23 уже неплохо:) В-третьих, кэшировать можно только верхние уровни, а они и так быстро генерятся. Нет смысла засирать жёсткий диск.
Превью в начале тормозно рисуется, потому что долго компилятся шейдеры, спасибо NVidia. Бинарники шейдеров можно сохранять/грузить только в GL4. Можно их все компилить при загрузке, тогда она будет длиться минуту-другую. Или придумать, как обойтись без 100500 вариантов шейдеров. Лайты делать через циклы с переменной длиной, а материалы и эффекты переключать через if? А не будет ли это тормозно?
Вообще я надеюсь, что тормоза исчезнут, когда сделаю нормальную загрузку в отдельном потоке. И ещё рендер бы многопоточным сделать, а то чё 3 ядра из 4 простаивают...
Neptune
Я вчера исколесил пол вселенной в попытках найти туманность. Но так ничего и не нашел. Там сейчас случаем нет какого нибудь способа навигации по ближайшим объектам, кроме как летать туда-сюда и пытаться что то найти? :)