Войти
UnityФорумОбщее

Unity3d - ограничения (4 стр)

Страницы: 13 4 5 644 Следующая »
#45
4:10, 16 апр. 2013

Из моего опыта работы с Unity:

1. Кроссплатформенен когда не надо.

К примеру новые Microsoft SDK сплошь идут под .NET Framework 4.0-4.5. Пробуем подключить их библиотеки классов напрямую к Unity и понимаем простую вещь.

Нельзя вот так просто взять и подключить чужие библиотеки классов к Unity

Ибо Unity шибко кроссплатформенен и не считает нужным утруждать себя поддержкой .NET хотя бы 3.0 и плотно застрял на 2-м. Хорошо что "Microsoft заботится о С++ программистах" и кладет в свои SDK ещё и простые сишные библиотеки (как правило с урезаным функционалом, что уже не айс), ОДНАКО большинство попыток напрямую закрутить эти dll-ки к Unity вызывают геморой по какой-нибудь одной мааааленькой детали. И ЧСХ каждый раз разной! Как следствие такие проблемы вызывают написание библиотеки которая бы обеспечила совместимость целевой библиотеки с Unity. '_'

Есть ещё интересные моменты с двумя(!) интерфейсами .NET в Unity. Но они все решаются переключением Api Compability Level c 2.0-Subset на просто 2.0.

2. Неточная документация.

В документации к Unity есть "так называемый" список совмести с .NET. Там прописано дюже много функций .NET с которыми Unity совместим.

Так вот - не верьте ему!

Это очень сложная проблема. Однажды я попытался подключить DirectShow к Unity ( не правда ли глупо? :) ) . Написал код, запустил его... после чего мои глаза неожидано увидели быстро приближающуюся ко лбу ладонь. По одной базовой функции COM Unity выдал фокус-сообщение. Мол не поддерживается. Минут пять я сидел ступоре, но всё же решил таки разобраться. Иду в документацию, в этот злощастный лист совместимости и вижу что все ОК! Все поддерживается! Окончательно теряя связь с реальностью теряю и целый день, чтобы запилить эту несчастную функцию. После чего, естественно, вновь достигнув просветления (такого что Будде и не снилось ) я соображаю: "А не проверить ли мне совместимость этой функции с Mono-dev-ом?". И что характерно - не совместим. %)

Так что не верьте всему что в документации написано. Иногда это просто пиар.

Вы убили целый день чтобы узнать что мы ошиблись в документации? - Ничего личного. Это просто бизнес.

3. Ограничения на шейдеры.
Нуууу... их много. На массивы, на глубину цикла, на рекурсию как таковую. Понятно что это сделано ради совместимости с дроидами. НО, тех кто не разрабатывает под дроиды это сильно угнетает. Нет, я не спорю что с ихним шейдерлабом при желании и умении можно творить чудеса. И разработчики будут правы когда скажут что это игровой движок, а не движок под всякую хрень. Но знаете: иногда так хочется чего-то для души... %)

Вообщем наиболее распространенный обход шейдерных ограничений это так называемый RenderPlugin. Это такая "отдушина" для тех кто устал ходить под гнетом ограничений. Кратко: тебе передают контекст устройства и предоставляют все калбэки его жизнецикла, а ты уже делай с ним что хочешь. Алсо поддерживается смена состояний устройства, что радует и откровенно пугает.

Мы просто рендерим сцену в RenderTexture, заранее передав ссылку на текстуру в плагин.
На конец фрейма вызываем рендер плагина.
А дальше JUST RENDER WORLD IN TWO TRIANGLE. То бишь рисуем полноэкранный прямоугольник с рендер-текстурой под шейдером.

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

ОДНАКО... %)... Весь ваш рендер в плагине должен уложится в n-миллисекунд. В противном случае Unity пошлет вас куда подальше ( если драйвера видеокарты не отвалятся к тому времени ).

Ну хоть на том спасибо.

4. MovieTexture  - зло.
Честно, я не знаю что они там вояли. Но хотелось бы посмотреть на это кодЪ. Преполагается что MovieTexture должен использоваться для рисовки видео, да? Ага. Фига с два. Вы забываете о кроссплатформенности Unity с дроидами! Видео даунсэмплится до степени "а что это за размазанные кляксы на экране?" даже при качестве 1:1. О панорамном 4к видео я вообще молчу, ибо оно вызывает 1-2 фпс ( что характерно: как же рендер, заботящийся о каждой миллисекунде шейдера, такое позволил? %) ), и даунсэмплится хуже чем SD.

Если вам нужно видео - лучше потратьте немного времени на подключение DirectShow и иже с ним. Или ещё лучше - купите Bink и запилите его. Но никогда не используйте MovieTexture!

Были конечно ещё нарекания, но я их все уже не упомню. Вообще Unity это хороший движок для indie-игр. Так что претензии навряд: "почему я не могу реализовать SSSS на юнити", не обоснованы и должны быть проигнорированы. Ибо этот движок создан не для таких извращений.

В целом, возложенные на себя обязанности он выполняет. :)


#46
10:39, 16 апр. 2013

alexzzzz
> В каком смысле? Про что речь?

Про дебаг шутка, конечно. Хотя я не проверял, может оно и на самом деле так :D

#47
13:26, 16 апр. 2013

Gross_Boss
> на глубину цикла, на рекурсию как таковую.
попробуй добавить
#pragma target 3.0
#pragma only_renderers d3d9
или выше.
хотя компилятор все равно как-то часто тупит и неоптимально компилит. бранчинг и циклы его колбасят). иногда выдаёт какие-то ассемблерные ошибки после них, wtf какой-то, но конкретно про глубину цикла не встречался.

#48
14:29, 16 апр. 2013

А я встречался и таргеты тоже пробовал. Это вещь хорошая, конечно, расширяет жизненные меридианы, наполняет шейдер праной, но по факту - ограничение так и остается, просто лежит оно теперь чуть дальше. Приходится извращаться в стиле GLES ибо под дроид (хотя под виндоувс), ибо кроссплатформенность! :)

Ведь все уже придумано до нас про кроссплатформенность:
1. Определяешь платформо-зависимые и платформо-не-зависимые отделы программы.
2. Платформно-не-зависимые садишь на общий для всех устройств платформный адаптер.
3. Платформно-зависимые садишь на расширения платформного адаптера под определенные устройства.
4. Have fun.

Однако все равно находятся люди, которые "30-ю минутам в гугле + 30-мин подумать" предпочитают "10 лет опыта разработки". %)
P.S. Ну или так было задумано, ибо это Unity.

#49
14:44, 20 апр. 2013

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

Вот это мне и непонятно. Если там взять IdTech или CryEngine или UnrealEngine - вот у нас тут полный набор всего необходимого, на этом наборе сделана уже не одна игра, т.е. там наверняка есть то что нам может понадобится. На Unity сами разработчики не сделали ни одной игры. Более того - они и не пытались, у них даже такой цели не стояло. Т.е. Unity это сферический движок в ваккууме, предназначенный абсолютно для всего в теории и не годящийся ни для чего на практике. ИМХО.

#50
15:20, 20 апр. 2013

g-cont
не пользуйся юнити, не дай себя развести как лоха.

#51
15:47, 20 апр. 2013

g-cont
> На Unity сами разработчики не сделали ни одной игры. Более того - они и не
> пытались, у них даже такой цели не стояло. Т.е. Unity это сферический движок в
> ваккууме, предназначенный абсолютно для всего в теории и не годящийся ни для
> чего на практике. ИМХО.

Именно так.

#52
17:33, 20 апр. 2013

> Именно так.
Знатоки, блин. Что один, что второй.
http://video.unity3d.com/video/3272809/unite-07-keynote

#53
18:09, 20 апр. 2013

>>не пользуйся юнити, не дай себя развести как лоха
Я так понимаю, по существу вопроса сказать нечего?

alexzzzz
Да что нам конференции? Я про отзывы конечных пользователей.
Так же интерисует следующий момент: ечли человек, например, хвалит Unity, либо это его первый движок, либо он уже успел поработать с UnrealEngine, CryEngine и его там что-то неустроило, благодаря чему он остановил свой выбор на Unity. Логично? Вот и хотелось бы об этом послушать.

#54
18:39, 20 апр. 2013

g-cont
> > > пользуйся юнити, не дай себя развести как лоха
> Я так понимаю, по существу вопроса сказать нечего?
> alexzzzz
> Да что нам конференции? Я про отзывы конечных пользователей.
> Так же интерисует следующий момент: ечли человек, например, хвалит Unity, либо
> это его первый движок, либо он уже успел поработать с UnrealEngine, CryEngine и
> его там что-то неустроило, благодаря чему он остановил свой выбор на Unity.
> Логично? Вот и хотелось бы об этом послушать.

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

#55
18:51, 20 апр. 2013

Я так понимаю, по существу вопроса сказать нечего? 
могу сказать что заметил, что у всех движкописателей Юнити вызывает жуткий батхерт. Просто в в 9 случаев из 10 хейтеры юнити оказывается разработчиками собственного движка на си плюс плюс и опен гл с 1998 года.  Оставшиеся 10 процентов хейтеров это те, кто купили крайэнжин за 250 тон баксов.
Если по недостаткам юнити пройтись, то меня не устраивает поведение физики и хотелось бы поддержку многопоточности ядром движка .

#56
19:53, 20 апр. 2013

юнити не может создавать 3д текстуры, не кратные 2м. понимаю конечно что по-хорошему надо иметь текстуры кратные, но я не планировал переписывать вокселизатор сейчас =/

#57
20:42, 20 апр. 2013

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

>>Если твой круг задач покрывает только CryEngine и UnrealEngine
Я ничего такого не утверждал, заметьте. Я привёл пример. Пожалуйста, давайте сравним с другим движком. Но тут момент есть. Любители Юнити, как я убедился, любят сравнивать его именно с теми движками, позиционируя его как FPS-движок.

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

>>могу сказать что заметил, что у всех движкописателей Юнити вызывает жуткий батхерт
Ну, предположим, Вы правы. В порядке научного эксперимента, так сказать. В таком случае, почему аналогичного баттхёрта не вызывает, например, вышеупомянутые CryEngine и UnrealEngine? В чём тут секрет?

>>Если по недостаткам юнити пройтись, то меня не устраивает поведение физики
Ну на физику многие жалуются, главным образом, как я понял, из-за ограниченного API. Но вопрос мой был несколько иначе поставлен - преимущество, перед вышеупомянутыми движками. Ну и чтобы не было опять взаимного непонимания, обозначу жанр: FPS. Повторюсь, сравнение с этими движками не взято мною с потолка, я в первую очередь слышал его от самих пользователей Юнити. Ну и на ютубе достаточно роликов, где они пытаются изобразить что-то эдакое.

#58
21:27, 20 апр. 2013

В таком случае, почему аналогичного баттхёрта не вызывает, например, вышеупомянутые CryEngine и UnrealEngine? В чём тут секрет?
скорее всего там включается такая логика - враг моего врага - мой друг.

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

#59
21:35, 20 апр. 2013

g-cont
> Да что нам конференции?

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

> > > гу сказать что заметил, что у всех движкописателей Юнити вызывает жуткий
> > > батхерт
> Ну, предположим, Вы правы. В порядке научного эксперимента, так сказать. В
> таком случае, почему аналогичного баттхёрта не вызывает, например,
> вышеупомянутые CryEngine и UnrealEngine? В чём тут секрет?

У меня сложилось впечатление, что это религиозное. Человек увидел то, что показалось ему чудом (Crysis), уверовал и теперь у него в этом месте в мозгу слепое пятно.

> Так же интересует следующий момент: если человек, например, хвалит Unity, либо
> это его первый движок, либо он уже успел поработать с UnrealEngine, CryEngine и
> его там что-то не устроило, благодаря чему он остановил свой выбор на Unity.
> Логично? Вот и хотелось бы об этом послушать.

Я не видел ни одного человека, который мог бы подробно, объективно, без фактологических ошибок и по-существу разложить по полочкам различия в движках. Или таких нет, или им лень. Вот лучшее, из того что видел:
http://infinitewrench.wordpress.com/2012/09/07/unity3d-vs-unreal-… elopment-kit/
http://infinitewrench.wordpress.com/2012/11/02/cryengine-3-vs-udkunity/
Хотя всё равно видно, что как минимум с Unity автор знаком поверхностно.

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

Да, Physix, бывает, странно себя ведёт. Например, на сложном mesh collider'е сверху лежит box collider, но не просто лежит, а трясётся без остановки, и при касании иногда может провалиться сквозь mesh collider. Впрочем, я не исключаю, что это я дурак, а не Physix. Народ успешно подключает другие движки, в т.ч. многопоточные. По идее,  должно быть несложно. Я только не знаю, какие именно движки берут.

На счёт ядра вопрос скользкий. Оно само многопоточное, но не безопасное при обращении из других потоков. Потокобезопасноть ― вещь относительная и в общем случае не решается. Т.е. дополнительные блокировки в каких-то случаях помогли бы, а в остальных тратили бы время впустую.

Я бы предпочёл, чтобы движок оставил вопрос потокобезопасности на совести пользователей и сделал шаг в сторону асинхронности. Например, пофиг, что к объекту TerrainData нельзя обращаться из фонового потока, но было бы полезно иметь возможность мгновенно передать ему новую карту высокого разрешения, чтобы он её постепенно переварил и, когда всё будет готово, меня известил.

Страницы: 13 4 5 644 Следующая »
UnityФорумОбщее

Тема в архиве.