Создание стратегии в unity3d: Создание стратегии\симулятора в Unity инструменты? — Хабр Q&A
особенности технологии — Разработка на vc.ru
Разработчик детского мобильного паззла Fold the Adventure Алексей Галкин написал для ЦП колонку о том, на что следует обратить внимание при разработке мобильной игры на платформе Unity: как выбрать правильные ассеты из Asset Store, в каком сервисе хранить данные о прогрессе пользователей и где взять звуки для игры.
{«id»:5483,»url»:»https:\/\/vc.ru\/dev\/5483-unity-vs-small-team»,»title»:»\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 Unity \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438″,»services»:{«facebook»:{«url»:»https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team»,»short_name»:»FB»,»title»:»Facebook»,»width»:600,»height»:450},»vkontakte»:{«url»:»https:\/\/vk.com\/share.php?url=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team&title=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 Unity \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438″,»short_name»:»VK»,»title»:»\u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435″,»width»:600,»height»:450},»twitter»:{«url»:»https:\/\/twitter.com\/intent\/tweet?url=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team&text=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 Unity \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438″,»short_name»:»TW»,»title»:»Twitter»,»width»:600,»height»:450},»telegram»:{«url»:»tg:\/\/msg_url?url=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team&text=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 Unity \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438″,»short_name»:»TG»,»title»:»Telegram»,»width»:600,»height»:450},»odnoklassniki»:{«url»:»http:\/\/connect.ok.ru\/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team»,»short_name»:»OK»,»title»:»\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438″,»width»:600,»height»:450},»email»:{«url»:»mailto:?subject=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0433\u0440\u044b \u043d\u0430 Unity \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438&body=https:\/\/vc.ru\/dev\/5483-unity-vs-small-team»,»short_name»:»Email»,»title»:»\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443″,»width»:600,»height»:450}},»isFavorited»:false}
48 601
просмотров
Начало
Чтобы сделать хорошую игру, нужна хорошая идея. Но даже имея идею, создать на её основе достойную игру совсем непросто. Помимо банальной удачи, существует огромное множество вещей, с которыми приходится иметь дело. Бесконечное число решений необходимо принять в весьма скромное время. Ведь время — это деньги, а бюджет проекта имеет тенденцию исчезать до того, как сделано хоть что-то достойное демонстрации (не говоря уже о выпуске).
Эта история о том, как наша небольшая инди-команда создавала игру Fold the Adventure («Сложи приключение») на основе оригинальной идеи. Поскольку игра выпущена, мы можем перевести дух и окинуть взглядом три месяца, потраченные на разработку. Несмотря на наличие многолетнего опыта в игровой индустрии, создание Fold the Adventure заставило нас изрядно попотеть ввиду непредсказуемых поворотов событий и весьма ограниченных ресурсов. Добро пожаловать в наше приключение!
Выбор движка: Unity
Сказать по правде, движок нам выбирать не пришлось. Мы сразу взяли Unity и не пожалели об этом. Нашей первостепенной задачей было создание сравнительно небольшой игры и запуск её на максимальном количестве платформ. При этом хотелось избежать возни с программированием на Objective C и Java. С Unity нам это удалось. И хотя всё было не так просто и гладко, как предполагалось, движком мы остались довольны.
По нашему мнению, Unity — это лучший игровой движок для инди-разработки в настоящий момент. Его программная архитектура хорошо продумана, редактор сделан добротно и становится лучше с каждой версией. Начать пользоваться Unity легко, но опытным разработчикам он может показаться поначалу контринтуитивным. Тем не менее, и новички, и профессионалы, скорее всего, столкнутся с одними и теми же подводными камнями.
Вот некоторые из рекомендаций, которые мы выработали после довольно продолжительного использования Unity (не ограниченного созданием Fold the Adventure):
- Необходимо с самого начала потратить время на изучение базовой архитектуры Unity, включая игровые объекты, скриптуемые объекты, сцены, префабы, ассеты, методы-события и порядок их вызова, сопрограммы, измерение времени, обработку ввода, сериализацию. Unity может показаться лёгким в использовании движком, но без понимания его основ можно провести бесконечные часы за отладкой и рефакторингом.
- С самого начала сформулируйте правила структуризации, а также именования ассетов и игровых объектов. Даже небольшая игра имеет тенденцию превращаться в хаос без должной организации. Существует много статей, посвящённых данному вопросу. Можно также ориентироваться на проекты, публикуемые разработчиками в Unity Assets Store.
- Программируйте как можно меньше. Вместо этого активно используйте WYSIWYG (What You See Is What You Get — свойство прикладных программ, в которых содержание отображается в процессе редактирования и выглядит максимально близко похожим на конечную продукцию — ред.) возможности редактора Unity. Благодаря лёгкой расширяемости, редактор Unity позволяет превратить разрабатываемую игру в удобный конструктор, которым смогут пользоваться даже те, кто не умеет программировать. А это существенно упрощает и ускоряет создание игрового контента.
- Избегайте использования привычных практик, которые плохо сочетаются с идеологией Unity. Какой бы заманчивой не была возможность размещения всех объектов игры в рамках одной сцены или сохранение параметров игровой механики в XML-файлах, подобный подход существенно осложнит жизнь на более поздних этапах разработки.
- Будьте аккуратны и внимательны при использовании систем управления версиями. Unity имеет тенденцию непредсказуемо менять файлы. Например, внесение изменений в префаб влечёт за собой модификацию всех файлов сцен, в которых он используется, но только после их последующего сохранения. Всегда используйте force text в качестве режима сериализации ассетов и внимательно следите за файлами, которые заливаете на сервер, чтобы не уничтожить результат работы коллег.
- Тестируйте игру на максимально возможном количестве платформ. При этом не забывайте, что настройки можно определить для каждой из платформ в отдельности. Без подобного тестирования, вы, как и мы, можете столкнуться с тем, что ваша игра ведёт себя по-разному в web player-е под Windows и OS X.
Ассеты: создавать или покупать
Если у вас небольшая команда при сильно ограниченных времени и бюджете, то создать большое количество качественных игровых ассетов с нуля практически невозможно. Приходится усмирять грандиозные амбиции и минимизировать количество необходимого. Но даже при условии минимизации, нужно оставить что-то, на что игроку было бы приятно посмотреть.
Если ассеты для игры могут быть сделаны силами команды — одной проблемой меньше (cкорее всего). Но есть ещё фаза прототипирования, а для неё также нужны ассеты, которые с большой долей вероятности будут выброшены. Поэтому практически каждой команде требуются ассеты, которые она не может или не хочет делать. Вопрос в том, где их взять.
Первым и самым очевидным ответом для нас, как для Unity разработчиков, был Unity Assets Store. Какой бы заманчивой ни казалась эта возможность, она влечёт за собой и ряд сложностей:
- Ассеты в Unity Assets Store доступны всем без исключения. Однако никто не хочет, чтобы их игра была похожа на другие. По крайней мере, мы этого очень не хотели.
- Практически невозможно купить один пак ассетов, который бы удовлетворил все нужды проекта, и возникает проблема стилистической совместимости. Для Fold the Adventure мы купили несколько паков, из которых использовали меньше половины.
- Несмотря на то, что общее количество ассетов в Unity Assets Store довольно велико, найти среди них что-то подходящее для конкретных нужд бывает весьма непросто. При этом качество зачастую оставляет желать лучшего. Мы потратили часы на поиски, при этом не всегда имея возможность оценить качество пака без его покупки.
Вторым вариантом был аутсорсинг ассетов. Безусловно, этот путь отнимает больше времени и денег, чем просто покупка чего-то из Unity Assets Store. Однако, при удачном раскладе, получаемые ассеты уникальны и более качественны.
Существовала также возможность покупки ассетов из источников помимо Unity Assets Store. Однако здесь возникала проблема совместимости с Unity, и мы решили воздержаться от таких экспериментов.
Когда мы принимали решение о том, какие ассеты делать самостоятельно, а какие нет, мы начали с их категоризации. Как оказалось, ассетов, которые были уникальны для нашей игры и выделяли её среди прочих, было сравнительно немного. Их мы решили сделать своими силами, прибегая к помощи аутсорса там, где это было возможно. Остальное было куплено в Unity Assets Store.
Вот несколько простых правил, к которым мы пришли в ходе поиска и покупки ассетов в Unity Assets Store
- Чтобы избежать стилистических расхождений, желательно покупать ассеты одного типа у одного автора. Это не мешает купить модели у одной студии, а партиклы у другой, но при этом нужно следить за совместимостью стилей.
- Избегайте использования ассетов в том виде, в котором они были куплены. Достаточно внести небольшие изменения (например, немного перерисовать текстуры, реструкурировать партиклы) или использовать ассеты нестандартным образом.
- Если вы планируете выпуск игры на мобильных платформах, убедитесь, что покупаемые ассеты оптимизированы под них.
Музыка и звуки заслуживают отдельного внимания. Они редко создаются инди-командой самостоятельно (если у вас есть композитор, то вам либо очень повезло, либо вы уже не инди). К счастью, существует большое количество сервисов, поставляющих royalty-free музыку и звуки, включая Unity Assets Store. И это совсем недорого.
Недостаточно просто купить музыку и звуки. Необходимо сделать так, чтобы они правильно звучали в игре и не раздражали слух. Если вы уверены в своих силах, то можно попробовать сделать это самостоятельно. Мы же обратились за помощью к студии, которая специализируется на озвучке. Полученный результат был существенно лучше того, что мы могли сделать сами, и стоил своих денег.
Где хранить данные: Parse
Даже если вы, как и мы, создаёте однопользовательскую игру, вам всё равно потребуется место для хранения данных о текущем прогрессе игрока, статистике его действий, сделанных покупках и прочей информации. Самым простым решением будет использовать для этого класс Unity PlayerPrefs. Однако он сохраняет данные локально и, совершенно очевидно, не подходит для таких деликатных вещей, как внутриигровые покупки.
В поисках лучшего решения мы обнаружили Parse. Parse — это кросс-платформенный сервис BaaS (Backend as a Service — платформа типа «бэкенд как сервис», предоставляет облачную серверную инфраструктуру для всех типов приложений — ред.), который позволяет приложению сохранять данные в облаке, поддерживает авторизацию пользователей, серверные функции, push-оповещения и аналитику. Это не исчерпывающий список функциональности, но он даёт общее представление о том, что есть Parse.
Одной из причин, по которым мы выбрали Parsе, была его интеграция с Facebook (первая версия Fold the Adventure создавалась именно для Facebook). И, несмотря на то, что позднее фокус разработки был смещён на мобильные платформы, мы продолжили использовать Parse.
Ещё одной приятной особенностью Parse является его ценовая политика. Поначалу она кажется немного странной, но, после размышлений и расчётов, оказывается более чем удачной. По существу, вы ограничены количеством запросов в секунду. Хорошая новость в том, что 30 запросов в секунду даются бесплатно. Может показаться, что это совсем немного, но на деле этого достаточно для поддержки тысяч пользователей. При условии, что вы используете эти запросы разумно.
В Parse вы делаете всё через запросы. Для получения и изменения полей данных, создания отношения между таблицами, формирования выборки — для всего нужен запрос. На первый взгляд, количество запросов должно быть довольно большим, но, на деле, большую часть элементарных операций можно объединить в один запрос с помощью метода ParseObject.SaveAllAsync. Кроме того, Parse выбросит исключение, если предел запросов в секунду превышен. Но ничего не мешает вам подождать некоторое время и выполнить запрос повторно. И хотя игра в таком случае может показаться пользователю «подвисшей», эта проблема легко обходится с помощью внесения небольших изменений в пользовательский интерфейс и логику сохранения и чтения данных.
Единственное, для чего Parse не следует использовать, так это для создания игрового сервера. Даже если вы разрабатываете пошаговую игру, предназначение Parse в корне отлично. Существуют другие решения, которые существенно лучше подходят для этих целей.
Использование Parse в рамках Unity не сопряжено с особыми трудностями и хорошо документировано. По сути, вам необходимо скачать Parse SDK, настроить вашу игру на сервере Parse и в проекте Unity, а также немного попрограммировать. Один очевидный нюанс: вы не сможете использовать Parse, если устройство, на которое установлена ваша игра, не имеет доступа к интернету.
Если есть необходимость поддерживать офлайн-режим и обновлять данные в Parse при наличии сетевого соединения, то вам придётся написать для этого небольшую отдельную систему. Мы использовали для этого класс PlayerPrefs. Система сохраняет данные локально и заливает их в Parse, как только обнаруживает наличие подключения к интернету.
Стационарные платформы против мобильных: компромиссы
Несмотря на постепенное сближение в течение последних лет, стационарные и мобильные платформы по-прежнему сильно отличаются друг от друга. Это становится очевидным при попытке заставить «красивые» шейдеры работать приемлемо (не говоря уже о том, чтобы заставить их работать быстро) на всех устройствах, на которых предполагается запуск игры. Unity существенно облегчает этот процесс, но, к сожалению, не решает всех проблем.
Существует огромное количество статей, посвящённых оптимизации Unity-игр под мобильные платформы, так что здесь на эту тему будет сказано немного.
Вот несколько рекомендаций:
- Если вы планируете запуск на мобильных платформах и используете тени, то ограничьтесь режимом forward lighting. Несмотря на запекание освещения и сокращения числа объектов, отбрасывающих тени, мы не смогли добиться приемлемой производительности в режиме deferred lighting. Возможно, мы недостаточно старались, но форумы Unity, по большей части, солидарны с нами в этом вопросе.
- Минимизируйте количество draw call-ов. Большое количество полигонов в моделях не скажется так сильно на производительности, как дополнительные draw call-ы. Мы планировали большую оптимизацию, направленную на сокращение количества draw call-ов, чтобы лучше поддерживать старые модели мобильных устройств, но, к сожалению, не смогли сделать её в отведённые жёсткие сроки.
- Не злоупотребляйте текстурными выборками в шейдерах. Это может привести к существенному падению производительности. В нашей игре мы были вынуждены использовать несколько специальных шейдеров вместо одного универсального — именно по этой причине.
Помимо различий в производительности и аппаратных ограничений, существует ещё одно важное отличие между стационарными и мобильными платформами. И это отличие — режим ввода. Игра, созданная для управления с помощью клавиатуры и мыши, плохо переносится на мультитач и акселерометр. Мы убедились в этом на своём горьком опыте. Прежде всего, в Unity разделена обработка мыши и мультитача. А потому было необходимо создать систему, унифицирующую этот аспект. Для этих целей мы использовали систему ввода из состава NGUI, которая, после небольших доработок, показала себя весьма хорошо. Она также позволила нам решить проблему распределения ввода между пользовательским интерфейсом и игровым управлением, которая доставляла нам некоторые неприятности на тот момент.
Пользовательский интерфейс в целом потребовал ряда модификаций для корректной поддержки мобильных устройств. Например, вместо прокручивания колёсика мыши и удерживания кнопок пришлось ввести мультитач-жесты. Некоторые из модификаций можно было потенциально упросить с помощью готовых решений из Unity Assets Store. Но в нашем случае это был простой pinch, а потому мы решили написать его за час с нуля, вместо того, чтобы тратить дни на подключение и отладку системы, которая «делает всё и даже больше».
Наибольшее количество проблем вызвало внутриигровое управление. Мы начали с традиционного набора ASWD + мышь для управления персонажем и камерой, планируя использовать экранный джойстик на мобильных устройствах. Но всё получилось не совсем так, как мы ожидали: игра стала практически неуправляемой. Нам пришлось срочно менять внутриигровое управление, при этом внося изменения даже в игровую механику. Методом проб и ошибок мы остановились на point-n-click управлении, которое на мобильных устройствах воспринимается интуитивно.
Локализация: чем проще, тем лучше
Если вы хотите добиться успеха игры в мировом масштабе, то, вне всяких сомнений, её необходимо локализовать. А локализация — это ещё одна часть разработки, которую инди-команда практически никогда не может сделать самостоятельно. Это означает только одно: за локализацию придётся заплатить.
Локализовывать необходимо всё, что имеет отношение к человеческому языку. То есть тексты, речь, надписи на текстурах — всё это должно быть локализовано. Такой процесс очень быстро может стать весьма трудоёмким и дорогим. Поэтому крайне важно свести количество локализуемого контента к минимуму.
Надписей на текстурах лучше избегать, и использовать, например, текстовые поля NGUI. Если в игре необходима речь, то, скорее всего, потребуются и субтитры, поскольку локализация речи не только дорогое удовольствие, но ещё и требовательное с точки зрения места, занимаемого игрой.
Но минимизация локализуемого контента — это только начало. Следующий этап — подготовка самой игры к локализации. Плохая новость состоит в том, что Unity (на момент написания данной статьи) не имеет встроенных механизмов для этих целей. И хотя существует целый ряд специализированных решений в Unity Assets Store (например, l2 Localization), мы решили использовать систему локализации, идущую в составе NGUI.
Система локализации NGUI проста и понятна в использовании. Она построена на основе одного CSV-файла, содержащего колонку для каждого языка. Наличие такого файла очень удобно для отправки строк на перевод (для этого существует большое количество специализированных сервисов) и последующей вставки переведённой версии.
Мы использовали Google Docs Sheets для хранения файла локализации. В таком варианте он легко доступен всем членам команды, может быть быстро обновлён и скачен в CSV формате. Кроме того, мы открыли доступ к этому файлу ряду друзей, говорящих на других языках. Таким образом мы получили часть переводов бесплатно.
К сожалению, система локализации NGUI весьма ограничена в своих возможностях и не может быть использована в играх с большим количеством разнообразного локализуемого контента. Например, она не позволяет изменить шрифт текстового поля, а эта возможность необходима при локализации на такие языки, как японский. В связи с этим мы расширили функциональность класса NGUI UILocalize, добавив возможность изменять шрифт и варьировать положение текстовых полей.
Заключение
После того, как все сделано, игру необходимо тщательно протестировать (стоит это делать и неоднократно в процессе разработки). Этим должно заниматься максимальное количество людей на максимальном количестве устройств. Ничто не портит хорошую игру так, как пропущенный баг. При этом нужно обязательно слушать жалобы игроков. Поскольку эти жалобы превратятся в неудовлетворённых клиентов сразу после выхода игры на рынок. А этого точно никто не хочет.
Путём постоянного тестирования нашей игры в ходе всего процесса разработки, мы выявили и исправили больше сотни различных багов. При этом наша игра была не так уж сложна и велика, но программного обеспечения без ошибок не бывает. Кроме того, на основании предложений и жалоб тестеров, мы внесли целый ряд модификаций в игру, включая изменения базовой игровой механики, структуры части уровней, размеров и положения элементов пользовательского интерфейса, внутриигрового управления.
Эта история, вместе с выпущенной игрой, завершает три месяца тяжёлой и кропотливой работ. И, несмотря на то, что мы столкнулись с множеством сложностей, процесс разработки Fold the Adventure был весьма захватывающим. Надеемся, что игра, которую мы создали, а также полученный нами опыт сделают мир немного лучше. Удачи в создании ваших игр!
(Можем дать ключи на игру в App Store — запросы пишите в комментариях.)
Ассеты для Unity 3D. Топ-30 бесплатных ассетов под юнити.
Ассеты для Unity
Разработка контента на движке Unity безумно удобная вещь для современного мира. Процесс девелопмента можно сравнить со сборкой конструктора. Движок выступает платформой вашего корабля, а ассеты, скрипты, текстуры и модели — своего рода детальками лего. Руками опытного разработчика создать шедевр на этом движке теперь гораздо проще. Ведь, нет необходимости самостоятельно прорисовывать каждый отдельный элемент. Все необходимые ‘запчасти’ можно найти на просторах интернета в платном или бесплатном доступе.
Конечно, вы можете вручную нарисовать свои собственные текстуры, модели и эффекты. В этом случае, ваш продукт будет уникален с точки зрения графической стороны. Но, вам придётся неплохо потрудиться для создания настоящего шедевра. К тому же, вряд ли у вас получится самостоятельно прорисовать, к примеру, карту виртуального мира какого-нибудь экшена. На создание моделей транспорта, растительности, зданий, а также всевозможных эффектов и прочих графических элементов уйдёт немало времени. А если вы новичок в сфере графического дизайна, тогда вам уж тем более будет не под силу самостоятельно создать такой большой объём элементов.
Классификация ассетов для Unity
Ассеты можно разделить по графическому оформлению, доступу, категории и классу. Мы выделили для вас:
- 3D ассеты
- 2D ассеты
- платные и бесплатные ассеты
- паки и наборы ассетов (время суток, растительность, текстуры и т.д.)
- категория ассетов — люди, животные, предметы, эффекты, скрипты и прочее.
2D ассеты для Unity
Если смотреть на успех мобильных ‘Cut the Rope’ и ‘Bad Piggies’, можно сказать, что 2D-жанр не умирает, а наоборот — медленно, но уверенно возрождается. Поэтому, будет целесообразно упомянуть о 2D ассетах для Unity. Мы собрали список самых полезных сайтов с ресурсами, которые помогут 2D разработчику.
- https://www.gamedevmarket.net/
GameDev Market — здесь вы найдёте множество платных ассетов как для 2D, так и для 3D разработки. Художники постоянно обновляют ассортимент ресурсов, в числе которых вы точно найдете то, что вам нужно.
- http://graphicriver.net/category/game-assets
Graphicriver – этот сайт входит в топ популярных ресурсов шаблонов. Ввиду актуальности 2D, сайт обзавелся отдельным меню 2D ассетов. Прежде чем появиться в каталоге, все ресурсы проходят модерацию администраторами сайта. Поэтому, вы можете быть уверены в качестве графических элементов. Каждый посетитель имеет возможность оставить свой комментарий и оценить продукт.
- https://www.scirra.com/store
Scirra – на этом сайте вы найдете платные SFX и GFX ресурсы для вашего продукта.
- http://gameartpartners.com/
Game Art Partners — отличный платный ресурс, на котором вы можете приобрести ассеты оружия, визуальных эффектов, наборов элементов интерфейса, а также анимированных монстров и персонажей выполненных в мультяшки стилистике.
- http://www.supergameasset.com/
Super Game Asset — каталог этого платного сайта имеет в своём ассортименте различные иконки, большие карты и ассеты анимированных персонажей. Отлично подойдет разработчикам RPG, либо продуктам изометрической графики. Многие ассеты сделаны одним дизайном.
Это далеко не весь список платных ресурсов, которые значительно облегчат вашу 2D разработку. Но, если вы новичок с ограниченным бюджетом, то вашему кошельку, наверняка, не под силу будет рассчитаться с вашими затратами. Есть недорогие ассеты, которые можно купить сэкономив на утреннем капучино. Но, есть и большие паки, стоимость которых может доходить до среднего прожиточного минимума, а то и больше. Спасибо тем ребятам, которые создают бесплатные ресурсы 2D ассетов для Unity. Внимание на список ниже.
- http://opengameart.org/
Open Game Art — этот сайт подойдет для девелоперов контента с открытым исходным кодом. Все материалы ресурса распространяются по лицензии Creative Commons. Многие спрайты сделаны в разном дизайне, но этот сайт отлично подойдёт для новичков.
- http://kenney.nl/assets
Kenney Game Assets — огромное хранилище свыше 20.000 ассетов для 2D контента. Многие ресурсы выполнены в векторной графике. Весь контент можно загрузить бесплатно отдельно, либо одним паком за 9$. Экономить на обеде или нет — дело ваше. Но, 9$ для такого большого пака смешно назвать большой суммой.
- http://game-icons.net/
Game-icons.net — здесь собраны бесплатные иконки, которых в ассортименте сайта порядка 2.000. Весь контент выполнен в монохромном цветовом решении. Иконки весьма универсальны, и могут применяться для изображения предметов, действий, навыков и т.д. Всё выполнено в векторном формате.
- http://www.reinerstilesets.de/en/
Rainer’s Tilesets — на этом ресурсе вы найдете бесплатные 2D ассеты зданий, оружия, растительности, животных и эффектов. Дизайн спрайтов схож с Diablo II. Отлично пойдёт разработчикам RPG в изометрической графике. Сайт можно считать бесплатным аналогом платного Super Game Asset.
Здесь собран не весь список бесплатных сайтов 2D ассетов, из-за того что с течением времени на просторах интернета появляются новые ресурсы со спрайтами для разработки. Мы выделили самые популярные и достойные внимания сайты, о которых вы должны знать, если до этого они были вам неизвестны.
3D ассеты для Unity
Достаточно рассказав о 2D ассетах, настало время перейти к более сложным и интересным 3D спрайтам. В перечне ресурсов с 2D ассетами специально не был упомянут Unity Store. Этот пункт достоин отдельного внимания разработчиков, дизайнеров, графических художников и всех тех, кто так или иначе причастен к Unity.
Unity Asset Store — https://www.assetstore.unity3d.com/
Как вы поняли, это официальный ресурс Unity, на котором представлено огромное количество ассетов. Простым языком, этот сайт — хранилище лампочек, которые изобрели до вас. Здесь вы найдете самые разные спрайты, ассеты, скрипты, паки и прочие ресурсы, необходимые для разработки на Unity. В наличии есть как платный, так и бесплатный контент, который вы можете фильтровать при поиске необходимых элементов.
Так как это официальный магазин ассетов для Unity, в нём разработан очень удобный фильтр для поиска. Здесь вы можете регулировать стоимость (бесплатно или платно), требуемую версию программы, размер файла ассетов, дату выпуска или обновления, а также рейтинг среди пользователей. Некоторые платные ассеты можно найти в интернете в свободном доступе. Есть ресурсы, на которых пользователи делятся друг с другом такими ассетами совершенно бесплатно. Хотя, их официальная цена может превышать 200$ в Unity Asset Store.
Самый популярный бесплатный ассет в Unity Store — Standard Pack.
https://www.assetstore.unity3d.com/en/#!/content/32351
Он включает в себя:
- камеру от первого лица
- камеру от третьего лица
- авто контроллер
- авиа контроллер
- лайт-версию 2D сцены
- управление камерой
- человек
- мяч
Unity позиционирует этот пак базовых сцен и элементов, как основу для обучения разработке на данном движке для новичка. В самом деле, всех перечисленных спрайтов будет вполне достаточно, чтобы понять как происходит взаимодействие элементов между собой, а также иметь базовое представление об этом движке.
Бесплатные ресурсы ассетов для Unity
Раз уж мы упомянули порталы, где можно найти платные ассеты за ‘спасибо’, то хотелось бы рассказать о них побольше. Здесь вы найдете множество паков текстур, растительности, зданий, иконок, орудия, персонажей, эффектов и других графических элементов Unity. В числе самых известных сайтов были выделены два ресурса, которые достойны внимания новичков и опытных разработчиков контента на данном движке.
- U3DFILES — http://u3dfiles.do.am
Это относительно небольшой портал с относительно слабеньким ассортиментом. Но, всё что там есть, доступно вам бесплатно, а именно — ассеты, модели, скрипты и даже целые сборки игр. В числе моделей выделены такие категории как: здания, оружие, мебель, персонажи, растения, техника и элементы. Игровые сборки представлены в жанрах: хоррор, симулятор, гонки, квест, шутер, стратегии, сурвивал, а также RPG и MMORPG. В каталоге имеются также ассеты для Unity: здания, растительность, техника, вода, оружие, животные, и разное. Вишенкой на торте станут бесплатные скрипты, шейдеры, текстуры, искусственный интеллект, анимации, звуки и графические эффекты. В большинстве категорий, к сожалению, пусто. Но, высокий рейтинг тех ресурсов, которые есть в открытом доступе доказывает качество готовых ассетов. Немного терпения, и возможно, вскоре, на сайте будет из чего выбрать. А пока можно довольствоваться несколькими десятками паков зданий, текстур, оружия и эффектов.
- Unity3D Asset — http://unity3d-asset.ru/
А вот это уже настоящий монстр и находка для разработчика. На этом сайте представлено множество платных ассетов для Unity совершенно бесплатно. Если вы профессионал, который хотел бы сэкономить на ассетах, ссылочка сверху вам в помощь. Ведь, на портале представлены не просто стандартные паки, а настоящие ассеты, которые используются в разработке лучших игр. Здесь вы спокойно скачаете:
- 3D модели персонажей, растительности или реквизита
- материалы текстур, шейдеров, графических эффектов и шрифтов
- готовые проекты учебников и шаблонов
- эффекты огня, воды, магии и т.д.
- скрипты физики, анимации, искусственного интеллекта, камеры и т.д.
- а также найдёте авторские уроки и серии курсов с других сайтов
- http://unity3ddd.ru и http://u3d.at.ua/ — кладень информации, забирайте на стену.
Все представленные категории имеют в своем наличие ассеты, среди которых можно выбрать для себя самый подходящий вариант. В общем, лучше один раз увидеть, чем 100 раз услышать. Пользуйтесь платными ассетами за ‘спасибо’ и радуйтесь разработке лучшего игрового контента.
Напоследок хотелось бы упомянуть об одном очень полезном ассете для каждого Unity разработчика.
Autosaver — https://www.assetstore.unity3d.com/en/#!/content/38279
Не начнёте ценить этот ассет, пока он не спасёт ваш проект. Суть в том, что при вылете или сбое Unity, сцена не сохраняется и вам приходится всё повторять заново. А это не один час времени, в лучшем случае. Этот ассет сэкономит вам кучу сил и нервов, которое могло уйти на восстановление потерянного контента. Установив его, он может автоматически сохранять сцену при нажатии кнопки Play. Весьма удобная вещь, когда программа играет свою игру и зависает. В настройках вы можете установить автосохранение по временному интервалу, либо по количеству внесенных изменений в сцену. В общем, пользуйтесь и экономьте свои нервы.
Мощные игры и приложения от компании Lindenvalley
Соглашение на обработку персональных данных
1. Принимая условия настоящего Соглашения, пользователь даёт своё согласие ООО «Линденваллей» (далее — Компания, юридический адрес: Россия, г. Самара, Московское шоссе, 4 «А» стр.2, офис 22.5) на сбор, хранение и обработку своих персональных данных, указанных путём заполнения веб-форм на сайте lifehacker.ru и его поддоменов *.lindenvalley.ru (далее — Сайт). Под персональными данными понимается любая информация, относящаяся к прямо или косвенно определённому или определяемому физическому лицу (гражданину).
2. Пользователь также даёт своё согласие на обработку и трансграничную передачу персональных данных подрядной организации Компании для отправки маркетинговых и информационных рассылок.
3. Основанием для обработки персональных данных являются: статья 24 Конституции РФ и статья 6 Федерального закона № 152-ФЗ «О персональных данных» с дополнениями и изменениями.
4. В ходе обработки с персональными данными будут совершены следующие операции: сбор, хранение, уточнение, передача, блокирование, удаление, уничтожение — все упомянутые действия только в целях, указанных в п. 2 настоящего Соглашения.
5. Компания обязуется не передавать полученную от Пользователя информацию третьим лицам. Не считается нарушением предоставление персональных данных третьим лицам, действующим на основании договора с Компанией, для исполнения обязательств перед Пользователем и только в рамках настоящего Соглашения.
6. Персональные данные хранятся и обрабатываются до завершения всех необходимых процедур либо до ликвидации Компании.
7. Согласие может быть отозвано Пользователем или его представителем путём направления письменного заявления в Компанию по электронному адресу [email protected]. Пользователь также может отказаться от получения электронных сообщений, используя ссылку «Отписаться», расположенную в конце каждого письма.
8. Пользователь принимает политику использования файлов cookies, используемую на Сайте, и даёт согласие на получение информации об IP-адресе и иных сведений о его активности на Сайте. Данная информация не используется для установления личности Пользователя.
9. Компания при обработке персональных данных принимает необходимые и достаточные организационные и технические меры для защиты персональных данных от неправомерного доступа к ним, а также от иных неправомерных действий в отношении персональных данных.
Сложности при создании изометрической игры в Unity
Для начала небольшое предисловие. Мы работаем над игрой Empires in Ruins с пререндеренными 3D-моделями, которые перед сохранением в Unity превращаются в спрайты и атласы спрайтов. Если объяснять коротко, то при этом выполняется довольно долгий и медленный производственный процесс, но он позволяет нам использовать текстуры очень высокого разрешения для очень чёткой графики. Такой стиль напоминает стратегические игры 90-х наподобие Age of Empires (и многих других) в смеси с производственным процессом Baldur’s gate, дополненным современным стилем и возможностью сильного масштабирования. Нам вообще нравится производить впечатление.
Должен сказать, что мы пока абсолютно довольны результатами, и людям в Интернете они тоже нравятся, но мы скорее согласимся на пытки, чем начнём делать ещё одну игру в том же стиле.
Причины просты: результаты может быть и замечательны, но на самом деле трудно найти более медленный рабочий процесс. Для самой первой игры это вполне нормально, работа продолжается бесконечно, и мы наслаждаемся процессом, урок усвоен. Но в будущем стоит всё же выпускать одну игру чаще, чем раз в пять лет.
Если кто-то мне ещё не верит, мы перечислим причины. Предлагаю изучить их, если вы думаете о создании олдскульной изометрической стратегии в Unity3D.
Я уверен, что вы хорошо подготовились, и знаете все предлагаемые (и обычно очень полезные) техники оптимизации при работе с Unity. Настало время применить их в новой игре, и раз за разом терпеть неудачу.
- Если вам нужна глубина в сцене, то забудьте о батчинге. Даже два объекта с одинаковым спрайтом и материалом, находящиеся на разных глубинах (или по оси Z, или в слоях сортировки) с несколькими объектами между ними (а такое случается часто) будут требовать по одному вызову отрисовки на каждый. И пределов здесь нет. P.S. По этой причине забудьте о выпуске игры на мобильных платформах.
- Если вы предпочли 2D вместо 3D, потому что испугались количества треугольников, то не думайте, что при использовании спрайтов с альфа-каналом треугольников будет сильно меньше. Спрайты с альфа-каналом, то есть с неровным контуром, тоже могут использовать множество треугольников и вершин.
- Всегда используйте только атласы спрайтов PoT (Power of Two). Особенно если вам нужно большое разрешение и высокий уровень масштабирования, только это спасёт игру от переполнения диска (не забывайте упаковывать текстуры в Unity перед финальной сборкой) и видеопамяти. Не то чтобы PoT-атласы можно сохранять на дискету, если у объектов есть много кадров анимации в разных направлениях, но у вас будет шанс занять меньше места, чем Mortal Kombat X.
- Приготовьтесь к проблемам с математическими расчётами. Допустим, вам нужно симулировать перспективные траектории, похожие на 3D, на плоской поверхности со смотрящей на неё ортогональной камерой. Это возможно, но не так просто, как может показаться сначала.
- Ещё одна огромная проблема возникнет, когда анимации чуть более сложнее базовых. Если не разбить их на несколько суб-анимаций (с неизбежным созданием громоздких аниматоров для управления ими), то что произойдёт, например, при атаке солдата? Итак, он готовится к удару, и кадр X должен нанести урон, воспроизвести звук удара и т.д. Ну ладно, а как же сообщить игре, когда это происходит? Единственный разумный способ — добавить к анимации событие, и всё пока выглядит нормально. Но одна большая проблема сначала не так очевидна. Естественно, вы хотите, чтобы игровая логика выполнялась в FixedUpdate (потому что в таком случае она будет надёжной и детерминированной), но анимации выполняются в простом Update. Уже замечаете грядущую проблему?
- Всегда включайте MIP-текстурирование. Даже не спрашивайте себя, делайте это на автомате. Включайте MIP-текстурирование, если в игре не будет одного уровня масштабирования. Не забывайте, что при включении MIP-текстурирования текстуры растут в размерах (представим, что у нас есть текстура 1024×1024, при генерировании MIP-текстур Unity создаст версии 512×512, 256×256 и т.д.). Я не пытаюсь научить вас MIP-текстурированию, но вам просто нужно знать, что оно будет нужно.
- Создавайте пулы объектов. Если вы стараетесь снизить нагрузку на процессор, куча вызовов Instantiate и Destroy НЕ будет вашими лучшими друзьями!
- Вам ведь нравится физика Unity? Жаль, что гравитация не согласована и её невозможно согласовать с симулированной вертикальной осью вашего игрового мира. Ну что же, жизнь несправедлива.
И в конце подведём итог:
- Почти невозможно избежать большого количества вызовов отрисовки. Вызовы отрисовки могут создавать «бутылочные горлышки» в процессоре и снижать FPS. Решение заключается в том, чтобы сделать всё, относящееся к игровой логике как можно более «умным» и лёгким. Используйте корутины, подумайте, может быть некоторые операции можно выполнять не каждый кадр, а, например, раз в x кадров. По возможности оптимизируйте игру для батчинга, но учтите, что многого сделать не удастся.
- Большие текстуры и большие атласы спрайтов сильно загружают видеопамять. Не забывайте это и всегда стремитесь к наилучшей работе игры на целевых платформах. Конечно, в наши дни компьютеры бесконечно мощнее, чем они были всего несколько лет назад, но если вы не делаете игру только для самых мощных ПК (а это скорее всего не так), то будет безумием занимать больше 1 ГБ видеопамяти.
- Наберите в команду очень хороших аниматоров/3d-художников — анимация спрайтов не прощает ошибок и её невозможно контролировать, когда она попадает в Unity.
- Внимательно изучите 2d-ассеты в Asset store. Там есть множество ассетов, которые за пару долларов сэкономят вам многие часы мучительной работы. Поэтому есть смысл их покупать.
- Если хотите, чтобы кроме разработки у вас осталось время и на личную жизнь, то лучше займитесь игрой в другом стиле.
- Профайлер Unity — ваш самый лучший друг. Потратьте на него столько времени, сколько нужно, и это воздастся сторицей.
Ну ладно, возможно, у меня была сложная неделя, в течение которой мне пришлось столкнуться с большинством проблем, перечисленных в этой статье. Может это и не помогло мне набраться оптимизма, но признаю, что за последние несколько дней мы многое значительно улучшили.
Если я в чём-то ошибаюсь, пожалуйста, докажите, что я не прав, и скиньте ссылку, показывающую, что можно что-то улучшить. Я действительно надеюсь, что ошибся, и хочу найти новые способы для ещё большей оптимизации моей игры!
Автор: PatientZero
Источник
Курс программирования «Unity 3D», обучение созданию игр
Ваш ребенок увлечен видеоиграми? Не ограничивайте его интерес, а лучше позвольте ему взглянуть на игровой мир по-новому. Запишите ребенка на курс по созданию компьютерных игр на Unity3D! Так из простого геймера он станет создателем собственной игровой вселенной.
Кстати, компьютерные игры считаются одним из самых перспективных направлений в области информационных технологий. Профессиональные разработчики игр (геймдевелоперы) создают игры и приложения под любые операционные системы. Такие специалисты очень востребованы во всем мире
В чем его преимущества программы для создания игр?
Создание игр процесс непростой, но современные технологии способны его значительно облегчить. Unity3D – это очень популярный движок для разработки 3D-игр и интерактивных приложений для любых платформ и устройств.
Технологию используют в своих проектах самые известные разработчики компьютерных игр, такие как Blizzard, Ubisoft, Electonic Arts и Wargaming.
Движок поучаствовал в создании множества известных игр – от Pokémon Go до Need for Speed World.
С помощью созданного на Unity3D виртуального макета космического корабля проходят тренировки в российском Центре подготовки космонавтов.
Плюсы движка:
- Кроссплатформенность: он поддерживает PC, PlayStation 3-4, Xbox 360, Xbox One, Windows Phone, iOS, Android;
- Понятный и удобный интерфейс;
- Возможность создавать игры «под ключ»: движок объединяет инструменты для визуальной компоновки игры и программирования;
- Большое количество мощных вспомогательных средств, связанных с проектированием и дизайном;
- Современный уровень трехмерной графики и спецэффектов;
- Полноценное 3D в браузере;
- Бесплатность.
Кому подойдут уроки по созданию игры на Unity3D?
Мы рекомендуем курс каждому коддику от 10 лет. Программа курса создана с учетом возраста учеников и подойдет для начинающих – тех, кто делает первые шаги в программировании. Обучение разработке игр на Unity3D мы начинаем с нуля, а затем переходим от простых задач к более сложным. Под руководством опытных преподавателей освоение программы для создания игр проходит легко и быстро. Программирование игр становится для детей настоящим удовольствием.
Чему учат на курсе Unity3D?
Пройдя обучение, ваш ребенок:
- узнает, что такое движок и как он работает;
- познакомится с популярным игровым движком Unity3D и языком программирования C#;
- освоит на практике основные принципы и технологию создания современных трехмерных компьютерных игр;
- научится моделировать объекты, создавать персонажей и анимацию, работать с текстурами и освещением, проектировать ландшафты, траву и деревья, использовать звук, создавать спецэффекты;
- создаст собственную полноценную компьютерную игру;
- получит практические навыки профессионального разработчика игровых приложений.
Курс длится 3 месяца. В первом месяце мы с детьми познакомимся с важной частью гейм-разработки:
- Unity Hub
- интерфейсом Unity3D
- основами языка C#
- а также создадим первую собственную 2D-игру
Второй месяц посвящен введению в разработку 3D-игр, в течение которого дети:
- изучат Terrain и инструменты для работы с ним
- продолжат знакомство с языком C#
- познакомятся с 3D-анимацией
- создадут свою первую 3D-игру
Третий месяц направлен на углубление знаний в Unity3D и C#. Будут изучены темы:
- анимация объектов
- создание ботов и работа с ними
- создание UI объектов и оформление стартового игрового меню
- боевая и Стелс системы
Занятия этого курса — отличный способ начать увлекательное путешествие в мир программирования и создания игр на базе современного и актуального движка Unity3D!
Системные требования к компьютеру
Просьба убедиться, что Ваш компьютер подходит для курса. Рекомендации по ссылке
Инструкция по установке программ для курса «Unity 3D».
Скачать по ссылке
Unity3D или Unreal Engine 4. Какой курс выбрать?
Прочтите наши рекомендации по ссылке
По завершении курса каждый ученик получает именной сертификат от CODDY.
Линукс игры на движке Unity3D.
Unity означает единство. Canonical взяла курс на объединение всех устройств — от планшетов до ПК, от смартфонов до ТВ — под единым графическим окружением Unity. Тут то и возникло частичное пересечение имён графического окружения Unity и движка для написания игр Unity3D.
Сейчас стало проще, есть canonical’вская Unity в Ubuntu и есть игровой движок Unity3D от Unity Technologies. А раньше ещё была упрощённая версия Unity под названием Unity2D, которая приказала долго жить. Читая статьи в Интернете, в голове была каша из Unity2D, Unity3D как старшая сестра Unity с аппаратной поддержкой анимации в Убунту, и игровой движок Unity3D, который к Canonical никакого отношения не имеет.
В данной статье речь пойдёт об игровом движке Unity3D, который достиг версии 4.0 и стал поддерживать платформу linux. Можно уже посмотреть обзор игр, написанных на движке Unity3D и доступных в Linux.
Swindle.
Swindle — это прекрасно стилизованная 2D головоломка. Заставляет игроков проникать в помещения, взламывать компьютеры, красть и спасаться с награбленным. Стимпанковский мир игры использует настоящую физику и геймплей вынуждает вас стать лучшим вором. Можете ломиться напролом, стреляя налево и направо. Можете красться как ниндзя.
В игре Swindle есть динамическая смена дня и ночи, так что освещение на уровне может меняться с течением времени.
Игра использует эффект «плёнки старой камеры», чтобы создать приятную игровую атмосферу.
Сайт авторов игры Size Five Games — sizefivegames.com/category/the-swindle/
Wasteland 2.
Wasteland 2 является продолжением популярной RPG игры 1988 г — Wasteland и предшественником постапокалиптического Fallout. Wasteland первая RPG, позволяющая игрокам разделять группу по тактическим соображениям. Первая игра, ставящая игроков перед моральным выбором и заставляющая нести ответственность за свои действия. Первая из игр, где загадки не решались простым методом «один ключ для одной двери».
Wasteland — это опасный и постапокалиптический мир юго-западной Америки. В ходе приключения, рейнджеры получают продвижение по службе, приобретают новые навыки и оборудование. Сталкиваются с новыми проблемами, которые зависят от выбранной стратегии игрока. В игре сильная сюжетная линия, которая требует от игрока мучительного выбора и позволяет проходить игру вновь и вновь.
Wasteland 2 достойный продолжатель Wasteland!
Сайт авторов игры inXile entertainment — wasteland.inxile-entertainment.com/press
Rochard.
Знакомьтесь с Джоном Рочардом — астро-шахтёром и просто отличным парнем. Этот настоящий мужик управляет небольшой группой шахтёров Skyrig Corporation и ему помогает мощный инструмент G-Lifter, который позволяет обуздать гравитацию и перемещать тяжеленные предметы.
Когда шахтёры обнаруживают древнюю, чужеродную структуру в глубине астероида, то все понимают, что они не одни во Вселенной.
Вскоре после этого, группа Джона пропадает без следа, а сам Джон попадает под огонь космических пиратов. Джон понимает, что против них действует опасная сила и решает использовать неземную находку в своих целях.
Сайт авторов игры rochardthegame.com
Связанные единой мыслью:
Ещё линукс игры в Steam.
Canonical посетила Valve, чтобы поговорить об Ubuntu.
Linux платформа появилась на сайте Steam. Игры: Torque 3D, Euro Truck Simulator 2, Left 4 Dead 2, AirBuccaneers HD
Игры в Linux.
Запуск игр в префиксах WINE.
Heroes of Newerth в Linux.
Дата последней правки: 2013-07-06 11:21:18
Нужна помощь в создании большой стратегической игры: Unity3D
ИСПОЛЬЗОВАНИЕ ВЕРСИИ UNITY: 2019.3.6f1
Будет многопользовательская и одиночная игра.
Вот шаги, которые необходимо выполнить для того, чтобы эта игра работала.
Карта 2. Провинции 3. Движение 4. Экономика 5. Население 6. Набор 7. Бой 8. AI 9.UI
1. Отсутствие слоев ландшафта, как создать карту для большой стратегической игры. Я немного знаком с пакетом инструментов polybrush и terrain, но я смотрю учебники, и они отличаются от моих, например, у меня нет «слоев ландшафта» в моих инструментах ландшафта.Polybrush для добавления объектов и воды (?), Polybrush, похоже, не работает вместе с объектами ландшафта (?). Инструменты ландшафта, которые сделают тяжелую работу по созданию карты мира для игры.
2. Провинции, которые работают так же, как в играх Paradox. с разными «режимами карты». Насколько легко это написать сценарий вместе с провинциями, которые могут меняться в зависимости от «режимов карты», с чего начать?
3. Перемещение из провинции в провинцию так же, как в играх Paradox
4.Грандиозная экономика, которая имитирует живую «экосистему» с такими ресурсами, как деньги, металлолом, продукты питания и т. Д. Дефицит, избыток, увеличение / уменьшение ресурсов (игра будет использовать 1-24 часа + дни + месяцы), потребности населения
5. Население каждой провинции, которое дышит вместе с экономикой. Будут интегрированы вместе с экономикой, рост основан на ресурсах (например, больше еды = больше населения), требованиях, как в «анно-сериале».
6. Набор войск, работающих вместе с населением (как в живой силе)
7.Боевая система, которая работает так же, как Hearts of Iron 1-4.
8. AI в последнюю очередь, потому что он требует выполнения всех предыдущих шагов. Я наблюдал за тем, как работает Paradox AI, и мне интересно, насколько легко это будет с точки зрения экономики. С моей точки зрения, это просто.
9. Пользовательский интерфейс, в котором есть все необходимое, должен быть сделан последним, учитывая все предыдущие шаги, которые должны быть выполнены. Время связано. Пользовательский интерфейс, который все показывает (1-8 шагов).
———————————————— ————————————————— ——————-
Не отображается в программе Unity как «Скорость и время»
https://www.youtube.com/watch? v = rnqF6S7PfFA Как и в этом руководстве в 05:52
Создайте стратегическую игру в реальном времени с помощью Unity 5
Выпущено
16.03.2016
Стратегии в реальном времени, такие как StarCraft II, движут рынок компьютерных игр.Разработчики игр, которые хотят участвовать в соревнованиях или быть нанятыми студиями, должны обладать навыками создания стратегических игр на основе карт в реальном времени. Эти руководства по Unity помогут восполнить пробел в знаниях. Они предназначены для программистов Unity, которые хотят применить свои существующие навыки в функциональной RTS-игре. Программист Unity Дэн Вайолет Сагмиллер занимается управлением большими и высокодетализированными картами, определением игровых юнитов, созданием зданий, настройкой отображения (HUD), управлением ресурсами, программированием врагов с помощью ИИ и инженерными сражениями.После просмотра этого курса разработчики должны почувствовать себя уверенно в создании игр RTS и расширении материалов класса своими собственными идеями.
Темы включают:
- Добавление позиций игроков и стартовая информация
- Загрузка готовых уровней
- Добавление движений камеры
- Добавление объекта
- Поддержка навигации
- Добавление владельцев юнитов и объектов игроков
- Импорт и настройка карты HUD
- Добавление информации о единицах и кредитов
- Создание действий HUD
- Создание командной базы
- Добавление искусственного интеллекта
- Добавление боевых действий
Уровень квалификации
Средний
3ч 47м
Продолжительность
65 100
Просмотры
Показать больше
Показывай меньше
Продолжить оценку
Вы начали эту оценку ранее, но не завершили ее.Вы можете продолжить с того места, на котором остановились, или начать заново.
Продолжить
Начать сначала
MarZ: создание RTS с помощью Asset Store 『MarZ』 : リ ア ル タ イ ム 戦 略 型 ー ム の 開 発 に お け る ッ ト ス ト ア 活用 例
Инди-разработчики Doorfortyfour активно использовали Script Inspector, Amplify Shader Editor и Volumetric Fog and Mist из Asset Store, чтобы упростить производство и восполнить пробелы в навыках для своей игры MarZ: Tactical Base Defense . Узнайте больше о том, как эта команда из двух человек использовала эти ресурсы для создания игры.
MarZ: Tactical Base Defense — это игра о стратегии и тактической защите, в которой вы должны тщательно управлять своей командой и ресурсами, защищая свою базу от орд нежити, а также раскрывая скрытую историю Красной планеты. Классическая стратегия в реальном времени и упор на защиту башни. Секретность советских времен и космическая техника. Зомби на Марсе.
Мега-распродажа Cyber Week: Сэкономьте до 50% на более чем 2000 активов
Asset Store экономит время разработчиков, от студенческих проектов до игр мирового класса AAA, таких как Hearthstone.Независимые разработчики Doorfortyfour активно использовали Script Inspector, Amplify Shader Editor и Volumetric Fog and Mist из Asset Store, чтобы упростить производство и восполнить пробелы в навыках для своей игры MarZ: Tactical Base Defense .
Инструменты, которые они использовали, теперь получают большие скидки во время мегапродажи Cyber Week, а также более 2000 других качественных активов. Это наше самое крупное коммерческое мероприятие года, со скидкой до 50% на огромный выбор высоко оцененных произведений искусства, расширений для редакторов, визуальных эффектов, инструментов для экономии времени и многого другого.
Пришло время получить активы, которые вы будете использовать в 2020 году, с большой скидкой. Сделайте свое будущее прочным, сократив недели или месяцы рабочего времени, и читайте дальше, чтобы понять, как активы могут помочь вам повысить уровень вашего проекта.
Посмотреть, что есть в продаже
Мириам и Марк Эгли — четыре двери, а MarZ — их детище. Они женаты и вместе четыре года работали на площади марза .Как команда из двух человек, они реалистично относились к своим стремлениям — нет необходимости в многопользовательских сложностях, только одиночная игра с сильной кампанией. Они оба любят стратегические игры, особенно стратегии в реальном времени, такие как Command & Conquer , Age of Empires , StarCraft и Caesar III . Но им тоже нравятся игры в жанре Tower Defense. Так что совместить эти два жанра для них было несложно.
Марк и Мириам из двери Fortyfour
Жанр тактической стратегии позволяет много экспериментировать; Doorfortyfour был заинтересован в добавлении новой игровой механики, что затрудняет описание MarZ с точки зрения других игр.У их прототипа даже не было истории. Основное внимание уделялось геймплею и художественному оформлению.
Сочетание технических и художественных навыков
Мириам раньше работала архитектором. Когда был задуман MarZ , Мириам сразу же убедили сделать скачок в разработке игр. Ее образование в качестве архитектора быстро распространилось на 2D и 3D графику. Неоценимы ее внимание к деталям и навыки планирования проектов.
Марк, напротив, работает в игровой индустрии более 10 лет.Как старший 3D-художник в аутсорсинговой компании, он участвовал в нескольких играх AAA, таких как Forza Horizon , The Crew , Split / Second , Crackdown 2 и Test Drive Unlimited , чтобы назвать несколько.
Первой работой Марка было создание веб-сайтов, специализирующихся на Flash, но он стремился работать в кино или игровой индустрии. Его работа над музыкальными видео проектами и обучение в Немецкой киношколе привели его к стажировке в Rabcat, где он занимался 3D-искусством.Как веб-дизайнер, большую часть своего свободного времени он тратил на проекты, сочетающие искусство и технологии.
Опробование Unity было следующим логическим шагом. Марка поразила простота Unity и то, как легко было создать что-то, что является одновременно трехмерным и интерактивным.
Поиск правильных значений
Самой большой проблемой при разработке MarZ было балансирование. На то, чтобы уравновесить движение и скорость, потребовались недели, даже месяцы. Дважды они переусердствовали с балансировкой на этапе раннего доступа из-за отзывов игроков.То, что начиналось как простая таблица, становилось все более сложным, но они отказались от этого — значения просто не понравились во время игры.
Затем
Марк создал простой пользовательский интерфейс внутриигрового редактора, который позволял им изменять значения на лету, так что Мириам могла протестировать сборку без использования редактора Unity и вносить изменения напрямую. Позже Марк внедрил систему загрузки в сборку для разработки, чтобы загружать новые значения на сервер, гарантируя, что в последней сборке всегда будут самые новые значения.
Работаем вместе, вместе играем
Марк и Мириам всегда любили игры, но именно Марк привлек бывшего архитектора в игровую индустрию.Мириам ясно видела параллели между этими двумя карьерными направлениями. Цель создания собственной игры заключалась в том, чтобы ее было легко продать. Прежде всего они хотели создать такую игру, в которую они хотели бы играть. Прежде чем нырнуть на глубину MarZ , пара проверила воду, чтобы убедиться, что они могут работать вместе и остаться в браке. Они создали flavourit, мобильное приложение с поваренной книгой, в котором пользователи могут создавать свои собственные интуитивно понятные рецепты с помощью простого в использовании редактора, полностью созданного с помощью Unity, что доказывает его универсальность. Они работают из дома, и, хотя их график гибкий, распорядок дня важен для поддержания баланса между работой и личной жизнью и их взаимоотношений.«Работа супружеской парой — настоящее приключение, но нам это нравится». Как команда из двух человек, Doorfortyfour может двигаться в два раза быстрее, поэтому испытание новых прототипов или функций может быть чрезвычайно продуктивным и приятным. Простая идея очень быстро может перерасти во что-то новое и интересное.
Повышение производительности
Но небольшая команда не может охватить все аспекты разработки игр. Хотя Doorfortyfour создавал некоторые из своих собственных инструментов, некоторые активы уже были доступны в Asset Store, что упростило производство и восполнило их пробелы в навыках.«Это сэкономило нам много времени и избавило от головной боли». Для написания кода они использовали Script Inspector, тесно интегрированный с Unity. Не обладая обширными знаниями в области программирования шейдеров, они использовали Amplify Shader Editor для создания своего собственного трехпланарного шейдера ландшафта. Одной из самых больших технических проблем было достижение MarZ тумана войны. Сначала Марк использовал простую плоскость-сетку и некоторые текстуры, но ракурсы были отключены. Когда он наткнулся на Volumetric Fog & Mist, неожиданно оказалось, что создать нужный эффект стало просто.«Благодаря функции тумана войны во время выполнения и функции цвета вершин, ее было довольно легко интегрировать в наш редактор карт Marsform». Визуально туман является важной частью игры, добавляя атмосферы и глубины.
Среди инструментов редактора Unity Doorfortyfour, созданных для поддержки разработки MarZ , выделяется гибкий инструмент узлов потокового графа. Он начинался как простой инструмент для диалога в игре, но быстро расширился до всех действий, руководств и меню. Unity чрезвычайно универсален с точки зрения создания ваших собственных инструментов, которые могут значительно повысить вашу производительность.Они хотят доработать этот инструмент перед выпуском в Unity Asset Store.
Ознакомьтесь с инструментами, опубликованными doorfortyfour в Asset Store. С помощью TileWorldCreator вы можете создавать потрясающие острова или подземелья для своей игры или быстро создавать уровень для своего прототипа. А Particle ProFX One дает вам высококачественные префабы частиц. Между тем, назревает несколько идей относительно создания для Asset Store, MarZ , или новой игры в жанре стратегии построения базы / управления.Будьте на связи.
Вы можете получить MarZ: Tactical Base Defense в Steam.
Unity Стратегия в реальном времени (RTS) Игра
Предисловие
В этом уроке мы создадим стратегию в реальном времени в Unity. Как обычно, все будет объяснено так, чтобы пятилетний ребенок понял.
Чтобы все было как можно проще, мы сосредоточимся на RTS ( R eal T ime S trategy) основы жанра:
- Building a Castle
- Создание и управление юнитами, атакующими врага
- Простой ИИ для врага
Прелесть этого урока в невероятной простоте, другими словами: всего 270 строк кода !
Подождите, еще кое-что: никаких сложных инструментов 3D-моделирования нам тоже не понадобится!
Требования
Знание
В этом руководстве предполагается, что вы уже знакомы с основами Unity.Если вы еще не знакомы с Unity, сначала ознакомьтесь с нашими более простыми учебниками по Unity, такими как Unity 2D Pong Game.
Если вы уже знакомы с Unity, то нечего бояться. Как обычно, мы используем только совершенно простые для понимания техники. Никакой страшной математики!
Версия Unity
Наша игра будет использовать Unity 5.1.1f1 . Более новые версии также должны работать нормально, более старые версии могут работать, а могут и не работать. Бесплатная версия Unity 5 теперь поставляется со всеми функциями движка, что делает ее рекомендуемой версией.
Арт-стиль
Мы все любим играть в такие многомиллионные игры, как Age of Empires, но, к сожалению, у нас нет таких денег. Вместо этого мы выберем очень простой, но уникальный художественный стиль, который можно создать с помощью GameObjects Unity и базового инструмента рисования, такого как Paint.NET. Все, что нам нужно, это несколько текстур с действительно низким разрешением, состоящих всего из нескольких пикселей, поэтому мы можем использовать любой инструмент рисования, который нам удобен.
Обычно рекомендуется использовать только несколько цветов для простых игр, таких как наша.В основном мы будем использовать оранжевый, белый и черный для объектов, красный для полосок здоровья и голубой для земли. Это дает нам довольно аккуратный графический стиль:
Настройка проекта и сцены
Создание проекта
Давайте перейдем к делу. Запустим Unity и выберем New Project :
Назовем его rts , выберите любое место, например, C: \ , выберите 3D и нажмите Create Project :
После этого мы сохраняем его один раз через File -> Save Scene с именем «scene» (без «»).
Камера
Unity автоматически добавляет камеру в проект. Давайте расположим его так, чтобы он смотрел на мир сверху вниз, выбрав его в Hierarchy и затем изменив его настройки в Inspector :
Примечание: мы пока не видим разницы, потому что наша сцена все еще пуста.
Свет
Unity уже добавила в сцену направленный свет , когда мы его создавали. Выберем его в иерархии , а затем назначим ему следующие параметры поворота и освещения:
Примечание: мы можем использовать любые настройки, которые захотим, но те, что указаны выше, будут хорошо выглядеть позже.
Наполняя мир
Теперь, когда все настроено, мы можем заполнить сцену разными классными вещами.
Земля
Земля будет просто самолетом Unity. Мы можем создать его, выбрав GameObject -> 3D Object -> Plane в верхнем меню. Назовем его Ground и дадим ему следующий масштаб в Inspector :
.
Примечание: важно дать ему точное название «Земля».
Давайте добавим цвета. Сначала мы создадим очень простую пиксельную текстуру 40×40 пикселей с помощью нашего инструмента рисования по выбору (например, Paint.NET) :
Примечание: щелкните изображение правой кнопкой мыши, выберите Сохранить как … , перейдите в папку проекта Assets и сохраните ее в новой папке Textures .
После этого перетаскиваем его из области Project прямо на плоскость Ground:
Что дает нам такой эффект:
Он выглядит действительно гладко, но мы хотим пойти еще дальше и сделать его пиксельным, чтобы добиться более уникального стиля.Поэтому мы должны выбрать текстуру в нашей области проекта , а затем изменить Import Settings в Inspector на это:
Вот результат:
Эффект сглаживания называется Интерполяцией. Обычно это приличный эффект, но для нашей пиксельной игры мы отключили его, установив для режима фильтра значение «Точка» и для параметра «Формат» значение Truecolor.
Примечание: мы сделаем это для каждой текстуры в нашей игре.
Создание 3D-моделей
Пришло время создать 3D модели для нашей игры.Не волнуйтесь, навыки CAD не требуются. Все будем делать в Unity!
Техника
В меню Unity GameObject -> 3D Object мы можем создать базовую геометрию, такую как сферы, кубы, плоскости и цилиндры, например:
Затем мы помещаем их все в пустой игровой объект, называем его и сохраняем как префаб просто перетащив его в область проекта (желательно в новую папку под названием «Prefabs») .
Создание стрелки
Итак, чтобы создать стрелу, которую можно использовать для стрельбы, мы сначала создадим пустой GameObject, который будет содержать все это через GameObject -> Create Empty , и назовем его Стрелка.Затем мы создаем три новых куба через GameObject -> 3D Object -> Cube и помещаем их в GameObject Arrow следующим образом:
Примечание. Стрелка называется корневым объектом , а Кубы — дочерними объектами .
Теперь, чтобы сделать все это стрелкой, мы просто перемещаем, масштабируем и вращаем каждый куб, пока он не станет похожим на один. Мы придумали следующие настройки:
Стрелка:
Кубики:
Хорошо, давайте добавим ему немного цвета.Мы будем использовать простую текстуру:
Примечание: щелкните изображение правой кнопкой мыши, выберите Сохранить как … и сохраните его в папке проекта Assets / Textures .
А затем перетащите его из области проекта на каждый куб. Вот результат:
Теперь мы не хотим, чтобы стрелка находилась в сцене все время. Вместо этого мы сохраним наш GameObject Arrow как префаб Arrow. Подробнее об этой технике можно прочитать в нашем Руководстве по сборкам.
Чтобы создать префаб, мы просто создадим новую папку «Prefabs» в нашей области проекта , а затем перетащим стрелку из иерархии в папку:
Теперь мы можем удалить его из Иерархии.
Замки и предметы для стрельбы из стрел
Мы будем использовать ранее описанную технику для создания всех оставшихся 3D-моделей для нашей игры.
Самое важное, что нужно иметь в виду, — это то, что дочерние GameObject всегда должны иметь позицию где-то рядом с (0, 0, 0) , потому что, будучи дочерними, их позиция всегда относительно родителя. Или, другими словами: если у ребенка координата X равна 1, это означает, что он находится «на расстоянии одного метра по оси x от родителя», независимо от того, где находится родитель.Каждый раз, когда мы перемещаем родительский объект, все дочерние GameObject перемещаются вместе с ним.
Хорошо, давайте создадим замок с кубиками в следующих положениях:
И боевой отряд с кубиками по адресу:
Затем мы можем продублировать замок и назвать один из них « CastlePlayer », а другой — « CastleNpc ».Мы также продублируем боевую единицу и назовем одну из них « ArrowShootingThingPlayer », а другую — « ArrowShootingThingNpc ». Не стесняйтесь также наложить на них несколько простых цветных текстур:
Примечание: мы использовали оранжевый и белый для всех моделей Player и черно-белый для всех моделей Npc.
Вот как сейчас выглядит наша папка Prefabs:
. . .
Учебное пособие Премиум
Понравился этот превью? Станьте премиум-участником и получите доступ к полному руководству по игре Unity Real Time Strategy (RTS) !
Все руководства.Все исходные коды и файлы проекта. Одноразовый платеж.
Получите Премиум сегодня!
© 2012-2021 noobtuts.com
Учебное пособие по
RTS — Часть 1
Прежде чем мы сможем даже начать писать код, нам нужно убедиться, что наша среда настроена правильно. Цель этой части — наладить работу и получить на экране очень простую визуализацию мира.
Настройка
Первое, что нужно сделать, это загрузить и установить Unity 3D, если вы еще этого не сделали, который можно найти здесь.Убедитесь, что вы установили Unity 4.1, поскольку я знаю, что у версии 4.2 есть некоторые тонкие различия в api. Я не верю, что имеет значение, какую платформу вы используете, поскольку я писал для этого как в Windows7, так и в OSX. Если у вас возникли проблемы с использованием той или иной платформы, заранее прошу прощения. После установки Unity настройте макет интерфейса в соответствии со своими предпочтениями. Области, которые важно видеть:
- Вид проекта
- Иерархия
- Инспектор
- Вид сцены
- Просмотр игры
Также может быть полезно увидеть вывод консоли, хотя мы не будем использовать его в этих руководствах.Лично я считаю, что при разработке полезно иметь возможность распечатывать отладочную информацию на консоль во время игрового тестирования. Это один из инструментов, который я использую, чтобы узнать, что происходит во время выполнения.
Коротко о сокращении, которое я буду использовать, когда буду ссылаться на некоторые вещи. (Файл -> Новый проект …) означает открыть меню «Файл» и выбрать пункт «Новый проект …». (Game Object -> Create Other -> Plane) означает открыть меню «Game Object», затем открыть подменю «Create Other» и выбрать в нем пункт «Plane».Обычно я объясняю, как использовать функцию в меню только один раз, поэтому стоит обратить внимание, когда она упоминается.
Теперь, когда вы установили Unity, пришло время создать новый проект для нашей игры. (Файл -> Новый проект …) Я назову его «Учебник по RTS», но вы можете дать ему любое имя по своему усмотрению. Убедитесь, что вы сохранили проект в разумном месте, которое вы запомните. Не беспокойтесь о добавлении дополнительных пакетов на этом этапе.
Когда мы создаем новый проект, Unity представляет нам пустую сцену, содержащую камеру.Первое, что мы хотим сделать, это сохранить эту сцену. (Файл -> Сохранить сцену) Назовем эту сцену картой, так как мы будем использовать ее, чтобы поэкспериментировать с картой для большей части проекта. После того, как вы нажмете «Сохранить», вы должны увидеть файл сцены с именем map, который теперь находится в папке Assets вашего проекта.
Первые объекты
Последнее, о чем я хочу рассказать на этот раз, — это возможность увидеть, что что-то происходит, иначе большая часть этого поста — просто скучный обзор. Давайте добавим землю, на которой можно сидеть, и куб, чтобы мы могли ориентироваться.
Для земли мы создадим плоскость и переименуем ее в Ground. (Игровой объект -> Создать другой -> Плоскость) Давайте установим его положение на (0,0,0) и масштаб на (100,1,100). Это сделает центр нашей земли исходной точкой, и он расширится на 100 единиц в любом направлении. Обратите внимание, что мы используем ось Y для высоты от земли. Так будет со всем в нашем мире.
Настройки заземления
Теперь создайте куб (Game Object -> Create Other -> Cube), разместите его на (0,2,0) и установите масштаб на (10,4,10).Центр всех объектов находится в середине объема, поэтому, чтобы поместить объект на землю, мы должны переместить его вверх (по оси Y) на половину его высоты (значение y его масштаба).
Настройки куба
На данный момент наша сцена содержит только рассеянный свет. Это означает, что наша визуализированная сцена не будет черной, но мы также не сможем различать такие вещи, как края объектов. Мы можем исправить это, добавив в сцену точечный источник света. (Game Object -> Create Other -> Point Light) Давайте переименуем его в Sun, так как мы хотим, чтобы он имитировал солнце где-то на расстоянии.Расположите только что созданное солнце в точке (100,400,100) так, чтобы оно находилось в стороне от нашего маленького мира и было довольно высоко. Теперь установите диапазон для света равным 1000, чтобы он распространял свет по большей части земли.
Параметры солнца
Последнее, что нужно сделать здесь, — это расположить нашу камеру так, чтобы мы могли видеть наш куб. Выберите камеру и установите ее положение на (20,10, -20) и поворот на (15, -45,0).
Настройки камеры
И это все для части 1.Теперь у нас есть земля, которую можно расширить, когда мы захотим, свет для имитации солнца, куб для справки и камера, чтобы видеть объекты. Если вы нажмете «Воспроизвести» сейчас, вы увидите сцену, очень похожую на показанную ниже.
финальная сцена
В следующий раз мы рассмотрим добавление некоторых деталей фреймворка для создания нашей игры, а затем сделаем нашу камеру интерактивной.
Создание стратегии в реальном времени за две недели, метод SpatialOS — невероятно
Насколько сложно в вашей компании начать работу? Как насчет создания стратегии в реальном времени с нуля за две недели? Именно так мы поступили с командой недавно нанятых общественных инженеров из офисов Improbable в Сан-Франциско и Лондоне.
Вскоре после присоединения семеро новобранцев — четверо из США и трое из Великобритании — были отправлены в Лондон, чтобы проникнуться культурой штаб-квартиры компании (и узнать, что такое настоящий паб). Идея была проста — разобраться с SpatialOS в ее «источнике» и узнать, как стать инженером сообщества. Но мы не поставили перед ними легкую задачу…
Будьте в курсе последних новостей из Improbable
Команда инженеров сообщества в Improbable в основном работает над сглаживанием конвейеров разработки для клиентов.Они также создают полезные учебные пособия и функции для разработчиков и поддерживают документацию SpatialOS. Чтобы воспроизвести новый пользовательский интерфейс, недавно нанятым инженерам было дано всего две недели на разработку и кодирование многопользовательской стратегии в реальном времени (RTS), созданной с помощью движка Unity и SpatialOS Unity SDK.
Следует помнить, что это было в первую очередь обучающее упражнение для быстрого освоения стиля программирования в Improbable. «Готовая» игра должна была быть играбельной и иметь основные черты жанра, такие как несколько типов юнитов и построек; более сложные элементы, такие как мини-карта, не будут иметь решающего значения.Эта задача также позволит им испытать опыт разработки SpatialOS, как внешние разработчики, которым они будут помогать в качестве инженеров сообщества.
К счастью, им не пришлось начинать игру полностью с нуля. Отдел AAA компании Improbable («Искусство, анимация и аудио») уже создал несколько фантастических ресурсов (которые вы можете видеть в этом посте пунктирными линиями). Сюда входили казармы для возрождения юнитов и несколько типов солдат — пехота, лучники и волшебники (аналогичные тем из учебника Wizards) — в комплекте с необходимой анимацией, указывающей движение и атаки.Это позволило команде с самого начала сосредоточиться на программировании и игровом дизайне.
Что сделало эту задачу такой сложной?
Даже если инженерам нужно было «сыграть» только несколько простых механик RTS, все равно оставалось преодолеть множество разнообразных технических проблем. Во-первых, команде нужно было отточить свои общие навыки разработки игр. Большинство из них начинали с ограниченным знанием Unity, но более чем достаточным опытом программирования, чтобы быстро с ним справиться.
Во-вторых, SpatialOS была для них новой технической территорией со своими уникальными сложностями при разработке стратегии в реальном времени.Команда обнаружила, что хотя SpatialOS естественным образом работает для отслеживания одного объекта в игровом мире, например персонажа игрока в MMORPG, он не так четко вписывается в стратегию. Это связано с тем, что клиенту в типичной ролевой игре нужно рассказывать только о вещах, которые имеют пространственное отношение к сущности игрока, то есть о вещах, которые становятся актуальными или нерелевантными по мере того, как персонаж игрока движется к нему или от него.
Но в RTS игрок управляет несколькими юнитами разных типов.Таким образом, клиенту необходимо получать информацию о том, что видят все эти различные устройства, но ему не нужно знать обо всем, что находится между ними. Кроме того, когда в игре участвует несколько игроков, несколько клиентов на нескольких компьютерах должны будут обмениваться информацией в режиме реального времени через SpatialOS.
Излишне говорить, что команде пришлось прервать работу.
Дизайнерские решения
Команда новых инженеров Improbable наложила несколько разумных ограничений на свою стратегию в реальном времени, чтобы обеспечить достойную игровую игру.Вся местность в игровом мире будет плоской, а игровой мир будет ограничен неразрушимой стеной. Было бы четыре команды, каждая из которых начинала бы в разных углах, до трех игроков в каждой команде. После того, как базовый дизайн был составлен, можно было начинать кодирование.
Первоначально команда решила написать код, а затем согласовала его с кураторами проекта, что дало неоднозначные результаты. С одной стороны, он позаботился о том, чтобы команда смогла подобрать стиль «Невероятный дом» как можно раньше и обеспечило относительно высокое качество кода.В результате они даже смогли обнаружить проблемы и несоответствия в коде некоторых существующих руководств, которые они использовали. Это привело к созданию полезного «руководства по стилю» программирования, на которое теперь могут ссылаться все сотрудники подразделения Improbable Games. Это преимущество этого проекта, которого никто изначально не ожидал. В настоящее время мы приводим существующие руководства в соответствие с этими улучшенными рекомендациями.
С другой стороны, этот процесс постоянных подтверждений создал узкое место для утверждения.Это ограничивало способность команды действительно атаковать игру и реализовывать более сложные функции. Это также в некоторой степени повлияло на игровые возможности их окончательной версии. Поэтому для будущих итераций этой задачи по адаптации мы решили уменьшить надзор, чтобы новые инженеры могли сосредоточиться на создании интересных функций SpatialOS, которые будущие пользователи платформы могли бы скопировать.
Результаты
По окончании двухнедельного проекта команда выпустила игровую версию стратегии в реальном времени.Хотя пользовательский интерфейс был минимальным, игроки могли щелкать мышью, чтобы направлять свои отряды, присоединяться к командам, строить казармы и создавать отряды. Команда смогла опробовать игру в битве, которая звучала как тысяча яростных щелчков, где победившая команда была наиболее опытной в быстром строительстве казарм и развертывании войск.
Rome: Total War это не так — но не в этом дело. Учитывая стоящие перед ними проблемы, это было поистине героическим усилием. Команда получила основательные знания о технологиях, которые они будут использовать, и о работе, на которую они успешно прошли собеседование.
Post-mortem
Хотя команда была довольна проектом, мы не могли просто оставить его в покое. Элементарный пользовательский интерфейс и амбициозная мини-карта были недавно переданы для дальнейшего использования новым сотрудникам. Этой новой команде удалось успешно интегрировать предполагаемую систему управления и миникарту. Теперь игра находится во внутреннем репозитории и, скорее всего, будет использоваться в дальнейших задачах адаптации.
Кроме того, команда создала инструменты и код с приложениями, которые не мешают.Один из членов команды создал инструмент, который работает со SpatialOS и позволяет визуально размещать древовидные объекты в виртуальных игровых мирах. Подобные функции прекрасно сочетаются с последней концепцией команды сообщества — рецептами. Это небольшие руководства, в которых объясняется, как реализовать определенные функции. В настоящее время другие рецепты, основанные на решениях, разработанных командой RTS, дорабатываются после завершения проекта. Со временем они будут добавлены в существующие документы SpatialOS, и мы скоро напишем о них здесь.
Следует отметить, что благодаря их усилиям было достигнуто множество других достижений.Во-первых, команда также смогла испытать, как некоторые другие инженерные отделы работают в Improbable. В ходе проекта их попросили использовать некоторые из наиболее экспериментальных функций, над которыми работала команда GET (интеграция игрового движка). Этот процесс «собачьего кормления» означал, что команда обнаружила несколько жизненно важных ошибок, которые необходимо было найти перед выпуском. Мы надеемся, что новые инженеры осознают, сколько они уже внесли в SpatialOS в целом.
Что касается самих инженеров, они вернулись в наши офисы в Сан-Франциско и Лондоне.Там они заставят других новых сотрудников пройти через ту же перчатку.
Посетите форумы нашего сообщества, чтобы обсудить эту статью или узнать больше о SpatialOS.
Будьте в курсе последних событий Невероятно
Основные ошибки разработки Unity | Toptal
Unity — отличный и простой инструмент для многоплатформенной разработки. Его принципы легко понять, и вы можете интуитивно начать создавать свои продукты. Однако, если некоторые вещи не будут приняты во внимание, они замедлят ваш прогресс, когда вы перейдете к следующему уровню, когда вы переходите от начальной фазы прототипа или приближаетесь к финальной версии.В этой статье будут даны советы о том, как преодолеть наиболее распространенные проблемы и как избежать фундаментальных ошибок в ваших новых или существующих проектах. Обратите внимание, что перспектива этой статьи больше ориентирована на разработку 3D-приложений, но все упомянутое применимо и для 2D-разработки.
Unity — отличный и простой инструмент для многоплатформенной разработки.
Распространенная ошибка Unity №1: недооценка фазы планирования проекта
Для каждого проекта очень важно определить несколько вещей еще до того, как начнется разработка приложения и программирование.В наши дни, когда маркетинг продукта является важной частью всего процесса, также важно иметь четкое представление о том, какой будет бизнес-модель внедренного приложения. Вы должны быть уверены, для каких платформ вы будете выпускать продукт и какие платформы включены в ваш план. Также необходимо установить минимальные характеристики поддерживаемых устройств (будут ли вы поддерживать старые устройства начального уровня или только более свежие модели?), Чтобы иметь представление о том, какую производительность и визуальные эффекты вы можете себе позволить. Этот факт повлиял на каждую тему в этой статье.
С более технической точки зрения, должно быть необходимо заранее настроить весь рабочий процесс создания активов и моделей, предоставляя их программисту, с особым вниманием к процессу итерации, когда модели потребуют еще некоторых изменений и уточнений. У вас должно быть четкое представление о желаемой частоте кадров и бюджете вершин, чтобы 3D-художник мог знать, в каком максимальном разрешении должны быть модели и сколько вариаций LOD ему нужно сделать. Также следует указать, как унифицировать все измерения, чтобы иметь согласованный масштаб, и процесс импорта во всем приложении.
То, как будут разработаны уровни, имеет решающее значение для будущей работы, потому что разделение уровней сильно влияет на производительность. При разработке новых уровней вы всегда должны помнить о производительности. Не допускайте нереалистичных видений. Всегда важно задавать себе вопрос: «Можно ли этого достичь?» В противном случае вам не следует тратить свои драгоценные ресурсы на что-то труднодостижимое (если, конечно, это не является частью вашей бизнес-стратегии, чтобы это было вашим главным конкурентным преимуществом).
Распространенная ошибка Unity № 2: Работа с неоптимизированными моделями
Очень важно, чтобы все ваши модели были хорошо подготовлены, чтобы их можно было использовать в сценах без дальнейших модификаций. Хорошая модель должна выполнять несколько вещей.
Важно правильно установить масштаб. Иногда невозможно правильно настроить это с помощью программного обеспечения для 3D-моделирования из-за разных единиц, используемых в этих приложениях. Чтобы все было правильно, установите масштабный коэффициент в настройках импорта моделей (оставьте 0.01 для 3dsMax и Modo, установите 1.0 для Maya), и обратите внимание, что иногда вам потребуется повторно импортировать объекты после изменения настройки масштаба. Эти настройки должны гарантировать, что вы можете использовать только базовый масштаб 1,1,1 в ваших сценах, чтобы добиться согласованного поведения и отсутствия проблем с физикой. Более вероятно, что динамическое пакетирование будет работать правильно. Это правило также следует применять к каждому подобъекту модели, а не только к основному. Когда вам нужно настроить размеры объекта, сделайте это по отношению к другим объектам в приложении для 3D-моделирования, а не в Unity.Однако вы можете поэкспериментировать с масштабированием в Unity, чтобы найти подходящие значения, но для окончательного приложения и согласованного рабочего процесса хорошо все хорошо подготовить перед импортом в Unity.
Что касается функциональности объектов и их динамических частей — хорошо разделите ваши модели. Чем меньше подобъектов, тем лучше. Отдельные части объекта на всякий случай, когда они вам нужны, например, для динамического перемещения или поворота, для анимации или других взаимодействий. Каждый объект и его подобъекты должны быть правильно выровнены и повернуты относительно его основной функции.У основного объекта ось Z должна быть направлена вперед, а точка поворота должна располагаться внизу объекта для лучшего размещения на сцене. Используйте как можно меньше материалов на объектах (подробнее об этом ниже).
Все активы должны иметь имена собственные, которые легко описывают его тип и функциональность. Сохраняйте эту последовательность во всех своих проектах.
Распространенная ошибка Unity # 3: построение архитектуры взаимозависимого кода
Прототипирование и реализация функциональности в Unity довольно проста.Вы можете легко перетащить любые ссылки на другие объекты, обратиться к каждому отдельному объекту в сцене и получить доступ к каждому его компоненту. Однако это также может быть потенциально опасным. Помимо заметных проблем с производительностью (поиск объекта в иерархии и доступ к компонентам сопряжены с дополнительными расходами), также существует большая опасность сделать части вашего кода полностью зависимыми друг от друга. Или зависимость от других систем и сценариев, уникальных для вашего приложения, или даже от текущей сцены или текущего сценария.Постарайтесь использовать более модульный подход и создавать повторно используемые части, которые можно использовать в других частях вашего приложения или даже использовать для всего вашего портфеля приложений. Создайте свой фреймворк и библиотеки на основе Unity API так же, как вы строите свою базу знаний.
Для этого существует множество различных подходов. Хорошей отправной точкой является сама система компонентов Unity. Осложнения могут возникнуть, когда конкретным компонентам необходимо взаимодействовать с другими системами приложения.Для этого вы можете использовать интерфейсы, чтобы сделать части вашей системы более абстрактными и многоразовыми. В качестве альтернативы вы можете использовать управляемый событиями подход для реагирования на определенные события извне, либо создав систему обмена сообщениями, либо зарегистрировавшись непосредственно в частях другой системы в качестве слушателей. Правильный подход будет заключаться в том, чтобы попытаться отделить свойства gameObject от логики программы (по крайней мере, что-то вроде принципа модель-контроллер), потому что сложно определить, какие объекты изменяют его свойства преобразования, такие как положение и вращение.Это должно быть исключительной ответственностью его контролера.
Постарайтесь, чтобы все было хорошо задокументировано. Всегда относитесь к этому так, как будто вы должны вернуться к своему коду через долгое время, и вам нужно быстро понять, что именно делает эта часть кода. Потому что на самом деле через некоторое время вы довольно часто будете добираться до некоторых частей своего приложения, и это ненужное препятствие для быстрого решения проблемы. Но не переусердствуйте. Иногда вполне достаточно соответствующего имени класса, метода или свойства.
Распространенная ошибка Unity №4: потеря производительности
Новейшая линейка мобильных телефонов, консолей или настольных компьютеров никогда не будет настолько продвинутой, чтобы не было необходимости заботиться о производительности. Оптимизация производительности необходима всегда, и она обеспечивает основу для того, чтобы отличать вашу игру или приложение от других на рынке. Потому что, когда вы сохраняете некоторую производительность в одной части, вы можете использовать это для полировки других частей вашего приложения.
Есть много областей для оптимизации. Вся статья была бы нужна только для того, чтобы коснуться поверхности этой темы. По крайней мере, я постараюсь разделить эту область на несколько основных направлений.
Циклы обновления
Не используйте в циклах обновления элементы, требующие высокой производительности, вместо этого используйте кеширование. Типичный пример — это доступ к компонентам или другим объектам в сцене или интенсивные вычисления в ваших скриптах. Если возможно, кешируйте все в методах Awake ()
или измените свою архитектуру на более управляемый событиями подход, чтобы запускать вещи именно тогда, когда они необходимы.
Экземпляры
Для объектов, экземпляры которых создаются довольно часто (например, пули в игре FPS), сделайте из них предварительно инициализированный пул и просто выберите один, уже инициализированный, когда он вам нужен, и активируйте его. Затем, вместо того, чтобы уничтожать его, когда он больше не нужен, деактивируйте его и верните в пул.
Рендеринг
Используйте методы отсечения окклюзии или LOD для ограничения визуализируемых частей сцены. Попробуйте использовать оптимизированные модели, чтобы иметь возможность контролировать количество вершин в сцене.Имейте в виду, что количество вершин — это не просто количество вершин в самой модели, но на него влияют другие вещи, такие как нормали (жесткие края), UV-координаты (UV-швы) и цвета вершин. Кроме того, количество динамических источников света в сцене существенно повлияет на общую производительность, поэтому старайтесь запекать все заранее, когда это возможно.
Обзоры розыгрышей
Попытайтесь уменьшить количество вызовов отрисовки. В Unity вы можете уменьшить количество вызовов отрисовки, используя статическую пакетную обработку для неподвижных объектов и динамическую пакетную обработку для движущихся.Однако сначала вам нужно подготовить свои сцены и модели (пакетные объекты должны использовать одни и те же материалы), а пакетирование динамических объектов работает только для моделей с низким разрешением. В качестве альтернативы, вы можете объединить сетки с помощью скрипта в одну ( Mesh.CombineMeshes
) вместо использования пакетной обработки, но вы должны быть осторожны, чтобы не создавать слишком большие объекты, которые не могут использовать отбраковку усеченного вида на некоторых платформах. В общем, главное — использовать как можно меньше материалов и делиться ими по всей сцене.Иногда вам нужно создавать атласы из текстур, чтобы иметь возможность использовать один материал для разных объектов. Хороший совет — также использовать более высокое разрешение текстур световых карт сцены (не сгенерированное разрешение, а разрешение вывода текстуры), чтобы уменьшить их количество, когда вы запекаете свет в более крупных средах.
Проблемы с перерисовкой
Не используйте прозрачные текстуры, когда в этом нет необходимости, так как это вызовет проблемы со скоростью заполнения. Его можно использовать для сложной и удаленной геометрии, например, деревьев или кустов.Когда вам нужно его использовать, отдайте предпочтение шейдерам с альфа-смешиванием вместо шейдеров с альфа-тестированием или вместо шейдеров вырезания для мобильных платформ. Для выявления этих проблем в целом попробуйте снизить разрешение вашего приложения. Если это поможет, возможно, у вас есть проблемы со скоростью заполнения или вам нужно больше оптимизировать шейдеры. В противном случае это может быть больше проблем с памятью.
Шейдеры
Оптимизируйте шейдеры для повышения производительности. Уменьшите количество проходов, используйте переменные с меньшей точностью, замените сложные математические вычисления предварительно созданными текстурами поиска.
Всегда используйте профилировщик для определения узких мест. Это отличный инструмент. Для рендеринга вы также можете использовать замечательный Frame Debugger, который поможет вам узнать много нового о том, как все работает в целом при декомпозиции процессов рендеринга с его помощью.
Распространенная ошибка Unity № 5: игнорирование проблем со сборкой мусора
Необходимо понимать, что, несмотря на то, что сборщик мусора (GC) сам по себе помогает нам быть действительно эффективными и сосредоточенными на важных вещах в программировании, есть несколько вещей, о которых мы должны четко знать.Использование GC платное. Как правило, следует избегать ненужного выделения памяти, чтобы сборщик мусора не срабатывал слишком часто и, таким образом, снижал производительность из-за скачков частоты кадров. В идеале вообще не должно происходить регулярного выделения памяти в каждом кадре. Однако как мы можем достичь этой цели? Это действительно определяется архитектурой приложения, но есть несколько правил, которым вы можете следовать, чтобы помочь:
- Избегайте ненужных выделений в циклах обновления.
- Используйте структуры для простых контейнеров свойств, поскольку они не размещаются в куче.
- Попробуйте предварительно выделить массивы, списки или другие коллекции объектов вместо того, чтобы создавать их внутри циклов обновления.
- Избегайте использования моно проблемных вещей (например, выражений LINQ или циклов foreach), потому что Unity использует более старую, не идеально оптимизированную версию Mono (на момент написания это модифицированная версия 2.6 с обновлением в дорожной карте).
- Кэшировать строки в
методах Awake ()
или в событиях. - Если необходимо обновить свойство строки в цикле обновления, используйте объект StringBuilder вместо строки.
- Используйте профилировщик для выявления потенциальных проблем.
Распространенная ошибка Unity № 6: Оптимизация использования памяти и пространства Последний раз
Необходимо уделять внимание минимальному использованию памяти и места в приложении с самого начала проекта, так как это сложнее сделать, когда вы покидаете оптимизацию на этапе предварительного выпуска. На мобильных устройствах это еще более важно, потому что там нам очень мало ресурсов. Кроме того, превышая размер установки 100 МБ, мы можем потерять значительное количество наших клиентов.Это связано с ограничением в 100 МБ для загрузок по сотовой сети, а также по психологическим причинам. Всегда лучше, когда ваше приложение не тратит впустую драгоценные телефонные ресурсы клиентов, и они с большей вероятностью загрузят или купят ваше приложение, когда его размер меньше.
Для поиска истощителей ресурсов вы можете использовать журнал редактора, где вы можете видеть (после каждой новой сборки) размер ресурсов, разделенных на отдельные категории, такие как аудио, текстуры и библиотеки DLL. Для лучшей ориентации в Unity Asset Store есть расширения редактора, которые предоставят вам подробную сводку со ссылками на ресурсы и файлы в вашей файловой системе.Фактическое потребление памяти также можно увидеть в профилировщике, но рекомендуется протестировать его при подключении для сборки на вашей целевой платформе, потому что существует много несоответствий при тестировании в редакторе или на чем-либо, кроме вашей целевой платформы.
Самыми большими потребителями памяти часто являются текстуры. Желательно использовать сжатые текстуры, так как они занимают гораздо меньше места и памяти. Сделайте все текстуры квадратными, в идеале сделайте длину обеих сторон равной двум (POT), но имейте в виду, что Unity также может автоматически масштабировать текстуры NPOT в POT.Текстуры можно сжимать, когда они находятся в форме POT. Текстуры атласа вместе, чтобы заполнить всю текстуру. Иногда вы даже можете использовать альфа-канал текстуры для получения дополнительной информации для ваших шейдеров, чтобы сэкономить дополнительное пространство и производительность. И, конечно же, старайтесь как можно чаще повторно использовать текстуры для своих сцен и используйте повторяющиеся текстуры, когда можно сохранить хороший внешний вид. Для недорогих устройств вы можете уменьшить разрешение текстур в настройках качества. Используйте сжатый аудиоформат для более длинных аудиоклипов, например фоновой музыки.
Когда вы имеете дело с разными платформами, разрешениями или локализациями, вы можете использовать пакеты ресурсов для использования разных наборов текстур для разных устройств или пользователей. Эти пакеты ресурсов могут быть загружены динамически из Интернета после установки приложения. Таким образом, вы можете превысить лимит в 100 МБ, загружая ресурсы во время игры.
Распространенная ошибка Unity # 7: Общие ошибки физики
Иногда, перемещая объекты в сцене, мы не осознаем, что на объекте есть коллайдер и что изменение его положения заставляет движок заново пересчитывать весь физический мир.В этом случае вы должны добавить к нему компонент Rigidbody
(вы можете установить его как некинематический, если не хотите, чтобы внешние силы были задействованы).
Чтобы изменить положение объекта с Rigidbody
на нем, всегда устанавливайте Rigidbody.position
, если новое положение не следует за предыдущим, или Rigidbody.MovePosition
, если это непрерывное движение, которое также требует с учетом интерполяции. При его изменении всегда применяйте операции в FixedUpdate
, а не в функциях Update
.Это обеспечит последовательное физическое поведение.
Если возможно, используйте примитивные коллайдеры для gameObject, такие как сфера, коробка или цилиндр, а не коллайдеры сетки. Вы можете составить свой последний коллайдер из более чем одного из этих коллайдеров. Физика может быть узким местом производительности вашего приложения из-за накладных расходов на ЦП, а столкновения между примитивными коллайдерами вычисляются гораздо быстрее. Вы также можете настроить параметр Fixed Timestep в Диспетчере времени, чтобы уменьшить частоту фиксированных обновлений физики, когда точность взаимодействия физики не так необходима.
Распространенная ошибка Unity № 8: Проверка всей функциональности вручную
Иногда может быть тенденция проверять функциональность вручную, экспериментируя в режиме воспроизведения, потому что это довольно весело и у вас все под вашим прямым контролем. Но этот крутой фактор может довольно быстро уменьшиться. Чем сложнее становится приложение, тем более утомительные задачи приходится повторять программисту, чтобы убедиться, что приложение ведет себя так, как было задумано изначально. Он легко может стать худшей частью всего процесса разработки из-за его повторяющегося и пассивного характера.Кроме того, поскольку повторение сценариев тестирования вручную не так уж и весело, вероятность того, что некоторые ошибки пройдут через весь процесс тестирования, выше.
Unity предлагает отличные инструменты для тестирования, позволяющие автоматизировать это. При соответствующей архитектуре и дизайне кода вы можете использовать модульные тесты для тестирования изолированной функциональности или даже интеграционные тесты для тестирования более сложных сценариев. Вы можете значительно сократить количество попыток , когда вы регистрируете фактические данные и сравниваете их с желаемым состоянием.
Ручное тестирование, без сомнения, является важной частью разработки. Но его количество можно уменьшить, и весь процесс станет более надежным и быстрым. Если нет возможности автоматизировать это, подготовьте тестовые сцены, чтобы как можно быстрее разобраться в проблеме, которую вы пытаетесь решить. В идеале через несколько кадров после нажатия кнопки воспроизведения. Внедрите ярлыки или читы, чтобы установить желаемое состояние для тестирования. Кроме того, сделайте тестовую ситуацию изолированной, чтобы понять, в чем проблема.Каждая ненужная секунда в режиме воспроизведения при тестировании накапливается, и чем больше первоначальная предвзятость тестирования проблемы, тем больше вероятность, что вы вообще не протестируете проблему, и вы будете надеяться, что все работает нормально. Но, вероятно, этого не произойдет.
Распространенная ошибка Unity №9: Плагины для магазина ресурсов Unity решат все ваши проблемы
Поверьте мне; они не будут. Работая с некоторыми клиентами, я иногда сталкивался с тенденцией или пережитками прошлого использовать плагины хранилища активов для каждой мелочи.Я не имею в виду, что в Unity Asset Store нет полезных расширений Unity. Их много, и иногда даже сложно решить, какой из них выбрать. Но для каждого проекта важно сохранять последовательность, которая может быть нарушена неразумным использованием разных частей, которые плохо сочетаются друг с другом.
С другой стороны, для функциональности, реализация которой потребует много времени, всегда полезно использовать хорошо протестированные продукты из Unity Asset Store, которые могут сэкономить вам огромное количество времени на разработку.Однако выбирайте внимательно, используйте проверенные, которые не принесут много неконтролируемых и странных ошибок в ваш конечный продукт. Пятизвездочные обзоры — хорошая мера для начала.
Если желаемую функциональность нетрудно реализовать, просто добавьте ее в свои постоянно растущие личные (или корпоративные) библиотеки, которые в дальнейшем можно будет использовать во всех ваших проектах. Таким образом, вы одновременно улучшаете свои знания и набор инструментов.
Распространенная ошибка Unity № 10: Отсутствие необходимости расширять базовую функциональность Unity
Иногда может показаться, что среды Unity Editor вполне достаточно для базового тестирования игры и проектирования уровней, а ее расширение — пустая трата времени.Но поверьте мне, это не так. Большой потенциал расширения Unity заключается в возможности адаптировать его к конкретным задачам, которые необходимо решать в различных проектах. Это может либо улучшить взаимодействие с пользователем при работе в Unity, либо значительно ускорить весь рабочий процесс разработки и проектирования уровней. Было бы прискорбно не использовать встроенные функции, такие как встроенные или настраиваемые ящики свойств, ящики декораторов, настройки инспектора настраиваемых компонентов, или даже не создавать целые плагины с собственными окнами редактора.
Заключение
Я надеюсь, что эти темы будут вам полезны по мере продвижения ваших проектов Unity.