47 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как создать онлайн игру на юнити

Как создать простую 2D-игру на Unity

На создание игры обычно уходит много времени и сил, но движок Unity значительно облегчает процесс. И в 2D-, и в 3D-играх.

С помощью Unity сделаны такие игры, как:

  • Outlast;
  • Hearthstone;
  • Cuphead;
  • Rust;
  • Firewatch;
  • Inside;
  • Cities: Skylines и другие.

Из статьи вы узнаете, из каких компонентов создаётся игра и как написать свой первый проект. Вот такие нас ждут этапы:

  1. Создаем проект в Unity.
  2. Добавляем первый объект.
  3. Пишем скрипт.
  4. Назначаем триггер.

Почему Unity

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

Как именно пользоваться движком Unity и создавать крутые проекты, — мы учим на курсе «Разработчик игр с 0 до PRO».

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

Как установить Unity

Скачиваем Unity на официальном сайте. Новичкам достаточно бесплатного тарифа Personal.

Последняя версия движка может не поддерживаться на старых компьютерах. Если так, то подходящую стоит поискать в архиве версий. Игра для этой статьи написана на Unity 5.5.0f3. Интерфейс более поздних версий не сильно менялся, поэтому руководство подойдёт и для них.

Статья в тему:  Какие итемы стакаются в доте 2

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

  1. Запустите установщик и следуйте инструкциям.
    Кроме самого движка, вам предложат установить Microsoft Visual Studio — интегрированную среду разработки. Это лучшие возможности по работе со скриптами в Unity, но она занимает много места на диске.
  2. Если Microsoft Visual Studio установлена или используется другой редактор кода, уберите галочку. Альтернативами могут быть Microsoft Visual Studio Code (более лёгкая версия Visual Studio) или MonoDevelop — встроенный редактор Unity.
  3. Когда установка завершится, пора приступать к разработке своей первой игры.

Как создать проект в Unity

Запустите Unity и нажмите кнопку New или New project.

Unity5.Создаем Онлайн игру. ч.1

Как создать онлайн игру в Unity5.

В сети есть множество уроков по созданию онлайн игр, мультиплееров или по созданию сетевых игр в Unity 5, вот и я хочу начать серию уроков и рассказать вам, как создать свой мультиплеер на бесплатном игровом движке Unity5 при помощи инструмента Photon Unity Networking.

В этой части мы ознакомимся с инструментом Photon и подготовим сцену в Unity для дальнейшего создания онлайн игры. Давайте начнем.

Статья в тему:  Как играть в онлайн игры без флеш плеера

Откроем новый проект и перейдем в Asset Store, нажмем Window — Asset store или клавиши ctrl+9. Откроется окно магазина, где в поиске можно вбить Photon и выбрать Photon unity networking free.

Как видите пакет бесплатный, по этому смело нажимаем кнопку Download и ждем когда закончится скачивание.

Далее нажимаем Import и мультиплеер импортируется в Unity.

После импорта Photon потребует ввести AppID.

Где его взять? Переходим на сайт www.photonengine.com и регистрируемся.

Вводим свой e-mail, смотрим в почте письмо и переходи по ссылке в нем для дальнейшей регистрации.

Вводим свой пароль.

И после появления сообщения об успешной подтверждении учетной записи переходи в панель управления своего аккаунта.

Видим нужный нам appId, просто копируем его и вставляем в окно Photon в Unity и жмем Skip project.

После ввода appid появится сообщение об успешном соединении с серверами Photon.

В самом движке появится несколько папок с ресурсами мультиплеера и загрузится Demo сцена Photon, где можно просмотреть примеры созданных проектов при помощи Photon unity networking.

Можете протестировать эти примеры и определится, походит ли данный инструмент для создания вашей игры. На этом первая часть урока закончена, в следующей части мы познакомимся со скриптами Photon и начнем создавать свою онлайн игру. Удачных проектов!

Основы многопользовательской игры на Unity3D

Я, как и многие из вас, большой поклонник многопользовательских игр. В них меня прельщает в основном дух соревнования и возможность приобретать улучшения, накапливая достижения. Да и сама идея выхода в свет все большего количества игр данного типа побуждает к действию.
С недавнего времени я и сам взялся за разработку собственного проекта. И поскольку на Хабрахабре статей на эту тематику не нашел – решил поделиться своим опытом написания многопользовательской игры на движке Unity3D. Также хочу рассказать о компонентах Network и NetworkView, атрибуте RPC и встроенных методах-ивентах. В конце статьи подан пример игры и, разумеется, сам проект для Unity. Итак…

Статья в тему:  Игра марио как на денди онлайн бесплатно
Класс Network

Данный класс нужен для организации соединения «клиент-сервер». Основные функции: создание сервера, подключение к серверу, создание сетевого экземпляра префаба.

Основные методы:

Network.Connect (string host, int remotePort, string password = “”) – выполняет подключение к серверу host с портом remotePort и паролем password. Метод возвращает перечисление NetworkConnectionError.

Network.InitializeServer(int connections, int listenPort, bool useNat) – создает сервер с максимально разрешенным количеством подключений connections; порт входящих подключений listenPort, а также useNat: использовать либо нет NAT . Также возвращает перечисление NetworkConnectionError.

Network.InitializeSecurity() – вызывается перед Network.InitializeServer() для защиты от читерства. Подробности в официальной документации. Не вызывать на клиенте!

Network.Instantiate(Object prefab, Vector3 position, Quaternion rotation, int group) – создает экземпляр префаба prefab в сети в позиции position с поворотом rotation и группой group. Возвращает весь созданный объект, с которым после создания можно выполнить дополнительные действия. Подробности – далее в статье.

Основные свойства:

bool Network.isClient и bool Network.isServer – определяют, является ваша игра сервером либо клиентом. Оба свойства являются false, если не был создан сервер или не было подключения к серверу.

string Network.incomingPassword – свойство задает пароль для входящих подключений.

NetworkPlayer Network.player – возвращает экземпляр локального игрока NetworkPlayer.

NetworkPeerType Network.peerType – возвращает текущее состояние подключения: Disconnected (отключен), Server (запущен как сервер), Client (подключен к серверу), Connecting (попытка, в процессе подключения).

Статья в тему:  Как создать лобби в доте 2 с друзьями

NetworkPlayer[] Network.connections – возвращает всех подключенных игроков. На клиенте возвращает только игрока сервера.

Основные ивенты (для унаследованного от MonoBehaviour):

OnConnectedToServer() – вызывается на клиенте при успешном подключении к серверу.

OnDisconnectedFromServer(NetworkDisconnection info) – вызывается на клиенте при отключении от сервера и на сервере при завершении подключений Network.Disconnect(). В info содержится причина отключения: LostConnection (потеря связи) и Disconnected (при успешном отключении).

OnFailedToConnect(NetworkConnectionError error) — вызывается на клиенте при ошибке подключения. error содержит ошибку типа NetworkConnectionError.

OnNetworkInstantiate(NetworkMessageInfo info) — вызывается на клиенте и сервере, если был создан новый экземпляр методом Network.Instantiate(). Содержит info типа NetworkMessageInfo.

OnPlayerConnected(NetworkPlayer player) — вызывается на сервере при успешном подключении клиента и содержит player типа NetworkPlayer.

OnPlayerDisconnected(NetworkPlayer player) — вызывается на сервере при отключении клиента и содержит player типа NetworkPlayer.

OnServerInitialized() — вызывается на сервере, после того как сервер был успешно создан.

OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info) — важный ивент для синхронизации компонента с сетью. Подробности – далее в статье.

Класс NetwokView

Данный класс существует также и как компонент для Unity, и предназначен он для синхронизации компонентов в сети и для вызова RPC .
Обладает такими свойствами синхронизации NetworkStateSynchronization:

  • Off — не выполняет синхронизацию объекта, однако позволяет вызывать удаленные процедуры.
  • ReliableDeltaCompressed — выполняет передачу пакетов поочередно и проверяет, доставлен ли пакет (подобно протоколу TCP).
  • Unreliable — выполняет быструю отправку пакетов, не гарантируя доставки (подобно протоколу UDP).
Статья в тему:  Как найти нормальную команду в доте 2
Основные методы:

networkView.RPC(string name, RPCMode mode, params object[] args) — вызывает удаленную процедуру name, mode определяет получателей, args – аргументы для передачи процедуре.

networkView.RPC(string name, NetworkPlayer target, params object[] args) – то же, что и предыдущий метод, однако выполняет отправку конкретному игроку NetworkPlayer.

Основные свойства:

bool networkView.isMine – свойство, определяющее, является ли объект локальным. Весьма часто используется для проверки владельца объекта.

Component networkView.observed – компонент, который будет синхронизироваться. Если это скрипт, то он должен содержать метод OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info), упомянутый выше.

NetworkPlayer networkView.owner – свойство, возвращающее владельца объекта.

NetworkStateSynchronization networkView.stateSynchronization — тип синхронизации: Off, ReliableDeltaCompressed, Unreliable.

NetworkViewID networkView.viewID — уникальный идентификатор в сети для NetworkView.

Атрибут RPC
Метод OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)

Данный метод используется для синхронизации компонента в сети. Он вызывается всякий раз при получении либо отправке данных по сети.
Вот типы данных, которые могут быть получены/отправлены методом Serialize: bool, char, short, int, float, Quaternion, Vector3, NetworkPlayer, NetworkViewID.
Для проверки, идет ли прием либо передача, используются свойства isReading или isWriting.

Привожу пример использования:

Данный пример не идеален, поскольку при его работе наши объекты будут «дергаться». Чтобы избежать этого, нужно воспользоваться интерполяцией. Подробнее – далее в статье.

Интерполяция

Подробнее о методах оптимизации синхронизации по сети смотрите на сайте разработчиков: Valve Developer Community — Source Multiplayer Networking

Статья в тему:  Как смотреть реплеи доты на телефоне
Пример многопользовательской игры

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

Создаем скрипт ServerSide.cs и пишем туда следующее:

Теперь создаем скрипт клиента ClientSide.cs:

Таким образом, клиентская и серверная логика есть, теперь для нее нужно сделать управление MainMenu.cs:

Управление сетью создано. Далее пишем управление игроком PlayerControls.cs. В данном примере я использую другой способ применения компонента NetworkView:

Знаю, что синхронизация и управление должны находиться раздельно, но для примера я решил объединить их. Как вы заметили, здесь NetworkView создается во время инициализации скрипта. На мой взгляд, это более удобный способ для защиты от возможного «забыл добавить» (разумеется, если не написано RequireComponent( typeof( Rigidbody ))), а также уменьшает в инспекторе количество компонентов на объекте.
К примеру, у меня был случай: когда, на первый взгляд, все было сделано правильно, однако мой скрипт не делал интерполяцию, и все мои действия в синхронизации игнорировал. Так вот ошибкой оказалось то, что Observed был не моим скриптом, а трансформ объекта.

Итак, теперь у нас есть все необходимые скрипты для написания мини-игры.
Создаем пустой объект и назначаем ему скрипты MultiplayerMenu, ServerSide, ClientSide.
Создаем плоскость и немного опускаем.
Создаем префаб игрока (в моем примере это будут шары). Создаем объект «сфера», назначаем ему скрипт PlayerControls и добавляем в префаб. Префаб перетягиваем на ClientSide в поле Player Prefab.
На этом все, компилируем проект (не забывая в настройках игрока включить Run in background) и запускаем несколько раз. В одном из окон жмем сервер, на остальных – клиент, и смотрим на результат.

Статья в тему:  Игрофикация как онлайн-игры стимулируют работоспособность

Ссылка на проект.
*В проекте могут быть логические ошибки, но на суть данной статьи они не влияют.

Всех благодарю за внимание!
Желаю успехов в создании многопользовательских игр!

🏓 Создаем 2D-игру на Unity: инструкция для новичка

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

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

  • Battletoads – продолжение серии игр в жанре beat ’em up, файтинг;
  • Spiritfarer – игра в жанре «ферма», менеджмент;
  • Carrion – игра в жанре «ужасы», метроидвания ;
  • Creaks – игра в жанре «квест», головоломка;
  • Streets of Rage 4 – игра в жанре beat ’em up, файтинг.

Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации – покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.

Особенности создания 2D-игр на Unity

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

Статья в тему:  Какая чудная игра смотреть онлайн

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

  • Ресурсили Asset – основной строительный блок для любого проекта Unity. Это может быть изображение, трехмерная модель, звук. Чтобы не путать с префабами или игровыми объектами, рекомендуется размещать ресурсы в отдельной папке Assets.
  • Игровой Объектили GameObject. Если ресурс используется в сцене, то он становится игровым объектом. Например, у нас есть изображение противника – это ресурс. Когда же мы создадим на сцене 20 противников, то получим 20 игровых объектов.
  • Компоненты влияют на поведение и отображение игровых объектов.
  • Префаб – способ хранения игровых объектов, оптимизированный для многократного использования и клонирования с разными настройками. При изменении префаба изменяются все его копии.
  • Скрипт – исходный текст программы на языке C#. Могут прикрепляться к игровым объектам или префабам.

Пошаговый процесс создания 2D-игры на Unity

Предполагаем, что вы уже установили редактор и создали аккаунт на портале Unity.

В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D

Настройка проекта Детальная настройка проекта

Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.

Статья в тему:  Роттен дот ком

1. Создаем пустой объект, переименовываем в GameManager.

Создаем пустой объект

2. Создаем C#-скрипт с названием GameManager. Ассоциируем скрипт с объектом GameManager, перетащив мышкой скрипт на объект.

Создаем C# скрипт

3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.

Создаем спрайты

4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).

Добавляем .компонент Box Collider 2D Настраиваем.компонент Box Collider 2D Добавляем компонент Rigidbody 2D Масштабируем спрайты

5. Создаем C#-скрипты Ball и Pad. Ассоциируем их с префабами.

6. Заполняем скрипты следующим кодом.

GameManager.cs Ball.cs Pad.cs

6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.

7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.

Настройка камеры

8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).

Настройка ввода, основное Настройка ввода, первый игрок Настройка ввода, второй игрок

Статья в тему:  Drakensang online сколько весит клиент

Вот и всё, игра готова!

Пинг-понг, итоговый результат

Билд для платформы Windows

Дополнительные туториалы

1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.

2. Youtube-канал Brackeys , где можно найти серию видеоуроков по созданию 2D-платформера.

3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.

Если у вас мало опыта в разработке игр на Unity, мы рекомендуем обратить внимание на факультет разработки игр GeekBrains . Материал хорошо структурирован и содержит все необходимое для того, чтобы стать профессиональным Unity-разработчиком.

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

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

Создание игр в Unity 3D (Юнити) на языке C# – бесплатные уроки для детей

Unity — это среда, которая позволит детям почувствовать себя настоящими разработчиками игр! На движке Unity 3D ребята могут создавать анимацию, запрограммировать игровую сцену и полноценные игры. А также познакомиться с языком программирования “Си шарп”, на котором в Unity пишутся скрипты.

Статья в тему:  Какая чудная игра смотреть онлайн

Школа программирования для детей “Пиксель” подготовила бесплатные уроки Unity 3D, которые познакомят детей с программой и научат создавать первые игры. Поддержите нас, ставьте палец вверх, если наш бесплатный курс по Юнити окажется полезным для ваших детей.

Как скачать Unity 3D на ПК

Для начала скачаем и установим программу на компьютер.

Урок 1. Как сделать анимации в Unity 3D

Начинаем уроки по Юнити. Первый шаг — анимирование персонажа. Мы добавим нашего дракона на сцену, изменим его размеры, научим его двигаться и бегать с заданной скоростью. Напишем наш первый скрипт.

Урок 2. Как сделать телепорт в Unity 3D

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

Урок 3. Как сделать спавн объектов в Unity 3D

Мы изучим 2 способа создания спавна объектов: на канвасе (canvas) и в пределах камеры. А еще узнаем, как создавать префабы.

Урок 4. Триггеры в Unity 3D | Столкновение персонажей

Триггеры чаще всего нужны, чтобы собирать бонусы в игре или наносить урон персонажу. Поэтому в этом видео мы научимся программировать сбор бонусов и сталкивать персонажей.

Урок 5. Как создать таймер в Unity 3D

Таймер нужен для почти любой игры, мы научимся создавать его с помощью корутины (Coroutine) и команды InvokeRepeating.

Статья в тему:  Игрофикация как онлайн-игры стимулируют работоспособность

Урок 6. Перемещение объекта мышью в Unity 3D

Функция Mouse Drag или, по-другому, метод перетаскивания нужен для того, чтобы перетаскивать объекты в игре. Например, как мы показываем в видео, чтобы перемещать еду на персонажа и кормить его.

Урок 7. Как сделать полосу здоровья персонажа в Unity 3D

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

Урок 8. Как сохранить игру в Unity 3D

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

Урок 9. Создаем игру “Раннер” в Unity за 30 минут

Время повторить пройденное! Мы сделаем классический «Раннер» и закрепим изученный материал: запрограммируем движение героя, создадим препятствия (используя триггеры), сделаем спавн объектов и даже сделаем плашку с жизнями.

Урок 10. Как экспортировать игру из Unity на ПК или Android (как настроить для Play Market)

В этом видео расскажем, как собрать игру под ПК или под Android: в каком порядке собрать сцены, какие им дать номера, а еще какие настройки нужны, чтобы загрузить игру Play Market.

Урок 11. Как загрузить игру в Play Market

Мы собираем игру и заполняем все настройки для Play Market. Теперь другие пользователи смогут сыграть в вашу игру, а вы будете на этом зарабатывать.

Статья в тему:  Как создать лобби в доте 2 с друзьями

Урок 12. Как сделать прыжок в Unity 3D

В этом уроке мы разберем, как сделать прыжок персонажа в 2D- и в 3D-проекте. Для этого мы создадим две сцены, напишем скрипты на языке Си Шарп.

Урок 13. Как управлять персонажем в Unity 3D

Давайте научим нашего персонажа двигаться. Для этого мы зададим переменные типа float, они будут отвечать за скорость, поворот и перемещение по горизонтали и по вертикали. И, конечно, напишем скрипты для 2D- и 3D-версии игры.

Урок 14. LineRenderer в Unity 2D

LineRenderer позволяет упростить рисование линий. В этом видео мы напишем два скрипта: Line Point позволит проводить прямую линию между любыми двумя точками, а с помощью Draw Line мы сможем рисовать неотрывную линию.

Урок 15. Как сделать автосимулятор в Unity 3D | Как сделать гонки в Unity 3D

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

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

Если же вам нужен наставник, загляните в Школу программирования для детей “Пиксель”: запишитесь на полный курс по разработке игр на движке Unity 3D .

голоса
Рейтинг статьи
Статья в тему:  Какие итемы стакаются в доте 2
Ссылка на основную публикацию
Статьи c упоминанием слов: