Programando seu jogo
para rodar em rede
Kelvin Oliveira
V 1.0
• Primeiro, baixe o código em que me baseei
para criar a struct Rede
• Lembrando que são dois códigos-fonte: um
faz o pape...
• Teste esses códigos no seu computador e
procure compreende-los
• Com eles você pode fazer seu jogo funcionar
em rede
• A...
Funções da
struct Rede
bool WinSockInit();
void EncerraWinSock();
void FlagsInit();
bool ServerInit(int portaServidor);
bo...
Vamos começar pelo inicio e pelo fim da
utilização da biblioteca
Primeiro passo:
 Utilize a função WinSockInit() no inicio da função
main() do seu jogo
Último passo:
 Utilize a função E...
ANTES DE INICIALIZAR O SERVIDOR E O
CLIENTE
Segundo passo:
 Utilize a função FlagsInit() para inicializar as flags
com um valor conhecido e padrão (false)
Terceiro Passo – Inicializando os
componentes da rede
Esta inicialização dependerá da opção selecionada pelo
jogador: ou c...
Terceiro Passo – Inicialização do
servidor
A inicialização do servidor é feita com a função ServerInit que recebe
um parâm...
Terceiro Passo – Inicialização do
cliente
A inicialização do cliente é feita com a função ClienteInit que recebe
dois parâ...
Quarto passo – Conexão entre
cliente e servidor
 Assim como no passo 3, cliente e servidor precisam fazer
ações para que ...
Quarto passo – Servidor espera
a conexão do cliente
 O servidor precisa ficar esperando uma conexão do cliente
 Ele vai ...
Quarto passo– Cliente conecta-se
ao servidor
 Se o servidor está esperando a conexão do cliente, então
o cliente pode se ...
Quinto Passo – Envie os Pacotes
- Cliente e servidor estão conectados. Portanto,você pode
enviar dados do jogo. Para isso....
Quinto Passo – Envie os Pacotes
– Se o elemento da rede for servidor, então utilize a
função EnviaParaOClient() que recebe...
Sexto passo – Receba os pacotes
– Utilize as funções RecebeDoCliente ou RecebeDoServer
para receber os pacotes. Quando ret...
Sexto passo – Receba os pacotes
– Assim como o servidor não faz nada a não ser esperar
Pela conexão do cliente, o recebime...
Por enquanto é só isso.
Até a próxima versão do tutorial o/
Próximos SlideShares
Carregando em…5
×

Programando seu jogo para rodar em rede

206 visualizações

Publicada em

LEIA A DESCRIÇÃO

Código que me baseei para fazer a struct:

CLIENTE https://github.com/70838697/winSocketSample/blob/master/TCPEchoClient/TCPEchoClient.cpp

SERVIDOR
https://github.com/70838697/winSocketSample/blob/master/TCPSingleThreadedEchoServer/TCPSingleThreadedEchoServer.cpp

Struct utilizada para o projeto: https://github.com/kelvingamedev/struct-para-rede-tcp

Este vídeo aborda o uso de uma solução - um arquivo header que contém uma struct - para conectar partidas em jogos desenvolvidos em C/ C++. A biblioteca em questão é bem básica, mas cumpre seu trabalho de conectar as partidas dos jogadores.

Exemplo de jogo que utilizou a biblioteca: https://kelvingamedev.itch.io/coldww2

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
206
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programando seu jogo para rodar em rede

  1. 1. Programando seu jogo para rodar em rede Kelvin Oliveira V 1.0
  2. 2. • Primeiro, baixe o código em que me baseei para criar a struct Rede • Lembrando que são dois códigos-fonte: um faz o papel de cliente e o outro, de servidor • LINKS: CLIENTE | SERVIDOR
  3. 3. • Teste esses códigos no seu computador e procure compreende-los • Com eles você pode fazer seu jogo funcionar em rede • Agora, vou ensinar a usar struct que criei para modularizar o código do autor
  4. 4. Funções da struct Rede bool WinSockInit(); void EncerraWinSock(); void FlagsInit(); bool ServerInit(int portaServidor); bool ClientInit(char *ipServidor,int portaServidor); bool RecebeDoClient(); bool EnviaParaOClient(char pacote[PACKET_MAX_SIZE]); bool EnviaParaOServer(char pacote[PACKET_MAX_SIZE]); bool RecebeDoServer(); bool AceitaConexaoClient(); bool ConectaServer(); bool FechaConexaoClient(); void FechaSocketClient(); void FechaSocketServer();
  5. 5. Vamos começar pelo inicio e pelo fim da utilização da biblioteca
  6. 6. Primeiro passo:  Utilize a função WinSockInit() no inicio da função main() do seu jogo Último passo:  Utilize a função EncerraWinSock() no final da função main() e antes do “return 0;”
  7. 7. ANTES DE INICIALIZAR O SERVIDOR E O CLIENTE
  8. 8. Segundo passo:  Utilize a função FlagsInit() para inicializar as flags com um valor conhecido e padrão (false)
  9. 9. Terceiro Passo – Inicializando os componentes da rede Esta inicialização dependerá da opção selecionada pelo jogador: ou cliente ou servidor...
  10. 10. Terceiro Passo – Inicialização do servidor A inicialização do servidor é feita com a função ServerInit que recebe um parâmetro: • A porta onde o servidor estará disponível (int) • Ex: ServerInit(20131);
  11. 11. Terceiro Passo – Inicialização do cliente A inicialização do cliente é feita com a função ClienteInit que recebe dois parâmetros: • O IP do servidor • A porta onde o servidor estará disponível (int) • Ex: ClientInit(“127.0.0.1”,20131);
  12. 12. Quarto passo – Conexão entre cliente e servidor  Assim como no passo 3, cliente e servidor precisam fazer ações para que tudo ocorra corretamente.  Mas, agora as coisas são sequenciais. Primeiro, o servidor abre um socket de conexão e depois o cliente conecta-se ao socket.
  13. 13. Quarto passo – Servidor espera a conexão do cliente  O servidor precisa ficar esperando uma conexão do cliente  Ele vai fazer absolutamente nada a não ser esperar pela conexão (tenha isso em mente)  Isso pode ser feito com a função AceitaConexaoClient() que retorna true quando o cliente se conectar ao socket
  14. 14. Quarto passo– Cliente conecta-se ao servidor  Se o servidor está esperando a conexão do cliente, então o cliente pode se conectar ao socket do servidor Utilize a função ConectaServer() para isso. Ele vai retornar true, caso a conexão ocorra.
  15. 15. Quinto Passo – Envie os Pacotes - Cliente e servidor estão conectados. Portanto,você pode enviar dados do jogo. Para isso... – Verifique o valor da variável clienteOuServidor que vai ser igual ou a “servidor” ou a “cliente” depedendo da função Init utilizada
  16. 16. Quinto Passo – Envie os Pacotes – Se o elemento da rede for servidor, então utilize a função EnviaParaOClient() que recebe uma mensagem (pacote) como parâmetro - Caso contrário, use EnviaParaOServer passando uma mensagem como parâmetro
  17. 17. Sexto passo – Receba os pacotes – Utilize as funções RecebeDoCliente ou RecebeDoServer para receber os pacotes. Quando retornar true, um novo pacote foi recebido - Para verificar o conteúdo do pacote utilize: [nome_da_variavel].pacote Ex: minhaRede.pacote
  18. 18. Sexto passo – Receba os pacotes – Assim como o servidor não faz nada a não ser esperar Pela conexão do cliente, o recebimento dos pacotes é prioridade total para o servidor e para o cliente - Eles só vão executar outras ações do jogo quando a função de receber pacotes retornar true (pacote chegou) ou false (erro de conexão entre os sockets)
  19. 19. Por enquanto é só isso. Até a próxima versão do tutorial o/

×