Решение проблем в редакторе. Не используй текстовую сериализацию ассетов. Производительность и падения

30 декабря 2016 в 07:43
  • Unity ,
  • Разработка игр

Геймдев - занятие по настоящему увлекательное, особенно когда в команде есть как опытные программисты, так и новички. В отличии от таких движков как Unreal и CryEngine, в Unity достаточно низкий порог вхождения, и зачастую ветераны.NET и новички начинают выяснять отношения, которые заканчиваются дракой с применением офисной мебели.

В этой статье я попытался собрать советы которые помогут вам и вашей команде договориться наконец о том, как надо писать код, и, надеюсь, хорошо посмеяться. И так, поехали!

1. Пиши на UnityScript

Один язык в проекте - это скучно. Разнообразь жизнь своих коллег, пусть учаться быть полиглотами. C# - это майкрософт, и вообще строгая типизация это не твое.

2. Не используй var

Сами Unity запрещают это делать, да и вообще непонятно, какого типа переменная. Когда тебе скажут про подсказки IntelliSense - закатывай глаза, майкрософт головного мозга! Твой Notepad++ этого не умеет.

3. Смешивай стили

Ну а что? Сами Unity нарушают C# Style Guide и фигачат camelCase в пропертях, чем ты хуже? Если используешь MonoDevelop, не забывай периодически менять табы на пробелы и обратно. При этом говори всем, что в MonoDevelop «настройки слетели» - про этот баг все знают!

4. Не пиши XML Doc комментарии

Они засоряют файл, а твой код должен быть понятен без дополнительных комментариев. И вообще, твой Notepad++ не поддреживает это всё. Если меняешь сигнатуру чужого метода, не обновляй XML Doc - так чтение автодокументации будет веселее.

5. Не используй namespace

Писать using - слишком муторно, и вообще зачем это делать, если можно обойтись без этого. Все скрипты должны лежать в папке Script - так их проще находить по алфавиту.

6. Связывай компоненты

Чем больше связей - тем лучше! Каждый компонент должен ссылаться на каждый другой компонент - зато так проще! У твоего персонажа должна быть ссылка на противника, дверь, гейм менеджер, ХП бар на канвасе, на любые другие объекты на сцене. А иначе как с этим работать?

7. Создавая референсы, прячь их через private GameObject myGameObject;

Так твой референс можно будет отредактировать только через редактор, а в коде они мешаться не будут. Когда окажется, что что-то надо все-таки поменять через код, просто переделай private на public.

8. Не используй паттерны проектирования, кроме singleton

Когда тебе говорят про Dependency Injection или другие паттерны, закатывай глаза. Какие нафиг паттерны, тут тебе не энтерпрайз!

9. GameObject.SendMessage - потрясающе удобный инструмент, используй его как можно чаще

По возможности собирай название метода из нескольких строк - так твоим коллегам будет веселее искать, откуда вызвался метод!

10. Используй UnityEvent везде, где это возможно

Стандартные event"ы - это для лохов, тем более они не отображаются в инспекторе. Unity не зря придумали свои ивенты.

Выставляй все через инспектор. Раздели свой код на части и выстави 5 разных методов при нажатии на кнопку - так будет веселее искать, по нажатию какой кнопки этот метод вызывается!

11. Подписываясь на событие через AddListener, забывай прописать RemoveListener

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

12. Кэшируй все компоненты на GameObject"ах

Даже если вы их не используете или используете один раз при нажатии на кнопку. Оптимизировать надо начинать как можно раньше! Не забывайте закэшировать transform; те, кто говорят, что transform уже закэширован - лжецы.

13. Не используй свойства

Свойства - это медленно, как вызов метода, а доступ к полю гораздо быстрее. Все преимущества свойств - выдуманы. Когда тебе кто-то начнет говорить про private set, обратную совместимость и необходимость рекомпиляции assembly в случае изменения поля на свойство, смотри на них как на дураков - какая еще компиляция, у нас геймдев а не энтерпрайз, мы тут dll не используем! И вообще, когда ты последний раз менял поле на свойство?

14. Не используй foreach

Ну, про это уже не раз говорили. Сами Unity запрещают использование foreach. Найдя foreach в коде коллеги, замени его на for и прочитай 10 минутную лекцию о том, что foreach создает мусор, для убедительности покажи свой бенчмарк, где ты обходишь список каждый кадр.

15. Не используй Linq

Linq - это медленно, сложно, и вообще это майкрософт. For на 10 строк - это гораздо красивее (foreach мы же не используем - забыл?). Если кто-то посмеет написать Query Expressions, то смотри на него как на идиота - майэскюЭль с Юнити перепутал!

16. Не используй строки

Строка - это выделение памяти, которую потом будет собирать GC. Используй char - не зря же ты в универе сишку проходил. Никакой юникод тебе не нужен - нечего лишние байты гонять, все равно у тебя bitmap шрифты.

17. Не используй Generics

Дженерики - это медленно и сложно, а Generic Constraints - еще сложнее. Какая нафиг ковариантность и контравариантность? У нас Юнити, тут этого нет! Когда нужны классы с разным типом, храните имя класса в переменной и находите его с помощью Type.GetType().

18. Не используй Coroutines без надобности

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

19. Как только выходит новая версия движка, ставь ее и закоммить папку ProjectSettings

Пусть твои коллеги учаться держать обновленный инструментарий. Ну и что, что проект сдавать через 2 дня, а новая версия с багами? Не твоя это проблема, что Unity не могут зарелизить нормально! Зато там есть новая система частиц, с которой тебе хочется поиграться.

20. Не используй текстовую сериализацию ассетов

Она тормозит редактор. Бинарная сериализация - это гораздо быстрее. Когда кто-то скажет про merge, закати глаза - он что, дурак, сцену мержить? Когда смержить нужно будет тебе, просто откати чужие изменения. Надо было говорить, над каким ассетом работаешь, что бы другие не трогали!

С какими сложностями Unity сейчас сталкивается?

Ну, допустим, нет никаких сложностей — перед нами стоят возможности. И возможностей сейчас больше, чем когда-либо. Все больше людей играют в игры. Появляется все больше новых платформ разработки. И все больше новых технологий, которые стимулируют творческий процесс. Есть ведь VR и AR, плюс к тому, Unity поддерживает уже 25 платформ, и это число растет. А еще у нас каждый месяц — по 1,5 млн разработчиков. Да, все непросто — но мы считаем, что перед нами не сложности, а возможности.

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

Компания — лидер на рынке движков . Но ААА-проектов на Unity нет. Почему так получается, как считаете?

А как насчет Firewatch или Hearthstone?

Понимаю, к чему вы клоните.

Пользователи не воспринимают Unity как движок для ААА-игр. Это такой «движок для всех». Может, в этом все дело. Ведь что такое ААА-тайтл — это игра, которая собирает хорошие отзывы и зарабатывает кучу денег. Это субъективное определение, но именно так многие воспринимают ААА. На самом деле, множество сделанных на Unity игр отвечают этим характеристикам. Все дело в том, что их так не воспринимают. Потому что наряду с такими играми выходит много других проектов, которые либо критику хорошую не собрали, либо денег не заработали, либо то и другое вместе. Такое, я считаю, происходит потому, что сообщество разработчиков на Unity очень большое. Есть производители движков, у которых аудитория не такая обширная. С их движками работает совсем небольшое число девелоперов. И так получается, что все эти разработчики — очень крутые. Поэтому люди считают, что на этом движке делают крутые игры. Когда у тебя 1,5 млн разработчиков, то кто-то из них делает отличные игры. Многие из них делают игры, которые собирают прекрасные отзывы. Так что все дело в том, что пользователи просто не воспринимают Unity как движок для крутых игр.

Как считаете, это можно назвать минусом демократизации?

Я бы сказал, что такое восприятие — прямое следствие того, что мы «движок для всех». Считается, что на Unity нельзя сделать крутую игру. Но это не так.

По словам Девида Хельгасона , демократизация Unity будет считаться завершенной только тогда, когда игру сделать будет не сложнее, чем видео снять. Но ведь не каждый пользователь смартфона с камерой — Джеймс Кэмерон. И ни одно видео с YouTube пока «Оскар» не получило. Не боитесь, что такая демократизация занизит стандарты индустрии?

Есть большая разница между инструментом для всех и инструментом для отдельных крутых профессионалов. Мы лучше будем движком для всех — и пусть творчество наших пользователей говорит само за себя. Наш движок вполне подходит для того, чтобы на нем делать ААА-игры. Я уже привел примеры. Это очень мощный движок. Он подходит профессионалам. Но и новичкам он тоже подходит. А результат всегда зависит от мастерства тех, кто его использует.

Вот вам пример: можно посадить ребенка за руль «Феррари». И он, наверное, начнет очень медленно ездить или вообще разобьет машину. А можно за руль посадить гонщика «Формулы 1». И тогда он выиграет гонку. Все на той же «Феррари».

К вопросу о мастерстве: у Unity стартовала программа сертификации девелоперов. Как по-вашему, такое нововведение не повысит порог входа в профессию для разработчиков?

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

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

Думаю, сертификат — это просто еще один способ подтвердить компетенцию. Это не самое главное. Главное, чего от соискателя требуют — примеры работ. Покажи, что умеешь.

Портфолио.

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

Давайте теперь поговорим о новых планах подписки. До того, как появились новые планы, у пользователя было три варианта: бесплатный (Unity Personal), подписка (Unity Pro) и бессрочная лицензия Unity Pro. На конференции в Амстердаме вы сообщили, что Unity «добавляет новые варианты оплаты лицензии». Но есть ощущение, что ничего не изменилось — по-прежнему есть подписка, есть бесплатная версия и есть бессрочная лицензия, которая теперь называется Pay to Own. Так что на самом деле поменялось?

Версия Pay to Own немного отличается от бессрочной лицензии. У той не было окончания срока действия. Плюс к тому, работа с бессрочной лицензией строилась в два этапа. Вы покупаете движок и пользуетесь им. Но затем выходят обновления. И тут мы вам сообщаем, что за те деньги, которые вы уже заплатили, вы получаете еще и эти обновления. В случае с Pay to Own вы делаете предоплату и получаете право пользоваться движком в ближайшие 2-3 года. Как только договор истек, движок остается у вас. Но обновлений к нему вы не получите. В результате какие-то из новых сервисов у вас не заработают. Тут и заключается отличие от бессрочной лицензии: в случае с бессрочной лицензией у пользователя был доступ ко всем сервисам. И вплоть до того, как выходила новая версия движка, пользователь получал все обновления. А потом просто заново платил нам за новую итерацию. То есть подводя итог: похожа ли Pay to Own на бессрочную лицензию? Да. Но это не то же самое.

А в чем вообще идея с Pay to Own и планами подписки? Зачем они понадобились Unity?

Мы решили перейти на подписку сразу по нескольким причинам. Во-первых, так во всем мире сейчас происходит. Так что сама идея доступна и понятна большинству пользователей. И большинству тех, кто пока еще не принадлежит к нашим пользователям. Это широко известный вариант, в отличие от бессрочной лицензии. Поэтому тот вариант компанию не устраивал. Вторая причина — мы считаем, что подписка сочетается с тем, как у нас теперь будут выходить обновления. Раньше работа с Unity строилась вокруг крупных поэтапных апдейтов. Движок серьезно менялся — от 1 итерации ко 2, от 2 к 3, от 3 к 4, от 4 к 5. Теперь работа с Unity строится иначе. На протяжении последних 14 месяцев мы выпускали гораздо более плавные релизы. И к такому варианту как раз подходит подписка, поэтому мы на нее и переходим. Вторая причина нас возвращает к тому, о чем я уже упоминал. Нашим движком ежемесячно пользуется 1,5 млн людей на 25 платформах. И всем этим пользователям нужны самые передовые технологии. Рынок стремительно меняется — нельзя позволить себе ждать целый год, чтобы получить доступ к этим новым технологиям. Вот почему мы и переходим на подписку. Однако для некоторых пользователей переход нелегко дается. Для тех, кто до этого разрабатывал только для одной платформы, это непросто, поскольку цены выросли.

Да, в Twitter полно таких вопросов! Люди, которые разрабатывали для одной какой-то платформы, раньше платили $75 за Unity Personal. А теперь им придется платить почти вдвое больше, и они, естественно, интересуются, почему так.

Не вдвое больше, а плюс $50. Это не в два раза больше, чем раньше. Кроме того, их никто не заставляет платить. Можно же остаться на подписке за $75 вплоть до 2018 года. Так что время есть и у них, и у нас. У нас — чтобы придумать фичи, которые этим пользователям понравятся.

А когда именно придется переключиться на новую модель подписки? Если, допустим, я 14 июня куплю Unity Pro за $75, мне придется платить $125 на следующий день (15 июня вступают в силу нововведения в планах подписки, — прим. редакции) ?

Вы можете оставаться с Unity Pro вплоть до июня 2018 года.

Что потом?

Потом мы бы, конечно, хотели, чтобы вы переключились на другую модель. И мы вам дадим на это время.

А если я не хочу переходить на новую модель? Мою подписку отменят?

Мы сейчас говорим о том, что произойдет через 23 месяца. За это время, думаю, наши пользователи увидят, какая от новых планов подписки польза. Может, в какой-то момент вам в голову придет мысль: «Неплохо бы портировать мою игру на другую платформу». Так что вы решите, что варианты подписки с большим количеством платформ вам вполне подходят. Это один из вариантов развития событий. Другой вариант — вы по-прежнему остаетесь на одной платформе, но за 23 месяца Unity создает кучу классных фич в области новых технологий, в области VR и AR. Поэтому вы в итоге соглашаетесь доплатить за них. Ну и третий вариант — ваша игра так и не заработала больше $100 тысяч, так что вы начинаете пользоваться версией Personal (чтобы пользоваться бесплатной версией Unity Personal, студия не должна зарабатывать в год больше $100 тысяч, — прим. редакции) . Просто придется смириться с тем, что там есть Splash Screen (На самом деле, не понимаю, почему разработчики не хотят ставить наше лого в игру. Тем более, раз движок бесплатный. Ведь ездят же люди на машине с лого производителя, и ничего!). Я описал оптимистичные варианты развития событий. Но есть и плохой вариант — вы по-прежнему остаетесь на одной платформе, новые планы подписки вас не устраивают, и деньги вы платить не хотите. Ну, в таком случае попробуем договориться. Или вы все-таки можете взять бесплатную версию.

К слову о Unity Personal: чем этот план отличается от Unity Plus? У обоих планов есть ограничение по выручке, оба плана дают доступ к разным платформам. В чем разница?

У Unity Plus есть дополнительные фичи. Набор ассетов из Asset Store, поддержка мультиплеера, приоритет в доступе к Cloud Build. А еще с этой подпиской пользователи получают месяц бесплатных занятий по программе сертификации Unity. Но мы посмотрим, как этот план примут пользователи. Послушаем отзывы. План будет меняться. Может, мы повысим ограничение по выручке или переделаем Splash Screen. Прислушаемся к нашим пользователям — мы всегда так делаем.

Давайте про перспективы. За последние несколько лет рынок движков сильно поменялся. Unreal Engine стал практически бесплатным (не считая роялти, конечно). Crytek выложил код в открытый доступ. Amazon разрабатывает свой движок. И King тоже. Как Unity видит свое место на таком конкурентном рынке?

Конкуренция — это полезно. В первую очередь для пользователей. Unity росла и продолжает расти. Существует огромное коммьюнити разработчиков, которое предпочитает именно Unity всем остальным движкам. И в этом — наша сила. Потому что если ты только начинаешь работать с движком, то хочешь учиться на чужом примере, хочешь, чтобы было где почерпнуть знания. Хочешь научиться, как по-максимуму использовать движок. И чем больше сообщество, тем проще достичь этих целей. Это сильная сторона Unity, и мы продолжаем ее развивать. Другим преимуществом движка является то, что он поддерживает огромное число платформ. Так что у пользователя Unity есть выбор. Ну и наконец мы постоянно инвестируем в новые технологии. К примеру, мы — лидеры в VR и AR. То есть мы не просто 2D-движок, не просто мобильный движок. Мы постоянно движемся вперед. А еще — мы бесплатные, по-честному, без дураков. Ну и, конечно, все, что мы делаем, так или иначе связано с демократизацией разработки.

Кроме тотальной демократизации, какие у компании ближайшие цели? Вы уже выпустили Unity Ads и Unity Analytics, плюс к тому, превратили Unity из простого движка для игр в целую экосистему. Какой следующий шаг в завоевании мира?

Демократизация разработки — это наша постоянная цель. Мы ее еще не достигли. Но мы продолжаем к ней идти сразу по многим направлениям. Вот мы на днях запустили Unity Connect — что-то типа портала для поиска работы. И это еще один пример того, как мы объединяем разработчиков между собой. Так что мы не пытаемся завоевать мир. Мы просто стараемся стать единственным вариантом для тех, кто творит в цифровом пространстве.

Редакция App2Top выражает благодарность за помощь в подготовке интервью Татьяне Викуловой, главе отдела PR и коммуникаций в восточноевропейском отделении Unity Technologies.

Я видел много истерии вокруг Unity (десктоп окружения, а не графического движка). Многие люди предпочитают Убунте, скажем, Linux Mint, именно потому что там MATE. Или выбирают сборки Ubuntu с GNOME/Xfce, объясняя это только тем, что не хотят использовать Unity. Сам я пользуюсь Unity на протяжении последних пяти месяцев и нахожу ее просто прекрасной DE.

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

Ну разве что вместо кнопки «Пуск» — панелька с наиболее часто используемыми приложениями. А те приложения, что используются редко, можно быстро найти по имени. На самом деле, это намного удобнее традиционного древовидного меню в стиле Windows XP.

Потом пришло понимание, что в Unity есть много хоткеев. Подсказку по основным хоткеям можно посмотреть, нажав и подержав какое-то время клавишу Win. Перемещение окон, запуск приложений, переключение между приложениями и окнами, изменение размеров окон и так далее — в Unity все это можно сделать при помощи хоткеев. Если учесть наличие хоткеев у Google Chrome, Gnome Terminal, bash и IntelliJ IDEA , то мышки можно вообще не касаться.

Вообще, Unity — это такой хитро замаскированный тайловый оконный менеджер. Если пользователь привык все делать мышкой, он все будет делать мышкой, как и привык. Те же, кто долго пользовался Awesome, или Xmonad , оценят возможность делать все при помощи клавиатуры, а также эффективное использование места на экране.

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

Плюс ко всему этому, поскольку Unity является DE по умолчанию для Ubuntu, с ним все сразу хорошо из коробки, а что не хорошо, можно один раз настроить и забыть. Для сравнения, когда я пользовался i3, мне приходилось руками настраивать переключение раскладки, запуск Dropbox, Network Manager и так далее. Флешки приходилось монтировать либо руками, либо специально запускать pcmanfm. После обновлений постоянно что-то отваливалось. И это я еще не вспоминаю о проблемах с отображением Gimp/Skype или работу с несколькими мониторами. А в Unity все работает, притом предоставляются такие же возможности. Удобно!

Я еще могу понять людей, у которых пятилетнее железо, и поэтому им хочется чего-то легкого, типа того же i3 или Xfce. Ну или людей, которые уже сидят там под Mint, Fedora или SuSe. А так, не вижу причин не любить Unity. Может быть, просто я чего-то упускаю?

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

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

Ядро игры

Начать стоит не с того, что представляет собой конкретно игровой движок Unity, а с того, чем является движок в принципе. Представьте себе написание компьютерной игры - вам необходимо с нуля прописать абсолютно весь код, абсолютно все мельчайшие движения персонажей, перемещения противников, взаимодействия с окружающей средой и еще тысячи различных деталей. Невероятно сложно, не так ли? Значительно облегчить вам процесс создания может как раз движок.

Это ядро проекта, которое содержит все базовые скрипты. То есть вместо того чтобы создавать игру с нуля, вы можете взять уже готовое ядро и нарастить на него сколько угодно слоев своего контента. Не стоит опасаться того, что это нечто нелегальное - вы не крадете ядро, а просто используете его, как делают миллионы других. Использование игровых движков, созданных другими - это очень распространенная техника, только самые крупные компании имеют средства и возможности, чтобы создавать свой собственный игровой движок больших масштабов. Если же у вас на это нет бюджета - лучше использовать игровой движок Unity. Но почему именно он?

Почему Unity?

Существует огромное количество разнообразных движков, которые доступны в сети либо частично бесплатно, либо полностью платно. Они позволят вам создавать проекты как в 2D, так и в 3D, откроют вам доступ к различным возможностям и так далее. Но почему же среди них вам стоит выбрать именно игровой движок Unity, а не какой-либо другой?

На самом деле никто не принуждает вас делать подобный выбор - например, имеется очень хорошее ядро UDK, которое также многие используют для создания игр в 3D. Если вас не интересует трехмерное изображение, вы вполне можете сотворить двухмерный проект с соответствующим движком. Но Unity - это самый популярный и качественный трехмерный движок из всех имеющихся сегодня, поэтому вам определенно стоит задуматься о том, чтобы использовать именно его. Игровой движок Unity 3D имеет ряд серьезных преимуществ над другими, о которых речь пойдет далее.

Преимущества Unity

Unity - новый движок для создания 3D игр. Многие задаются вопросом о том, почему нужно выбрать именно его. Как уже было сказано ранее, вас никто не заставляет останавливать свой выбор именно на нем. Однако сейчас вы узнаете, чем же он так выделяется на фоне остальных.

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

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

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

Минусы Unity

Многие пытались найти недостатки у этого движка, но с трудом жалоб накопилось лишь на одну - закрытость исходного кода. В каком-то смысле это действительно минусы - вы можете пользоваться только тем ядром, которое вам предлагает разработчик, не можете в него вносить никакие изменения, даже если вы знаете, как это сделать. И даже с учетом того, что вы заплатили полторы тысячи долларов - лицензия все равно не дает вам доступа в само ядро. Но если смотреть с другой стороны, то практически ни один современный движок не дает вам доступ к коду ядра, так что данный минус можно считать серьезным недостатком с большой натяжкой. А других недочетов у этого прекрасного движка найти не удается.

Использование Unity

Про использование данного движка уже было сказано ранее - IDE для него просто прекрасная. Редко можно встретить такую функциональную среду разработки, которая не будет перегружена лишними деталями, не будет абсолютно голой и неудобной. В Unity все сделано просто прекрасно - вы сразу же можете получить доступ и к редактору сцен игры, и к игровым объектам, и даже к скриптам, к ним применяемым. Вы можете прямо в IDE просмотреть в реальном времени отрывок того, над чем вы работали. В этом у Unity попросту нет конкурентов - данный движок великолепен.

Русский Unity

Если вы не знаете английского языка, можете не волноваться, вы все равно сможете воспользоваться Unity. Игровой движок на русском существует и активно поддерживается, так что вы сможете без труда творить игровые шедевры в переводной версии. Более того, существует огромное русскоязычное интернет-сообщество, посвященное данному движку - там вы сможете узнать последние новости, почитать мнение опытных пользователей и задать интересующие вас вопросы. Unity3D по-русски - это вполне возможно.

Добавление скриптов

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

Вместо Unity будет GNOME Shell. 6 лет Шаттлворт экспериментировал на пользователях и наконец-то оболочка И тут Шаттлворт решает выкинуть Unity на помойку. ¯\_(ツ)_/¯

Эксперты уверены, что сомнительное решение негативно скажется на популярности Ubuntu. А она, если верить Distrowatch, скатывается в никуда уже который месяц. Правда, если взглянуть на другой рейтинг - - то окажется, что дистрибутив Ubuntu как был самым популярным, так и остается и будет оставаться еще долго, ибо достойных конкурентов как не было, так и не предвидится.

Так какие же есть основания у экспертов говорить о том, что Ubuntu ждут тяжелые времена из-за похорон Unity?

Панель запуска в Unity

Она на грани совершенства. Круче только в Mac OS. Панель запуска красивая, аккуратная и гибкая в настройке. Даже без дополнительных инструментов ее легко настроить под себя, а с помощью стороннего инструмента Unity Tweak Tool можно вообще творить чудеса.

Быстрые списки Unity

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

Unity HUD (Heads-up Display)

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

Горячие клавиши

Многие из них использовались для управления Launcher, Dash и HUD, еще более ускоряя работу и повышая производительность труда на компьютере. 6 лет ушло на запоминания хоткеев, а куда теперь деть эти знания?

Выводы

О преимуществах Unity можно говорить бесконечно. Столько лет ушло на привыкание, столько лет потребовалось на освоение хитроумных клавиатурных комбинаций! А как долго мы боролись за то, чтобы из Unity удалили слежку И добились-таки! И вот Шаттлворт встает не с той ноги и одним росчерком пера лишает нас полюбившейся оболочки, которая общими усилиями стала почти идеальной. И ради чего? Что, GNOME Shell - предел мечтаний линуксоидов?

Конечно, Unity - это Open Source. В любом случае, разработка будет продолжена и GNOME Shell можно будет заменить на Unity своими силами. Не исключено, что появятся дистрибутивы, где Unity будет использоваться из коробки по умолчанию. Но сможет ли Unity так же успешно своеобразно развиваться без Шаттлворта? И сможет ли дистрибутив Ubuntu, от которого оторвали кусок, сохранять целостность, высокий уровень usability и

Статьи по теме: