Ничто не бывает просто так. Создана целая группа новых механик и пересмотрено тонны серверного кода. Все ради отзеркаленого упрощенного неограниченного триала? ХА-ХА-ХА (3 раза).
Вот блин, всё уже есть, а я уже студию запустил! :(
Ну дык, к чему тогда вообще эти споры?) Вот я глянул их презентацию — проделана огромная работа по генераторам локального ландшафта. Причём всё модульно и можно спокойно экспериментировать с 2-д генератором первичной поверхности. (хотя куб, это просто ахтунг!)
Сама ж разработчик сказала, что на первичный генератор у них полно ресурсов, это мол самая ненапряжная часть.
Эрозия, фрактальные речные системы и побережья — это нужно локальным генераторам.
Задача первичного генератора — просто раскидать типы биомов по поверхности.
Земля уже на 100 тысячах тайлах (500х200) начинает терять некоторые важные детали ландшафта. Но планеты в NMS в тысячи раз меньше, так что вполне можно обойтись генерацией карты в 125х50 тайлов, проецировать её цилиндрической проекцией и залепливать полярными шапками.
Это секундное дело. А дальше всё разруливают их крутецкие алгоритмы локальной генерации и LOD-а.
Больше похоже на то, что у них в команде никто не увлекался географией, и никому даже в голову не пришло усложнять первичную генерацию.
Я не думаю, что речь в производительности, скорее в ресурсах разработчика.
Это тот парадоксальный момент, когда процедурная генерация как бы должна заменить тысячи часов ручного труда, а вместо этого сама занимает примерно то же время на создание, при этом даёт гораздо менее предсказуемые результаты.
Я не думаю, что речь в производительности, скорее в ресурсах разработчика.
Кстати, в NMS же проход через черную дыру является необратимым. В этот момент можно чистить кэш сгенерированных систем. И подобрать размер кластера систем, доступных без прыжка через черную дыру так, чтобы кэш не разрастался больше какого-то разумного значения.
Если генерируется быстро, то можно генерировать на лету.
Если генерируется долго, но результат весит мало (генетический алгоритм на 1кк поколений, например), то можно и хранить.
Если и весит много, и генерируется долго, то конечно ничего не сделаешь, и нечего такому алгоритму в компьютерных играх делать.
Касательно процедурной генерации космоса — SpaceEngine, выглядит и правда волшебно.
Но там нет и половины того, что есть в НМС. Есть другая добрая часть того, чего нет в НМС, но Спейс Энджин ещё меньше игра, чем НМС.
Вот ты сгенерировал планету предположим с пятьюдесятью параметрами, в отличие от десяти. теперь тебе придётся генерировать весь контент на планете, беря в учёт все эти 50 параметров, иначе придёт какой-нибудь придирчивый игрок и скажет — а почему радиация на планете не влияет на распределение радиоактивных ресурсов? Или там ещё придумает что-нибудь вроде — а зачем глаза животным на тёмной планете? Или ещё что-нибудь такое, что разрабы просто не предусмотрели. Всегда найдётся что-нибудь, чего в этой игре нет. Но чем больше мы добавляем параметров, тем больше таких нюансов надо предусмотреть, тем дольше время разработки, шире бюджеты, и что самое поразительное — требования игроков.
Аааа окей, я перечитал и понял твой трюк. Только это будет работать, если ты не даёшь никакую информацию о системе заранее, например тип звезды, наличие планет и так далее. И как правильно заметил Шкуурник, это можно провернуть только с непосещёнными системами.
Это если он летит вперед.
А если он летает по уже разведанным планетам?
А у нас процедурная генерация, то есть сгенерированная планета не хранится (если хранится будет проблема раздувания сейвов после долгой игры)
То есть ты узнаешь куда он полетит только когда он решит уже полететь и сможешь начать генерацию только в этот момент. До того, как он решил лететь, ты не сможешь предугадать это, а значит не сможешь начать генерацию, когда он майнит на планете ресурсы например.
Конечно, если ты сделаешь линейную игру, где есть всего один выбор — вперёд, ты точно знаешь куда он полетит дальше и сможешь генерировать на бэкграунде.
Я понимаю что всё это возможно. Я видел генератор на джаве прямо в браузере, которые делает географию на основе литосферных плит. Он даже немного атмосферу симулирует с разными поясами, ветрами и прочим. Видел алгоритм, который хорошо генерирует распределение температуры по широтности и влажность по векторному полю ветров, с ветровой же тенью от гор, в которой должны быть пустыни. Видел алгоритм, который правдоподобные реки генерирует с итерацией водной эрозии (кстати пасфайндинг обычно — самая ресурсоёмкая часть, а ещё есть проблема когда он натыкается на локальный минимум и надо создать здесь озеро), видел генератор, который наоборот от моря идёт вверх по локальным минимумам с вероятностью ветвления, видел генератор, который генерирует сначала реки по L-system, а на их основе уже создаёт правильный ландшафт (что кстати не лишено смысла).
Я только не видел никогда чтоб это всё вместе было, с быстрой генерацией, да ещё и на сфере, на которую красиво двумерную матрицу не натянешь, но в которой всё можно очень компактно хранить. Сфера вообще самая противная часть — её затайлить нельзя, а если будешь сшивать из квадратов или шести-пятиугольников, то надо как-то компенсировать возникающие при преобразовании в сферу артефакты. Ну или хранить случайный массив точек, который ещё надо придумать как сжимать для создания LOD. Бррррр короче :)
Зачем все? Просто генерировать следующую звездную систему. Прилетает игрок в новую систему, а все уже готово. Неважно, как он туда прилетел =)
В текущем варианте NMS разницы между различными секторами галактики никакой, так что можно сделать и так.
Вулканы из карты литосферных плит, которая является производной генератора материков. Заодно у нас появятся нормальные горные хребты (не берусь утверждать что их в NMS нет, но я пока не видел).
Северные сияния и магнитное поле вообще проблем не составляют) свяжем их с параметрами радиоактивности и температурной опасности.
Нормальные реки — это алгоритм поиска пути по хейтмапе. В NMS я встречал ручьи, но пока логику не понял. В любом случае, год назад тут была статейка по свежим алгоритмам в этой области «на лету» работают без проблем.
С ветрами согласен, это может быть тоже крутой инструмент. Алгоритм, на самом деле, очень похож на реки. Накидали температурную карту и просчитали «стекание» по ландшафту.
А если ресурсы останутся, то под конец набросили альбедо и сделали вторую итерацию расчетов)
Надо будет как-то на выходных набросать код, но уверен, что такие подготовительные этапы жрут мизерную часть ресурсов по сравнению с растительностью и животными.
Ну дык, к чему тогда вообще эти споры?) Вот я глянул их презентацию — проделана огромная работа по генераторам локального ландшафта. Причём всё модульно и можно спокойно экспериментировать с 2-д генератором первичной поверхности. (хотя куб, это просто ахтунг!)
Сама ж разработчик сказала, что на первичный генератор у них полно ресурсов, это мол самая ненапряжная часть.
Эрозия, фрактальные речные системы и побережья — это нужно локальным генераторам.
Задача первичного генератора — просто раскидать типы биомов по поверхности.
Земля уже на 100 тысячах тайлах (500х200) начинает терять некоторые важные детали ландшафта. Но планеты в NMS в тысячи раз меньше, так что вполне можно обойтись генерацией карты в 125х50 тайлов, проецировать её цилиндрической проекцией и залепливать полярными шапками.
Это секундное дело. А дальше всё разруливают их крутецкие алгоритмы локальной генерации и LOD-а.
Больше похоже на то, что у них в команде никто не увлекался географией, и никому даже в голову не пришло усложнять первичную генерацию.
Кстати, в NMS же проход через черную дыру является необратимым. В этот момент можно чистить кэш сгенерированных систем. И подобрать размер кластера систем, доступных без прыжка через черную дыру так, чтобы кэш не разрастался больше какого-то разумного значения.
Если генерируется долго, но результат весит мало (генетический алгоритм на 1кк поколений, например), то можно и хранить.
Если и весит много, и генерируется долго, то конечно ничего не сделаешь, и нечего такому алгоритму в компьютерных играх делать.
Вот ты сгенерировал планету предположим с пятьюдесятью параметрами, в отличие от десяти. теперь тебе придётся генерировать весь контент на планете, беря в учёт все эти 50 параметров, иначе придёт какой-нибудь придирчивый игрок и скажет — а почему радиация на планете не влияет на распределение радиоактивных ресурсов? Или там ещё придумает что-нибудь вроде — а зачем глаза животным на тёмной планете? Или ещё что-нибудь такое, что разрабы просто не предусмотрели. Всегда найдётся что-нибудь, чего в этой игре нет. Но чем больше мы добавляем параметров, тем больше таких нюансов надо предусмотреть, тем дольше время разработки, шире бюджеты, и что самое поразительное — требования игроков.
Эдакая Uncanny Valley для планет, хехехе
А если он летает по уже разведанным планетам?
А у нас процедурная генерация, то есть сгенерированная планета не хранится (если хранится будет проблема раздувания сейвов после долгой игры)
на сайте runescape
«RuneScape is a free browser MMO game»
«Truly Free to Play»
точно, не f2p и не браузерная.
Конечно, если ты сделаешь линейную игру, где есть всего один выбор — вперёд, ты точно знаешь куда он полетит дальше и сможешь генерировать на бэкграунде.
Я только не видел никогда чтоб это всё вместе было, с быстрой генерацией, да ещё и на сфере, на которую красиво двумерную матрицу не натянешь, но в которой всё можно очень компактно хранить. Сфера вообще самая противная часть — её затайлить нельзя, а если будешь сшивать из квадратов или шести-пятиугольников, то надо как-то компенсировать возникающие при преобразовании в сферу артефакты. Ну или хранить случайный массив точек, который ещё надо придумать как сжимать для создания LOD. Бррррр короче :)
В текущем варианте NMS разницы между различными секторами галактики никакой, так что можно сделать и так.
Вулканы из карты литосферных плит, которая является производной генератора материков. Заодно у нас появятся нормальные горные хребты (не берусь утверждать что их в NMS нет, но я пока не видел).
Северные сияния и магнитное поле вообще проблем не составляют) свяжем их с параметрами радиоактивности и температурной опасности.
Нормальные реки — это алгоритм поиска пути по хейтмапе. В NMS я встречал ручьи, но пока логику не понял. В любом случае, год назад тут была статейка по свежим алгоритмам в этой области «на лету» работают без проблем.
С ветрами согласен, это может быть тоже крутой инструмент. Алгоритм, на самом деле, очень похож на реки. Накидали температурную карту и просчитали «стекание» по ландшафту.
А если ресурсы останутся, то под конец набросили альбедо и сделали вторую итерацию расчетов)
Надо будет как-то на выходных набросать код, но уверен, что такие подготовительные этапы жрут мизерную часть ресурсов по сравнению с растительностью и животными.