wstęp do unet

71
Wprowadzenie do UNet Jak szybko zrobić grę Multiplayer? Poznań 2016

Upload: mark-winiarski

Post on 14-Jan-2017

221 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Wstęp do UNet

Wprowadzenie do UNetJak szybko zrobić grę Multiplayer?

Poznań 2016

Page 2: Wstęp do UNet

Kim jestem?

WebDeveloper

Game Designer

GameDev Bloger

Page 3: Wstęp do UNet

Gdzie moje ryby?

Page 4: Wstęp do UNet

Rodzaje Multiplayera?

Page 5: Wstęp do UNet

Rodzaje Multiplayera?

Page 6: Wstęp do UNet

Rodzaje Multiplayera?

Page 7: Wstęp do UNet

Rodzaje Multiplayera?

Page 8: Wstęp do UNet

Co te pakiety?

Via Internet

CLIENTS

INTERNET

SERVER

Page 9: Wstęp do UNet

Co te pakiety?

Via Internet

Via LAN

CLIENTS

INTERNET

SERVER

CLIENT/SERVER

ROUTER/SWITCH

CLIENT/SERVER

CLIENT/SERVER

Page 10: Wstęp do UNet

Co te pakiety?

Match Making

Via LAN

CLIENTS

INTERNET

SERVER/HOST

CLIENT/SERVER

ROUTER/SWITCH

CLIENT/SERVER

CLIENT/SERVER

Page 11: Wstęp do UNet

Server vs Host

Page 12: Wstęp do UNet

Czym jest UNet?

UNet = Unity Networking

Page 13: Wstęp do UNet

Co dostarcza UNet?

HLAPI

Integracja z edytorem i silnikiem

Serwisy internetowe

Warstwa transportowa

Page 14: Wstęp do UNet

HLAPI - High Level API: Komponenty

Page 15: Wstęp do UNet

HLAPI - High Level API: Komponenty

Page 16: Wstęp do UNet

HLAPI - High Level API: Komponenty

Page 17: Wstęp do UNet

HLAPI - High Level API: Komponenty

Auto Spawn

Page 18: Wstęp do UNet

HLAPI - High Level API: Komponenty

Auto Spawn

Auto Visibility

Page 19: Wstęp do UNet

HLAPI - High Level API: Komponenty

Auto Spawn

Auto Visibility

Scene Managment

Page 20: Wstęp do UNet

HLAPI - High Level API: Komponenty

Auto Spawn

Auto Visibility

Page 21: Wstęp do UNet

HLAPI - High Level API: Synchronizacja

Page 22: Wstęp do UNet

HLAPI - High Level API: Synchronizacja

Page 23: Wstęp do UNet

HLAPI - High Level API: Synchronizacja

Page 24: Wstęp do UNet

HLAPI - High Level API: Funkcje i Atrybuty

Page 25: Wstęp do UNet

HLAPI - High Level API: Funkcje i Atrybuty

Page 26: Wstęp do UNet

HLAPI - High Level API: Funkcje i Atrybuty

Page 27: Wstęp do UNet

HLAPI - High Level API: Funkcje i Atrybuty

Page 28: Wstęp do UNet

HLAPI - High Level API

Komponenty <= HLAPI

Page 29: Wstęp do UNet

Co dostarcza UNet?

HLAPI

Integracja z edytorem i silnikiem

Serwisy internetowe

Warstwa transportowa

Page 30: Wstęp do UNet

Integracja z edytorem i silnikiem

Komponenety

NetworkBehaviour

Synchronizacja

NetworkIdentity

Page 31: Wstęp do UNet

Co dostarcza UNet?

HLAPI

Integracja z edytorem i silnikiem

Serwisy internetowe

Warstwa transportowa

Page 32: Wstęp do UNet

Serwisy Internetowehttps://developer.cloud.unity3d.com

Page 33: Wstęp do UNet

Co dostarcza UNet?

HLAPI

Integracja z edytorem i silnikiem

Serwisy internetowe

Warstwa transportowa

Page 34: Wstęp do UNet

Warstwa Transportowa

Page 35: Wstęp do UNet

Warstwa Transportowa

Page 36: Wstęp do UNet

Warstwa Transportowa

UDP / WebSockets

StartServer(matchResponse.address, matchResponse.port, matchResponse.networkId, matchResponse.nodeId);

Page 37: Wstęp do UNet

Gra w wersji LAN

Page 38: Wstęp do UNet

Gra w wersji LAN

Tworzymy NetworkManger

Page 39: Wstęp do UNet

Gra w wersji LAN

Tworzymy NetworkManger

Page 40: Wstęp do UNet

Gra w wersji LAN

Tworzymy Network Manger

Page 41: Wstęp do UNet

Gra w wersji LAN

Przygotowujemy Prefab Gracza

Page 42: Wstęp do UNet

Gra w wersji LAN

Przygotowujemy Prefab Gracza

Page 43: Wstęp do UNet

Gra w wersji LAN

Przygotowujemy Prefab Gracza

Page 44: Wstęp do UNet

Gra w wersji LAN

Przygotowujemy Prefab Gracza

Page 45: Wstęp do UNet

Gra w wersji LAN

Ustawiamy spawn gracza

Page 46: Wstęp do UNet

Gra w wersji LAN

Ustawiamy spawn gracza

Page 47: Wstęp do UNet

Gra w wersji LAN

Uruchamiamy!

Page 48: Wstęp do UNet

Gra w wersji LAN

Page 49: Wstęp do UNet

Gra w wersji Internet

Tworzymy projekt w Unity Cloudhttps://developer.cloud.unity3d.com

Page 50: Wstęp do UNet

Gra w wersji Internet

Przypisujemy projekt do projektu z Unity Cloud

Page 51: Wstęp do UNet

Gra w wersji Internet

Powtarzamy kroki z wersji LAN...

Page 52: Wstęp do UNet

Gra w wersji Internet

… ale uruchamiamy inaczej

Page 53: Wstęp do UNet

Gra w wersji Internet

Page 54: Wstęp do UNet

Nie trzeba kodzic?

Page 55: Wstęp do UNet

SinglePlayer = MultiPlayer

[Command] void CmdDoFire(float lifeTime) { GameObject bullet = (GameObject)Instantiate( bulletPrefab, transform.position + transform.right, Quaternion.identity); var bullet2D = bullet.GetComponent<Rigidbody2D>(); bullet2D.velocity = transform.right * bulletSpeed; Destroy(bullet, lifeTime);

NetworkServer.Spawn(bullet); }

Page 56: Wstęp do UNet

SinglePlayer = MultiPlayer

[Command] void CmdDoFire(float lifeTime) { GameObject bullet = (GameObject)Instantiate( bulletPrefab, transform.position + transform.right, Quaternion.identity); var bullet2D = bullet.GetComponent<Rigidbody2D>(); bullet2D.velocity = transform.right * bulletSpeed; Destroy(bullet, lifeTime);

NetworkServer.Spawn(bullet); }

Page 57: Wstęp do UNet

Czy da sie zrobic MMO?

Page 58: Wstęp do UNet

Co dobrego?

Komponenty załatwiają za nas dużo rzeczyIntegracja z UnityBędzie rozwijało się wraz z silnikiemProste kodowanieMożna tworyć własne rozwiązania

Page 59: Wstęp do UNet

Wszystko ma swoje wady

Match Making oparty na Unity CloudBugiZależność

Mało literatury i tutoriali

Page 60: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 61: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 62: Wstęp do UNet

Rozwoj UNet

Host Migration (5.3.x) - KomponentServer Library (5.4) ?

Page 63: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 64: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 65: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 66: Wstęp do UNet

UNet vs Photon

DarmoweSerwer w chmurzeNa wszystkie platformyWystarczy jedna instancjaSerwer zna wygląd sceny

(optymalizacja)$0.49 / GB

DarmowyDedykowane serweryMiewa problemy z konsolamiOddzielna instancja serweraSerwer nie zna wyglądu

sceny$95 - 100 CCU

$95/m-ce - 500 CCU

Page 67: Wstęp do UNet

CCU = Concurrent User

1 CCU = 100 Monthly Active Players100 CCU * 20 Message/Player/Second * 200 Bytes = $120 /

$480Jak się liczy CCU?

Page 68: Wstęp do UNet

Jak to działa w praktyce?

Page 69: Wstęp do UNet

Literatura?

UNet Manual(http://docs.unity3d.com/Manual/UNetOverview.html)

Gamasutra(http://www.gamasutra.com/blogs/ChristianArellano/20150922/254218/UNET_Unity_5_Networking_Tutorial_Part_1_of_3__Introducing_the_HLAPI.php)

YouTube: Gamer To Game Developer(https://www.youtube.com/watch?v=sKZJRXMJL30&list=PLwyZdDTyvucyAeJ_rbu_fbiUtGOVY55BG)

mWin.pl ;)

Page 70: Wstęp do UNet

Pytania?

Poznań 2016

Page 71: Wstęp do UNet

Dzieki za [email protected] | fb/mwinblog |

www.mwin.pl

Poznań 2016