Sugestão de linguagem para mmo? java x c# x Flex

Alo galera, antes de tudo, sou novo aqui e sou programador. Estou querendo dar continuidade em um mmo( simples, plataforma estilo castlevania) que desenvolvi um tempo atras, mas pretendo começar no zero novamente

E antes de começar gostaria da sugestão de vocês para a linguagem.

Gostaria que esse game pudesse ser acessado por grande parte das pessoas, e ao mesmo tempo que a linguagem desse conta de trabalhar com socket(tcp/ip) e os gráfico( nada de extravagante ) se travar ou apresentar problemas.

oque vocês sugerem ?

Obrigado desde já :smiley:

Servidor em Java ou C#.

Se for 2D web, cliente em flex.
Se for 2D deskop, ou quiser que jogadores de X-Box também joguem, cliente em C# + XNA.
Se for 3D, cliente em Unity.

Você tem certeza que seu jogo será “Massivo”?

Sim, será massivo, mas a principio não pretendo que os jogadores vejam um ao outro em todos os locais, pois imagine dezenas de jogadores no mesmo campo de visão, ia ficar tumultuado de mais. Então os jogadores só poderão ver os amigos/guilda e em locais de pvp todos poderão se ver.

Você acha o o flex da conta ? ele suportará a quantidade de dados que será recebido, mantendo o tempo real ?

E o servidor java ou c# ?

valeu.

Tanto faz, Java ou C# são linguagens equivalentes. Faça na que você gostar mais.
Eu iria de Java pela possibilidade de instalar o servidor numa máquina Linux.

Acho que o flex da conta sim. A quantidade de dados recebida não é tão grande assim. Para fazer um MMO, você deverá ser bastante cuidadoso na montagem de seu protocolo, e deverá evitar enviar pacotes inúteis para clientes.
Portanto, cada cliente irá receber apenas a informação do que é pintado na tela. Isso não só alivia o canal de conexão, evitando congestiona-lo, como também evita que alguém faça cheats no seu cliente.

ViniGodoy, você já desenvolveu algo do gênero?

Ou conhece algum mmo com código Open?

Se não me engano a engine do Ryzon é open-source, mas não o jogo em si (pelo que entendi).

[quote=ViniGodoy]Servidor em Java ou C#.

Se for 2D web, cliente em flex.
Se for 2D deskop, ou quiser que jogadores de X-Box também joguem, cliente em C# + XNA.
Se for 3D, cliente em Unity.[/quote]

A Microsoft não está abandonando o XNA do jeito típico deles? http://ventspace.wordpress.com/2011/11/28/directx-and-xna-status-report/

Dê uma olhadinha no LUA, pode ser de grande ajuda.

se for de java da uma olhada no JMonkey ( http://jmonkeyengine.com/ )

Sim.

Não. Já vi o projeto DarkStar, que queria criar um framework para MMO.

Não sei dizer.

Talvez esteja. A Microsoft nunca deu garantia de compatibilidade ou continuidade em nenhum framework voltado à games, inclusive o Direct X.
O motivo é simples: Geralmente games são projetos com começo, meio e fim. Não se pensa em longos períodos de manutenção, e não há grandes problemas em se fixar em uma versão de framework.

O Windows 8 será compatível com o XNA, mas aparentemente não haverá XNA para Metro:
http://www.giantbomb.com/news/the-future-of-xna-game-studio-and-windows-8/3667/
Em todo caso, pelo que vi no preview das APIs para Metro, as classes e a organização da engine é muito similar ao que já existe no XNA (que segue os conceitos do DirectX).

De qualquer forma, ainda é bem melhor usar o XNA do que o Java, que não tem absolutamente nenhum suporte para jogos, seja da própria linguagem, de seus fabricantes, ou da indústria de games como um todo. Na minha opinião, Java está entre as piores linguagens para desenvolvimento de aplicações gráficas desktop. Não tem boas classes para sons, para vídeo, para dispositivos de entrada, boa parte das APIs de terceiros são mantidas por pessoas físicas, ou foram abandonadas. Você certamente terá que recorrer à bindings, o que te restringirá o número de plataformas para 2, o Windows e o Linux, sendo a última irrelevante para o mercado de jogos.

Se quiser uma rota mais segura, use a Unity.
Será mais difícil para 2D, mas será multiplataforma e é uma engine muito popular na indústria de games do Brasil.

Ou recorra ao bom e velho C++, mas prepare-se para um bocado de “programação orientada à cabelos no peito”.

[quote=ViniGodoy]
Talvez esteja. A Microsoft nunca deu garantia de compatibilidade ou continuidade em nenhum framework voltado à games, inclusive o Direct X.
O motivo é simples: Geralmente games são projetos com começo, meio e fim. Não se pensa em longos períodos de manutenção, e não há grandes problemas em se fixar em uma versão de framework.[/quote]

O problema maior disso é o fato de que não haverá mais correções e nem melhorias, e como o código é fechado não há nada que o desenvolvedor poderá fazer a respeito. É um beco sem saída.

O paradigma de desenvolvimento de games tem mudado bastante nos últimos tempos com jogos como Minecraft ou Terraria, onde há a intenção de continuar lançando conteúdo por um tempo razoável (i.e., vários anos). Ou seja, esses jogos são mais como plataformas em constante desenvolvimento do que simples “pacotes de bytes” assim como muitos outros.

[quote=Longino]O problema maior disso é o fato de que não haverá mais correções e nem melhorias, e como o código é fechado não há nada que o desenvolvedor poderá fazer a respeito. É um beco sem saída.

O paradigma de desenvolvimento de games tem mudado bastante nos últimos tempos com jogos como Minecraft ou Terraria, onde há a intenção de continuar lançando conteúdo por um tempo razoável (i.e., vários anos). Ou seja, esses jogos são mais como plataformas em constante desenvolvimento do que simples “pacotes de bytes” assim como muitos outros.[/quote]

Também não é bem assim. A Microsoft irá continuar a manutenção sobre o XNA.
O XNA ainda é tido pela empresa como a plataforma para X-Box e WP7.

Além disso, vale lembrar que o XNA é um binding para o DirectX, e boa parte das correções aplicadas ao DX serão automaticamente aplicadas ao XNA.
Só não creio que haja um XNA 5. Ainda assim, o post que você colocou é especulativo. A empresa ainda não mostrou qual vai ser seu posicionamento exato.

Agora, quanto à sua última frase. Jogos massivos e em rede são um segmento da indústria. Não creio que irão mudar o paradigma de desenvolvimento, nem extinguir os jogos com começo, meio e fim, até porque há jogadores que simplesmente não gostam deles.

Sem falar que seu argumento não coloca o Java novamente na lista de opções. O fato de ser open source não exclui o fato de que não há suporte nenhum à jogos na linguagem, ou mesmo na comunidade. Muitas APIs, como a JInput, foram simplesmente abandonadas. Outras, como a JOGL, passaram de mão em mão e não tem um direcionamento claro. Não se acha APIs Java para o Direct X. O mercado de gamers em Java é restrito aos PCs. Você provavelmente teria que desenvolver boa parte da sua engine (como fez o Minecraft). Sem falar que, você já olhou para o código interno de uma engine gráfica? Ou de uma engine de física? Corrigir um bug lá é extremamente difícil, provavelmente daria mais trabalho do que redesenvolver o que você já fez do jogo em outro lugar, ou aprender a conviver com o erro.

Como eu falei, se quer segurança, opte por uma engine 3D de mais peso, como a Unity. Se quer algo open source, procure a Ogre3D e a Bullet Physics, ou APIs em C e C++ como a SDL, SFML e Box2D. Vai ser melhor lidar com a complexidade do C, do que com a falta de recursos do Java (que vai te forçar a usar JNI, e ter também a complexidade do C em seu programa).

[quote=ViniGodoy]
Agora, quanto à sua última frase. Jogos massivos e em rede são um segmento da indústria. Não creio que irão mudar o paradigma de desenvolvimento, nem extinguir os jogos com começo, meio e fim, até porque há jogadores que simplesmente não gostam deles. [/quote]

Até jogos single player recebem conteúdo via download e correções para bugs. Mas o meu comentário foi a respeito de outra coisa, que começar um projeto em uma plataforma fechada e abandonada é meio sem sentido, pois pode-se precisar de novos recursos e e tal. Com open source até seria possível o próprio desenvolvedor fazer as correções necessárias, mas no caso de software fechado não existe tal possibilidade.

[quote=ViniGodoy]
Sem falar que seu argumento não coloca o Java novamente na lista de opções. O fato de ser open source não exclui o fato de que não há suporte nenhum à jogos na linguagem, ou mesmo na comunidade. Muitas APIs, como a JInput, foram simplesmente abandonadas. Outras, como a JOGL, passaram de mão em mão e não tem um direcionamento claro. Não se acha APIs Java para o Direct X. O mercado de gamers em Java é restrito aos PCs. Você provavelmente teria que desenvolver boa parte da sua engine (como fez o Minecraft). Sem falar que, você já olhou para o código interno de uma engine gráfica? Ou de uma engine de física? Corrigir um bug lá é extremamente difícil, provavelmente daria mais trabalho do que redesenvolver o que você já fez do jogo em outro lugar, ou aprender a conviver com o erro. [/quote]

Qualquer linguagem serve para se programar jogos. O JOGL continua sendo atualizado e existem diversos frameworks em Java para essa área também.

Acho que o que você quer dizer são APIs específicas, assim como Java EE é para a web. O Java nunca teve algo assim, mas não há limitação alguma para se criar o que for necessário.

O argumento de “se for open source o desenvolvedor faz as correções necessárias” já está ultrapassado. “Fazer as correções”, na maioria das vezes, é extremamente caro, trabalhoso e exige um grande conhecimento específico. Opta-se por um framework justamente para ganhar produtividade e não ter que ter esse conhecimento. Acredite, não é qualquer um que abre uma engine de física ou gráfica e corrije um bug.

Outro argumento infantil. É claro que qualquer linguagem serve para programar jogos. Até o LISP, que você adora. Porém, algumas plataformas te darão maior suporte para jogos, outras não. Java está no caso que não.

Da mesma forma, seria possível criar servidores web com C++, mas não significa que seja viável, ou inteligente.

“Diversos” quais? Frameworks sérios posso citar apenas a LWJGL, que é apenas um binding, a JMonkeyEngine e a Slick2D. A última é mantida por uma pessoa física. E quais você cita que usam DirectX? Ou que dão suporte a consoles?

O JOGL é uma piada. Eu tentei acompanhar o projeto, que passou de mão em mão. Veja as datas de releases, e você verá que existem periodos de anos sem releases. Leia a documentação, e você verá que há muito código esquizofrênico, devido a mudança de direção ao longo dos anos.

O Java 3D, que era a promessa da Sun, foi abandonado. A javax.sound não suporta formatos como mp3 e ogg e é extremamente complexa de se usar. A JMF, para vídeos, também está abandonada. Não há boas APIs para desenho vetorial.

Claro, estou falando da plataforma Java, não apenas da linguagem Java. Acho que falar da linguagem pura não tem o menor sentido. Porque aí, não existe suporte específico para jogos em linguagem “pura” nenhuma.

Por isso, também não estou falando da plataforma Android (que usa a linguagem Java). Ali, há tudo o que é necessário para produzir um jogo.