Четверг, 26 Декабря 2024, 05:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Муравейник в Unity
andreytemnДата: Пятница, 17 Января 2014, 18:46 | Сообщение # 1
был не раз
Сейчас нет на сайте
Решил написать стратегию на Unity, вроде как. симулятор муравейника. Требуется решить одну важную вещь - какой тип выбрать: 2D или 3D.

Игра планируется мультиплатформенная. т.е. сначала на ПК, потом, возможно, на Андроид. Так что. особых вычислительных мощностей ждать не приходится.
Суть вопроса: в случае, если игра будет трехмерная, то в ней будет присутствовать множество 3D объектов - тех самых пресловутых муравьев, тысячи их! Насколько это критично и имеет ли смысл в таком случае браться за 2D-вариант? Сможет ли графический чип среднего смартфона вытянуть обилие 3D моделей в игре?

P.S. если есть, накидайте, пожалуйста, информации по теме.
NEBRДата: Пятница, 17 Января 2014, 19:38 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
andreytemn, динамический батчинг, доступный во фри версии, объединит материалы одинаковых объектов, тем самым сократив количество графических вызовово... Но тысячи - тут, думаю, уже количество вертексов сожрет сцену

King Size #Gamiron12
EchoITДата: Пятница, 17 Января 2014, 19:39 | Сообщение # 3
старожил
Сейчас нет на сайте
andreytemn, два полигона в плоскости с текстурой против >200 полигонов в модели. Посчитай сам, что меньше жрать будет. wink

Долгожданный анонсик: State of War
allodsДата: Пятница, 17 Января 2014, 20:55 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
или объединяй в 1 муравья 100 =)
TiendilДата: Пятница, 17 Января 2014, 23:58 | Сообщение # 5
участник
Сейчас нет на сайте
Цитата andreytemn ()
Требуется решить одну важную вещь - какой тип выбрать: 2D или 3D.

Если будет отображаться сложная структура муравейника (со всеми внутренностями), то однозначно 2Д, но не из-за движка, а из-за удобства навигации и восприятия.


Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )

Текущий проект: the-tale.org - indie mmozpg
URGINSANДата: Суббота, 18 Января 2014, 01:19 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Цитата EchoIT ()
andreytemn, два полигона в плоскости с текстурой против >200 полигонов в модели. Посчитай сам, что меньше жрать будет.

Можно даже в один триангл уместить)


Я на драйве
Nasa13Дата: Суббота, 18 Января 2014, 11:25 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Я бы делал однозначно на 3д потому как я не перевариваю 2д!!!

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

Первая техника :

Occlusion culling - юнити сообществу очень повезло, на прошлом движке такую тему нужно было вручную писать, здесь она есть -

http://docs.unity3d.com/Documentation/Manual/OcclusionCulling.html

Но если расчитывать муравьев как динамик объекты, то придется создавать area occ cculing

Короче, в чем смысл?? Эта специальная система, которая просчитывает нахождения объекта в 3д пространстве, создает сетку( размеры Вы выбирать сами можете) , и отсекает объект когда Вы на него не смотрите, а показываются те, на которые Вы смотрите, и есть еще одна система!!!! Там написано о ней, объекты, которые заслоняют другие объекты, видимы, а вторые нет!!! Оптимизация просто рвет))) но я объяснил чтобы понятно было)))

Вторая техника -lod 2d billboards

Очень офигенская техника) многие из вас ее видели) вот ее, наверное, вручную писать придется... В чем смысл??

Короче, есть импорстеры( например муравьи 3d model ) , для каждого импорстера муравья, мы делаем get 2d imposter(2д объект, спрайт) в 3d пространстве, т.е этот 2 д объект, спрайт муровья, и он изменяет свое положение в зависимости от того, под каким углом на нечего смотрит игрок, и и на каком расстоянии( ну за расстояние играет роль помещение спрайт как в 3д пространств) , потому как он billboard 2d sprite, и дальше идет сама соль...

Мы настраиваем расстояние до импостера 3д, заменяем его на спрайт 2д, который как бы из далека очень похож на 3д модель, и когда игрок подъезжает ближе спрайт меняется на закрепленную с ним 3д модель, и плюс еще используется лод для самой модели)

Все, я побежал, надеюсь помог, просто в детстве гредил этой идеей про муравьев , не мог мимо пройти))) у меня система была, именно после нее я пошел в игрострой)) там кланы придумал, Жуков для передвижения))) короче побежал, надеюсь как-то понятно объяснил


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1


Сообщение отредактировал Nasa13 - Суббота, 18 Января 2014, 11:46
RS366Дата: Суббота, 18 Января 2014, 16:34 | Сообщение # 8
частый гость
Сейчас нет на сайте
Можно партиклами попробовать, если камера будет на достаточном удалении, а тысячи объектов не каждый ПК еще выдержит, про средние мобилки с таким подходом можно забыть.

allodsДата: Суббота, 18 Января 2014, 16:53 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата RS366 ()
Можно партиклами попробовать, если камера будет на достаточном удалении

Ну если надо чтоб они воевали , как они это делали каждый четверг с 5ти вечера у меня за домом(там были красные муравьи чуть больше черных, у них рабы были черные, они каждый четверг шли громить муравейники черных муравьев а потом тащили коканы к себе, это было круто...) то партикли это тупо, темболее один партикл это 2 треугольника с текстурой , так что в 2д луче
set16Дата: Суббота, 18 Января 2014, 17:06 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата
Occlusion culling
Актуальна только для игр ААА класса,

Делать можно и на 3д, только поменьше физики использовать( box коллайдеры )

Добавлено (18.01.2014, 17:06)
---------------------------------------------
В стратегиях, главное рассчитать нагрузку на CPU так как там большое количество логики, а нагрузка с графической стороны не так уж велика, объекты там совсем малополигонные обычно


=>The darkness of distant lands [3D]<=
Nasa13Дата: Суббота, 18 Января 2014, 17:08 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Почему оккулинг для ААА игр? Для всех, только он не включен по умолчанию, и если проект небольшой ,в нем и смысла нет, его лучше юзать для чего-то существенного! Для деревьев, травы, множества объектов, для множество динамик объектов, а на юнити он делается в пару кликов, главное разобраться с настройками) (И конечно ,это для триал версии ЮНИТИ, и не для продажи, скорее для себя)

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

Но вот 2д + бильбордс + 3д обжект ,можно и самому запилить , для оптимизации самое оно...

Я еще плохо знаю про "ЮНИТИ_ИМПОСТЕР", но я видел, как их создали 50 000 и фпс был 50 и выше..Сейчас гляну...

Кстати, вот тема, о чем я говорил - http://u3d.as/content/cwkx-studios/automatic-3d-billboard-imposters-abi-/5BN

-Смотреть всем, кто не знает про эту систему)) Это решит все проблемы...

35 баксов, можно и самому допереть, при желании)))


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1
set16Дата: Суббота, 18 Января 2014, 17:15 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Цитата
Почему оккулинг для ААА игр?


Потому что, в инди играх отрисовка объектов занимает меньше времени чем просчет Occlusion culling, в играх ААА класса наоборот, именно из-за высокой детализации сделали Occlusion culling. Где число полигонов в близи( где LOD подмены нет) переваливает за милион или больше.

К примеру как тут корабль 30 000 000 полигонов, Occlusion culling поднял бы FPS smile



=>The darkness of distant lands [3D]<=

Сообщение отредактировал set16 - Суббота, 18 Января 2014, 17:22
Nasa13Дата: Суббота, 18 Января 2014, 17:32 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Погоди, culling - переводится как,примерно, выборка!

Ты точно говоришь о той же системе, о которой я говорю? В чем смысл куллинга? Пространство делится , грубо говоря, на сетку, и затем объекты, скрываются в зависимости от нахождения по отношению к камере( это я говорю про статик объекты, динамик, там создается ЗОНА ВЫБОРКИ).

