Долго объяснять.
Ну скажем так чистая процедура по числу или даже массиву в параметрах и случайная генерация у меня бы отличались в разы по объему кода.
даже с учетом ограничения на рандом.
Код рандомной генерации очень хорошо сжимается и структурируется без потери качества. Рандомную енерацию намного проще писать. И.т.д.
Почему замены нет? Было две переменные, стала одна.
Потому что работать мы все равно будем с ними как с двумя переменными. с дополнительной проблемой по вытаскиванию и пониманию кода впоследствии(что после возвращения к коду через пару месяцев очень даже играет).
Передавать тогда можно хоть сотню переменных в строке через запятую, но от этого они не будут снова одной переменной. Строку придется разворачивать внутри функции обратно.
так можно но по сути замены нет. Просто есть сложение обоих переменных в один кусок памяти. Если пишем не на ассемблере удобнее будет оставить 2 аргумента. ;-)
Почему замены нет? Было две переменные, стала одна.
На C тоже вполне удобно было.
я все таки логику пишу по работе, а не графику вот мысль и свернула сразу в логические отличия.
Ну например в «Цивилизациях» отличаются же карты случайные от пользовательских?
Вот в Элите они сильно были похожи именно на случайные.
Это разве не видно. Тогда возможно тоже мой глюк.
Два аргумента можно заменить одним побитово объединив их — из двух аргументов размером n и m бит получается один n+m бит.
так можно но по сути замены нет. Просто есть сложение обоих переменных в один кусок памяти. Если пишем не на ассемблере удобнее будет оставить 2 аргумента. ;-)
Процедурная генерация, которая противопоставлялась хранению данных, не вижу чем отличается от процедурной генерации в NMS.
разработчики скорее всего ее и имели в виду. Меня слегка занесло. Профдеформация — я все таки логику пишу по работе, а не графику вот мысль и свернула сразу в логические отличия. А про процедурную генерацию графики вспомнил сильно не сразу. %-)
Даже если внутри процедуры есть 10 вызовов функции rand(), их можно (и даже нужно) заменить на входные параметры.
А если их не 10, а допустим 10000(00) (заполняем карту с планетами или поле с травами)?
То что укладывается в количество до 1000 элементов естественно лучше генерировать вручную без лишнего рандома.
Вообще то нет. если второй аргумент переменная. которая будет меняться случайно, то их привести будет сложно если вообще возможно.
Я, может, попозже смогу как-то переформулировать, но пока как-то то же самое получается.
Функция, результат процедуры, зависит от двух аргументов — некоего числа, задаваемого извне, и числа, выпавшего из генератора. Можно тождественно преобразовать эту процедуру так, что результат зависит от двух аргументов задаваемых извне, но вторым задавать результат из генератора.
Два аргумента можно заменить одним побитово объединив их — из двух аргументов размером n и m бит получается один n+m бит.
Процедурная генерация, которая противопоставлялась хранению данных, не вижу чем отличается от процедурной генерации в NMS. По-моему это одно и то же.
Странная статья. В духе «давайте не будем рекламировать, что у новой игры грутая графика, а лучше расскажем, как делается прорисовка и как работают шейдеры». Как оно рисуется — это сложная и скучная математика, игрокам это не интересно в большинстве случаев. Хотят как раз красивую графику.
Если рандомная генерация — это цикл, в котором по случайному выбору выполняют один из шаблонов, то что мешает сделать процедурную генерацию с циклом, в котором аргумент последовательно сдвигают вправо, выделяют младшие биты и выполняют шаблон с этим номером. Таким образом все случайные выборы описываются одним числом, которое можно подать на вход, а можно сгенерировать?
Если ты сам говоришь, что они приведут к тому же псевдослучайному генератору, то в чем смысл выделения «случайной генерации»?
Пример не понял. Я не большой знаток языков, во всех, что знаю, можно задать seed псевдослучайной последовательности. А то, что при одинаковом seed'е последовательность одинакова, это же ее тривиальное свойство, поэтому ее и называют псевдослучайной.
И почему нельзя сказать, что в Элите была процедурная генерация, я тоже не понимаю.
Только что сама хотела написать. :) Судя по перечню обновлений, игру хотят основательно перелопатить. Про атлас и лимиты согласна. Как это — без атласа?? Может, успею зайти и посмотреть, что натворили. А может побуду в числе зрителей. В перечне изменений как-то не очень увидела ммо-шность, кажется, игра продолжает уходить в другую сторону? Эти кампании меня очень сильно смущают.
Есть процедуры, они генерируют контент. Можно подавать на вход процедуры случайные данные, но при подаче одних и тех же данных они все равно будут давать одинаковый результат.
Даже если внутри процедуры есть 10 вызовов функции rand(), их можно (и даже нужно) заменить на входные параметры.
Хотя сколько я позитивных видео от игроков пересмотрел, многих даже так все устраивало, не начинай оно повторятся через не так уж много игровых часов.
Касательно процедурной генерации космоса — SpaceEngine, выглядит и правда волшебно.
Ну я же говорю — слегка ступил и разделил способы реализации на детерменированный и рандомный с не совсем теми названиями.
Ну скажем так чистая процедура по числу или даже массиву в параметрах и случайная генерация у меня бы отличались в разы по объему кода.
даже с учетом ограничения на рандом.
Код рандомной генерации очень хорошо сжимается и структурируется без потери качества. Рандомную енерацию намного проще писать. И.т.д.
Потому что работать мы все равно будем с ними как с двумя переменными. с дополнительной проблемой по вытаскиванию и пониманию кода впоследствии(что после возвращения к коду через пару месяцев очень даже играет).
Передавать тогда можно хоть сотню переменных в строке через запятую, но от этого они не будут снова одной переменной. Строку придется разворачивать внутри функции обратно.
В героях тоже была процедурная генерация. Там наверняка (точно сейчас не вспомню) был один аргумент, по которому карта строилась.
А вопрос похожести на пользовательские — это не вопрос отличий процедурной генерации от «рандомной», а вопрос реализации процедурной генерации.
Почему замены нет? Было две переменные, стала одна.
На C тоже вполне удобно было.
Вот и интересно, где здесь логические отличия.
Вот в Элите они сильно были похожи именно на случайные.
Это разве не видно. Тогда возможно тоже мой глюк.
До чего дошел прогресс: боязнь поступать не так, как положено, срабатывает даже при игре с самим собой.
разработчики скорее всего ее и имели в виду. Меня слегка занесло. Профдеформация — я все таки логику пишу по работе, а не графику вот мысль и свернула сразу в логические отличия. А про процедурную генерацию графики вспомнил сильно не сразу. %-)
Чуть выше ты говорил «по принципу построения кода». Ты это на глаз видишь?
То что укладывается в количество до 1000 элементов естественно лучше генерировать
вручнуюбез лишнего рандома.Я, может, попозже смогу как-то переформулировать, но пока как-то то же самое получается.
Функция, результат процедуры, зависит от двух аргументов — некоего числа, задаваемого извне, и числа, выпавшего из генератора. Можно тождественно преобразовать эту процедуру так, что результат зависит от двух аргументов задаваемых извне, но вторым задавать результат из генератора.
Два аргумента можно заменить одним побитово объединив их — из двух аргументов размером n и m бит получается один n+m бит.
Процедурная генерация, которая противопоставлялась хранению данных, не вижу чем отличается от процедурной генерации в NMS. По-моему это одно и то же.
А кампании — по-моему, это что-то среднее между глобусом и атласом, прошёл один данж — открылся следующий. Не вижу тут чего-то, что бы смущало.
Если ты сам говоришь, что они приведут к тому же псевдослучайному генератору, то в чем смысл выделения «случайной генерации»?
Пример не понял. Я не большой знаток языков, во всех, что знаю, можно задать seed псевдослучайной последовательности. А то, что при одинаковом seed'е последовательность одинакова, это же ее тривиальное свойство, поэтому ее и называют псевдослучайной.
И почему нельзя сказать, что в Элите была процедурная генерация, я тоже не понимаю.
Даже если внутри процедуры есть 10 вызовов функции rand(), их можно (и даже нужно) заменить на входные параметры.
Возможно.
Хотя я бы все таки разделил рандом и процедуры. Чисто по принципу построения кода.