avatar
А то они в своём воображении строят совершенно нереалистичные картины возможностей процедурной генерации
Оставим в покое воображение на секунду и посмотрим официальный ролик на странице игры в стиме.

Хотя сколько я позитивных видео от игроков пересмотрел, многих даже так все устраивало, не начинай оно повторятся через не так уж много игровых часов.

они как по волшебству сделают также, как оно делается ручками, только квинтиллион раз
Касательно процедурной генерации космоса — SpaceEngine, выглядит и правда волшебно.
avatar
Там наверняка (точно сейчас не вспомню) был один аргумент, по которому карта строилась.
Там были несколько шаблонов плюс процедура с рандомной вариацией этих шаблонов.

А вопрос похожести на пользовательские — это не вопрос отличий процедурной генерации от «рандомной», а вопрос реализации процедурной генерации.
Ну я же говорю — слегка ступил и разделил способы реализации на детерменированный и рандомный с не совсем теми названиями.
avatar
Вот и интересно, где здесь логические отличия.
Долго объяснять.
Ну скажем так чистая процедура по числу или даже массиву в параметрах и случайная генерация у меня бы отличались в разы по объему кода.
даже с учетом ограничения на рандом.
Код рандомной генерации очень хорошо сжимается и структурируется без потери качества. Рандомную енерацию намного проще писать. И.т.д.

Почему замены нет? Было две переменные, стала одна.
Потому что работать мы все равно будем с ними как с двумя переменными. с дополнительной проблемой по вытаскиванию и пониманию кода впоследствии(что после возвращения к коду через пару месяцев очень даже играет).
Передавать тогда можно хоть сотню переменных в строке через запятую, но от этого они не будут снова одной переменной. Строку придется разворачивать внутри функции обратно.
avatar
В цивилизациях никогда не пользовался пользовательскими картами. В героях да.

В героях тоже была процедурная генерация. Там наверняка (точно сейчас не вспомню) был один аргумент, по которому карта строилась.

А вопрос похожести на пользовательские — это не вопрос отличий процедурной генерации от «рандомной», а вопрос реализации процедурной генерации.
avatar
так можно но по сути замены нет. Просто есть сложение обоих переменных в один кусок памяти. Если пишем не на ассемблере удобнее будет оставить 2 аргумента. ;-)

Почему замены нет? Было две переменные, стала одна.
На C тоже вполне удобно было.

я все таки логику пишу по работе, а не графику вот мысль и свернула сразу в логические отличия.

Вот и интересно, где здесь логические отличия.
avatar
Ну например в «Цивилизациях» отличаются же карты случайные от пользовательских?
Вот в Элите они сильно были похожи именно на случайные.
Это разве не видно. Тогда возможно тоже мой глюк.
avatar
Было трудно их заскринить, потому что они меня боятся и прыгают куда подальше.

Встретились забавные прыгающие вазоны цветов.
Выглядит не сильно энергоэффективным способом передвижения.

Закрадывалась мысль, что это абуз, но в одиночной игре банить некому.
До чего дошел прогресс: боязнь поступать не так, как положено, срабатывает даже при игре с самим собой.
avatar
Два аргумента можно заменить одним побитово объединив их — из двух аргументов размером n и m бит получается один n+m бит.
так можно но по сути замены нет. Просто есть сложение обоих переменных в один кусок памяти. Если пишем не на ассемблере удобнее будет оставить 2 аргумента. ;-)

Процедурная генерация, которая противопоставлялась хранению данных, не вижу чем отличается от процедурной генерации в NMS.
разработчики скорее всего ее и имели в виду. Меня слегка занесло. Профдеформация — я все таки логику пишу по работе, а не графику вот мысль и свернула сразу в логические отличия. А про процедурную генерацию графики вспомнил сильно не сразу. %-)
avatar
И этого я тоже не понимаю.
Чуть выше ты говорил «по принципу построения кода». Ты это на глаз видишь?
avatar
Даже если внутри процедуры есть 10 вызовов функции rand(), их можно (и даже нужно) заменить на входные параметры.
А если их не 10, а допустим 10000(00) (заполняем карту с планетами или поле с травами)?
То что укладывается в количество до 1000 элементов естественно лучше генерировать вручную без лишнего рандома.
avatar
Вообще то нет. если второй аргумент переменная. которая будет меняться случайно, то их привести будет сложно если вообще возможно.

Я, может, попозже смогу как-то переформулировать, но пока как-то то же самое получается.

Функция, результат процедуры, зависит от двух аргументов — некоего числа, задаваемого извне, и числа, выпавшего из генератора. Можно тождественно преобразовать эту процедуру так, что результат зависит от двух аргументов задаваемых извне, но вторым задавать результат из генератора.

Два аргумента можно заменить одним побитово объединив их — из двух аргументов размером n и m бит получается один n+m бит.

Процедурная генерация, которая противопоставлялась хранению данных, не вижу чем отличается от процедурной генерации в NMS. По-моему это одно и то же.
avatar
В Элите была как раз процедурная генерация, в смысле построения графики, но при этом рандомная по эффекту восприятия.
avatar
Разработчики так увлеклись обновлением, что даже донат акцию не сделали! Раньше они были стабильно каждый месяц.

А кампании — по-моему, это что-то среднее между глобусом и атласом, прошёл один данж — открылся следующий. Не вижу тут чего-то, что бы смущало.
avatar
Странная статья. В духе «давайте не будем рекламировать, что у новой игры грутая графика, а лучше расскажем, как делается прорисовка и как работают шейдеры». Как оно рисуется — это сложная и скучная математика, игрокам это не интересно в большинстве случаев. Хотят как раз красивую графику.
avatar
Как я и говорила — слишком короткая формула. Её можно было бы потихоньку наращивать в обновлениях, но не уверена, что это сделают.
avatar
Маловато элементов… ну не надо всю таблицу Менделеева, но хотя бы 30-40.
У кого-то слишком много места в инвентаре. Мне можно и поменьше элементов сделать, и так не помещаются
avatar
Если рандомная генерация — это цикл, в котором по случайному выбору выполняют один из шаблонов, то что мешает сделать процедурную генерацию с циклом, в котором аргумент последовательно сдвигают вправо, выделяют младшие биты и выполняют шаблон с этим номером. Таким образом все случайные выборы описываются одним числом, которое можно подать на вход, а можно сгенерировать?

Если ты сам говоришь, что они приведут к тому же псевдослучайному генератору, то в чем смысл выделения «случайной генерации»?

Пример не понял. Я не большой знаток языков, во всех, что знаю, можно задать seed псевдослучайной последовательности. А то, что при одинаковом seed'е последовательность одинакова, это же ее тривиальное свойство, поэтому ее и называют псевдослучайной.
И почему нельзя сказать, что в Элите была процедурная генерация, я тоже не понимаю.
avatar
Только что сама хотела написать. :) Судя по перечню обновлений, игру хотят основательно перелопатить. Про атлас и лимиты согласна. Как это — без атласа?? Может, успею зайти и посмотреть, что натворили. А может побуду в числе зрителей. В перечне изменений как-то не очень увидела ммо-шность, кажется, игра продолжает уходить в другую сторону? Эти кампании меня очень сильно смущают.
avatar
Есть процедуры, они генерируют контент. Можно подавать на вход процедуры случайные данные, но при подаче одних и тех же данных они все равно будут давать одинаковый результат.
Даже если внутри процедуры есть 10 вызовов функции rand(), их можно (и даже нужно) заменить на входные параметры.
avatar
Чуть ниже вспомнил про нее.
Возможно.
Хотя я бы все таки разделил рандом и процедуры. Чисто по принципу построения кода.