Главная » Статьи » Unity3D Multiplayer

Урок 1. Создание сцены и клиента/сервера

Цель этого урока продемонстрировать, как создавать мультиплеер в Юнити. Мы покажем, как создать простую и довольно сложную сеть между клиентом и сервером, используя Master Server/Client. В этом уроке мы будем использовать Unity iPhone 1.6, iPhone 3GS и StarTrooper – это демо игра с официального сайта Юнити.

Вы научитесь как:

1) Использовать основные и продвинутые компоненты для создания сети между сервером и клиентом.

2) Написать сервер и клиент

3) Использовать Master Server

4) Использовать прямое подключение (Direct Connect)

5) Использовать UDP Broadcast Server.

6) Создать простую сцену для мультиплеера

7) Конвертировать StarTrooper в мультиплеерную игру

Создание Вашего первого Клиент-Серверного Приложения

Мы будем использовать основные мультиплеерные компоненты, это: Network и NetworkView и будем использовать прямое подключение для соединения клиента к серверу.

Подготовка Сцены

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

1) Создайте новый проект.

2) Создайте новый Префаб: Assets -> Create -> Prefab., и назовите его Player.

3) Создайте новый куб, GameObject -> Create other -> Cube.

4) Перетащите куб в иерархии в префаб Player, и после этого удалите куб со сцены.

5) Создайте новую плоскость и назовите его Ground: GameObject -> Create other ->

Plane. В параметрах вы должны установить значения: Position (0,0,0), Rotation (0,0,0),

Scale (5,5,5).

6) Создайте направленный свет: GameObject -> Create other -> Directional Light.

С параметрами:: Position (0,15,0), Rotation (25,0,0), Scale (1,1,1) Shadows

-> Type -> Soft Shadows.

7) И наконец, сохраните сцену под названием MainGame: File -> Save Scene.

                Создание скриптов и добавление компонентов

Создайте новый JavaScript скрипт, перетащите его к объекту камеры в иерархии.

Откройте скрипт и введите туда:

  1. var remoteIP = "127.0.0.1";
  2. var remotePort = 25000;
  3. var listenPort = 25000;
  4. var useNAT = false;
  5. var yourIP = "";
  6. var yourPort = "";

 

Здесь объявлены переменные, которые, естественно, пригодятся в будущем.

Теперь мы должны написать интерфейс пользователя (кнопки, текстовые поля). Дописываем в скрипт:

  1. function OnGUI () {
  2. // Проверяем подключен ли клиент
  3. if (Network.peerType == NetworkPeerType.Disconnected)
  4. {
  5. // Если не подключен
  6. if (GUI.Button (new Rect(10,10,100,30),"Connect"))
  7. {
  8. Network.useNat = useNAT;
  9. // Соединяемся с сервером
  10. Network.Connect(remoteIP, remotePort);
  11. }
  12. if (GUI.Button (new Rect(10,50,100,30),"Start Server"))
  13. {
  14. Network.useNat = useNAT;
  15. // Создаем сервер
  16. Network.InitializeServer(32, listenPort);
  17. // Notify our objects that the level and the network is ready
  18. for (var go : GameObject in FindObjectsOfType(GameObject))
  19. {
  20. go.SendMessage("OnNetworkLoadedLevel",
  21. SendMessageOptions.DontRequireReceiver);
  22. }
  23. }
  24. // Поля для ввода ip адреса и порта
  25. remoteIP = GUI.TextField(new Rect(120,10,100,20),remoteIP);
  26. remotePort = parseInt(GUI.TextField(new
  27. Rect(230,10,40,20),remotePort.ToString()));
  28. }
  29. else
  30. {
  31. // Получение ip адреса и порта
  32. ipaddress = Network.player.ipAddress;
  33. port = Network.player.port.ToString();
  34. GUI.Label(new Rect(140,20,250,40),"IP Adress: "+ipaddress+":"+port);
  35. if (GUI.Button (new Rect(10,10,100,50),"Disconnect"))
  36. {
  37. // Отсоединение
  38. Network.Disconnect(200);
  39. }
  40. }
  41. }

И последнее, есть такое событие как OnConnectedToServer, которое срабатывает тогда, когда к серверу подключаются. Используя это событие, мы можем, например, оповещать игроков, о том что подключился новый игрок. А вот пример использования этого события:

  1. function OnConnectedToServer () {
  2. // Notify our objects that the level and the network are ready
  3. for (var go : GameObject in FindObjectsOfType(GameObject))
  4. go.SendMessage("OnNetworkLoadedLevel",
  5. SendMessageOptions.DontRequireReceiver);
  6. }

Теперь можете протестировать ваш клиент и сервер. Скомпилируйте игру, далее создайте сервер прямо в движке, после получения ИП адреса введите его в текстовое поле клиента (Скомпилированная игра).


Категория: Unity3D Multiplayer | Добавил: Шаке (16.03.2012)
Просмотров: 28526 | Комментарии: 5 | Теги: network, IP, direct connect, Javascript, Port, Unity3d, master server, networkview, initalizeserver
Всего комментариев: 5
5 Gregorylaf  
0
Gregorylaf

4 scill.ru  
0
scill.ru лучший сайт если не вирите просто зайдите и увидите такое...

3 Romhhhhhh  
0
Предлагаю партнерку конверт ваще бешенный ру с качественного трафика 100 к 2
Перепробовал наверно больше 50 платников по подпискам чтоб такой конверт не было
Для тех кто на социалках траф добывает, доры под ru
партнерка по подпискам с хорошим конвертом: http://hide.su//1kim
У биржи по подпискам куча партнерок по разным темам только выбери нужную. Я руками через mail.ru за 20 минут 450рублей снял кому интересно рефам отпишу подробнее стучите в ICQ 91шесть671 ящик rassssilkсобакаmail.ru

2 Chutt  
0
http://partnerkas.ru/cd-dvd-igri.html - Партнерки игр
http://partnerkas.ru/chosting/chosting-partnerka-dzhino.html - Хостинг партнерка Джино
http://partnerkas.ru/frilanseru.html - Партнерскач программа фриланс
http://partnerkas.ru/farma-partnerki/farm-partnerka-ot-doktor-dik.html - Фарма партнерки от Доктор Дик
http://partnerkas.ru/cd-dvd-igri/partnerskaya-programma-igr-alavar.html - Партнерская программа игр Алавар

1 karyzir  
0
Епать копипастеры долбанные а кто теги var дописывать после ipaddres и port будет?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
/>meta http-equiv=