Pull to refresh
Comments 37
Очень классно, что компьютерную графику изучаете на игровом движке. Завидую.
По поводу недостатков — не все так плохо:
  • 2D. Во-первых, надо учитывать, что это 3D движок, поэтому надо знать хотя бы базовые методики разработки 2D в 3D движках. A 2D у Unity есть в виде плагинов(NGUI, EZGUI). И на них очень легко делать 2D игры. При желании благодаря возможности написания своих window-editorов за месяц можно написать свою 2D систему за 1 draw-call с шахматами и поэтессами. А во-вторых, в довольно ближайшем будущем появится нативные 2D контролы, бету можно посмотреть на ютубе.
  • Нет готовых префабов потому что, блин, они все разные! Тот же самый стол может быть очень разным и выглядеть совсем по разному и совсем не так, как хотели Вы. А unity — все-таки движок и он не обязан пользователям давать готовые модели под их нужды.
  • разрешения, изображения: я пишу на unity только под мобилки, но эта проблема у нас также актуальна. Мы ее решили очень просто благодаря использованию различных атласов, Anchorов к частям экранов и down-scaling-ом. Тут разные подходы есть, но они работают :)


Я, в свою очередь, еще не перешел на четвертую версию и страдаю отсутствием Mechanim и примитивностью префабов, но разработчики unity обещали это исправить.
Спасибо за отзыв!
Согласен, что Unity3d заточен, как не странно, на 3D графику, просто хотелось бы увидеть более простую и очевидную работу с 2D графикой, насчет плагинов — учту и попробую их как-нибудь в деле.
Насчет префабов. Согласен, что Unity Technologies не обязаны предоставлять готовые объекты (но так этого хочется), ведь это движок; но, так сказать, возникает проблема, что данный продукт должен использоваться в совокупности с другими графическими приложениями, другими словами, отсутствует независимость работы Unity3d от других программных продуктов.
Т.е. если мне потребуется сделать игрушку в 3dmax, или отрендерить что-то с фото-качеством в unity3d, то это будут проблемы каждого конкретного специализированного пакета, т.к. они не позволяют мне получить того, что я хочу, но могли бы?
Речь идет о том, что если человек собирается разработать свою игру, то ему придется хоть как-то, но освоить не только сам движок, но и другие приложения.
Для решения этой проблемы и был создан Assets Store.
Я, в свою очередь, еще не перешел на четвертую версию и страдаю отсутствием Mechanim, но разработчики unity обещали это исправить.

Mechanim ничего не дает, кроме унифицированного графа перехода состояний между готовыми (подготовленными во внешнем пакете, встроенных анимок нет) анимациями для «humanoid»-ов (т.е. двуногих) с возможностью управления им через код. В 4-ке для мобилок появляется одна большая проблема — юнитеки выпилили ARMv6 как из iOS (было указано в списке изменений), так и из Android (а этого не было описано).

и примитивностью префабов

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

Наследование бьется при попытке перетаскивания инстанса префаба в сам префаб

Это баг или так запланировано? Что говорят по этому поводу разработчики?
Мы столкнулись с темой переходов в анимациях — писали собственный FSM без визуализации и соответствующими последствиями

На мобилках? Блендинг кучи анимок на одном меше? :) Обычно разумнее все подготовить заранее и импортировать в виде fbx-ов.

Это баг или так запланировано? Что говорят по этому поводу разработчики?

По ощущениям — баг, потому что та же методика работы в 3.х не давала таких последствий. :( Отчетов разрабам не писал, пока дважды проверяю все, не поломалось ли чего.
Блендинг кучи анимок на одном меше? :) Обычно разумнее все подготовить заранее и импортировать в виде fbx-ов


Если бы на одном меше. У нас меш составляется из кучи других мешей, которые в свою очередь могут не быть предзашиты на клиенте. Заранее подготовить нет возможности.
Примитивность префабов в том, что не работает вложенность. Очень сильно мешает. Если префаб А содержит префаб Б, то изменение в иерархии префаба Б (добавить child'ом шарик), никак не отразиться на А.
И в 4ке они это так и не починили.
Оно работает, но не всегда — писал об этом выше. Иногда вложенные префабы обновляют не все поля, либо разрывается связь (выглядит именно так).
здесь можно найти ссылки на 3D модели

работа с 3Ds max'ом

с помощью данного канала постиг азы 3Ds max'а, рекомендую к ознакомлению

можно найти полезные видео о 3Ds max'е

Какое отношение к теме имеет пакет моделирования стоимостью в >=120k рублей? Вообще, unity3d всеядна, из коробки жрет obj, fbx, 3ds — это все можно получить в любых бесплатных пакетах моделирования.

2D графика. Считаю, что это самый главный провал Unity.

Ортогональная камера и плоскости из стандартных префабов с подгонкой скейла — уже готовый 2d. Собственная вменяемая система с визуальным редактированием в unity3d IDE пишется за неделю без напряга.

Хотелось бы видеть больше префабов, каких-то готовых вещей, объектов, например, домов, предметов элементарного интерьера — столов, стульев.

Так вы хотите в довесок к бесплатному движку получить еще и high quality контент, причем за бесплатно? Отсутствие данной фичи — это что, недостаток платформы?

Отдельный разговор про 3rd person controller — извините, но это просто неприемлемо

Что именно? Опять примерный меш, поставляющийся совершенно бесплатно в качестве контента к уроку?

Хотелось бы, чтобы работа с оптимизацией изображения под различные разрешения экрана была проще.

Куда еще-то проще и как вы себе это представляете? Можно реализовать произвольную привязку хоть в процентном соотношении, хоть в абсолюте, причем для удобства это все можно сделать визуально доступным.

Идейный вдохновитель, преподаватель и наставник

Наставника — оставить на второй год, т.к. «рецензия» вообще ни о чем (бесплатные примеры на сайте покрывают все перечисленные особенности работы, а так же показывают на примере готовых игрушек, как и что можно делать). Понимаю, что в большинстве учебных заведений принято лить воду в записках-отписках, которые нужны только для преподавателей, но зачем такой принцип применять везде… :(
Конечно же, я не рассчитываю получить high quality контент, мне хотелось бы увидеть самый простой и банальный набор предметов, ничего более. Да и недостатком это, по сути, не является, просто имеется желание увидеть это в будущем. Не будет — не беда! А наставник то чем не угодил? Уверен, что мало у кого в учебном заведении преподают создание игр, суть статьи — предупредить о возможных проблемах при проектировании игры, указать наиболее практичные методы ее создания; думаю, что многие люди даже и не задумывались о таких моментах, как улучшение производительности игры посредством удаления всех «ненужностей», которые недоступны из данной сцены. В любом случае спасибо, будем работать.
Ещё сильно раздражает что то что там выдаётся как JavaScript, куда больше напоминает C# с командами от JavaScript.
Вы меня опередили, сам только хотел написать. Да, например, там нету объекта arguments.
Также нельзя произвольно добавлять объекту свойства, создавать произвольные объекты, и ещё куча всего.
Начнем с того, что это не JS, а схожий с ним по синтаксису подвид, придуманный юнитеками, который потом транслируется в MSIL — на выходе мы всегда получаем .net-сборки.
Ну я об этом и хотел написать. Это по крайней мере было одной из причин по которой когда-то выбрал Unity3D а не UDK. В общем ничего против таких выкрутасов не имею но лучше бы они сразу уточнили что их JavaScript совсем не JavaScript.
Кому-то удавалось заставить Unity3d работать с websockets?
Очень интересует такая возможность.
Интересует возможность работы с мобильными платформами и веб-плеером.
Там не все так хорошо
Веб-сокеты требуют доступа к сокетам (внезапно), этот функционал доступен в pro-версиях.
Не знаю как насчёт TCP сокетов но к UDP можно получить доступ и в Free версии.
Только в десктоп версии, в вебе вроде нужна про-шка = настройка безопасности хоста, к которому ведется обращение (по аналогии с флешем, используется тот же кроссдоменный файл).
А я что написал? Читаем весь тред, а не только последний пост.
Не знаю как насчёт TCP сокетов но к UDP можно получить доступ и в Free версии.

Только в десктоп версии, в вебе вроде нужна про-шка + настройка безопасности хоста


Советую глянуть сюда

Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ и sandbox-а безопасности в WebPlayer?
>>Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ.
ctrl+f => socket => f3 f3 f3
Классы для работы с сокетами закрыты только на версии micro, единственное ограничение в вебе — это необходимость дополнительной работы с crossdomain policy.
По поводу «ограничения» на использование сокетов на фри версии — выб хоть попробовали чтоли:
habrastorage.org/storage2/b83/56d/5cb/b8356d5cb50a4b08fc428671c158234c.png
Как видно, четвёрка, фришка, всё работает.
код я вставил в метод Start в один из монобех-классов текущего проекта:

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(«habrahabr.ru», 80);
s.ReceiveTimeout = 5000;
s.Send(System.Text.Encoding.UTF8.GetBytes(«GET INDEX.PHP»));
byte[] b = new byte[1000];
s.Receive(b);
Debug.Log(System.Text.Encoding.UTF8.GetString(b));

для веба пробовать не стал, ибо лень снова разбираться с policy
unity3d.com/unity/whats-new/unity-4.0
ctrl+f, socket:
«Android: Enforce that System.Net.Sockets use is only allowed with an Android Pro license.»
Хотите сыграть в рулетку на продакшне и использовать баги неблокировки доступа в определенной сборке unity3d? Даже если есть обходной вариант, нет никакой гарантии, что это не будет пофикшено в будущем.

Ограничения лицензий: unity3d.com/unity/licenses, ctrl+f, socket: доступ есть только в про-версиях и десктопе.
>> Как видно, четвёрка, фришка, всё работает.
Проверять что-то в редакторе — верх гениальности, там можно использовать все, что есть в установленном FW на машине (даже не моно из юнити). Собирайте билд под устройство и смотрите, что повалится в лог после запуска на самой железке.
>>Собирайте билд под устройство и смотрите, что повалится в лог после запуска на самой железке.
Я говорил только за работу на десктопе, а не на «устройствах». Для этого можно проверять и в редакторе, ограничений немного.
Про то, что сокеты открыты на мобилках в доп. лицензии — каюсь, не знал. Это первый на моём веку класс окружения, что открыт/закрыт в разных версиях одной лицензии.
>> доступ есть только в про-версиях и десктопе.
В вебе тоже есть. Посмотрите в mono compartability, там то уж точно нету различия по лицензиям).
з.ы. Нужно уточнять, что когда говорилось о «Pro» имелись ввиду «Pro mobile», иначе можно подумать, что говорилось о «Unity PRO».
Я говорил только за работу на десктопе, а не на «устройствах».

Неужели?
Как это связано с блокировкой сокетов на уровне лицензии для мобильных платформ и sandbox-а безопасности в WebPlayer?

Классы для работы с сокетами закрыты только на версии micro

Данная таблица показывает совместимость по функционалу, т.е. да, сокеты реализованы, но дальше они рубятся активированной лицензией.

Про то, что сокеты открыты на мобилках в доп. лицензии — каюсь, не знал. Это первый на моём веку класс окружения, что открыт/закрыт в разных версиях одной лицензии.

Так было всегда — у них этот пункт (про сокеты) всегда был выделен отдельно. Точно так же был выделен низкоуровневый доступ к GL.xxx и Graphics.xxx с доступом только на про-шках. Самое забавное, что на мобилках эти классы были доступны даже в basic-лицензиях по крайней мере с 3.2. С unity3d 4.x доступ к низкоуровневому рендеру сделали для всех типов лицензий.

з.ы. Нужно уточнять, что когда говорилось о «Pro» имелись ввиду «Pro mobile», иначе можно подумать, что говорилось о «Unity PRO».

Было указано, что для десктопов ограничений нет (сокеты доступны в любом виде + вебплеер с настройками безопасности хоста), все остальные платформы получают доступ к сокетам только в про-версиях (флеш — отдельный разговор), так что все было написано верно.
А можете подсказать, зачем Unity, у которго есть поддержка нормальных сокетов, использовать websockets?
Уже есть игра с websockets.
Не хочу заново разрабатывать протокол.
«надо грамотно расходовать память процессора» — что это?
Имеется ввиду, что надо соразмерять затраты на обработку игры и те компоненты в игре, которые не используются в данный промежуток времени, попросту не обрабатывать, ну и еще просто адекватно распоряжаться памятью — не давать слишком сильную нагрузку (пример про машину и коллайдеры для каждой детали, т.е. заменить все коллайдеры для каждой детали одним большим).
Физика (тем более с заранее созданными коллайдерами, без генерации их тысячами в рантайме) практически ничего не ест (в умеренных количествах + статика). Основная нагрузка всегда — это пользовательские скрипты и рендер.
заменить все коллайдеры для каждой детали одним большим

Андронным
Only those users with full accounts are able to leave comments. Log in, please.