Wprowadzenie do UNetJak szybko zrobić grę Multiplayer?
Poznań 2016
Kim jestem?
WebDeveloper
Game Designer
GameDev Bloger
Gdzie moje ryby?
Rodzaje Multiplayera?
Rodzaje Multiplayera?
Rodzaje Multiplayera?
Rodzaje Multiplayera?
Co te pakiety?
Via Internet
CLIENTS
INTERNET
SERVER
Co te pakiety?
Via Internet
Via LAN
CLIENTS
INTERNET
SERVER
CLIENT/SERVER
ROUTER/SWITCH
CLIENT/SERVER
CLIENT/SERVER
Co te pakiety?
Match Making
Via LAN
CLIENTS
INTERNET
SERVER/HOST
CLIENT/SERVER
ROUTER/SWITCH
CLIENT/SERVER
CLIENT/SERVER
Server vs Host
Czym jest UNet?
UNet = Unity Networking
Co dostarcza UNet?
HLAPI
Integracja z edytorem i silnikiem
Serwisy internetowe
Warstwa transportowa
HLAPI - High Level API: Komponenty
HLAPI - High Level API: Komponenty
HLAPI - High Level API: Komponenty
HLAPI - High Level API: Komponenty
Auto Spawn
HLAPI - High Level API: Komponenty
Auto Spawn
Auto Visibility
HLAPI - High Level API: Komponenty
Auto Spawn
Auto Visibility
Scene Managment
HLAPI - High Level API: Komponenty
Auto Spawn
Auto Visibility
HLAPI - High Level API: Synchronizacja
HLAPI - High Level API: Synchronizacja
HLAPI - High Level API: Synchronizacja
HLAPI - High Level API: Funkcje i Atrybuty
HLAPI - High Level API: Funkcje i Atrybuty
HLAPI - High Level API: Funkcje i Atrybuty
HLAPI - High Level API: Funkcje i Atrybuty
HLAPI - High Level API
Komponenty <= HLAPI
Co dostarcza UNet?
HLAPI
Integracja z edytorem i silnikiem
Serwisy internetowe
Warstwa transportowa
Integracja z edytorem i silnikiem
Komponenety
NetworkBehaviour
Synchronizacja
NetworkIdentity
Co dostarcza UNet?
HLAPI
Integracja z edytorem i silnikiem
Serwisy internetowe
Warstwa transportowa
Serwisy Internetowehttps://developer.cloud.unity3d.com
Co dostarcza UNet?
HLAPI
Integracja z edytorem i silnikiem
Serwisy internetowe
Warstwa transportowa
Warstwa Transportowa
Warstwa Transportowa
Warstwa Transportowa
UDP / WebSockets
StartServer(matchResponse.address, matchResponse.port, matchResponse.networkId, matchResponse.nodeId);
Gra w wersji LAN
Gra w wersji LAN
Tworzymy NetworkManger
Gra w wersji LAN
Tworzymy NetworkManger
Gra w wersji LAN
Tworzymy Network Manger
Gra w wersji LAN
Przygotowujemy Prefab Gracza
Gra w wersji LAN
Przygotowujemy Prefab Gracza
Gra w wersji LAN
Przygotowujemy Prefab Gracza
Gra w wersji LAN
Przygotowujemy Prefab Gracza
Gra w wersji LAN
Ustawiamy spawn gracza
Gra w wersji LAN
Ustawiamy spawn gracza
Gra w wersji LAN
Uruchamiamy!
Gra w wersji LAN
Gra w wersji Internet
Tworzymy projekt w Unity Cloudhttps://developer.cloud.unity3d.com
Gra w wersji Internet
Przypisujemy projekt do projektu z Unity Cloud
Gra w wersji Internet
Powtarzamy kroki z wersji LAN...
Gra w wersji Internet
… ale uruchamiamy inaczej
Gra w wersji Internet
Nie trzeba kodzic?
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); }
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); }
Czy da sie zrobic MMO?
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
Wszystko ma swoje wady
Match Making oparty na Unity CloudBugiZależność
Mało literatury i tutoriali
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
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
Rozwoj UNet
Host Migration (5.3.x) - KomponentServer Library (5.4) ?
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
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
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
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
CCU = Concurrent User
1 CCU = 100 Monthly Active Players100 CCU * 20 Message/Player/Second * 200 Bytes = $120 /
$480Jak się liczy CCU?
Jak to działa w praktyce?
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 ;)
Pytania?
Poznań 2016