Смысл в том, чтобы не накладывать рендер(шейдеры,просчеты) на объекты, что мы не видим...Т.е. вот смотрим мы на деревья, допустим их 10000 , а видим только 10, вот те остальные ,что спрятались за 10 ,будут скрыты...В этом и суть куллинга, и если я не ошибаюсь, он не убирает частично объекты, а полность, т.е если мы смотрим на большой корабль ,тут суть такова, что он весь будет рендериться, а если на здание, что закрывает этот корабль, то только здание...Думаю смысл ясен...ЭТО ОЧЕНЬ ПОЛЕЗНО ДЛЯ СОСТАВЛЕНИЯ ЛАНДШАФТА! Да-да, спрятать деревья, траву, оградку, много домов...

Куллинг делается не из-за детализации, а из-за кол. объектов..,Кстати, почитай справку, там об этом говорят! Просто в юнити, объекты не скрываются ,когда мы на них не смотрим(или когда один объект, заслоняет другой, то рендерятся все) , поэтому эта система только в ПРО версии, она значительно облегчает ФПС...А корабль...Ну что сказать, лод все-равно есть ,и уровень мип-мап ...тут все вместе ,поэтому можно хавать любые объекты...Там уже другие техники, просто я говорю про кулинг, потому как видел его скрипт, прочитал про него несколько статей ,и справку на офф юнити сайте..А там не знаю, может я чего-то и упустил

===================================

Приведу пример из офф справки

Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D computer graphics since most of the time objects farthest away from the camera are drawn first and closer objects are drawn over the top of them (this is called "overdraw"). Occlusion Culling is different from Frustum Culling

Т.е. Occlusion Culling- скрывает(деактивирует) объекты, которые по сути(напрямую) не находятся на сцене, потому как они закрыты другими объектами.Это не случается(не происходит) автоматически в 3д компьютерной графики, так как сначала рисуются объекты , что находятся далеко от камеры ,а затем рисуются объекты, что находятся ближе и покрывают первых (это называется "overdraw"). Occlusion Culling это не то же самое что Frustum Culling

Я пытался перевести так, чтобы было понятно, может я не знаю английского, или чего-то не понимаю, просветите))) может я ошибаюсь по поводу этой системы


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1


Сообщение отредактировал Nasa13 - Суббота, 18 Января 2014, 17:37
set16Дата: Суббота, 18 Января 2014, 17:43 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Occlusion culling убирает не видимую часть объекта, то есть сфера будет как полусфера, то есть этот корабль не полностью будет отображаться а только его видимая часть, прорисовка этого корабля намного дольше чем просчет Occlusion culling, значит тут она актуальна, а если у тебя на сцене низкополигонные модели она может не поднять FPS а наоборот его сильно снизить

=>The darkness of distant lands [3D]<=
Nasa13Дата: Суббота, 18 Января 2014, 17:55 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Единственное ,что она делает плохо, так это изначальные просчеты в начале игры, т.е. она просчитывает вначале клеточки, что тем самым может создать "начальное зависание", а потом как по маслу, я сам тестил...А вот то , о чем ты говоришь ,я тоже раньше так думал, но читал справку

Почитай, она на русском

http://unity3dscripts.16mb.com/translate/occlusion/01/

Обычно такие корабли, они создаются из многих частей, т.е. делятся, и затем складываются в редакторе во что-то целое...И эти части могу скрываться , но в справке нет того, что скрывается пол объекта, а пол показывается...

Говорю из опыта, потому как я видел скрипт , в живую, и сам им пользовался...

Привожу пример:

It is important to keep this in mind when creating your objects because you need a good balance between the size of your objects and the size of the cells. Ideally, you shouldn't have cells that are too small in comparison with your objects but equally you shouldn't have objects that cover many cells. You can sometimes improve the culling by breaking large objects into smaller pieces. However, you can still merge small objects together to reduce draw calls and, as long as they all belong to the same cell, occlusion culling will not be affected. The collection of cells and the visibility information that determines which cells are visible from any other cell is known as a PVS (Potentially Visible Set).

Важно все время помнить, что нужно соблюдать баланс между размером объектов, и размером клеточек! В идеале, у вас не должно быть слишком маленьких клеточек по сравнению с объектами, но и так же не должно быть объектов, которые покрывают много клеточек...Вы можете улучшить систему "КУЛЛИНГА" разбив большие объекты на маленькие кусочки... В то же время, вы можете слить маленькие объекты, чтобы уменьшить draw call и , так долго, как они будут принадлежать одной и той же клеточки, occllusion culling не будет затронута(т.е. не будет повреждена механика).Совокупность клеточек и информация о видимости тех, что сейчас видны из множества других ,известна как PVS (Потенциальный видимый объект)

Примерный перевод (переводил сам, так как не доверяю переводам, я еще толком его не читал)

Добавлено (18.01.2014, 17:55)
---------------------------------------------
Мне хотелось бы видеть ту информацию, что ты мне пытаешься предоставить, что скрывается половина объекта...Я тоже хочу почитать...


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1


Сообщение отредактировал Nasa13 - Суббота, 18 Января 2014, 17:56
lentinantДата: Суббота, 18 Января 2014, 17:59 | Сообщение # 16
ленивый программист
Сейчас нет на сайте
Nasa13, имеется ввиду, что OC тоже использует ресурсы процессора для вычисления, какую же часть модели надо скрыть, и иногда нагрузка, создаваемая прорисовкой полной версии модели, может быть меньше нагрузки, создаваемой вычислением ненужных элементов модели.

Когда-то тут будут ссылки на крутые проекты. Или нет.
Nasa13Дата: Суббота, 18 Января 2014, 18:20 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
Я понял ,о чем речь, но прочитав справку я говорю что к чему... И так, давайте рассмотрим техники все, чтобы не было путаницы...

Occlusion Culling - он скрывает объекты, которые находятся за объектом, но ни в коем случае не скрывается половина объекта, которого мы видим...

Сейчас, чтобы было наглядно, давайте переведем парочку справок...:

Viewing frustum culling
The viewing frustum is a geometric representation of the volume visible to the virtual camera. Naturally, objects outside this volume will not be visible in the final image, so they are discarded. Often, objects lie on the boundary of the viewing frustum. These objects are cut into pieces along this boundary in a process called clipping, and the pieces that lie outside the frustum are discarded as there is no place to draw them.

Перевожу сразу , чтобы понятнее было

Система Frustum Culling - Видимость Frustum , это геометрическое представление объема видимой части ,виртуальной камерой... Смысл в том ,что те объекты которые находятся в не поля видимости камеры, не будут видимы,так как они отбрасываются(обрезаются). Часто, объекты находятся на границе видимости(т.е. половина видна, половина нет). Эти объекты разделяются на кусочки(режутся на куски, четко видимо/невидимо), это называется Clipping, и другие кусочки, что лежат вне поле зрения, не обрабатываются...

Backface culling[edit]
Since meshes are hollow shells, not solid objects, the back side of some faces, or polygons, in the mesh will never face the camera. Typically, there is no reason to draw such faces. This is responsible for the effect often seen in computer and video games in which, if the camera happens to be inside a mesh, rather than seeing the "inside" surfaces of the mesh, it mostly disappears. (Some game engines continue to render any forward-facing or double-sided polygons, resulting in stray shapes appearing without the rest of the penetrated mesh.)

"ЗАдний куллинг" - так как объекты представляют собой полые оболочки, не заполненные объекты(имеется в виду, внутри пусто то), задняя часть этих обьектов(сторон или полигонов) меша, никогда не будет в поле зрения камеры...Обычно, нет смысла прорисовывать подобные стороны(т.е. полости).Это объясняется эффектом ,когда мы можем наблюдать очень часто в компьютерных видео играх, что когда мы попадаем внутрь "МЕША", то обычно мы не видим его вообще(Как исчезает). (Некоторые игровые движки продолжают рендерить все части(и лицевые, и задние) в результате чего появляются лишние части , без особых на то причин)

Contribution culling
Often, objects are so far away that they do not contribute significantly to the final image. These objects are thrown away if their screen projection is too small.

Очень часто некоторые объекты находятся так далеко от камеры, что они ни как не могут повлиять на общую картину. Так вот, эти элементы автоматически отбрасываются , если они слишком малы.

Occlusion culling[edit]
See also: Z-buffering#Z-culling
Objects that are entirely behind other opaque objects may be culled. This is a very popular mechanism to speed up the rendering of large scenes that have a moderate to high depth complexity. There are several types of occlusion culling approaches:
Potentially visible set or PVS rendering, divides a scene into regions and pre-computes visibility for them. These visibility sets are then indexed at run-time to obtain high quality visibility sets (accounting for complex occluder interactions) quickly.
Portal rendering divides a scene into cells/sectors (rooms) and portals (doors), and computes which sectors are visible by clipping them against portals.
Hansong Zhang's dissertation "Effective Occlusion Culling for the Interactive Display of Arbitrary Models" [1] describes an occlusion culling approach.

Уже лень переводить ,но думаю, смысл ясен


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1
set16Дата: Суббота, 18 Января 2014, 18:21 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Жалко что забанили на Youtube OGASODA он там рассказывал и тестил Occlusion culling, и говорил что в проектах с малой детализацией LOD дает прирост FPS а Occlusion culling наоборот снижает. Там было все наглядно показано.

=>The darkness of distant lands [3D]<=
Nasa13Дата: Суббота, 18 Января 2014, 18:28 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
И опять же добавлю, что куллинг может создать одно неудобство - долгая загрузка, может показаться, что зависло что-то, но после "установки всего" , все будет летать!)

Добавлено (18.01.2014, 18:28)
---------------------------------------------
Кстати , в поддержку этому "ОГАСОДЕ"( Кстати, а за что его забанили? Я его толком не знал ,помню год назад пытался смотреть по УДК уроки, и все) - Окклузион имел дефекты...Т.е. глючил ,сейчас как-то лучше стало, но блин, ребята...Не надо путать Viewing frustum culling и Occlusion culling - я для кого переводил? Стоит почитать, и все понятно, кстати, frustum culling автоматически идет, если я не ошибаюсь, а то не было бы вообще оптимизации , и большинство вещей автоматически идет ,например как - Backface culling[edit] ... Вещь такая как Mip Maps...

Вот Куллинг, я его тестировал ,только делает предзагрузочный завис...А еще , Я читал тоже про юнь Кулллинг, там тоже кто-то говорил , типа такого " Я думал, что все зависло, а это куллинг "создавался""...Типа такого...Там сетка и то и все...

Но уверяю, это ПЛЮС к оптимизации, особенно для такого проекта!! Как этот! НО самое главное ...

ABI - смотрите выше видео, что я кинул, это просто монстр оптимизации)


все люди одинаково полезны,говорил людоед туристам.

Мешает грудь? Спячь под "СПОЙЛЕР.*)

моя мини демка ,хоррор http://3drad-alec.ucoz.com/forum/6-39-1
set16Дата: Суббота, 18 Января 2014, 18:35 | Сообщение # 20
постоянный участник
Сейчас нет на сайте
Цитата Nasa13 ()
Кстати, а за что его забанили?


Epic Games - нарушение авторских прав, решил продавать игру без лицензии и об этом говорил на канале

Хотя вот нашёл один из его опытов над Occlusion culling



В начале единой сеткой без Occlusion culling фпс был больше(около 100) чем единой сеткой с Occlusion culling(около 80)

А вот когда много объектов (большее число диталей ) Occlusion culling немного помогал, 24фпс без Occlusion culling и 32 фпс с Occlusion culling


=>The darkness of distant lands [3D]<=

Сообщение отредактировал set16 - Суббота, 18 Января 2014, 19:02
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг