Как сделать игру на движке unity
Разработка компьютерной игры в Unity: начните здесь
Любой новый мир начинается с мечты. Unity предлагает все необходимое для ее воплощения. Здесь вы найдете множество советов по разработке вашей первой компьютерной игры. Никаких требований к уровню знаний и навыков: от вас нужно только желание!
Создавайте игру играючи
Начните творить на примере готовых шаблонов Unity Microgame. Каждый из шаблонов имеет свою коллекцию ресурсов Mod, позволяющих играючи изменить исходный шаблон, попутно осваивая основы игрового дизайна, логики взаимодействий, визуализации и многое другое.
LEGO® Microgame
Реализуйте свои творческие идеи с помощью виртуальных блоков LEGOⓇ в нашем новейшем шаблоне Microgame!
FPS Microgame
Взрывайте печеньки, добавляйте симпатичных, но смертоносных роботов, украшайте подземелье. Создайте собственный шутер от первого лица из шаблона FPS Microgame.
2D Platformer Microgame
Разбрасывайте конфетти, устройте феерию света, добавьте бодрости в походку вашего двумерного персонажа в этом милом платформере.
3D Karting Microgame
Набросайте мармеладных мишек, снопы искр и прокачайте свою тачку в веселом картинге.
Your first game jam with Unity
Глобальное сообщество Unity предлагает участникам множество способов общения друг с другом. Для новичков доступны гейм-джемы, задачи и группы по интересам (по одной для шаблонов Karting, 2D Platformer и FPS Microgame), которые помогут набраться уверенности и поделиться своими первыми творениями. Мы рады всем желающим!
Made with Unity — Norman’s Island by Little Mountain Animation
Unity — это самая популярная в мире платформа разработки игр, ведь на ней создано более 50% всех мобильных игр, 60% всего контента для дополненной и виртуальной реальности, а Unity-разработчик — это седьмая по росту популярности профессия согласно недавнему отчету LinkedIn U.S. Emerging Jobs.
Новички могут загрузить Unity бесплатно и начать с готовых ресурсов Unity Microgame и Mod. Учитесь с помощью сотен обучающих материалов, курсов, словарей и игровых наборов — бесплатных или по разумной цене — от Unity и участников нашего потрясающего сообщества.
Вдохновляйтесь, учитесь и творите
Создайте двумерную компьютерную игру
Unity — это ведущая платформа разработки как 2D-, так и 3D-игр. Если вам больше по душе 2D, то здесь можно узнать, как разрабатывать такие игры.
Программирование компьютерной игры в Unity
Вы хотите узнать, как программировать игры? Мы предлагаем множество ресурсов, на примере которых вы сможете научиться программировать на C# в Unity.
Разработайте 3D-игру в Unity
Unity предлагает инструментарий, который поможет вам разработать вашу первую 3D-игру. Начните отсюда, если хотите познакомиться с процессом разработки нового иммерсивного мира для ваших игроков.
Sykoo Sam: начало разработки игр
Sykoo Sam — евангелист Unity в интернете, автор популярного канала, посвященного игровой разработке. Вот несколько советов разработчикам-новичкам.
Thomas Brush: посмотрите это, прежде чем создавать первую игру
Thomas Brush создает игры более 10 лет и готов поделиться мудростью, полезной как начинающим, так и опытным разработчикам.
Dani: студент и игровой разработчик
YouTube-блогер и будущий разработчик Дэни делится своими идеями по программированию, а также дает советы по созданию игр в Unity.
Blackthornprod: «Я создал игру в Unity за неделю»
В этом видео, Blackthornprod делится опытом разработки игры Unity за одну неделю.
Brackeys: как создать видеоигру
Смотрите серию видеороликов от популярного разработчика Brackeys, в которой он делится основными этапами разработки игры.
Mix and Jam: берем идеи из реальных игр
На канале Mix and Jam рассматриваются любимые игры автора с попыткой воссоздать их элементы в Unity.
Инструменты для разработки игр
Мы подготовили для вас советы по использованию основных инструментов, которые помогут начать путь в мире игровой разработки.
Станьте успешным игровым разработчиком
Чтобы начать карьеру разработчика, вам потребуется определенный склад ума, базовые навыки и несколько полезных ресурсов.
Советы по дизайну уровней
Чтобы научиться создавать качественный дизайн уровней для игр, нужно внимание к деталям и знание весьма важных концепций.
Как попасть в игровую индустрию
Чтобы стать частью игровой индустрии, нужно не так уж и много. Вот несколько советов по выбору карьеры.
Подходит ли Unity для разработки 2D-игр?
Поговорим о том, что делает разработку 2D-игр в Unity удобной, интуитивно понятной и интересной.
Использование Blender и Maya с Unity
Одни из самых популярных пакетов анимации — это Blender и Maya. Предлагаем вам руководство по их использованию с Unity.
5 обучающих материалов по Unity для новичков в игровой разработке
Наши лучшие авторы контента покажут, как начать разрабатывать игры в Unity.
Терминология видеоигр
Мы подготовили подробный словарь терминов, используемых в игровой разработке, Unity и в среде игроков, который поможет хорошо освоиться в нашей отрасли.
5 распространенных ошибок игровой разработки, которые допускают новички
Разработка игр — это весело и интересно. Если вы грамотно подойдете к работе с самого начала, то избавите себя от проблем в будущем.
10 советов по дизайну игр для новичков
Советы для всех начинающих игровых разработчиков, решивших заняться игровым дизайном.
Пять типов привлекательных игровых персонажей
Мы поговорим о том, как сделать игрового персонажа правдоподобным, чтобы у игрока возникло чувство привязанности.
Про создание платформера на Unity. Часть первая, характерная
Все мы здесь любим качественные пошаговые руководства для начинающих, чего уж греха таить. По платформерам на Unity руководств много, а вот качественных не то что бы и очень. Сегодня мы попробуем добавить в копилку хороших уроков еще один. А создавать мы будем персонажа для 2D-платформера, ни больше, ни меньше.
Присоединяйтесь, учитесь, но помните: под катом очень много гифок.
Итак, с чего начать создание персонажа? Конечно же, с его спрайта. Достаточно перетащить картинку из любой папки на жестком диске во вкладку Assets, а оттуда — прямо на сцену. Оговорюсь сразу, в этом уроке мы не будем рассматривать создание анимации. А вот в следующих частях цикла — будем.
Как видите, после добавления на сцену (условимся, что это полноценный аналог словосочетанию scene view) у спрайта появились два компонента. Первый — transform. Он отвечает за расположение любого игрового объекта на сцене, его масштаб и текущий угол поворота относительно осей. Компонент sprite renderer как раз занимается отрисовкой спрайта нашего обаятельного носача в процессе редактирования и игры.
Но пока персонаж всего лишь картинка, он не может взаимодействовать с окружающим его миром. Для этого на помощь приходят компоненты, спрятанные во вкладке physics2d. В нашем случае это box collider и circle collider. Первый мы добавим на верхнюю часть персонажа для столкновений со стенами и всем остальным, а второй расположим на уровне ног. Это позволит двигаться по наклонным поверхностям (и поверхностям с небольшим перепадом высот) без особых проблем.
Если вкратце:
mass отвечает понятно за что;
linear drag и angular drag — линейное и угловое сопротивление, соответственно;
gravity scale — коэффициент гравитации для конкретно этого объекта;
fixed angle отключает переворот персонажа при столкновении с чем-нибудь, допустим, летящим;
isKinematic фиксирует объект раз и навсегда в одной точке;
interpolate устанавливает режим сглаживания при отрисовке персонажа;
На этом пока перестанем добавлять персонажу компоненты. Но сделаем кое-что из него. Для того, чтобы нам не приходилось тысячу раз добавлять одинаковые компоненты на каждом, допустим, уровне, в Unity есть механика под названием prefabs. Она позволяет создать из игрового объекта «болванку», которую можно использовать много раз и менять как своей душе угодно, не боясь за то, что какие-то экземпляры могут не измениться. Для создания префаба достаточно просто перетащить объект из иерарахии во вкладку assets. В моем случае еще и в папку prefabs.
Как видите, оба экземпляра героя прекрасно создаются и существуют вместе. Теперь нужно создать платформу, на которой будет стоять наш большеносый друг. Перетащим спрайт на сцену и добавим ему polygon collider. Размеры этого коллайдера, к слову, можно менять, перетаскивая его вершины с зажатой кнопкой shift.
Самое время научить персонажа двигаться. Перетащим заранее подготовленный скрипт (его нужно скачать и сохранить в папку assets) прямо на персонажа в hierarchy view.
У этого кусочка кода есть ряд параметров, которые отвечают за поведение героя в игре.
groundCheck — дочерний объект, находящийся в нижней точке спрайта и отвечающий за определение того, находится ли нечто, чем мы управляем, на «земле»
whatIsGround — что, собственно, считать землей. В нашем случае «землей» считается все, кроме персонажа
groundRadius — некая величина, в пределах которой проверяется столкновение с поверхностью.
В итоге, строчка grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround); проверяет, пересекает ли groundCheck с радиусом groundRadius поверхность и, допустим, запрещает прыгать в нужных случаях.
Давайте, наконец, запустим игру и посмотрим что же у нас сегодня получилось. Для этого нажмем кнопку Play в верхн… Да ладно, вы и сами это разглядели 🙂
Герой прекрасно двигается (хотя, возможно, и не совсем прекрасно), и это создает для нас отличные предпосылки продолжить создание платформера.
А в следующей части мы разберемся как управлять камерой, узнаем кому нужно зажигание звезд и создадим самого первого врага. И да, попутно исправим один критический баг, беспечно пропущенный в статью во время этого урока. Догадаетесь, какой?
Если эта статья вдруг пробудила в вас желание написать собственную игру, то не растрачивайте его впустую! Прямо сейчас проходит конкурс, стать участником которого слишком просто: достаточно зарегистрироваться, выложить свою игру в store и дождаться объявления результатов. А победителей ждут Xbox One и великолепные Lumia 930!
Пойду дописывать свой Angry Flappy Swompy 3 Deluxe. Stay tuned, вторая часть статьи в ближайшие дни!
А вот и другие наши статьи по схожей тематике:
Создание игры на Unity небольшой командой: особенности технологии
Разработчик детского мобильного паззла Fold the Adventure Алексей Галкин написал для ЦП колонку о том, на что следует обратить внимание при разработке мобильной игры на платформе Unity: как выбрать правильные ассеты из Asset Store, в каком сервисе хранить данные о прогрессе пользователей и где взять звуки для игры.
Чтобы сделать хорошую игру, нужна хорошая идея. Но даже имея идею, создать на её основе достойную игру совсем непросто. Помимо банальной удачи, существует огромное множество вещей, с которыми приходится иметь дело. Бесконечное число решений необходимо принять в весьма скромное время. Ведь время — это деньги, а бюджет проекта имеет тенденцию исчезать до того, как сделано хоть что-то достойное демонстрации (не говоря уже о выпуске).
Эта история о том, как наша небольшая инди-команда создавала игру Fold the Adventure («Сложи приключение») на основе оригинальной идеи. Поскольку игра выпущена, мы можем перевести дух и окинуть взглядом три месяца, потраченные на разработку. Несмотря на наличие многолетнего опыта в игровой индустрии, создание Fold the Adventure заставило нас изрядно попотеть ввиду непредсказуемых поворотов событий и весьма ограниченных ресурсов. Добро пожаловать в наше приключение!
Сказать по правде, движок нам выбирать не пришлось. Мы сразу взяли Unity и не пожалели об этом. Нашей первостепенной задачей было создание сравнительно небольшой игры и запуск её на максимальном количестве платформ. При этом хотелось избежать возни с программированием на Objective C и Java. С Unity нам это удалось. И хотя всё было не так просто и гладко, как предполагалось, движком мы остались довольны.
По нашему мнению, Unity — это лучший игровой движок для инди-разработки в настоящий момент. Его программная архитектура хорошо продумана, редактор сделан добротно и становится лучше с каждой версией. Начать пользоваться Unity легко, но опытным разработчикам он может показаться поначалу контринтуитивным. Тем не менее, и новички, и профессионалы, скорее всего, столкнутся с одними и теми же подводными камнями.
Вот некоторые из рекомендаций, которые мы выработали после довольно продолжительного использования Unity (не ограниченного созданием Fold the Adventure):
Если у вас небольшая команда при сильно ограниченных времени и бюджете, то создать большое количество качественных игровых ассетов с нуля практически невозможно. Приходится усмирять грандиозные амбиции и минимизировать количество необходимого. Но даже при условии минимизации, нужно оставить что-то, на что игроку было бы приятно посмотреть.
Если ассеты для игры могут быть сделаны силами команды — одной проблемой меньше (cкорее всего). Но есть ещё фаза прототипирования, а для неё также нужны ассеты, которые с большой долей вероятности будут выброшены. Поэтому практически каждой команде требуются ассеты, которые она не может или не хочет делать. Вопрос в том, где их взять.
Первым и самым очевидным ответом для нас, как для Unity разработчиков, был Unity Assets Store. Какой бы заманчивой ни казалась эта возможность, она влечёт за собой и ряд сложностей:
Вторым вариантом был аутсорсинг ассетов. Безусловно, этот путь отнимает больше времени и денег, чем просто покупка чего-то из Unity Assets Store. Однако, при удачном раскладе, получаемые ассеты уникальны и более качественны.
Существовала также возможность покупки ассетов из источников помимо Unity Assets Store. Однако здесь возникала проблема совместимости с Unity, и мы решили воздержаться от таких экспериментов.
Когда мы принимали решение о том, какие ассеты делать самостоятельно, а какие нет, мы начали с их категоризации. Как оказалось, ассетов, которые были уникальны для нашей игры и выделяли её среди прочих, было сравнительно немного. Их мы решили сделать своими силами, прибегая к помощи аутсорса там, где это было возможно. Остальное было куплено в Unity Assets Store.
Вот несколько простых правил, к которым мы пришли в ходе поиска и покупки ассетов в Unity Assets Store
Музыка и звуки заслуживают отдельного внимания. Они редко создаются инди-командой самостоятельно (если у вас есть композитор, то вам либо очень повезло, либо вы уже не инди). К счастью, существует большое количество сервисов, поставляющих royalty-free музыку и звуки, включая Unity Assets Store. И это совсем недорого.
Недостаточно просто купить музыку и звуки. Необходимо сделать так, чтобы они правильно звучали в игре и не раздражали слух. Если вы уверены в своих силах, то можно попробовать сделать это самостоятельно. Мы же обратились за помощью к студии, которая специализируется на озвучке. Полученный результат был существенно лучше того, что мы могли сделать сами, и стоил своих денег.
Даже если вы, как и мы, создаёте однопользовательскую игру, вам всё равно потребуется место для хранения данных о текущем прогрессе игрока, статистике его действий, сделанных покупках и прочей информации. Самым простым решением будет использовать для этого класс Unity PlayerPrefs. Однако он сохраняет данные локально и, совершенно очевидно, не подходит для таких деликатных вещей, как внутриигровые покупки.
В поисках лучшего решения мы обнаружили Parse. Parse — это кросс-платформенный сервис BaaS (Backend as a Service — платформа типа «бэкенд как сервис», предоставляет облачную серверную инфраструктуру для всех типов приложений — ред.), который позволяет приложению сохранять данные в облаке, поддерживает авторизацию пользователей, серверные функции, push-оповещения и аналитику. Это не исчерпывающий список функциональности, но он даёт общее представление о том, что есть Parse.
Одной из причин, по которым мы выбрали Parsе, была его интеграция с Facebook (первая версия Fold the Adventure создавалась именно для Facebook). И, несмотря на то, что позднее фокус разработки был смещён на мобильные платформы, мы продолжили использовать Parse.
Ещё одной приятной особенностью Parse является его ценовая политика. Поначалу она кажется немного странной, но, после размышлений и расчётов, оказывается более чем удачной. По существу, вы ограничены количеством запросов в секунду. Хорошая новость в том, что 30 запросов в секунду даются бесплатно. Может показаться, что это совсем немного, но на деле этого достаточно для поддержки тысяч пользователей. При условии, что вы используете эти запросы разумно.
Единственное, для чего Parse не следует использовать, так это для создания игрового сервера. Даже если вы разрабатываете пошаговую игру, предназначение Parse в корне отлично. Существуют другие решения, которые существенно лучше подходят для этих целей.
Использование Parse в рамках Unity не сопряжено с особыми трудностями и хорошо документировано. По сути, вам необходимо скачать Parse SDK, настроить вашу игру на сервере Parse и в проекте Unity, а также немного попрограммировать. Один очевидный нюанс: вы не сможете использовать Parse, если устройство, на которое установлена ваша игра, не имеет доступа к интернету.
Если есть необходимость поддерживать офлайн-режим и обновлять данные в Parse при наличии сетевого соединения, то вам придётся написать для этого небольшую отдельную систему. Мы использовали для этого класс PlayerPrefs. Система сохраняет данные локально и заливает их в Parse, как только обнаруживает наличие подключения к интернету.
Несмотря на постепенное сближение в течение последних лет, стационарные и мобильные платформы по-прежнему сильно отличаются друг от друга. Это становится очевидным при попытке заставить «красивые» шейдеры работать приемлемо (не говоря уже о том, чтобы заставить их работать быстро) на всех устройствах, на которых предполагается запуск игры. Unity существенно облегчает этот процесс, но, к сожалению, не решает всех проблем.
Существует огромное количество статей, посвящённых оптимизации Unity-игр под мобильные платформы, так что здесь на эту тему будет сказано немного.
Вот несколько рекомендаций:
Помимо различий в производительности и аппаратных ограничений, существует ещё одно важное отличие между стационарными и мобильными платформами. И это отличие — режим ввода. Игра, созданная для управления с помощью клавиатуры и мыши, плохо переносится на мультитач и акселерометр. Мы убедились в этом на своём горьком опыте. Прежде всего, в Unity разделена обработка мыши и мультитача. А потому было необходимо создать систему, унифицирующую этот аспект. Для этих целей мы использовали систему ввода из состава NGUI, которая, после небольших доработок, показала себя весьма хорошо. Она также позволила нам решить проблему распределения ввода между пользовательским интерфейсом и игровым управлением, которая доставляла нам некоторые неприятности на тот момент.
Пользовательский интерфейс в целом потребовал ряда модификаций для корректной поддержки мобильных устройств. Например, вместо прокручивания колёсика мыши и удерживания кнопок пришлось ввести мультитач-жесты. Некоторые из модификаций можно было потенциально упросить с помощью готовых решений из Unity Assets Store. Но в нашем случае это был простой pinch, а потому мы решили написать его за час с нуля, вместо того, чтобы тратить дни на подключение и отладку системы, которая «делает всё и даже больше».
Наибольшее количество проблем вызвало внутриигровое управление. Мы начали с традиционного набора ASWD + мышь для управления персонажем и камерой, планируя использовать экранный джойстик на мобильных устройствах. Но всё получилось не совсем так, как мы ожидали: игра стала практически неуправляемой. Нам пришлось срочно менять внутриигровое управление, при этом внося изменения даже в игровую механику. Методом проб и ошибок мы остановились на point-n-click управлении, которое на мобильных устройствах воспринимается интуитивно.
Локализовывать необходимо всё, что имеет отношение к человеческому языку. То есть тексты, речь, надписи на текстурах — всё это должно быть локализовано. Такой процесс очень быстро может стать весьма трудоёмким и дорогим. Поэтому крайне важно свести количество локализуемого контента к минимуму.
Надписей на текстурах лучше избегать, и использовать, например, текстовые поля NGUI. Если в игре необходима речь, то, скорее всего, потребуются и субтитры, поскольку локализация речи не только дорогое удовольствие, но ещё и требовательное с точки зрения места, занимаемого игрой.
Система локализации NGUI проста и понятна в использовании. Она построена на основе одного CSV-файла, содержащего колонку для каждого языка. Наличие такого файла очень удобно для отправки строк на перевод (для этого существует большое количество специализированных сервисов) и последующей вставки переведённой версии.
Мы использовали Google Docs Sheets для хранения файла локализации. В таком варианте он легко доступен всем членам команды, может быть быстро обновлён и скачен в CSV формате. Кроме того, мы открыли доступ к этому файлу ряду друзей, говорящих на других языках. Таким образом мы получили часть переводов бесплатно.
К сожалению, система локализации NGUI весьма ограничена в своих возможностях и не может быть использована в играх с большим количеством разнообразного локализуемого контента. Например, она не позволяет изменить шрифт текстового поля, а эта возможность необходима при локализации на такие языки, как японский. В связи с этим мы расширили функциональность класса NGUI UILocalize, добавив возможность изменять шрифт и варьировать положение текстовых полей.
После того, как все сделано, игру необходимо тщательно протестировать (стоит это делать и неоднократно в процессе разработки). Этим должно заниматься максимальное количество людей на максимальном количестве устройств. Ничто не портит хорошую игру так, как пропущенный баг. При этом нужно обязательно слушать жалобы игроков. Поскольку эти жалобы превратятся в неудовлетворённых клиентов сразу после выхода игры на рынок. А этого точно никто не хочет.
Путём постоянного тестирования нашей игры в ходе всего процесса разработки, мы выявили и исправили больше сотни различных багов. При этом наша игра была не так уж сложна и велика, но программного обеспечения без ошибок не бывает. Кроме того, на основании предложений и жалоб тестеров, мы внесли целый ряд модификаций в игру, включая изменения базовой игровой механики, структуры части уровней, размеров и положения элементов пользовательского интерфейса, внутриигрового управления.
Эта история, вместе с выпущенной игрой, завершает три месяца тяжёлой и кропотливой работ. И, несмотря на то, что мы столкнулись с множеством сложностей, процесс разработки Fold the Adventure был весьма захватывающим. Надеемся, что игра, которую мы создали, а также полученный нами опыт сделают мир немного лучше. Удачи в создании ваших игр!
(Можем дать ключи на игру в App Store — запросы пишите в комментариях.)
Вот такие статьи я люблю. Так как я сам индигейдевелопер.
Всем привет, спасибо, что заинтересовались тем, как мы делали Fold the Adventure! 🙂
@Anton Azarov: Здравствуйте!
Вы знаете, есть такой замечательный проект WoT, так вот на мой взгляд, надеюсь вы со мной будете солидарны, этому проекту стоило взять сразу UE или CryEngine и заткнуть за пояс по графике все ФПСММО на рынке. Но как мы знаем они взяли BigWorld и даже с ним заткнули за пояс все ФПСММО на рынке, но не по графике. Я думаю WoT не пожалели в итоге, что взяли BigWorld, также и мы не пожалели, что взяли Unity и нам удалось закончить проект в супер короткие сроки и запустить его в AppStore.
П.с.
Пользуясь случаем хочу поблагодарить ЦП за публикацию нашей статьи, нам было невероятно приятно и интересно поделиться нашим опытом с комьюнити, спасибо!