Vamos começar esta Aula com uma má notícia:
Eu não farei aulas básicas de GM. Posso indicar aulas e fóruns, mas não estarei ensinando o básico.
Na Aula anterior eu falei sobre
Listeners e Clients, Objetos que são a base de todo Game On-line.
O GM por padrão possui uma Engine de Comunicação TCP, porém não iremos usá-la, por ser muito básica, pesada demais e não funcionar
“Behind Router”. Todos os termos desconhecidos serão explicados no decorrer do curso.
Usaremos como base para nossos testes e exemplos de comunicação TCP a
SOC – Simple Online Communication. De todas as Dlls de comunicação TPC ela é a mais simples de usar, a mais rápida em comunicação e o principal, funciona tanto UDP (intranet) quanto TCP Behind Router.
A primeira coisa a fazer é baixar os scripts Fonte, a dll e o Directserver, http://www.4shared.com/file/79349893/8663ee10/licao2.html.
Ao terminar o Download, crie um novo projeto no GM. Crie uma pasta para ele, e chame-o de
Client. Dentro da pasta onde salvou o projeto, coloque a
soc.dll.Volte ao projeto. Clique no menu
Scripts -> Import Scripts como mostra a figura abaixo:
Selecione o arquivo
socAll.gmlAo finalizar, seu diretório de scripts estará assim:
Usaremos este primeiro teste como exemplo para todas as próximas lições então, lembre-se, os passos acima são os iniciais
SEMPRE que começar um novo projeto On-line no GM.
Para efetuarmos um primeiro teste, não criaremos o Listener.
Usaremos o
Directserver, um Listener Básico que vem com o soc.dll para testes de comunicação.
A primeira coisa a fazer é iniciar o Directserver. Ao iniciá-lo, ele pergunta qual porta ele deve “escutar”.
Digite
8040 e pressione Enter.Ele perguntará se ele deve mostrar as mensagens recebidas, aperte
Y e pressione
Enter.
Ao fazer isso a primeira vez, o
Firewall do Windows pedirá permissão para desbloquear a porta para o aplicativo. Desbloqueie. Observe a figura abaixo:
Pronto. Qualquer comunicação TCP que chegar à porta 8040 agora será “escutada” pelo Directserver.
Vamos fazer um teste??
Crie um Objeto, Chame-o de objStart. Adicione um Evento Create, e nele um Execute a Piece of Code. Neste Execute, adicione as seguintes linhas:
Código:
//Iniciando o Socket
soc_init();
//Conectando ao servidor
if (!player_connect(8040, "localhost")) {
show_message("Falha ao Conectar no servidor.")
soc_free();
game_end();
}
Mas o que fizemos aqui??Antes de mais nada iniciamos a dll. Na verificação abaixo, aguardamos um retorno verdadeiro da função de conexão, onde passamos como parâmetro a porta selecionada no directserver e o nome LocalHost. Se você já fez algum jogo Online, sabe que LocalHost significa sua máquina Local, ou seja, não há necessidade de se colocar um IP.
Agora sim. Crie uma room, coloque o objStart nela e execute o jogo. Se foi tudo feito como foi falado aqui, seu DirectServer deve mostrar a seguinte mensagem:
Observe que ele está mostrando o IP como
127.0.0.1. Este é o IP interno padrão de todo computador, Podemos usar tanto ele, quanto LocalHost quanto o nome da máquina.
Ao fechar o jogo, o DirectServer mostrará a seguinte mensagem:
Bom. De ínício, vimos que não é tão
“complexo” iniciar a Dll e os scripts do SOC.
Não criamos o servidor pois usamos um padrão e, de cara, não fizemos nada além de ver o servidor dizer que estávamos conectados(e como Player 2 ainda... Mas onde está o Player 1??) mas demos um grande passo.
Eu configurei os scripts para facilitar a sua vida inicialmente, o script padrão que vem é bem mais complexo, usando a dll fora da pasta do jogo, usando constantes e outras chatices.
Bem, começamos... Vamos tentar não parar no meio do caminho agora.
Na próxima lição, vamos construir um Client de chat Simples, ainda usando o DirectServer como Servidor.
Até lá.
Todos os Créditos para João Neto