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?
Respostas:
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.
fonte
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.).
fonte
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.
fonte
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.
fonte
Para o EVE, eles deram uma palestra sobre o StacklessIO no PyCon 2009: http://us.pycon.org/2009/conference/schedule/event/91/
fonte
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.
fonte
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.
fonte