Nikmaikl, Adom, я уже организовал школу. осталось дело за малым - собрать препод-состав и выложить уроки! пишу понемногу.. но времени мало.. трудно людям в одиночку. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Воскресенье, 03 Ноября 2013, 15:55
млин, посмотрел на работы и прям амбивалентностью покрылся: с одной стороны - вот молодцы!! рисуют же люди!! а с другой - ни за одну бы не проголосовал.. (если бы имел право голоса ) тут с ТLT согласен (редкий случай ) - либо "не отражает", либо "из другой оперы" и т.п.
по поводу работы error111 -- концептуально подошел. нечто похожее
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Понедельник, 28 Октября 2013, 00:42
я вот попросил моего друга с медленным компом протестировать, где было где то 20к кубов. Даже за 5 минут игра комп не смог скомбинировать в меши
не, у него в чем то другом дело. комбинит нормально!! тут памяти нужно больше.. чем видяхи.. вот если бы был полноценный г.-инстансинг - тогда видяха бы делала.
Остались еще на свете кадры у которых асм +100 к скорости дает:)
ну 100 не 100 а дает и конкретный. для тех кто в танке: Unity работает с C# (+ javascript) а это формальный язык проходящий через ДВЕ трансляции.. да еще код на выходе не всегда совершенный. Так что можешь не сомневаться -- ассемблер будет работать в несколько раз быстрее... по крайней мере до окончательной компиляции исходников. да и потом тоже бывает. (на чем надо програмить чтобы этого не знать. это ж азы!).
ЦитатаArchido ()
Вообщем, повеселились и пойдет. Срач тут точно никому не нужен.
да уж поржал с твоими постами не по детцки!
ЦитатаArchido ()
Кстати, а после него кубы обратно выудить возможно или нет? И если да, то насколько быстро? Вот скажем закомбайнил ты здание и хочешь оттуда парочу кубов удалить \ переместить, как это будет происходить? Спортивный интерес.
внутри основного объекта в который сливается единый меш - остаются все дочерние ссылки, но не меши. поэтому по простой команде - получаешь доступ к любому из них и Destroy или transform.position... но тогда нужно рекомбинировать меш заново. а это не есть хорошо. а так - доступ в легкую и модификация на раз... поэтому робертону не перестаю повторять - уходи ты от этих реальных кубов!! делай виртуальные!! все будет намного лучше и глаже работать! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Суббота, 26 Октября 2013, 16:12
интерфейс перечислитель? прикольно. ну не знаю.. смотреть надо.. но раз у тебя от него фпс взлетает - то супер! (хотя по моему он этим не занимается.) ну вот и разобрались! помог чем мог, на здоровье. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Но пишет что GetComponent can only be called from the main thread, а та строчка самая тяжелая из всего скрипта...
раздели строку на две части - в одной геткомпонент в переменную, а в другой из переменной уже combine. вторую толкни в поток. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
а может кто то покажет простой пример с использованием потоков ? Статьи с нормальным описанием использования потоков в шарпе приветствуются!
в самом MinePck (заездил я его тут уже! ) - скрипт BatchProcessor. (просто микроскопический для такого функционала). пример его использования в скрипте WordGameObject, функция Start и из нее по цепочке смотри.. там конструкторы спецобъектов запускаются в батче. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Пятница, 25 Октября 2013, 18:38
Ввел в гугл unity3d instancing а он мне предлагает gpu instancing, mesh instancing , hardware instancing... Что по моей теме больше подходит? Меш инстансинг?
в сети по большей части под юнити инстансингом подразумевают... Instantiate!! т.е. программное размещение префаба в игре в реалтайме (мало ли, мож забыл кто! ).
правильное понятие Geometry Instancing, он может быть хардварным или программным (тогда его некоторые называют псевдо г.-инстансингом). GPU инстансинг - это тоже самое что г.-инстансинг. он не поддерживается старыми видяхами. меш-инстансинг наверняка имеют в виду то же самое - просто более ближе к телу. т.к. "заменяется" как раз меш у клонов.
в CryEngine, как говорят в ссылке, c 2004 года он поддерживается.. а вот для Unity я так и не нашел на официальном сайте ничего кроме "ждите в 4 версии будет включен!" во всех форумах. и это млин угнетает!!! уже две ключевые технологии ждем - uGUI и G.-Instancing.
а так, программно - люди уже все реализовали!! респектуха им! и не сочтите рекламой!!! за NGUI (но там кстати тоже все гуи за 2 DC рисуется! и есть механизм для этого) и за MinePackage и за потрясный ProBuilder в котором можно быстро, управляя на уровне граней и вертексов, лепить уровни, навешивать текстуры с UV прямо в редакторе юньки и еще несколько вещей!
я к тому, robertono, что не нужно бегать от создания своего г.инстансинга! это возможно и реально решает вопросы! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Пятница, 25 Октября 2013, 18:14
Раз у тебя кол-во вертексов сильно не изменилось, то ты поменял шило на мыло. Забей один этаж в "префаб" (в "один кусок геометрии") и собери из него такое же здание, как и из кубов.
млиин, ну по русски пишу вроде!! драв коллов стало 8 вместо 1840! тебе это ХОТЬ О ЧЕМ ТО говорит?!?!
ЦитатаArchido ()
Твой "оклюжн" захлебнется, когда таких зданий из 5К кубов будут десятки и больше.
умник пипец просто. оклюжен работает на мат модели с ассемблерным кодом. он не захлебнется и при полмиллиона 5к кубов-моделей. просто загрузка перед стартом будет высокой. тем более, сто раз говорил - не должно быть там кубов!! НЕ ДОЛЖНО!! там будут виртуализации если сделать правильно!! сам вякаешь про чтение, а после третьего повтора мог хотя бы просто - обратить внимание на то, что второй и третий разу уже специально для тебя писали!
ЦитатаArchido ()
Дык, если бы ты все понял с первого раза, то мне бы и не пришлось бы "буковки разводить", лол.
тебе, ..., с самого НАЧАЛА СКАЗАЛИ что не будет цельных моделей, ты свое талдычишь - "сделай цельную модель и тогда все полетит".. это либо врожденное, либо ты просто проспал смысл темы.. уж не знаю.
ЦитатаArchido ()
Реалтайм - во время "апдейта" или "рендера".
значит тебе вразумительно написали - ПРИ ЗАГРУЗКЕ! т.е. ДО рендера!
ЦитатаArchido ()
Омг, ты действительно через пару строчек читаешь или не способен думать.
судя по твоим постам тут кроме тебя реально никто не способен думать.
ЦитатаArchido ()
И есть большая пачка кубов-объектов (визуально они выглядят в точности как "один кусок геометрии"),
кому нужно "визуально"??? когда делаешь литой кусок, и тоскаешь за ним "node" с полностью идентичным количеством кубов, то смысл такой херни может быть доступен только тебе, чтобы подставить его когда сам не поймешь зачем опять написал то же самое только как яица - вид сбоку! итак: либо ты имеешь к "цельной" модели ВИРТУАЛЬНУЮ карту позиций блоков и таскаешь ее с моделью, то накой ты вообще затеял общение в этой теме если советуешь такую бредятину?! эт первый вопрос. а второй - даже если сделать это - то виртуальную сетку "из выглядящих в точности как целая модель" блоков - как строить? и прикреплять? и потом узнавать в какую точку ВИРТУАЛЬНОЙ модели произошло воздействие? и почему ты советуешь ДВОЙНУЮ работу делать, когда уже все объяснили и получили отличный результат (1600 фпс было у человека!). Wakatta? и ты конечно потряс своими особенностями - когда не знаешь Unity - столько всего написать в ветке по Юнити!!
Немного криво получилось объяснить, но весь смысл в постоянной подмене объединённой статики (которая также создаётся в процессе игры, а не только присутствует в начале) на динамический аналог при взаимодействии с игроком и обратно после взаимодействия
нет, ты правильно его идею выразил! я просто уже ответил - что это будет полный пиндык, а не функционал!! эти подмены убьют весь выигрыш от монолитной первоначальной модели. в робертоновской задаче просто есть статичные элементы типа зданий и террайна - они все равно формируются в начале. так что тут никаких проблем со слиянием не будет. и тем более уже в minpack все показано досконально. и работает просто отлично. и там не требуется замарачиваться с подменами на лету и вычислением целого здания после выбивания одного куба. просто арчидо никак не въедет в основной баланс нагрузок в постановке задачи.
в общем я думаю что тема бодро переходит во флуд!! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Пятница, 25 Октября 2013, 11:29
Вы говорите нужно отказываться от кубов. Ведь в minepackage я так понял это просто мешы , 16 на 16, где просто меняются точки на меше из за которых образуются кубы , а на самом деле это просто меш с точками на разной высоте? И всё?
там даже не меши, а просто виртуальные объекты, которые хранятся в матрице, привязанной к координатам по сетке.
Цитатаrobertono ()
В зданиях будут отдельные модели : столы, стулья, компьютеры и другая мебель.
да сразу было понятно что ты затеял разрушаемый мир так фигачить! я думаю если сделать основные блоки мира механизмом minePck то потом стулья не будут так уж грузить систему, если их конечно тоже не будет 50к в каждом доме! :)) а так, то что ты задумал - это решается только комбинированной "высшей математикой" игростроя (геом.инстансинг, псевдо инстансинг, оклюжен, батчинг, лод и прочее). даже с кубами. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Поэтому я сделал свой скрипт из примера документации mesh.combinemeshes, и скрипт впихнул 60 % здания в меш. Остальное отказался, наверно потому что больше 65к вершин , хотя не понимаю как может быть 65к (в кубе одном из юнити, сколько вершин ? 12 ?).
ошибка которую он выдает - это превышение Int16 просто в Unity не ждали что ты есть. и что захочешь вливать в один меш больше чем 16-значное целое частей! я у себя разбил твое здание на 8 этажный кусок и все прошло. но! нужно ОТКАЗЫВАТЬСЯ ОТ КУБОВ!! совсем! нужно делать как в MinePckge - виртуальные объекты куба. и вешать на них все что тебе нужно. да, разбираться НАДО! да, потребуется легкая доработка - но это будет НОРМАЛЬНЫЙ проект кубового мира. только так.
Цитатаrobertono ()
А можно делать combinemeshes в ассинхронном потоке (или как он там, может я опять что то напутал, вообщем мульти-ядерно) ?
да, батчинг привествуется. но все таки это нужно делать только на старте. потом все равно обрабатывать это правильным способом! (Декоратор).
о. еще один усталый мегагеймдевер мимо проходил.. сил и опыта хватило только поохать по стариковски. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Четверг, 24 Октября 2013, 22:11
Т.е. "OC" все вырубит тоже при помощи магии? Ну ок.
оклюжн для того и создан чтобы исключать. он быстро работает и оверхеда здесь не вижу никакого. тем более жестокого.
ЦитатаArchido ()
Спасибо, кэп.
на здоровье! (зачем буковки разводить про то что с самого начала было отвергнуто за ненадобностью?)
ЦитатаArchido ()
Если там realtime, то оно все равно будет тормознее, чем с заранее подготовленной геометрией работать.
при загрузке - это для тебя реалтайм? тогда да. на загрузке один раз сложился в единый меш весь город. потом работа только с кусками.
ЦитатаArchido ()
Проблем не вижу.
ну так нарисуй решение. хотя б алгоритмом!
ЦитатаArchido ()
Есть куча кубов, упакованная в один кусок геометрии (грубо говоря этим кубам сделали "батчинг" в оффлайне)
вот это волшебство! если их упаковали ДО размещения в игру (а иначе что значит "офлайн" - забили в префаб?? и как тогда в префабе забатчить??), то они просто - один кусок геометрии! и нет там кубов! как потом найти место для второго сверху на два вглубине?!? пересчитывать все координаты?!?! _____________________________________________
не! видать никто не качал MinePackage - ну есть же все! все уже сде ла но!!!! и бесплатно! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
я сделал для опыта встроенный в Unity Mesh.CombineMesh и у меня с этим зданием DC стал 8-14, а был 1840. при этом странное дело - увеличивается (!!) количество вертексов и трисов. хоть незначительно но все таки. и на скорость это не влияет.
ЦитатаArchido ()
Occlusion culling'ом кубы проверять - тоже жесткий оверхед.
а там не надо их проверять. ОС сам вырубит из обработки все, что вне поля зрения -- до приложения шейдеров и т.п. отличная технология и полностью здесь подходит. просто она в Про версии и для нее префаб нужно готовить лучше.
ЦитатаArchido ()
то при отрисовке по одному кубу рендеру нужно собрать 10 * 50 = 500 инстансов в один буфер. Если у нас есть полноценный готовый этаж, то мы просто рисуем 10 этажей и работаем всего лишь с 10-ю инстансами
1. робертону смысл как раз не в едином монолите здания, а в "разбиваемых" кубах. 2. внутри MinePckg как раз реализована идеальная технология одного DC на весь меш получившегося "здания".
ЦитатаArchido ()
В случае, если какое-либо здание или его часть собирается разваливаться, то перед этим просто конкретный "этаж-меш" заменяется на такой же набор уже отдельных кубов и к ним применяется физика например.
тут шило на мыло - во первых нужно как то узнать что будет вовлечено, во вторых произвести АДЕКВАТНУЮ замену в кубах... тут больше вопросов чем решений!! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
придется провести тест на пересечения луча с треугольником.
не требуется. размер "куба" известен заранее. координаты его - три числа. не нужно ВООБЩЕ учитывать треугольники и плоскости. рассчитывается только виртуальное размещение куба в целом по лини луча!! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Там ведь кубы это просто меш, 16х16х** , и на что добавлять то риджид боди?
там к chunk'у добавляется вся комплектация для полноценного куба - меш фильтр, меш рендер, ничего не стоит добавить еще что либо в поля класса.
Цитатаrobertono ()
но ведь делая на лучах можно уже не иметь Pro версию
математика быстрее рейкаста (в большинстве случаев), в твоем примере имеешь дело с пятью цифрами и простыми формулами для расчета. она будет в разы быстрее работать чем 500k лучей на каждом тике разбрасывать. имхо.
Цитатаrobertono ()
А что если рендерить у кубов не все 6 сторон, а только 3 которые в данный момент видно?
у реального куба как ты это сделаешь??
Цитатаrobertono ()
А вот насчёт Mine Package... Я не смог найти нормальных исходных кодов. Я находил те, которые на сурс фордже оставил разработчик, скачал, но блоки не ломаются
не знаю что ты смотрел - у меня полный комплект исходников (ну по крайней мере - всю логику я видел по цепочке и dll нет), скачанных с сайта автора. "ломаются" не совсем понятно. в моем варианте если три раза пнешь по кубу он исчезает открывая дыру в скале (с правильными текстурами кстати). в тестовом проекте я туннель пропинал кубов в 20 глубиной.
а MeshMerge не посмотрел? Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Occlusion culling - "убирает" невидимые поверхности ДО применения шейдеров и растеризации. Это именно то, что ты ищешь и кто то решал лучами там. Но ведь это для Pro версии. там одно "но" - настройка объектов для последующего куллинга делается в инспекторе. для твоих кубов придется навешивать Occlusion Portal на каждый и программно их вкл/выкл. LOD - физически переключает детализацию (меньше вертексов). Instancing -- так же "физически убирает лишние вертексы" путем рендеринга одного меша вместо многих идентичных (тоже твой случай). Но я не видел еще описания под Unity - как там использовать этот процесс. Кроме совета использовать MeshMerge и делать все копии полностью идентично префабу (scale, rotate).
поэтому, пример MinePckg - это отдельная технология заменяющая саму методику Occl.Cul. на свой модуль. и офигенно хорошо заменяющая. не знаю, почему ты не возьмешь её за основу!? там все есть что тебе нужно полностью. только добавь воды regidbody. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Среда, 23 Октября 2013, 15:26
Очень странно - не проходит именно проверка с русскими буквами System.Text.UTF8Encoding Эт для чего ?? shy Если для перекодировки скрипта, то я его уже перекодировал в Notepad++
попробуй присвоить отдельной переменной ну например testStr значение "Камин", и поставь в условие UItext == testStr, увидишь результат будет тот же = 0. а если через дебугер посмотреть значение переменной (я у себя не занимался нотепадством++ ) testStr - оно будет сразу после присвоения - кракозяблами. поэтому берешь Encoding, декодируешь в правильную кодировку любой текст и все работает. просто сложности C# (ссылку я давал).
локализация в NGUI это просто словарь, который заменяет АНГЛИЙСКИЙ текст в списке на русский в соответствии ключ-значение. на label и sprite вешается скрипт-локализатор. при изменении основного языка в объекте Localizator, происходит OnLocalize в скрипте-локализаторе (на лейблах и спрайтах) и он просто заменяет тексты и картинки на взятые из словаря. Оказалось - после локализации там все равно русский текст. Так что тут отбой.
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Из чего вообще состоят эти системы? Сетка из триггеров?
"эти системы"? эт ты про что? в MinePck - простой трехмерный массив блоков, каждый из которых хранит признаки и тп. основой блока является ТРАНСФОРМ.
Цитатаrobertono ()
Вот такое нехитрое решение я нашёл для oclusion culling!
нуу не знаааю.. Lod, Occlusion автоматом считают видимость... хотя идея конечно зачетная
Цитатаrobertono ()
Какие вообще есть способы что бы не рендерить объекты которые не видно но они например находятся за какими то объектами спереди?
просто Active = false; вопрос определения их видимости. я бы сделал просто ближайшие к игроку видимыми все. остальные считал бы через линию проходящую через точку блока и точку позиции камеры - получил бы на его пути координаты других объектов, из смещение + заранее известный размер "кубов" сделали бы признак видимости однозначным.
а так вопросов тут очень много. как ответишь на них все - напиши тут статью плиз!!
Вот есть уже и скрипты url=http://gamecreatingcommunity.ru/forum/178-2039-1]. Есть LOD система (оклюжен дороговатый в обработке все таки), с очень хорошими показателями тут и тут.
ну и у тебя под рукой MinePckg с превосходной концепцией под твою задачу и с понятной реализацией. в теме не получается ответить на все. учебник нужно делать. вкратце - в кубовом мире возможно сделать некубовые кубы и их рендеринг и коллайдинг по условиям. регид боди добавлять можно тоже по условиям (выбит блок пользователем - проверь цепочку блоков сверху) и все будет очень натурально и быстро. но для некубичных миров все иначе работает! поэтому все-таки это узкоспециальная тема. Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Вторник, 22 Октября 2013, 20:43