[TUTORIAL]Network basico (legacy)
3 participantes
Página 1 de 1
[TUTORIAL]Network basico (legacy)
Ola pessoal... sou novo aqui mas sou experiente em C#(basico) como eu não vi nenhum tutorial desse tipo eu decidi trazer um, embora seja um método antigo ainda funciona vamos para o tutorial
primeiro vamos criar um novo script C#, bote um nome que quiser
vamos declarar umas variáveis e criar umas voids
vamos fazer um método OnGUI para criar um botao de iniciar o server
com isso a parte do servido esta pronta...
Ficarar mais ou menos assim no jogo
Agora vamos fazer um novo script C#, com o nome que quiser
vamos declarar algumas variáveis e voids
vamos fazer ums botoes com a OnGUI para nos ajudar a entrar no server
podemos colocar o script de iniciar o server em um projeto e compilar para servi apenas como iniciador do server
e podemos colocar o script de conectar ao server no jogo para podemos entrar e conectar :D
*Em Construção*
embora os scripts tenham fechado no "}" ainda podemos aperfeiçoa-los
Editado no dia (20/12/2015) as [03:00] AM
Indice
- Criando um Servido
- Criando um Client
- Extras
Criando um Servido
vamos declarar umas variáveis e criar umas voids
- Código:
private const string typeName = "NomeDoJogo";
private const string gameName = "NomeDaSalaOuServer";
private const string gameComent = "ComentarioDoServer";
private Rect windowRect = new Rect (Screen.width - 200,0,200,135); //(posisao em X, posisao em Y, largura, altura)
private void StartServer()
{
Network.InitializeServer(50, 25000, !Network.HavePublicAddress());//(maximo de players, porta para conectar, se usa Nat)
MasterServer.RegisterHost(typeName, gameName, gameComent);
Network.sendRate = 100;//máximo updates por farme do player
MasterServer.updateRate = 100; //máximo de updates do server
}
vamos fazer um método OnGUI para criar um botao de iniciar o server
- Código:
void OnGUI()
{
windowRect = GUI.Window (1, windowRect, windowManager, "Painel de Controle");
}
void windowManager (int windowID)
{
windowID = 1;
if (!Network.isClient && !Network.isServer)
{
if (GUI.Button(new Rect(5, 25, 110, 30), "Ligar Server"))//(GUI.Button(new Rect(posisao X dentro do painel, posisao Y dentro do painel, largura, autura), "Ligar Server"))
StartServer();
}
}
com isso a parte do servido esta pronta...
Ficarar mais ou menos assim no jogo
Criando um Client
vamos declarar algumas variáveis e voids
- Código:
private HostData[] listaDeServers;
private const string typeName = "NomeDoJogoUtilizadoNoScriptAcima";
private Rect windowRect = new Rect (50, 50, 500, 350);//(posisao em X, posisao em Y, largura, altura)
void Awake ()
{
MasterServer.ClearHostList();
ProcurarServers();
}
private void ProcurarServers()
{
MasterServer.ClearHostList();
if(listaDeServers == null)
MasterServer.RequestHostList(typeName);
}
void OnMasterServerEvent(MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
listaDeServers= MasterServer.PollHostList();
}
private void EntrarNoServer(HostData hostData)
{
Network.Connect(hostData);
}
vamos fazer ums botoes com a OnGUI para nos ajudar a entrar no server
- Código:
void OnGUI()
{
windowRect = GUI.Window(0, windowRect, WindowFunction, "Serves Onlines");
}
void WindowFunction (int windowID)
{
windowID = 0;
if (GUI.Button(new Rect(5, 295, 100, 50), "Refresh Hosts"))
ProcurarServers();
if (listaDeServers != null)
{
for (int i = 0; i < listaDeServers.Length; i++)
{
if (GUI.Button(new Rect(240, 25 + (50 * i), 250, 70), listaDeServers[i].gameName + "\n" + listaDeServers[i].comment + "\n" + "Users Onlines:" + listaDeServers[i].connectedPlayers + " Max Users:" + listaDeServers[i].playerLimit))//(GUI.Button(new Rect(posisao em X, posisao em Y + (posisao em Y² * i), largura, altura), listaDeServers[i].gameName + "\n" + listaDeServers[i].comment + "\n" + "Users Onlines:" + listaDeServers[i].connectedPlayers + " Max Users:" + listaDeServers[i].playerLimit))
EntrarNoServer(listaDeServers[i]);
}
}
}
podemos colocar o script de iniciar o server em um projeto e compilar para servi apenas como iniciador do server
e podemos colocar o script de conectar ao server no jogo para podemos entrar e conectar :D
Extras!!
embora os scripts tenham fechado no "}" ainda podemos aperfeiçoa-los
Extras para o script servido
- Fazer Shutdown(Desligar) do server:
- embora quando você da Stop(na unity) ou feixa o jogo, o server e automaticamente fechado forçadamente...
mas podemos fechar manualmente quando quisermos, para isso vamos adicionar ao script do server uma nova void- Código:
private void FeixarServer()
{
if (!Network.isClient && Network.isServer)//apenas server pode executar a ação
{
Network.Disconnect(200);//damos um desconect seguro no player
MasterServer.UnregisterHost();//feixamos o server
}
}
- Código:
if(Network.isServer)
{
if (GUI.Button(new Rect(5, 60, 110, 30), "Shutdown Server"))
ShutdownServer();
}
Extras para o script client
- Botao de Desconectar:
- com esse script podemos deixar o player se desconectar do server apertando um botão
podemos atribuir os codigos a outro script como um de menu pause ou criar um script para essa função...
vamos utilizar a void OnGUI, o codigo- Código:
if (Network.isClient){
if (GUILayout.Button("Desconectar do servidor"))
if (Network.connections.Length == 1) {
Debug.Log("Disconnecting: " + Network.connections[0].ipAddress + ":" + Network.connections[0].port);
Network.CloseConnection(Network.connections[0], true);
} else
if (Network.connections.Length == 0)
Debug.Log("Não ha Conexão"); //aqui podes colocar algo para quando não esta conectado ao server... (nescesario retirar o if(network.isclient))
else
if (Network.connections.Length > 1)
Debug.Log("Excesso de conexões. Será que estar executando o servidor??");//aqui podes colocar algo para caso o hoster(você?) queira desconectar do jogo...
}
Editado no dia (20/12/2015) as [03:00] AM
Última edição por noocktall em Dom Dez 20, 2015 4:29 am, editado 1 vez(es)
Re: [TUTORIAL]Network basico (legacy)
Bom Tutorial , mas como eu colocaria o jogo para se adequar em multiplayer ??
Pqquim- Iniciante
- PONTOS : 3293
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL]Network basico (legacy)
depende do jogo... é aconselho usar o UNet da unity(5.1+) ou Photon, pois o método que eu postei ai e antigo demais alem que o master server que você hospedaria o jogo e da propiá unity deixa a desejar ficar sem leg
Última edição por noocktall em Ter Dez 15, 2015 11:26 am, editado 1 vez(es)
Re: [TUTORIAL]Network basico (legacy)
Esse sistema, 2 pessoas poderia jogar via servidor, hamachi? ou é só para o mesmo pc e outras linhas ligadas nele Ex: Lan house?
rafaelllsd- ProgramadorMaster
- PONTOS : 5244
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [TUTORIAL]Network basico (legacy)
nesse caso não precisa de hamachi pois você ta hospedando na propiá unity, e sim da para jogar de 2, 3 ou ate mais só talvez haja leg
Re: [TUTORIAL]Network basico (legacy)
Noock tem como me ajudar a colocar meu game on ? ficaria muito grato ^_^
Pqquim- Iniciante
- PONTOS : 3293
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL]Network basico (legacy)
sim, e só me manda um PM com seu skype para min ;DPqquim escreveu:Noock tem como me ajudar a colocar meu game on ? ficaria muito grato ^_^
Tópicos semelhantes
» [TUTORIAL] Sistema de dia e noite básico
» [TUTORIAL]Sistema Basico de Combustivel (PC e Android)
» [TUTORIAL] Entenda o Sistema De multiplayer local ! BASICO (Video Aula) pt/br
» [TUTORIAL] Unity 5 - Sistema básico de jogo estilo ANGRY BIRDS
» alguem sabe um sistema/ideia/tutorial de nicknames/indentificaçao para NETWORK local???
» [TUTORIAL]Sistema Basico de Combustivel (PC e Android)
» [TUTORIAL] Entenda o Sistema De multiplayer local ! BASICO (Video Aula) pt/br
» [TUTORIAL] Unity 5 - Sistema básico de jogo estilo ANGRY BIRDS
» alguem sabe um sistema/ideia/tutorial de nicknames/indentificaçao para NETWORK local???
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos