Quais idiomas são usados ​​para desenvolver MMORPGs como EVE Online e WOW? [fechadas]

22

Pelo que entendi, os MMORPGs são jogos que rodam no seu computador como qualquer outro videogame 3D normal, mas, a cada ação que ocorre no jogo, são feitas alterações no universo através de chamadas HTTP para o servidor. Portanto, o computador dos jogadores faz todo o trabalho pesado em termos de renderização dos gráficos e animações, mas os frameworks da Web fazem a comunicação online.

  • Então, eu estou querendo saber quais estruturas da Web, servidores da Web e bancos de dados estão sendo usados ​​para criar MMORPGs como EVE Online e WOW?

  • Além disso, quais linguagens de programação e mecanismos de jogos em 3D estão sendo usados ​​para tornar o lado do cliente (gráficos / animação em 3D / sons) parte do jogo?

Vaillancourt
fonte
Eu acho que praticamente todo MMO começa com tecnologias prontas para uso e, em seguida, personaliza-o muito quando crescem até um determinado tamanho e começam a realmente se especializar em suas ferramentas. A E / S sem pilha no EVE Online é um exemplo fantástico: eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum
Você quer dizer chamadas TCP para o servidor? O HTTP (HyperText Transfer Protocol) é usado pelos servidores e navegadores da Web e não tem nada a ver com os MMOs, a menos que você queira dizer um jogo baseado em navegador como o urbandead.
Stonemetal 27/10/10
Michael Stum, A E / S sem pilha é feita com o Python sem pilha?
@ Adam não faz ideia se esses dois estão relacionados ou não.
Michael Stum
@

Respostas:

30

A maioria das empresas usa C ++. Eve é uma exceção, o mecanismo gráfico principal está em C ++, enquanto a lógica do jogo está, como outros observaram, em Python. O CCP também faz muitas contribuições para o próprio Stackless, que está em C na maior parte. WoW é C ++ para o próprio jogo, embora a interface do usuário esteja em script em Lua. Cryptic (Champions Online, Star Trek Online) usa C simples, mas é um tanto raro na indústria. O Java aparece de vez em quando, ex. Runescape, mas não consigo pensar em nada AAA. A Disney usou o Panda3D (um mecanismo baseado em Python escrito em C) para vários MMOs, mas, como acontece com Eve, isso é incomum.

No geral, parece C ++ para a lógica e o mecanismo do jogo, com Lua para script de cliente é o mais próximo que você encontrará de um padrão.

Quanto ao lado da web, está tudo acabado. Nós (Cryptic) usamos uma mistura de PHP, C e Python (Django) para vários bits. O CCP usa ASP para o próprio site e Python para alimentar o back-end (embora vagarosamente juntos). WAR e LOTRO usam o PHP em seu site, embora não esteja claro quais estruturas específicas eles estão usando (se houver).

Você mencionou que os MMOs funcionam através de chamadas da API da web, o que não é o caso. Um protocolo baseado em HTTP seria muito ineficiente e o HTTP não foi projetado para conexões de longa execução. Praticamente todos os MMOs (que não são baseados na Web como Kingdom of Loathing ou Urban Dead) usam servidores e protocolos personalizados. Os clientes são altamente stateful, fazer algo como abrir uma interface do usuário de inventário não acionará uma solicitação ao servidor, pois todas essas informações são armazenadas em cache no cliente.

coderanger
fonte
coderanger; portanto, quando você diz 'os clientes são altamente stateful', você quer dizer que o aplicativo cliente está armazenando todos os dados lá e nem sempre enviando solicitações ao servidor? Além disso, como aprender sobre o desenvolvimento de servidores e protocolos personalizados?
2
Sim, para reduzir o tráfego de rede, o cliente armazena muitas informações em cache localmente (ao contrário de um jogo na web em que geralmente tudo vem diretamente do servidor). O servidor ainda é autoritário, para evitar trapaças. Quanto a aprender sobre como desenvolver esse tipo de coisa. Eu procuraria um livro sobre "programação de rede". Há uma série de ferramentas lá fora, que podem ajudar, porém, Torcido, Protocol Buffers, etc etc. Muita depende do que linguagem e estruturas você está em mais confortável.
coderanger
3
Panda3d é programada em C ++, não C.
jokoon
5

Alguns links para o EVE Online:

Basicamente, o EVE Online é executado no SQL Server 2005 e em algum outro software da Microsoft. No entanto, o backbone do cliente é principalmente escrito em Python (Python sem pilha para ser exato, pelo que me lembro) e provavelmente C ++.

Quanto ao World of Warcraft, eu sei que eles usam Lua para todas as coisas da GUI do cliente, mas, além disso, não acho que eles usem Lua para mais nada. C ++ é provavelmente o que é usado. Uau, eu acho que também usa algumas caixas do Windows, mas parece provável que eles tenham outros tipos de caixas específicos para determinadas tarefas que podem não ser baseadas no Windows.

Não há muitas informações, mas espero que ajude.

Muitos desses jogos separam servidores com base na funcionalidade, portanto, eles teriam um servidor de banco de dados que é responsável apenas pelo armazenamento de objetos / o que quer que seja e os servidores que realmente executam o mundo do jogo (validar ações do jogador etc.).

Dalin Seivewright
fonte
3

Não tenho muita certeza sobre o EVE e o WoW, mas vi jogos MMO usar C ++, C #, Java e até PHP para servidor (o último apenas para jogos simples baseados no navegador).

O cliente geralmente é escrito em C ++ (ou Flash, se for um jogo baseado em navegador); Já trabalhei com um cliente baseado em .NET uma vez (C # misturado com C ++ / CLI).

E quase sempre algum tipo de linguagem de script dinâmica é usada para facilitar o desenvolvimento de conteúdo de "designer" - por exemplo, habilidades, missões, etc. - coisas que mudam frequentemente e podem ser alteradas por designers de jogos, em vez de programadores.

deixa pra lá
fonte
3

Primeiro, os MMORPGs ou qualquer jogo online não usam HTTP ou "estruturas da web" em primeiro lugar.

Um servidor é programado como o próprio jogo, em C ++, e a comunicação é alcançada usando soquetes para transmitir pacotes pela rede.

Os servidores geralmente executam outro sistema operacional e incluem apenas o código do jogo, para que muitos jogadores possam jogar em um único servidor sem problemas.

Não sei como a nevasca gerencia seus servidores, não sei se eles usam clusters ou não.

É claro que quando digo "soquetes" e "C ++", estou falando sobre o jogo em tempo real, não sobre outros serviços que o jogo possa oferecer, como o arsenal do WoW, por exemplo. Eles podem usar apenas um banco de dados que pode ser lido de vários serviços, como o fórum, o arsenal, o jogo, a administração da conta etc., mas acho que eles têm bancos de dados dependentes, que buscam novas entradas etc. bem.

Eu acho que o cara encarregado da parte da rede do WoW pode ser um fodão.

jokoon
fonte
3
"Eu acho que o cara encarregado da parte da rede do WoW pode ser realmente muito durão." Populações de servidores pequenos e movimentação do lado do cliente realmente não causam problemas, na minha opinião. Embora retrospectiva também seja 20/20.
0

Existem dezenas de mecanismos de jogos por aí. Os dois que surgem na minha mente são o Unreal engine e o Source.

Quanto aos idiomas, isso depende da tarefa. A renderização e outras partes críticas de desempenho geralmente são feitas em um dos idiomas nativos. C ++ por exemplo. Mas é comum usar alguma linguagem dinâmica para definir scripts, porque é mais provável que esse código mude e geralmente seja escrito por programadores menos 'hardcore' :-) Lua, Python, Ruby - todos eles podem ser usados ​​aqui.

Sergio Tulentsev
fonte
0

O WoW também usa Lua para todos os scripts internos. Não tenho certeza se eles modificaram o idioma em si, mas não duvido que ele atenda às necessidades deles. Você pode apostar que eles têm ferramentas diferentes que facilitam a modificação / ajuste de scripts por seus designers. Esta é uma informação privilegiada de amigos meus que são / costumavam ser desenvolvedores de WoW.

Kyle C
fonte
quando alguém modifica uma linguagem como Lua, você quer dizer que eles estão criando sua própria estrutura pessoal baseada em Lua. Corrigir? Em caso afirmativo, isso diminui o desempenho / velocidade dos programas desenvolvidos?
@ J3M7OR3 - Entendo que eles criaram sua própria estrutura interna baseada em Lua, mas eu não poderia dizer sobre desempenho / velocidade.
Kyle C