М.Двач / Наука

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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

86 Кб, 1024x512

Мирогенерации тред 28 янв, 14:30 #403166 В конец треда | Веб

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

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

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

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

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

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

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

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

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

Код генератора:
http://pastebin.com/pY27v1LF

Ответы3168325132523488405140714168416941704646

28 янв, 14:58 #2 #403168

>>403166 (OP)
Ну изобрёл ты peer-to-peer мирогенерацию, ок. Игру так не сделаешь - читы для такого ММО будут просто охуенными.

Ответы3169

28 янв, 15:03 #3 #403169

>>403168
Читы? Например?

Ответы3170

28 янв, 15:14 #4 #403170

>>403169
Например, другой сид.
Единственная игра без читов сейчас - это WOT, в которой всё на сервере, даже небо, даже Аллах, игроки просто команды WASD по сети посылают и смотрят, что выходит.

Можно пойти по дорожке криптовалют, но тогда ты получишь очень большую избыточность и вся мякотка твоего птп теряется. Если каждый клиент будет сервером, почему бы не обойтись одним сервером по старинке?

Ответы3172

28 янв, 15:26 #5 #403172

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

Ответы3173

28 янв, 15:35 #6 #403173

>>403172
>Одни только моды автонаводки в вотах чего стоят.
Нихуя они не стоят, потому что их нельзя отличить от скилла.
А вот воллхаки и спидхаки принципиально нереализуемы. Сервер знает, что за кустом тебе нихуя не видно - сколько ни убирай куст в клиенте, нихуя не увидишь. Авторитаризм, православие и прогресс.

Ответы31753180

28 янв, 15:46 #7 #403175

>>403173
Нет смысла клиенту быть сервером, кроме как чтобы раздать координаты и модели которых нет у остальных. Это легко контролируется, клиент просто станет репозиторием с файлами. Жёсткая логика не даст обойти математические законы незаметно. Всё что сможет читер это отправить клиенту хитровыебанную трёхмерную модель или натыкать себе\убрать объекты через изменение исполняемого кода, по сути вообще лишив карту смысла и читерство корректнее будет называть атакой, ибо это уже пиздец.

28 янв, 19:04 #8 #403180

>>403173
Спидхак сам по себе безобиден.

29 янв, 10:58 #9 #403250

Теперь вернёмся к теме - как создать скопления объектов и разреженные области?

29 янв, 11:00 #10 #403251

>>403166 (OP)
Охуеть интересно - полностью статичный мир. А вот захочу я убрать нафиг эту гору в 100:100, что мне делать? Ну конечно же бросить твой мир и поставить православный майнкрафт.

Ответы3253

29 янв, 11:02 #11 #403252

>>403166 (OP)
А, ну и ещё дkя развития твой депрессии, рекомендую глянуть Space Engine

Ответы3254

29 янв, 11:02 #12 #403253

>>403251
Купи пару байт на сервере и делай с горой что хочешь. Для остального тебе хватит майнкрафта, мальчик.

29 янв, 11:11 #13 #403254

>>403252
Ну не того масштаба задумка. Спейсенжин оперирует уже известными данными, а значит они на жестаке хранятся, я же предлагаю генератор, который в теории сможет создавать не только плоскую поверхность, но и поверхность планеты вплоть до мельчайших деталей не зависимо от её размера, используя долготу/широту как координаты XY.
Суть в том, что размер жестака ограничен, а сам жестак довольно дорог если нужно юзать гигантские данные, в отличие от того же посредственного ЦПУ которого хватит на область обзора. Принцип как в ГТА - чем дальше видишь тем выше нагрузка на проц. Есть некоторая приемлемая дальность обзора, общая для всех людей, в которой для генерации объектов хватит даже калькулятора.

Ответы34833544

30 янв, 22:35 #14 #403478

бамп

30 янв, 23:26 #15 #403483

>>403254
В двух словах это называется unlimited detail, гугли подходы. Вполне себе научная проблема (если считать CS наукой)

454 Кб, 2560x1600

31 янв, 02:31 #16 #403488

>>403166 (OP)
Все, что ты тут напридумывал, давно уже реализовано.

Ответы3499

31 янв, 08:10 #17 #403499

>>403488
в неимоверно примитивной графике для экономии памяти, вместо нормальных моделей

Ответы35043506

31 янв, 08:31 #18 #403504

>>403499
Тут веге протекло или что? Иди ведьмака перепройди, ты не перепроходил сегодня.

Ответы3551

64 Кб, 220x220

31 янв, 08:57 #19 #403506

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

Ответы35073545

43 Кб, 536x536

31 янв, 08:58 #20 #403507

>>403506

Ответы3545

31 янв, 18:42 #21 #403544

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

Ответы3545

31 янв, 18:46 #22 #403545

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

Ответы35483760

31 янв, 18:49 #23 #403548

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

Ответы3549

31 янв, 18:50 #24 #403549

>>403548
Но там же из описания и так всё ясно, или я не прав?

Ответы3552

31 янв, 18:56 #25 #403551

>>403504
Я не пойму чего вам так печот то? Майнкрафт говно - это неоспоримый факт, можно даже на скриншоты не смотреть. Я же ратую за техническое исполнение. Воксели это хорошо, но что, если бы память расходовалась только на изменения в неограниченном сгенерированном мире, а не на весь этот мир. Тогда можно было бы даже в такое говно графон завезти без потери производительности.

Ответы3553

31 янв, 18:59 #26 #403552

>>403549
не прав. Там все процедурно генерируется, кроме солнечной системы. Швы есть, но их всего два - между системой звезды и галактикой, и между галактикой и скоплениями галактик. И подгружаются они настолько быстро, что заметишь ты их только играя на калькуляторе

Ответы3554

31 янв, 19:02 #27 #403553

>>403551
Епта, ну ты подсчитай конкретно, сколько тебе этой самой памяти понадобится. Заодно подкачаешь скилл в комбинаторике (и поймешь разницу между идеей и реализацией)

Ответы3557

31 янв, 19:03 #28 #403554

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

Ответы3556

31 янв, 19:05 #29 #403556

>>403554
Братишка, я тебя умоляю, скачай пейсэнжн и поиграйся там с колесиком мышки. Если после этого вопросы ещё останутся, тогда задавай.

Ответы3558

31 янв, 19:12 #30 #403557

>>403553
Допустим поле зрения одного юзера 1ГБ, на каждый объект понадобится 8 Байт координат, сгенерировано может быть 1ГБ/8Б = 125000 объектов из которых 99% будут неактивными, вроде камушков или травы выской полигональности. Тоесть если растянуть всю эту хуйню на масштаб метр-точка, то оперативной памяти в 1ГБ хватит для обсчёта обзора дальностью ~ 62км 500м.

Ответы3559

31 янв, 19:14 #31 #403558

>>403556
Принеси мне покушать видео с ютуба.

31 янв, 19:16 #32 #403559

>>403557
Это ограничение только дальности обзора, при этом дальность передвижения по генерируемому миру не ограничена, нужно лишь будет хранить от n байт памяти под координаты юзера.

31 янв, 19:18 #33 #403560

Как блядь генерировать разреженные области и скопления объектов?

Ответы356135623564

31 янв, 19:19 #34 #403561

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

Ответы3563

31 янв, 19:22 #35 #403562

>>403560
Perlin noise тебе в помощь.
Этот вопрос говорит, о том, что ты хуй, и понятия не имеешь как на практике подступиться к твоей охуительной идее

Ответы3563

31 янв, 19:25 #36 #403563

>>403562
Вообщет имею >>403561, но я всёравно хуй, не так ли.

31 янв, 19:29 #37 #403564

>>403560
О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг

01 фев, 18:39 #38 #403636

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

Ответы3645

01 фев, 20:45 #39 #403645

>>403636
Читы преувеличены. Изменения нужно хранить. Есть 2 пути - хранить на сервере и платить за дисковое пространство или хранить у себя выступая сервером и терять изменения при отключении.

Ответы3649

01 фев, 22:09 #40 #403649

>>403645
>и терять изменения при отключении.
Что это значит?
Если несколько игроков в одном и том же месте по очереди построятся, что делать будешь?
>Читы преувеличены.
Анус твой преувеличен, точнее прерастянут, умник хуев.

Ответы3650

01 фев, 22:12 #41 #403650

>>403649
1 всем раздам изменения ибо нехуй
2 папке своему это скажи.

02 фев, 14:38 #42 #403697

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

Ответы3739

02 фев, 19:08 #43 #403739

>>403697
сиха или ява, как бы похуй, моих мозгов всёравно не хватит GL прикрутить, просто тема интересна. Опять же реализация судя по наличии подгрузок это не канон. Шум перлина подходит хорошо, но я пока его не осилил чтоб на практике применять.

Ответы3740

02 фев, 19:40 #44 #403740

>>403739
Я тебе и говорю, что подгрузки там нет. Экраны там в целях экономии ресурсов, и присутствуют там по еще куче самых разных аспектов.

Генерации там нет, но это просто прекрасный пример работы сервер-юзер в прогрессии

Ответы3741

02 фев, 19:45 #45 #403741

>>403740
Без генерации есть существенные ограничения.

47 Кб, 1024x512

03 фев, 08:24 #46 #403757

Продолжаем мирогенерацию. Сейчас экспериментирую с интерполяцией. Пока результат не сильно похож на перлина. Вместо цветов используется размер объектов.

03 фев, 09:40 #47 #403760

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

Ответы3792

03 фев, 19:33 #48 #403792

>>403760
Школьники это школьники, они мало знают, мало умеют, много шумят, даже просто играя в игру против школьника или в переписке, по его поведению сразу видно что он школьник, вот как ты.

Ответы37933813

03 фев, 19:54 #49 #403793

>>403792
>в переписке, по
Запятая не нужна.
>видно что
Запятая нужна.

Как ты ЕГЭ сдавать будешь, ума не приложу.

Ответы3795

57 Кб, 1024x512

03 фев, 19:57 #50 #403794

Тема с генерацией мира продолжается. Спустя пару дней изысканий спасибо анону и товарищу Перлину, результат на пике, код богомерского жс на пастабине.

http://pastebin.com/w1tn4HV8

03 фев, 19:58 #51 #403795

>>403793
Я русский язык в школе не учил. Есть предметы куда интереснее.

Ответы3796

03 фев, 20:03 #52 #403796

>>403795
В школе кроме языков, физры, геометрии и химии буквально одна хуета.

Ответы37973878

03 фев, 20:05 #53 #403797

>>403796
Ты не поверишь, но большей хуиты чем твои предпочтения просто не существует.

Ответы3800

280 Кб, 1024x512

03 фев, 20:07 #54 #403799

Тот же шум промасштабированный в 8 раз и разреженный в 1,5 раза.

03 фев, 20:12 #55 #403800

>>403797
Щас бы быть неграмотным сколиозником без пространственного мышления и без знания как выбрать безопасный для здоровья стекломой.

Ответы3801

03 фев, 20:15 #56 #403801

>>403800
Начни с определения пространственного мышления.

Ответы3802

03 фев, 20:22 #57 #403802

>>403801
А закончим чем, определением сознания? Иди сразу нахуй.

Ответы3803

03 фев, 20:22 #58 #403803

>>403802
чтд

03 фев, 22:45 #59 #403813

>>403792
Ты меня расстроил. Я чувствую небольшой гнев.

04 фев, 17:49 #60 #403853

Ну что анончики, вот и долгожданный результат. С момента старта треда шумогенератор был дополнен интерполяцией, сейчас ещё и вероятностями. Псевдослучайный генератор имеет почти ненавязчивую паттернизацию и может использоваться для генерации карты высот или ландшафтов. В общем код на гитхабе, можно баловаться реалтайм https://anonymoves.github.io/WorldGen/.
Теперь следующий шаг - как прикрутить движок к 3D? Реквестирую простейший способ или помощь могущего анона.По опыту знаю, среди вас есть те кто делает 3D движки за 15 минут, я же его смогу создать лишь за год.

58 Кб, 500x500

22 Кб, 500x500

04 фев, 17:59 #61 #403854

05 фев, 04:13 #62 #403878

>>403796
А история, биология, etc*?

Ответы3883

05 фев, 07:55 #63 #403883

>>403878
Есть ряд предметов, в которых преподаётся заведомая хуета для якобы развития мышления и тренировки. Физика, история, биология.
Отличная идея, пидоры - тратить 10 лет жизни на тренировку абстрактной непроверяемой хуйни. Не иначе жиды придумали.

Ответы38893921

05 фев, 10:43 #64 #403889

>>403883
физика и биология это не абстрактная, непроверяемая хуйня.

Ответы39173964

05 фев, 17:59 #65 #403917

>>403889
Лбом-то стучишь об пол, когда повторяешь мантры?

05 фев, 18:39 #66 #403921

>>403883
>заведомая хуета для якобы развития мышления >Физика, история, биология
Историк, ето ти? Если по тебе резко уебать 30 мегаджоулями - твоя личная биология станет историей.

06 фев, 10:59 #67 #403964

>>403889
>физика
>непроверяемая хуйня
Толсто.

07 фев, 00:12 #68 #404051

>>403166 (OP)
Слишком затратная/запутанная/непотянетуменя идея.

Ответы4066

07 фев, 08:11 #69 #404066

>>404051
Почему?

07 фев, 09:32 #70 #404071

>>403166 (OP)
>Общаться будем за
Шлюхин сын, ты русишу прогуливал ит теперь на саентач припёрся, селюк ебаный.

Ответы4158

28 Кб, 480x360

07 фев, 19:29 #71 #404158

>>404071
Дурашка

07 фев, 20:28 #72 #404168

>>403166 (OP)
по сути земная поверхность это х,у и зед для высоты. скрыл тред.

07 фев, 20:48 #73 #404169

>>403166 (OP)
ладно. снизойду даже зная что анон туп злобен и будет кидаться дерьмом ведь он ебаная обезьяна.

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

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

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

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

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

короче память ограничена. количество операций за 15 милисекунд ограничено. как минимум это нужно держать в голове прежде чем начинать проектирование чего либо.

Ответы41714172

07 фев, 21:02 #74 #404170

>>403166 (OP)
Идея стара как мир, ты изобретаешь провалившийся No man's sky.

Ответы4172

07 фев, 21:06 #75 #404171

>>404169
Если генерировать всё последовательно, с одного сида - то чтобы получить информацию о 100001-м объекте, тебе придётся сгенерить все предыдущие.
Лучше сделать псевдослучайную фукцнию кординаты -> содержимое.

Например, если адаптировать твою идею - рахбить пространство на блоки, и содержимое каждого блока генерить независимо с его собственного сида. А сам сид вычислять как какой-нибудь md5(x,y,z).
Тогда чтобы увидеть объект в далёкой жопе - не придятся строить все предыдущие.

Ответы41724173

07 фев, 21:22 #76 #404172

По порядку:
>>404169
Про объекты ты непонятно задвинул.
Левелдизайн это фича, а не баг. Храни на жестаке любой левелдизайн, основная масса же объектов может быть сгенерирована, вплоть до городов с подземкой.

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

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

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

Строить все предыдущие не нужно. Завязка жёсткая на координаты. Только координаты и решают что генерировать и где. Короче см. поле обзора.

07 фев, 21:22 #77 #404173

>>404171
Специально для тебя продублирую ссылку https://anonymoves.github.io/WorldGen/
Генерация завязана на координаты.

Ответы4175

07 фев, 21:34 #78 #404175

>>404173
ну нмс же. впрочем занятно.

08 фев, 07:56 #79 #404192

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

Думаю, здесь поможет улиточка фрактальная функция.

Ответы4241

176 Кб, 1205x613

08 фев, 09:09 #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;

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

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

Ответы41954242

08 фев, 09:11 #81 #404195

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

1100 Кб, 385x480

08 фев, 09:25 #82 #404197

Привет

Ответы4288

994 Кб, 600x600

08 фев, 09:26 #83 #404199

Ответы4288

08 фев, 19:04 #84 #404241

>>404192
Он не бесконечно рандомный, он просто бесконечный. Узорчатость легко нивелируется счётчиком в формуле, тогда будет вообще каша.

08 фев, 19:06 #85 #404242

>>404194
Всё понятно, но что мешает использовать стрые добрые XY начиная от нуля? Грубо говоря 1 бит может решать за отрицательность координат и генерацию объектов и мы без изъёбств приходим в бесконечный квадратный мир.

516 Кб, 650x650

2074 Кб, 500x500

1888 Кб, 500x500

2115 Кб, 516x700

09 фев, 02:14 #86 #404288

>>404197
>>404199

09 фев, 10:52 #87 #404310

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

Ответы4320

09 фев, 15:10 #88 #404320

>>404310
Это процедурная генерация которой уже сто лет в обед, право на жизнь имеет, используется, но это не серебряная пуля и не золотой Грааль.

Ответы4326

09 фев, 16:43 #89 #404326

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

Ответы4329

09 фев, 17:20 #90 #404329

>>404326
>города например процедурные. не слишком ли?
Качни Houdini, студия тридэ для VFX, он буквально про это всё. Там туторы про создание процедурных зданий, процедурных улиц, неба, Аллаха. Выглядит ровно настолько не уёбищно, насколько талантлив кодер-автор процедуры.

Ответы4344

09 фев, 22:04 #91 #404344

>>404329
BUENO

13 фев, 19:23 #92 #404620

Добавил анимацию передвижения по генерируемой карте. Бугага.

https://anonymoves.github.io/WorldGen/

10 Кб, 300x300

13 фев, 19:25 #93 #404621

136 Кб, 1089x581

38 Кб, 220x174

14 фев, 06:20 #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

14 фев, 06:20 #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

Показать весь текст
Ответы4695

14 фев, 08:15 #95 #404657

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

Ответы4659

20 Кб, 393x389

43 Кб, 960x720

14 фев, 08:36 #96 #404659

>>404657
>Координаты постепенно увеличиваются
Они увеличиваются на гипотетической плоскости.
Но вижу повторы и цикличность.
>координаты от того не изменятся.
Если рассматривать это как движение по окружности или эллипсу внутри цилиндра, то координаты при движении изменяются лишь относительно наблюдаемых объектов.

Ответы46944695

76 Кб, 1000x500

14 фев, 19:46 #97 #404694

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

Ответы4716

14 фев, 19:58 #98 #404695

>>404659
Корректнее будет сказать, что координаты изменяются у объектов. Я согласен с тем, что карта похожа на поверхность циллиндра сферы, но размер этой сферы может быть колоссальным. В миллиард раз больше чем майнкрафтова карта показанная здесь >>404646, поскольку сама карта в памяти не хранится, а под координаты размер карты, расстояние которое можно пройти, можно отвести хоть пару гигабайт.

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

15 фев, 05:45 #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

Ответы4721

15 фев, 08:09 #100 #404721

>>404716
max менять нельзя, это количество видов объектов, остаток от деления на это число является одним из max объектов.

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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /sci/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion