Как сделать мморпг на юнити

Обновлено: 12.07.2024

На игровой платформе Unity уже давно создаются сотни игр с распространёнными жанрами как: гонки, экшен, логические, RPG и другие. Также на данном движке разрабатываются программы для разных ОС:

  • Windows и Windows Phone;
  • Linux;
  • Mac OS;
  • IOS и Android;
  • Браузерные игры, которые работают при поддержке плагина Unity Web Player и т.д.

Гоночный платформер от Unity

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

Подготовка рабочего места и поиск предметов игры

Трасса для платформера 2D

Далее делаем вход и настройку системы:

Создание нового проекта

Выбор компилятора проекта

Подготовление основы

Сцена готова, начинаем задавать значения нашим объектам в Инспекторе:

  • Кликаем на картинку дороги и меняем значение на Texture в меню Инспектор – Texture Tabe;
  • Что бы текстура повторялась, для нашей игры выбираем Wrap Mode – Repeat, остальные свойства оставляем и нажимаем Apply;
  • Трек состоит на основе 3Д объекта Quad, его можно выбрать в меню Create – 3D Object, после растягиваем его по размерам выбранной игровой области и перетягиваем картинку дороги на Quad;

Изменение свойств трассы

Так как предметы сцены притемнены, добавляем объект Direction Light. Это так называемый источник света. Он создаёт вид солнца, предоставляя возможность осветить вид на сцене и добавить теней, для лучшего контраста.

После нужно задать нашей дороге функцию движения, для того прописываем новый скрипт:

Скрипт MoveTrack

Перетаскиваем машинку на сцену и выставляем её размеры, и расположение для удобного пользования, при этом задаём в строке название Player.

Скрипт PlayerController

Добавление оппонентов

В сети нужно подыскать схожую по параметрам ещё одну машинку и перенести её в среду Unity. Добавляем компоненты:

Возможно ли сделать на Unity РПГ-игру(вид сверху) с открытым миром или придется все разбивать на локации?

Я видел в заметках Unity, что большие террейны портят производительность. Можно жэсточайше сжимать несжимаемое и прочие фишки, но можно и Контру в Warcraft сделать, идея то утопична будет.


ну а разбивка на отдельные локации которые будут подгружаться в зависимости от перемещения игрока, разве не так работают все "открытые" миры?

Skarn

Skarn


ну а разбивка на отдельные локации которые будут подгружаться в зависимости от перемещения игрока, разве не так работают все "открытые" миры?

Вообще, не так. В World of Warcraft конкретно (могу говорить только за него) вся карта порезана на отдельные файлы, которые грузятся в клиенте только в зоне рендера. А если делить все на отдельные локации, то это уже не совсем открытый мир.

GeneralElConsul

GeneralElConsul


ну а разбивка на отдельные локации которые будут подгружаться в зависимости от перемещения игрока, разве не так работают все "открытые" миры?

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


ну а разбивка на отдельные локации которые будут подгружаться в зависимости от перемещения игрока, разве не так работают все "открытые" миры?

Вообще, не так. В World of Warcraft конкретно (могу говорить только за него) вся карта порезана на отдельные файлы, которые грузятся в клиенте только в зоне рендера. А если делить все на отдельные локации, то это уже не совсем открытый мир.

Skarn

Skarn


ну а разбивка на отдельные локации которые будут подгружаться в зависимости от перемещения игрока, разве не так работают все "открытые" миры?

Вообще, не так. В World of Warcraft конкретно (могу говорить только за него) вся карта порезана на отдельные файлы, которые грузятся в клиенте только в зоне рендера. А если делить все на отдельные локации, то это уже не совсем открытый мир.

GeneralElConsul

GeneralElConsul


Если посмотреть на движок Бесезды, то он специально заточен под открытые миры: TES, Fallout 3 и т.д.
Тот же ВоВ мог писался наверняка сразу под открытый мир.

Skarn

Skarn


Если посмотреть на движок Бесезды, то он специально заточен под открытые миры: TES, Fallout 3 и т.д.
Тот же ВоВ мог писался наверняка сразу под открытый мир.

GeneralElConsul

GeneralElConsul



GeneralElConsul

GeneralElConsul


А это классная идея. Предполагаю, что тогда можно будет подгружать/отгружать все объекты, попавшие в границы террейна, это отличная идея!

alexprey

alexprey


GeneralElConsul

GeneralElConsul


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


Devion

Devion


это все опять мои комплексы, что я/мой ресурс/мой вопрос недостаточно крут для ресурсов в таких проектах

и зря, сударь, я вот всех очень даже жду, "недостаточно крутых" в том числе. А то как сам с собой в проекте юнити.

RSQR вот правильно ответил - создается несколько террейнов. Каждый террейн имеет свой индекс по x/y, говорящий о том, какую часть "мира" занимается локация. Соответственно есть некий ректангл, при выходе за который одни локации удаляются, а другие асинхронно подгружаются. Дабы избежать например долгой компиляции такого приложения можно использовать например бандлы/WWW. А если надобно делать "неразрывность" для точности - тут пишется свой редактор, в котором так же как и в игре подгружается определенная территория на которую смотрит камера. Далее автоматом все это копируется в локи.

Подборка онлайн-курсов по разработке 2D- и 3D-игр с нуля до уровня PRO.


Длительность: 72 часа.

Формат обучения: записи видеоуроков и домашние задания (без проверки).

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

Какие темы охватывает курс:

  • Обзор интерфейса и основных функций Unity.
  • Принципы создания игровых механик и драфтовой геометрии.
  • Подключение 3D-моделей из бесплатной библиотеки.
  • Стилизация готовой игры.
  • Не требуется базовая подготовка.
  • Бессрочный доступ к материалу.
  • Есть чат для общения с другими учениками.
  • Мини-курс даёт поверхностные знания, для создания полноценных игр необходимо обучение на платном курсе.

Об авторе: Игорь Зверев, ведущий геймдизайнер в студии VooDoo.


Длительность: 9 уроков.

Формат обучения: видеоуроки и статьи.

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


Длительность: 9 уроков.

Формат обучения: чтение статей и просмотр видео.

Длительность: 17 уроков.


Длительность: 18 уроков.


Длительность: 9 уроков.


Длительность: 8 уроков.


Длительность: 9 уроков.

Длительность: 6 уроков.

Формат обучения: видеоуроки.

Программа обучения: курс от компании Microsoft с пошаговыми уроками по созданию игры на Unity. Будет полезен тем, кто задумывается о карьере разработчика, но не уверен в своих силах и возможностях.

Что узнаете:

  • Как установить Unity.
  • Как создать персонаж и настроить физику.
  • Способы перемещения сцены.
  • Особенности создания игры на Unity.
  • Актуальная информация по теме.
  • Ёмкие уроки без воды.
  • Ссылки на интересные статьи по теме.


Длительность: 14 часов.

Формат обучения: видеоуроки, викторины и практические задания для отработки полученных знаний и навыков. Есть дополнительные материалы (учебник, статьи, руководство по интерфейсу).

Программа обучения: курс предназначен для преподавателей, которые желают преподавать Unity другим людям. Он состоит из отдельных блоков, каждый из них охватывает 5 тем. Представленный материал даёт основную теорию и практические идеи.

Чему научитесь:

  • Использовать функции и возможности Unity.
  • Самостоятельно разрабатывать учебный план.
  • Преподавать Unity в рамках различных образовательных проектов.
  • Ценные советы и лайфхаки от зарубежных преподавателей.
  • Приобретение опыта в создании проектов.
  • Есть открытый форум для общения.


Длительность: 2 часа 45 минут.

Формат обучения: видеоуроки без заданий и обратной связи.

Чему научитесь:

  • Информативный курс для новичков при минимальной продолжительности.


Длительность: бессрочный доступ — продолжительность обучения зависит от количества выбранных пособий и скорости изучения материала.

Формат обучения: чтение учебников и самостоятельная отработка навыков на собственном компьютере.

Какие темы можно изучить:

  • Основы работы в Unity.
  • Управление объектами (создание, загрузка, отслеживание и сохранение).
  • Алгоритмы создания простой игры.
  • Методы рендеринга в Unity.
  • Ценные материалы в бесплатном доступе.
  • Качественные скриншоты с примерами.
  • Бессрочный доступ к учебникам.

Длительность: 22 урока.

Формат обучения: просмотр видеоуроков.

Какие знания и навыки получите:

  • Ёмкие уроки с пошаговой инструкцией.
  • Высокое качество и небольшая продолжительность видео.

Длительность: 10 уроков, общая продолжительность 1 час 45 минут.

Формат обучения: просмотр видеоуроков.

Программа обучения: курс рассчитан на широкую аудиторию. Программа будет интересна всем, кто хочет разобраться с движком Unity3D и самостоятельно делать игры.

Что узнаете:

  • Небольшая продолжительность уроков для лёгкого восприятия.
  • Курс содержит необходимый минимум для новичков.

Основатель и главный редактор проекта. Специалист в области интернет-маркетинга (SEO-продвижения и копирайтинга, в частности). Работаю онлайн с 2018 года.

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Выбор редактора в Unity

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

MonoDevelop 4 - существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

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

Вот несколько ссылок, которые могут быть вам полезными:

  • Изучение интерфейса Unitys : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • Создание сцены в Unity : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

Выберите меню File , а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.

Создание нового проекта в Unity

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Разметка и панели Unity

Перед вами пустая страница. С ней вы и будете работать, но вам потребуется время, чтобы настроить интерфейс в соответствии со своими конкретными нуждами. Лично мне удобнее, когда консоль находится рядом с игровым экраном, но если у вас маленький монитор, вы можете заменить панели вкладками.

Пустой проект

Прежде чем перейти к созданию игры, уделите несколько минут, чтобы подготовить свой проект и сцены.

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Папки в Unity

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

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

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

Префабы

Многоразовые игровые объекты (например: пули, враги, бонусы).

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

Сцены

Сцена содержит игровой уровень или меню.

В отличие от других объектов, создаваемых в панели "Проект", сцены создаются в меню "Файл". Если вы хотите создать сцену, нажмите на кнопку "Новая сцена" в подменю и не забудьте потом сохранить ее в папку Scenes.

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

Звуки

Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

Scripts

Textures

Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в "Sprites".

Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь , или здесь .

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки "Play".

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

Логические объекты

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

Пустые объекты

В Unity можно создать пустой объект и использовать его в качестве "папки" для других игровых объектов. Это упростит структуру вашей сцены.

Пустые объекты

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

Первая сцена на Unity

Совет: по умолчанию игровой объект привязан к положению родителя. Это приводит к интересному побочному эффекту при использовании объекта камеры: если камера является дочерним объектом, она автоматически будет отслеживать положение родителя. Если же она является корневым объектом сцены или находится внутри пустого игрового объекта, она всегда показывает один и тот же вид. Однако если вы поместите камеру в движущийся игровой объект, она будет следовать за его передвижениями в пределах сцены. В данном случае нам нужна фиксированная камера, поэтому мы помещаем ее в пустой объект Render . Но запомните это свойство объекта камеры, оно может вам пригодиться. Мы подробно остановимся на этой теме в главе "Паралаксный скроллинг".

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

TGPA фон

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Новый спрайт для игры в Unity

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background : (фон)

Выбор спрайта в Unity

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Вид спрайта

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 - Background . Измените координаты на (0, 0, 0) .

Фон установлен

Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Фон 2

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить "Z" наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Сортировка списка слоев

Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):

Добавить сортировку слоя в Unity

Добавьте фоновый слой к вашему спрайту фона:

Установить сортировку слоя

Настройка Order in Layer - это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

Спрайты для платформ

Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity.

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку "Текстуры"
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените "Sprite Mode" на "Multiple"
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

Редактор спрайтов

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

Автоматическая нарезка

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

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Результат редактора спрайтов

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 - Middleground . Убедитесь, что их позиция по оси Z равна нулю.

Две новые платформы

Prefabs (Префабы)

Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :

Префабы

Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:

соединение префабов

Заметка о кнопках "Prefab": При последующей модификации игрового объекта, вы можете использовать кнопку "Apply", чтобы применить эти изменения к Prefab , или кнопку "Revert", чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка "Select" переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

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

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).

На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

Слой Позиционирование по оси Z
0 - Задний фон 10
1 - Средний фон 5
2 - передний фон 0

При переключении из 2D режима в 3D, в окне "Scene" (Сцена) вы будете четко видеть слои:

Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

Вы только что узнали, как создать простой статический фон и как отобразить его должным образом. Затем мы научили вас, как сделать простые спрайты. В следующей главе мы узнаем, как добавить игрока и его врагов.

Читайте также: