Usuari/a: -- Sortir --

Creació de joc Multiplayer

1ªPart: Preparació del projecte

Creem un projecte 3D amb qualsevol nom.

Preparem el projecte per que sigui multiplayer, per això un cop dins l’editor de Unity anem a Window > General > Services i donarem al Multiplayer Services. Un cop carregat especificarem quants jugadors podem tenir al servidor i per això hem d’acceptar l’EULA. Per tant donarem clic i ens portarà a una web.

Un cop acceptat l’EULA ens demana posar el nombre de jugadors, el posem i donem Save.

Fet això tenim el projecte llest per començar.

Creem un GameObject (Empty).

Li canviarem el nom a Network Manager i li afegirem els components: NetworkManager i NetworkManagerHUD.

Crearem un prefab el qual representarà el nostre jugador i tots els altres conectats. L'anomenarem Player Prefab.

Si no tenim cap personatge creat, hem de crear un i portar-lo a aquest prefab. Per això crearé un nou cilindre i l'arrossegaré amb el ratolí fins al prefab creat (li canvio el nom del cilindre per Player.

Afegim els components NetworkIdentity i NetworkTransform al Player Prefab. El NetworkTransform sincronitza el moviment del GameObject del jugador, per tant, si estàs fent un joc en el qual els jugadors no es mouen, pots prescindir d’aquest.

Anem al NetworkManager, a la part de l’inspector anem on posa Network Manager (Script) i allà despleguem l’opció Spawn Info. Un cop desplegat, on posa Player Prefab arrossegarem el nostre Player Prefab creat anteriorment.

Compilem el projecte i l’obrirem. (Podem clicar Build and Run Control + B)

Un cop obert el joc, donarem a Enable Match Maker.

Posarem nom a la nostra sala i li donarem a Create Internet Match.

Fet això només cal obrir un altre joc i donar-li a Enable Match Maker (M), Find Internet Match i connectar-nos a la sala amb el nostre nom.

Ara que ja ens podem connectar, podem configurar el nostre joc per jugar-hi.

2ªpart: Donar jugabililtat als personatges

Crearem l’script de Player controller, afegirem el següent codi i el importarem al Player Prefab.

Per saber on mira el personatge, li farem uns ulls i una pistola, per això anirem al prefab i el tornarem a pujar a la escena. Un cop allà crearem dins del player un nou objecte 3D Cube i li direm Visor. Escala de 0.95, 0.25, 0.5. Posició 0, 0.5, 0.24. Per donar-li color creem un material amb qualsevol color i l’assignem al Visor.

Crearem el arma al jugador, per això: dins de Player igual creem un cilindre amb posició 0.5, 0, 0.5. Rotació 90, 0, 0. Escala 0.25, 0.5, 0.25. Eliminem el Collider d’aquesta i li posarem el nom de Gun. Per últim el color també el podem modificar, jo utilitzaré un nou material negre.

Fet tot això, eliminarem l’antic prefab i arrastrem el nou a la carpeta del projecte per actualitzar-lo. Ja podem tornar a eliminar el Player a jerarquia.

Ara que tenim arma, farem que dispari. Per començar necessitem la textura d’una bala. Per tant, crearem un nou objecte anomenat Bullet, tipus 3d sphere. Donarem a Reset Position. Posarem una escala de 0.2, 0.2, 0.2. Li afegirem un RigidBody. Un cop fet això el portarem a la carpeta del projecte per crear un prefab i eliminarem el de jerarquia. Per últim, amb el Script PlayerController, afegirem aquest a Bullet Prefab.

Si no volem que hi hagi gravetat per la bala, l’hem de desactivar al seu rigidbody:

Ara definirem d’on surt la bala, per això tornarem a modificar el Player Prefab. Crearem dins seu un Empty, li direm Bullet Spawn i posarem de posició 0.5,0,1. Fet això, actualitzem el Player Prefab i eliminem el Player de jerarquia.

Ara només cal anar al script de PlayerController i assignar el BulletSpawn i fer-ho també al Player Prefab:

Crearem l’script de Bullet amb el següent codi:

També crearem l’script Health amb el següent codi:

Un cop afegit l’script Health, toca posar-lo en funcionament, per això anirem al Player Prefab i li assignarem aquest script:

Ara crearem la seva vida al joc, per veure-la. A la jerarquia crearem UI-Image, posarem nom Background, el canvas el renombrarem per Healthbar Canvas, a Background li donarem a Reset Position de Image, posarem de mida, 200 x 10, Image source posarem a InputFieldBackground, posarem un color vermell i desde la propia jerarquia, duplicarem Background i el renombrarem el duplicat a Foreground.

Fet això canviem el color de Foreground a verd, l’anclem al crentre-esquerra utilitzant shift, canviem el Width a 200 i posem el Foreground con a Child de Background.

Seleccionem el Healthbar Canvas i posem Canvas -> render mode -> world space. Pugem el prefab player a jerarquia i posarem el Healthbar Canvas com a child de player. Ferm Reset Position de Healthbar canvas i posem escala 0.01, 0.01, 0.01 i posició 0, 1.5, 0. Anirem al Player i actualitzarem el Prefab.

Posem l’script Health que te Player a Healthbar-> Foreground.

Fet tot això, actualitzem el prefab i eliminem el Player de jerarquia.

Crearem l’script Billdboard amb el següent codi:

Fet això anirem a Healthbar Canvas i afegirem com a component l’script de Billboard.

Fet tot això amb el joc funcional, anem a crear enemics. Per això farem un nou Empty, amb nom Enemy Spawner, li farem reset position, li afegirem el component Network Identity, un cop seleccionat aquest li donarem a Server Only i podrem començar a crear l’scirpt EnemySpawner.

Emplenem l’script EnemySpawner amb el següent codi i l’afegirem al Enemy Spawner com a component d’aquest:

Disseny dels enemics. Per això, copiem el Player i li posarem nom Enemy al copiat. Fet això eliminarem els childs Gun i Bullet. També eliminarem l’script PlayerController. I podem personalitzar els materials o colors del enemic per diferenciar-lo amb un player.

Ara farem un Cube com a Child d’ Enemy i l’anomenarem Mohank. Li posarem de posició 0, 0.55, -0.15. De escala 0.2, 1, 1. Eliminarem el Box Collider i guardarem el prefab. (Ja podem esborrar de jerarquia el enemy).

Ara al Network Manager, afegirem Registered Spawnable Prefabs i posarem la prefab del Enemy.

Ara al Enemy Spawner assignarem el prefab del enemic al apartat del script del EnemySpawner. Posem el número d’enemics que volem que apareguin, per exemple 4 i a Main Camera (dins l’inspector) posarem posició 0, 0, -15.

Per acabar cal posar que els enemics donin respawn. Per això primer han de morir, anem al Enemy Prefab, a la part de l’script Health i donem a Destroy On Death.

Ara li donarem dos punts de respawn diferents als enemics, per això crearem un Empty anomenat Spawn Position 1, donarem el component de Network Start Position, posarem de posició 3, 0, 0. Duplicarem el Spawn Position 1 i renombrar aquest a Spawn Position 2 i la posició d’aquest la canviarem a –3, 0, 0.

Per acabar al Network Manager, a Spawn Info, apartat de Player Spawn Method posarem el Round Robin i ja estarà llest.