Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
86 Кб, 1024x512
Мирогенерации тред #403166 В конец треда | Веб
Сап ноны.
В тред приглашаются математики, программисты и философы. Общаться будем за генерацию виртуальных миров.
В общем меня давно посетила мысль, что можно запилить великое множество виртуальных вселенных практически неограниченного размера.

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

По сути земная поверхность это 2-х мерное пространство из координат XY.

Теперь описание того о чём именно я толкую. Представим что в пустом 3-х мерном пространстве у нас стоит юзер, имеющий некоторое поле обзора. Он видит пустую землю и атмосферные эффекты вроде неба.
Используя особый псевдослучайный алгоритм (мирогенератор) мы разместим на карте сгенерированные объекты разной формы и размеров, взяв координаты за основу. Тоесть алгоритм пробежавшись по зоне видимости юзера генерирует объекты допустим горы, траву, ямы, скалы, камни, одиночные постройки и даже целые города. Самая мякотка псевдослучайности - это равномерное распределение и то, что объект генерируемый по координатам для каждого пользователя будет выглядеть одинаково в одном и том же месте.

Допустим если алгоритм сгенерирует гору с координатами 100;100, то каждый юзер, в поле зрения которого попали эти координаты увидит в этих координатах один и тот же объект, при том что генерироваться он будет у каждого юзера независимо.

Что это даёт - полное отсутствие необходимости хранения или передачи информации о объектах на карте или самой карты.
Что в свою очередь даёт практически неограниченное пространство. Каждому юзеру достаточно иметь на компьютере модели и алгоритмы генерации объектов и по желанию координаты отдельных массивов вроде городов, лесов, особых моделей и событий и т.д., чтобы получить неограниченную вселенную, правила генерации которой регулировались бы некоей константой. Единственный возможный ресурс этой вселенной - память - дисковое пространство сервера, хранящего пользовательские объекты и модели, только его можно было бы и продавать, что было бы "канонично".

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

Есть генератор пикрл результат, ему нехватает скоплений объектов с повышенной концентрацией объектов определённого типа и разреженных областей.

Что думаете? Как пофиксить?

Код генератора:
http://pastebin.com/pY27v1LF
#2 #403168
>>403166 (OP)
Ну изобрёл ты peer-to-peer мирогенерацию, ок. Игру так не сделаешь - читы для такого ММО будут просто охуенными.
#3 #403169
>>403168
Читы? Например?
#4 #403170
>>403169
Например, другой сид.
Единственная игра без читов сейчас - это WOT, в которой всё на сервере, даже небо, даже Аллах, игроки просто команды WASD по сети посылают и смотрят, что выходит.

Можно пойти по дорожке криптовалют, но тогда ты получишь очень большую избыточность и вся мякотка твоего птп теряется. Если каждый клиент будет сервером, почему бы не обойтись одним сервером по старинке?
#5 #403172
>>403170
Кому ты пиздишь? Одни только моды автонаводки в вотах чего стоят. Там читы просто яебу, та же хуйня что и читы в первом думе по сути. Твои воты могли бы жить без читов будь у них облачные вычисление, но это же донатные игрушки для нищенок, как у мейлру.
#6 #403173
>>403172

>Одни только моды автонаводки в вотах чего стоят.


Нихуя они не стоят, потому что их нельзя отличить от скилла.
А вот воллхаки и спидхаки принципиально нереализуемы. Сервер знает, что за кустом тебе нихуя не видно - сколько ни убирай куст в клиенте, нихуя не увидишь. Авторитаризм, православие и прогресс.
#7 #403175
>>403173
Нет смысла клиенту быть сервером, кроме как чтобы раздать координаты и модели которых нет у остальных. Это легко контролируется, клиент просто станет репозиторием с файлами. Жёсткая логика не даст обойти математические законы незаметно. Всё что сможет читер это отправить клиенту хитровыебанную трёхмерную модель или натыкать себе\убрать объекты через изменение исполняемого кода, по сути вообще лишив карту смысла и читерство корректнее будет называть атакой, ибо это уже пиздец.
#8 #403180
>>403173
Спидхак сам по себе безобиден.
#9 #403250
Теперь вернёмся к теме - как создать скопления объектов и разреженные области?
#10 #403251
>>403166 (OP)
Охуеть интересно - полностью статичный мир. А вот захочу я убрать нафиг эту гору в 100:100, что мне делать? Ну конечно же бросить твой мир и поставить православный майнкрафт.
#11 #403252
>>403166 (OP)
А, ну и ещё дkя развития твой депрессии, рекомендую глянуть Space Engine
#12 #403253
>>403251
Купи пару байт на сервере и делай с горой что хочешь. Для остального тебе хватит майнкрафта, мальчик.
#13 #403254
>>403252
Ну не того масштаба задумка. Спейсенжин оперирует уже известными данными, а значит они на жестаке хранятся, я же предлагаю генератор, который в теории сможет создавать не только плоскую поверхность, но и поверхность планеты вплоть до мельчайших деталей не зависимо от её размера, используя долготу/широту как координаты XY.
Суть в том, что размер жестака ограничен, а сам жестак довольно дорог если нужно юзать гигантские данные, в отличие от того же посредственного ЦПУ которого хватит на область обзора. Принцип как в ГТА - чем дальше видишь тем выше нагрузка на проц. Есть некоторая приемлемая дальность обзора, общая для всех людей, в которой для генерации объектов хватит даже калькулятора.
#14 #403478
бамп
#15 #403483
>>403254
В двух словах это называется unlimited detail, гугли подходы. Вполне себе научная проблема (если считать CS наукой)
454 Кб, 2560x1600
#16 #403488
>>403166 (OP)
Все, что ты тут напридумывал, давно уже реализовано.
#17 #403499
>>403488
в неимоверно примитивной графике для экономии памяти, вместо нормальных моделей
#18 #403504
>>403499
Тут веге протекло или что? Иди ведьмака перепройди, ты не перепроходил сегодня.
64 Кб, 220x220
#19 #403506
>>403499

>пок-пок игра говно - графика примитивная

#21 #403544
>>403254

>Спейсенжин оперирует уже известными данными, а значит они на жестаке хранятся, я же предлагаю генератор, который в теории сможет создавать не только плоскую поверхность, но и поверхность планеты вплоть до мельчайших деталей не зависимо от её размера, используя долготу/широту как координаты XY


Целая вселенная на жестаке хранится, да? Ты все же посмотри, это как раз, то что ты предлагаешь.
#22 #403545
>>403544
Я предлагаю то же самое но с возможностью высадки на любую планету без загрузок и швов, о чём писалось выше.
>>403506
>>403507
Чому тогда в майнкрафт играют школьники а не гроссммейстеры?
#23 #403548
>>403545

>Я предлагаю то же самое но с возможностью высадки на любую планету без загрузок и швов, о чём писалось выше.


Ты все таки посмотри Space Engine
#24 #403549
>>403548
Но там же из описания и так всё ясно, или я не прав?
#25 #403551
>>403504
Я не пойму чего вам так печот то? Майнкрафт говно - это неоспоримый факт, можно даже на скриншоты не смотреть. Я же ратую за техническое исполнение. Воксели это хорошо, но что, если бы память расходовалась только на изменения в неограниченном сгенерированном мире, а не на весь этот мир. Тогда можно было бы даже в такое говно графон завезти без потери производительности.
#26 #403552
>>403549
не прав. Там все процедурно генерируется, кроме солнечной системы. Швы есть, но их всего два - между системой звезды и галактикой, и между галактикой и скоплениями галактик. И подгружаются они настолько быстро, что заметишь ты их только играя на калькуляторе
#27 #403553
>>403551
Епта, ну ты подсчитай конкретно, сколько тебе этой самой памяти понадобится. Заодно подкачаешь скилл в комбинаторике (и поймешь разницу между идеей и реализацией)
#28 #403554
>>403552
В принципе я так и думал, что известные звёзды заведены в базу, солнечная система даже с правильными скинами, а далёкие галактики генерируются, но повторюсь, можно генерировать вообще всё это пространство и ещё миллион раз столько же, без швов, вместе с поверхностью планет, вместе с рельефом и формами жизни на этих планетах, достаточно лишь генератора равномерно распределяющего псевдослучайные числа..
#29 #403556
>>403554
Братишка, я тебя умоляю, скачай пейсэнжн и поиграйся там с колесиком мышки. Если после этого вопросы ещё останутся, тогда задавай.
#30 #403557
>>403553
Допустим поле зрения одного юзера 1ГБ, на каждый объект понадобится 8 Байт координат, сгенерировано может быть 1ГБ/8Б = 125000 объектов из которых 99% будут неактивными, вроде камушков или травы выской полигональности. Тоесть если растянуть всю эту хуйню на масштаб метр-точка, то оперативной памяти в 1ГБ хватит для обсчёта обзора дальностью ~ 62км 500м.
#31 #403558
>>403556
Принеси мне покушать видео с ютуба.
#32 #403559
>>403557
Это ограничение только дальности обзора, при этом дальность передвижения по генерируемому миру не ограничена, нужно лишь будет хранить от n байт памяти под координаты юзера.
#33 #403560
Как блядь генерировать разреженные области и скопления объектов?
#34 #403561
>>403560
Единственная нормальная мысль пока это разделить скопления с разреженностями на классы и генерировать их чередуя, в них самих генерировать направления генерации и по направлениям генерировать объекты.
#35 #403562
>>403560
Perlin noise тебе в помощь.
Этот вопрос говорит, о том, что ты хуй, и понятия не имеешь как на практике подступиться к твоей охуительной идее
#36 #403563
>>403562
Вообщет имею >>403561, но я всёравно хуй, не так ли.
#37 #403564
>>403560
О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг
#38 #403636
Ну молодец, мальчик, придумал процедурную генерацию. В самой первой элите это еще было. В миникруфте это есть. Даже в дварффортресс. Каждый генерит у себя - это уже годная идея. Вот только ответь, что ты будешь делать с читаками и как, блять, сделать этот мир изменяемым. Если же там даже цветок нельзя посадить так, чтобы сразу же у всех остальных это изменение было - игра говно и скучная.
#39 #403645
>>403636
Читы преувеличены. Изменения нужно хранить. Есть 2 пути - хранить на сервере и платить за дисковое пространство или хранить у себя выступая сервером и терять изменения при отключении.
#40 #403649
>>403645

>и терять изменения при отключении.


Что это значит?
Если несколько игроков в одном и том же месте по очереди построятся, что делать будешь?

>Читы преувеличены.


Анус твой преувеличен, точнее прерастянут, умник хуев.
#41 #403650
>>403649
1 всем раздам изменения ибо нехуй
2 папке своему это скажи.
#42 #403697
Привет, опик, я так понял, реализовывать все это ты собираешься на сихе?
Почитай о генерации обьектов в вове, там очень интересная реализация. а еще хранение данных в .MPQ
Там такая система, что весь вов лежит, по сути, в одной библиотеке(составленной из кучи других) , а загрузочные экраны выполняют там не совсем функцию "швов". Короче, ты поймешь, если почитаещь.
#43 #403739
>>403697
сиха или ява, как бы похуй, моих мозгов всёравно не хватит GL прикрутить, просто тема интересна. Опять же реализация судя по наличии подгрузок это не канон. Шум перлина подходит хорошо, но я пока его не осилил чтоб на практике применять.
#44 #403740
>>403739
Я тебе и говорю, что подгрузки там нет. Экраны там в целях экономии ресурсов, и присутствуют там по еще куче самых разных аспектов.

Генерации там нет, но это просто прекрасный пример работы сервер-юзер в прогрессии
#45 #403741
>>403740
Без генерации есть существенные ограничения.
47 Кб, 1024x512
#46 #403757
Продолжаем мирогенерацию. Сейчас экспериментирую с интерполяцией. Пока результат не сильно похож на перлина. Вместо цветов используется размер объектов.
#47 #403760
>>403545

>чому тогда в майнкрафт играют школьники...


Школьники и в шахматы играют. Вот я, например в сци же можно до 18 лет А в майнкрафт игают и люди, которые могут в ней построить очень красивое произведние. А школьникам нельзя чтоли играть в него?
#48 #403792
>>403760
Школьники это школьники, они мало знают, мало умеют, много шумят, даже просто играя в игру против школьника или в переписке, по его поведению сразу видно что он школьник, вот как ты.
#49 #403793
>>403792

>в переписке, по


Запятая не нужна.

>видно что


Запятая нужна.

Как ты ЕГЭ сдавать будешь, ума не приложу.
57 Кб, 1024x512
#50 #403794
Тема с генерацией мира продолжается. Спустя пару дней изысканий спасибо анону и товарищу Перлину, результат на пике, код богомерского жс на пастабине.

http://pastebin.com/w1tn4HV8
#51 #403795
>>403793
Я русский язык в школе не учил. Есть предметы куда интереснее.
#52 #403796
>>403795
В школе кроме языков, физры, геометрии и химии буквально одна хуета.
#53 #403797
>>403796
Ты не поверишь, но большей хуиты чем твои предпочтения просто не существует.
280 Кб, 1024x512
#54 #403799
Тот же шум промасштабированный в 8 раз и разреженный в 1,5 раза.
#55 #403800
>>403797
Щас бы быть неграмотным сколиозником без пространственного мышления и без знания как выбрать безопасный для здоровья стекломой.
#56 #403801
>>403800
Начни с определения пространственного мышления.
#57 #403802
>>403801
А закончим чем, определением сознания? Иди сразу нахуй.
#58 #403803
>>403802
чтд
#59 #403813
>>403792
Ты меня расстроил. Я чувствую небольшой гнев.
#60 #403853
Ну что анончики, вот и долгожданный результат. С момента старта треда шумогенератор был дополнен интерполяцией, сейчас ещё и вероятностями. Псевдослучайный генератор имеет почти ненавязчивую паттернизацию и может использоваться для генерации карты высот или ландшафтов. В общем код на гитхабе, можно баловаться реалтайм https://anonymoves.github.io/WorldGen/.
Теперь следующий шаг - как прикрутить движок к 3D? Реквестирую простейший способ или помощь могущего анона.По опыту знаю, среди вас есть те кто делает 3D движки за 15 минут, я же его смогу создать лишь за год.
#62 #403878
>>403796
А история, биология, etc*?
#63 #403883
>>403878
Есть ряд предметов, в которых преподаётся заведомая хуета для якобы развития мышления и тренировки. Физика, история, биология.
Отличная идея, пидоры - тратить 10 лет жизни на тренировку абстрактной непроверяемой хуйни. Не иначе жиды придумали.
#64 #403889
>>403883
физика и биология это не абстрактная, непроверяемая хуйня.
#65 #403917
>>403889
Лбом-то стучишь об пол, когда повторяешь мантры?
#66 #403921
>>403883

>заведомая хуета для якобы развития мышления >Физика, история, биология


Историк, ето ти? Если по тебе резко уебать 30 мегаджоулями - твоя личная биология станет историей.
#67 #403964
>>403889

>физика


>непроверяемая хуйня


Толсто.
#68 #404051
>>403166 (OP)
Слишком затратная/запутанная/непотянетуменя идея.
#69 #404066
>>404051
Почему?
#70 #404071
>>403166 (OP)

>Общаться будем за


Шлюхин сын, ты русишу прогуливал ит теперь на саентач припёрся, селюк ебаный.
28 Кб, 480x360
#71 #404158
>>404071
Дурашка
#72 #404168
>>403166 (OP)
по сути земная поверхность это х,у и зед для высоты. скрыл тред.
#73 #404169
>>403166 (OP)
ладно. снизойду даже зная что анон туп злобен и будет кидаться дерьмом ведь он ебаная обезьяна.

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

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

карта координат может быть зашитой в тридемодель на этапе моделирования. так делают йобу - расставляют хуйню запекают и радуются.

генерация же точно так же расставляет хуйню какую ты укажешь но никакого левелдизайна не будет. будет рандомная хуйня с рандомным шансом вырвиглазная. как 90% планет из 2^64 возможных в нмс.

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

короче память ограничена. количество операций за 15 милисекунд ограничено. как минимум это нужно держать в голове прежде чем начинать проектирование чего либо.
#74 #404170
>>403166 (OP)
Идея стара как мир, ты изобретаешь провалившийся No man's sky.
#75 #404171
>>404169
Если генерировать всё последовательно, с одного сида - то чтобы получить информацию о 100001-м объекте, тебе придётся сгенерить все предыдущие.
Лучше сделать псевдослучайную фукцнию кординаты -> содержимое.

Например, если адаптировать твою идею - рахбить пространство на блоки, и содержимое каждого блока генерить независимо с его собственного сида. А сам сид вычислять как какой-нибудь md5(x,y,z).
Тогда чтобы увидеть объект в далёкой жопе - не придятся строить все предыдущие.
#76 #404172
По порядку:
>>404169
Про объекты ты непонятно задвинул.
Левелдизайн это фича, а не баг. Храни на жестаке любой левелдизайн, основная масса же объектов может быть сгенерирована, вплоть до городов с подземкой.

Юзер это юзер. Мне кажется нелепо называть его просто камерой в пространстве.

Из данных нужны только координаты активных объектов и статусы\смещения пассивных активными. Само собой уложиться можно и в 128 байт на каждый активный объект. А при желании даже в 32 и меньше, используя битовые поля(си) или просто битоёблю.

Памяти использовать можно от 100 байт, игнорируя часть не генерируемых данных. Поле генерации можно сузить до поля обзора. Тоесть генерировать объекты только по повпавшим в поле обзора координатам. Воображаемые вычислительные затраты уменьшатся примерно в 3 раза.
>>404170
Хуже, я нихуя почти не сделал.
>>404171
Чтобы получить информауию о 100001-м объекте нужны лишь его координаты. В этом суть и смысл задумки. Координаты это его всё.

>Лучше сделать псевдослучайную фукцнию кординаты -> содержимое.


Тред не читай. Пол треда это твержу.

Строить все предыдущие не нужно. Завязка жёсткая на координаты. Только координаты и решают что генерировать и где. Короче см. поле обзора.
#77 #404173
>>404171
Специально для тебя продублирую ссылку https://anonymoves.github.io/WorldGen/
Генерация завязана на координаты.
#78 #404175
>>404173
ну нмс же. впрочем занятно.
#79 #404192
И все равно виднеется характерная периодичность узора - т.е. мир не такой уж и бесконечно рандомный.

Думаю, здесь поможет улиточка фрактальная функция.
176 Кб, 1205x613
#80 #404194
Или даже смесь из фрактала и шума перлина.

А вообще..
Для абсолютной рандомной бесконечности генерируемого мира можно отталкиваться от расширяющейся Вселенной.
Координата [0,0] это центр виртуальной вселенной.
В зависимости от удаленности от центра берем получившийся радиус и ставим его как переменную шума генерируемой местности.

Вся вселенная разбита на кольца. Можно также разделить на 4 зоны.

[-1:+1],[+0:+1],[+1:+1]
[-1:+0],[+0:+0],[+1:+0]
[-1:-1],[+0:-1],[-1:+1]

Если игрок находится на расстоянии 100 условных единиц от центра, при этом он находится ниже центра, при этом он находится правее центра, то его позицию можно описать так:
R = 100;
xOffset = 1;
yOffset = -1;

Эти три переменные и будут задавать шум для текущего окружения (в определенной площади).

З.Ы: Надеюсь, анон, ты поймешь, какую идею я пытаюсь донести.
#81 #404195
>>404194

>[-1:+1],[+0:+1],[+1:+1]


>[-1:+0],[+0:+0],[+1:+0]


>[-1:-1],[+0:-1],[+1:-1]

1100 Кб, 385x480
#82 #404197
Привет
#84 #404241
>>404192
Он не бесконечно рандомный, он просто бесконечный. Узорчатость легко нивелируется счётчиком в формуле, тогда будет вообще каша.
#85 #404242
>>404194
Всё понятно, но что мешает использовать стрые добрые XY начиная от нуля? Грубо говоря 1 бит может решать за отрицательность координат и генерацию объектов и мы без изъёбств приходим в бесконечный квадратный мир.
#87 #404310
я все понять не могу. это прогрессивное решение или шизофрения какая то.
#88 #404320
>>404310
Это процедурная генерация которой уже сто лет в обед, право на жизнь имеет, используется, но это не серебряная пуля и не золотой Грааль.
#89 #404326
>>404320
нет. это понятно. но вот детали. города например процедурные. не слишком ли? или например пространные рассуждения о двухмерной карте которые выглядят так будто именно тут то самая изюминка. но я сколько не медитирую не нахожу изюминки. я не говорю что в этом нет смысла. просто совершенно не врубаюсь этот смысл. вот и спрашиваю.
#90 #404329
>>404326

>города например процедурные. не слишком ли?


Качни Houdini, студия тридэ для VFX, он буквально про это всё. Там туторы про создание процедурных зданий, процедурных улиц, неба, Аллаха. Выглядит ровно настолько не уёбищно, насколько талантлив кодер-автор процедуры.
#91 #404344
#92 #404620
Добавил анимацию передвижения по генерируемой карте. Бугага.

https://anonymoves.github.io/WorldGen/
10 Кб, 300x300
#93 #404621
136 Кб, 1089x581
38 Кб, 220x174
#94 #404646
>>403166 (OP)
Пытаюсь вникнуть в суть...

>можно запилить великое множество виртуальных вселенных практически неограниченного размера.


Да, если отображать только ограниченное пространство в поле зрения игрока, в зависимости от его координат.
Пик1 - размер мира в игре Майнкрафт.

>По сути земная поверхность это 2-х мерное пространство из координат XY.


Да.

>Используя особый псевдослучайный алгоритм


>(мирогенератор) мы разместим на карте


>сгенерированные объекты разной формы и размеров,


>взяв координаты за основу.


Т. е. ты хочешь развернуть детерминированную псевдослучайную генерацию объектов исходя из координат игрока?
Каким образом ты планируешь завязать получение координат объектов из координат положения игрока?

>Тоесть алгоритм пробежавшись по зоне видимости юзера


>генерирует объекты допустим горы, траву, ямы, скалы, камни, одиночные постройки и даже целые города.


Такая динамическая генерация объекта зависит не только от координат места положения игрока,
но и от направления взгляда, угла обзора, так сказать, который может меняться вне зависимости от координат игрока...
Т. е. тебе придётся завязать эту твою мирогенерацию на координаты точки фокусировки внимания под определённым углом.

>Самая мякотка псевдослучайности - это равномерное распределение


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


Глянь обзоры Battlefield 4.

>Допустим если алгоритм сгенерирует гору с координатами 100;100, то каждый юзер,


>в поле зрения которого попали эти координаты увидит в этих координатах один


>и тот же объект, при том что генерироваться он будет у каждого юзера независимо.


Предлагаешь вгрузить, собрать и воспроизвести эту гору из текстур?

>Что это даёт -


>полное отсутствие необходимости хранения или передачи информации о объектах на карте


А если эти объекты движутся?

>или самой карты.


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

>Что в свою очередь даёт практически неограниченное пространство.


Ничто не мешает зациклить это твоё 2D в бесконечность, так сказать замкнуть плоскость в ленту Мёбиуса. Пик2.

>Каждому юзеру достаточно иметь на компьютере модели и алгоритмы генерации объектов


>и по желанию координаты отдельных массивов вроде городов, лесов, особых моделей и событий и т.д.


>чтобы получить неограниченную вселенную,


>правила генерации которой регулировались бы некоей константой.


Какой такой константой, если именно алгоритм предопределяет генерацию псевдослучайных значений (объектов)?
Ты имеешь в виду seed?

>Единственный возможный ресурс этой вселенной - память - дисковое пространство сервера,


>хранящего пользовательские объекты и модели,


>только его можно было бы и продавать, что было бы "канонично".


Помимо памяти, есть ещё и вычислительные ресурсы, которые позволяют всё это воспроизводить (генерировать).
(Смотри Принципы фон Неймана).

>Для самой карты требовалось бы несколько десятков байт под координаты огромных значений,


Каких таких байт? В которых содержится адрес доступа к ещё большему числу байт?

>что позволило бы в виртуальном мире уебать в закат в вечном движении и никогда не достичь


>края плоского виртуального мира.


Тогда, этот виртуальный мир - будет повторяться же, не?
Пусть и с большими периодами, но всё-же.
Даже здесь, повторы есть (период 2^55-1 значений):
https://connect.microsoft.com/VisualStudio/feedback/details/634761/system-random-serious-bug

Алсо, есть разделы: /s, /vg, /bg, /brg, /td и /pr
136 Кб, 1089x581
38 Кб, 220x174
#94 #404646
>>403166 (OP)
Пытаюсь вникнуть в суть...

>можно запилить великое множество виртуальных вселенных практически неограниченного размера.


Да, если отображать только ограниченное пространство в поле зрения игрока, в зависимости от его координат.
Пик1 - размер мира в игре Майнкрафт.

>По сути земная поверхность это 2-х мерное пространство из координат XY.


Да.

>Используя особый псевдослучайный алгоритм


>(мирогенератор) мы разместим на карте


>сгенерированные объекты разной формы и размеров,


>взяв координаты за основу.


Т. е. ты хочешь развернуть детерминированную псевдослучайную генерацию объектов исходя из координат игрока?
Каким образом ты планируешь завязать получение координат объектов из координат положения игрока?

>Тоесть алгоритм пробежавшись по зоне видимости юзера


>генерирует объекты допустим горы, траву, ямы, скалы, камни, одиночные постройки и даже целые города.


Такая динамическая генерация объекта зависит не только от координат места положения игрока,
но и от направления взгляда, угла обзора, так сказать, который может меняться вне зависимости от координат игрока...
Т. е. тебе придётся завязать эту твою мирогенерацию на координаты точки фокусировки внимания под определённым углом.

>Самая мякотка псевдослучайности - это равномерное распределение


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


Глянь обзоры Battlefield 4.

>Допустим если алгоритм сгенерирует гору с координатами 100;100, то каждый юзер,


>в поле зрения которого попали эти координаты увидит в этих координатах один


>и тот же объект, при том что генерироваться он будет у каждого юзера независимо.


Предлагаешь вгрузить, собрать и воспроизвести эту гору из текстур?

>Что это даёт -


>полное отсутствие необходимости хранения или передачи информации о объектах на карте


А если эти объекты движутся?

>или самой карты.


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

>Что в свою очередь даёт практически неограниченное пространство.


Ничто не мешает зациклить это твоё 2D в бесконечность, так сказать замкнуть плоскость в ленту Мёбиуса. Пик2.

>Каждому юзеру достаточно иметь на компьютере модели и алгоритмы генерации объектов


>и по желанию координаты отдельных массивов вроде городов, лесов, особых моделей и событий и т.д.


>чтобы получить неограниченную вселенную,


>правила генерации которой регулировались бы некоей константой.


Какой такой константой, если именно алгоритм предопределяет генерацию псевдослучайных значений (объектов)?
Ты имеешь в виду seed?

>Единственный возможный ресурс этой вселенной - память - дисковое пространство сервера,


>хранящего пользовательские объекты и модели,


>только его можно было бы и продавать, что было бы "канонично".


Помимо памяти, есть ещё и вычислительные ресурсы, которые позволяют всё это воспроизводить (генерировать).
(Смотри Принципы фон Неймана).

>Для самой карты требовалось бы несколько десятков байт под координаты огромных значений,


Каких таких байт? В которых содержится адрес доступа к ещё большему числу байт?

>что позволило бы в виртуальном мире уебать в закат в вечном движении и никогда не достичь


>края плоского виртуального мира.


Тогда, этот виртуальный мир - будет повторяться же, не?
Пусть и с большими периодами, но всё-же.
Даже здесь, повторы есть (период 2^55-1 значений):
https://connect.microsoft.com/VisualStudio/feedback/details/634761/system-random-serious-bug

Алсо, есть разделы: /s, /vg, /bg, /brg, /td и /pr
#95 #404657
Координаты есть координаты. Результат можно глянуть на гитхабе(ссылку давал пару постов назад), считай как модель передвигающегося персонажа с генерацией мира. Координаты постепенно увеличиваются, видны все повторения генерируемых куч и мерцание от интерполяции. Процессорное время на каждый кадр тратится одинаковое, область видимости может быть хоть треугольной и вращаться, координаты от того не изменятся.
20 Кб, 393x389
43 Кб, 960x720
#96 #404659
>>404657

>Координаты постепенно увеличиваются


Они увеличиваются на гипотетической плоскости.
Но вижу повторы и цикличность.

>координаты от того не изменятся.


Если рассматривать это как движение по окружности или эллипсу внутри цилиндра, то координаты при движении изменяются лишь относительно наблюдаемых объектов.
76 Кб, 1000x500
#97 #404694
>>404659
Движение по карте не ограничено, это не движение по окружности, а смещение координат. Фактически координаты рассчитываются как x0 = x1 + x2, где x1 координаты объекта на отображаемом поле, x2 это увеличивающийся счётчик, то есть что то вроде пройденного расстояния по оси x. Таким образом несмотря на цикличность, размер карты ограничен лишь количеством байт отводимых под координаты. Видимая цикличность это фича псевдослучайного алгоритма, конкретно вычисляется по формуле "(x ^ y) % max", я могу его разбавить энтропией в виде счётчика чисто для наглядности, поскольку просто счётчик делает генерацию неповторимой на каждый кадр, его нужно уменьшать перед отрисовкой очередного кадра, тогда цикличность узора будет исключена в принципе (пик).
#98 #404695
>>404659
Корректнее будет сказать, что координаты изменяются у объектов. Я согласен с тем, что карта похожа на поверхность циллиндра сферы, но размер этой сферы может быть колоссальным. В миллиард раз больше чем майнкрафтова карта показанная здесь >>404646, поскольку сама карта в памяти не хранится, а под координаты размер карты, расстояние которое можно пройти, можно отвести хоть пару гигабайт.

Грубо говоря, всех людей планеты не хватит для создания ситуации на карте когда двое смогут встретиться.
#99 #404716
>>404694

>(x ^ y) % max


Чтоб получить равномерное распределение выходных значений генератора
- можешь взять число max - простым,
вместо X - первообразный корень от этого простого числа,
а на Y подавать какую-нибудь функцию от двух переменных f(x, y),
которая не коммутативна.
Т. е. если взять в качестве функции сумму (x+y),
то при x = 5; y = 2 - результат будет 7,
но при x = 2; y = 5 - результат тоже будет 7,
потому что операция сложения - коммутативна.
Короче, можешь взять минус.
http://kaf401.rloc.ru/Criptfiles/primroots.htm
#100 #404721
>>404716
max менять нельзя, это количество видов объектов, остаток от деления на это число является одним из max объектов.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 30 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /sci/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски