Questões sobre a dinamica Cliente-Server em MMOg/rpg em Java?

7 respostas
Michel.Montenegro

Falando sobre Desenvolvimento de jogos em Java, chegui na questão Cliente-Servidor:

Ambiente de exemplo: “No cliente o player ta lá batendo nos inimigos (Player ou npc), recebendo e dando dano (Sofrendo alteração na HP e Mana, entre outras coisas), enquanto outros players em volta correm, param, falam no chat, etc…;”

  1. Que tipo de informação deve ser tratada no cliente e o que dever ser mandada pro servidor?
    Ex1: Cliente calcula o dano faz as alterações visuais na HP/Mana … e só fica mandando pro servidor os valores atuais da hp, mana.
    Ex2 (Resumo): O cliente calcula tudo e só manda o resultado pro servidor propagar para os outros?

  2. É interessante trabalhar com Objetos Remotos? (Ex: RMI em Java ).
    Ex: O Cliente chama um metodo remoto como se fosse local para calcular algo no servidor.

2.1 Mas como isso pode ser usado de forma a ganhar performance no MMOG/MMORPG (Balanceamento de carga)?

  1. Os dados que são passados em modo texto costumam ser enviados como HTMLs?

  2. Como se trabalha o tipo de comunicação Cliente-Server?
    Ex: sei que UDP é o mais interessante, TPC pode gera um lag desnecessario devido o “handshake”. Mas nos caso em que se trabalha com RMI ou envio de textos simples, li que usam o HTTP muitas vezes, … como deve-se trabalha com isso (UDP, HTTP, …) de forma a não ter 999 protocolos em uso?

7 Respostas

T

Michel.Montenegro,
Vejo que não tem muita experiencia com comunicação de cliente-servidor.
Caso queria mesmo fazer um MMO comece pelo basico, faça um jogo da velha, Tetris e assim vai…
MMO é complexo, leva tempo e tem que possui um conhecimento no que ta fazendo…

Michel.Montenegro

Two_

Agradeço de verdade o conselho, mas veio atrasado, já estou estudando isso a muito tempo. Só pra deixar claro, ja fiz varios jogos locais como base: Pac Man, corrida, labirinto, tower defense (Feioso diga-se de passagem), e outros jogos simples. Legal ajudaram (Ponto!), comecei a avançar para outras coisas e percebi que fazer um jogo local tem muitas diferenças com um MMOG, que só podem ser respondidas iniciando um (Mesmo sendo basico).
Exemplo: Colisão em um jogo local, podes tratar usando a Fisica (phys2d) , Intersect entre poligonos, quadtree etc…, Mas se for aplicar fisica em um mmog, corres um serio risco na performance do sistema. Logo a forma como se trata colisões ai tem que ser algo mais otimizado e voltado para este ambiente.

Meu problema não é em criar o jogo ou modelar o jogo, meu problema agora esta no “cliente-servidor”, melhor forma de se trabalhar com isso (Ao menos a mais aconselhável). Acertaste no ponto que tenho pouca experiencia com cliente-server neste caso, e é nisso que quero ajuda, por isso fiz perguntas diretas, para não ter muito rodeio nas resposta.

Nota: Não desdenhando um MMOG, mas ele no final das contas ainda é um jogo, seja 2D ou 3D, e até agora não vi nada de sobrenatural ou fantastico nas literaturas que pesquisei, tudo que vi na verdade foram linhas de pensamento no que se refere a logica de trabalho para otimizar tudo o que for possivel, justamentepor ter seu trafegado na rede, mantendo uma estrutura interna limpa, organizada, coerente e evolutiva. Não fiz nenhuma pergunta do outro mundo, claro existem fatores que podem mudar a resposta, mas dei uma exemplo para ter noção do ambiente e resumidamente fiz a pergunta “Qual a melhor forma de se trabalhar com isto”.

soaresinfo

Só uma dica: o cliente pode calcular o dano pra efeito de desempenho, mas é o servidor que vai calcular e propagar, pra evitar cheats.

Michel.Montenegro

Isso foi um ponto bem levantado. Alguns mmog tem muito cheate (BOT, etc…), mas deixar tudo no lado servidor não deve ser a solução (Ou talvez seja). Mas é algo a se pensar também. Calcular odano 2x nã oseria uma solução boa mesmo por “desempenho”, deixar na mão do servidor ainda é o mais interessante.

Tenho uma impressão grande que trabalhar com RMI deve ser a melhor solução no caso em questão.

Eu falo de RMi baseado neste modelo de servidor MMORPG, feito em java e já existe a anos:

T

Jogo MMO a quase 10 anos, desde o lendario primeiro MMO de verdade o UO( Ultima online) passei por varios e inclusive ja ajudei alguns emuladores como o l2 e o runUO ( www.runuo.com) de todos o melhor emulador que já utilizei, olha que ja vi varios, é do runUO!
ele utiliza uma arquitetura muito bem feito desenvolvida em c# e com OO muito bem aplicado, possui muito poucos bugs.
Olhe o codigo fonte dele, talvez tu tenha uma ideia, ele utiliza um banco de dados parecido com o projeto do prevayler (procure na internet)
E pra tu ter uma ideia, faça o seu proprio modo de conexao, otimizado e talz.

T

Michel.Montenegro:
Isso foi um ponto bem levantado. Alguns mmog tem muito cheate (BOT, etc…), mas deixar tudo no lado servidor não deve ser a solução (Ou talvez seja). Mas é algo a se pensar também. Calcular odano 2x nã oseria uma solução boa mesmo por “desempenho”, deixar na mão do servidor ainda é o mais interessante.

Tenho uma impressão grande que trabalhar com RMI deve ser a melhor solução no caso em questão.

Eu falo de RMi baseado neste modelo de servidor MMORPG, feito em java e já existe a anos:

Caso esteja mesmo afim de desenvolver o projeto do MMO posso te ajudar mais, o projeto tem que ser open-source ^^

Michel.Montenegro

Mas ele esta sendo projetado para ser Open-Source, mas pretendo liberar quando tiver algo concreto. Até para dar credito ao projeto.
Ainda vou subir pro Source-Forge

Criado 13 de junho de 2011
Ultima resposta 14 de jun. de 2011
Respostas 7
Participantes 3