Pergunta

Como são jogos Massively Multiplayer Online RPG construída?

  • O que a infra-estrutura do servidor são eles construíram em? especialmente com tantos clientes conectado e se comunicar em tempo real.

  • Será que eles gerenciar com scripts que executam sobre os pedidos de página? ou serviços instalados que são executados em segundo plano e gerenciar a comunicação com os clientes conectados?

  • Será que eles usam outros protocolos? porque HTTP não permite servidores para enviar dados aos clientes.

  • Como fazer o trabalho "motores", para processar centralmente centenas de conflito eventos de jogo?

Obrigado pelo seu tempo.

Foi útil?

Solução

O servidor de infra-estrutura são eles construíram em? especialmente com tantos clientes conectado e se comunicar em tempo real.

Eu acho que os servidores será executado em Linux, BSD ou Solaris quase 99% do tempo.

Será que eles gerenciar com scripts que executam sobre os pedidos de página? ou serviços que são executados em segundo plano e gerenciar a comunicação com clientes conectados?

instalado

O servidor seus cliente fala a vontade de ser um servidor que execute um daemons ou serviço que senta escuta ociosa para conexões. Para instâncias (dungeons), geralmente um novo processo é iniciado para cada grupo, o que significaria há um algum lugar serviço de despachante mananging este (análogo a um pool de threads)

Será que eles usam outros protocolos? porque HTTP não permite servidores para enviar dados aos clientes.

UDP é o protocolo usado. É rápido, uma vez que não garante o pacote será recebido. Você não se importa se um pouco de latência faz com que o cliente a perder a sua posição mundial.

Como fazer o trabalho "motores", para processar centralmente centenas de conflito eventos de jogo?

A maioria dos MMOs têm zonas que limitam a um certo número de pessoas. Para aqueles que têm 100s de pessoas em uma área, geralmente há alta latência. O servidor é ter que lidar com 100s de feitiços sendo enviado o seu caminho, o que ele deve calcular os montantes de dano para cada um. Para os cinco grandes MMOs imagino há equipes de 10-20, desenvolvedores muito inteligentes matematicamente talentosos trabalhando neste dia e não há um MMO lá fora, que tem à direita ainda, mais pausa depois de 100 jogadores.

-

Tenha um olhar para Wowemu (não há nenhum site oficial e I don 't quer link para um site desonesto). Isto é baseado na ApireCore que é um simulador de MMO, ou basicamente uma engenharia reversa do protocolo wow . Isto é o que os servidores de WoW privadas fugir. Pelo que me lembro Wowemu é

  • mySQL
  • Python

No entanto ApireCore é C ++.

O backend para Wowemu é incrivelmente simples (eu tentei em 2005 no entanto) e, provavelmente, uma simplificação mais completa do esquema de banco de dados. Ele lhe dá uma boa idéia do que está envolvido.

Outras dicas

Muitos caminhos levam a Roma, e muitas arquiteturas levar à MMORPG.

Aqui estão algumas reflexões gerais para seus pontos de bala:

  • A infra-estrutura servidor precisa para apoiar a capacidade de escalar para fora ... adicionar servidores à medida que a carga aumenta. Isto é bem adequada para Cloud Computing pelo caminho. Atualmente estou correndo um grande serviços financeiros aplicativo que precise escalar cima e para baixo dependendo da hora do dia e época do ano. Usamos Amazon AWS para adicionar quase que instantaneamente e remover servidores virtuais.
  • MMORPG do que eu estou familiarizado com provavelmente não usar serviços da web para comunicação (uma vez que são apátridas), mas sim um programa do lado do servidor personalizado (por exemplo, um serviço que escuta TCP e / ou mensagens UDP).
  • Eles provavelmente usar um TCP personalizado e / ou protocolo baseado UDP (olhar em comunicação socket)
  • A maioria dos jogos são segmentadas em "mundos", limitando o número de jogadores que estão no mesmo universo virtual para o número de eventos de jogo que um servidor (provavelmente com muita CPU de e muita memória) pode razoavelmente processo. O mecanismo de processamento de eventos exato depende das exigências do designer de jogos, mas geralmente eu espero que os eventos recebidos vão para uma fila de prioridade (prioridade de tempo recebidos e / ou enviados tempo e, provavelmente, outros critérios ao longo das linhas de "como é que é ruim se ignorarmos este evento? ").

Este é um grande assunto geral. Eu sugiro que você verificar sobre a Amazon.com para livros que cobrem este tema.

Porque MMOs de modo geral exigem os recursos de uma empresa para desenvolver e implantar, em que ponto eles são valiosas da empresa IP, não há uma tonelada de informações disponíveis publicamente sobre implementações.

Uma coisa que é bastante certo é que desde que MMOs por e utilização em grande um cliente personalizado e 3D renderizador eles não usam HTTP porque eles não são navegadores web. jogos online vão ter os seus próprios protocolos construída em cima de TCP / IP ou UDP.

As simulações jogo-se serão construídas usando as mesmas técnicas como qualquer jogo 3D em rede, para que você possa olhar para os recursos para esse domínio do problema para saber mais.

Para o grande pai, World of Warcraft, podemos supor que seu banco de dados é o Oracle porque listas de trabalho da Blizzard freqüentemente citam a experiência Oracle como um requisito / plus. Eles usam Lua para scripting interface do usuário. C ++ e OpenGL (para Mac) e Direct3D (para PC) pode ser assumida como as linguagens de implementação para os clientes do jogo porque é isso que os jogos são feitos com.

Uma empresa que é legal sobre a discutir sua implementação é CCP, criadores de EVE Online. Eles publicaram uma série de apresentações e artigos sobre a infra-estrutura de Eva, e é um caso particularmente interessante porque eles usam Stackless Python para um monte de implementação de Eva.

http://www.disinterest.org/resource/PyCon2006-StacklessInEve.wmv http://us.pycon.org/2009/conference/schedule/event / 91 /

Houve também um artigo recente Game Developer revista sobre arquitetura de Eva:

https : //store.cmpgame.com/product/3359/Game-Developer-June%7B47%7DJuly-2009-Issue---Digital-Edition

O rádio podcast de Engenharia de Software teve um episódio com Jim Purbrick sobre Second Life que discute servidores, mundos, dimensionamento e outros internos MMORPG.

Tradicionalmente MMOs foram baseados em aplicativos de servidor C ++ em execução no Linux comunicar com um banco de dados para armazenamento de back-end e aplicativos cliente de gordura usando OpenGL ou DirectX.

Em muitos casos, o cliente eo servidor incorporar um mecanismo de script que permite comportamentos a serem definidas em uma linguagem de alto nível. EVE é notável na medida em que é principalmente implementado em Python e corre em cima de Stackless ao invés de ser principalmente C ++ com alguns scripts de alto nível.

Geralmente, o servidor fica em um loop de leitura pedidos de clientes conectados, processá-los para impor mecânica de jogo e, em seguida, o envio de atualizações para os clientes. UDP pode ser usado para minimizar a latência e a retransmissão de dados antigos, mas como RPGs geralmente não empregam contração jogabilidade TCP / IP é normalmente uma escolha melhor. Cometa ou BOSH pode ser usado para permitir as comunicações bidirecionais via HTTP para baseadas na web MMOs e tomadas web em breve será uma boa opção de lá.

Se eu estivesse construindo um novo MMO hoje eu provavelmente usar XMPP, BOSH e construir o cliente em JavaScript como que lhe permitiria trabalhar sem um download do cliente gordura e interoperar com XMPP baseado sistemas de voz (como Gchat) IM e . Uma vez WebGL é amplamente apoiada isso mesmo permitir navegador baseado mundos virtuais 3D.

Como os ambientes são muito grandes para simular em um único processo, eles são normalmente dividido geograficamente entre os processos de cada um dos quais simula uma pequena área do mundo. Muitas vezes, há uma população ideal para um mundo, então várias cópias (cacos) são executados que diferentes conjuntos de pessoas usam.

Há uma boa apresentação sobre a arquitetura Second Life por Ian Wilkes que era o Diretor de Operações aqui: http://www.infoq.com/presentations/Second-Life-Ian-Wilkes

A maioria das minhas palestras sobre tecnologia Second Life estão ligados a do meu blog em: http://jimpurbrick.com

Dê uma olhada Erlang . É um sistema de linguagem de programação e runtime simultâneo, e foi projetado para suportar distribuída, tolerante a falhas, em real-time macio, aplicações non-stop.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top