JApplet, JFrame ,Applet, Java3D?

4 respostas
VictorMatuk

Bem, venho pesquisando sobre o que usar para criar um MMO (Só para estudo, por isso é coisa muito simples).

Verifiquei que o java por enquanto é a melhor opção. Dei uma lida em C++, mas como nunca fui chegado nessas linguagens que começam com C (a não ser C#), voltei ao Java.

Antes de dizerem que sou louco e quero criar um MMO do nada já vou dizendo que já aprendi a fazer um client/server multiThread com gráfico de bonequinho enviando pra todo mundo onde se um andar, mostra para todos que ele andou.

Agora a pergunta!
Eu fiz esse cliente/server multiThread bla bla bla usando o Java Simples (public class Server… public static void main(String[] args)…);

Então deixei o Servidor em Java simples e adaptei o cliente para Applet.
Desenhei um quadrado no Applet e abri mais um cliente. Fiz todo o código e verifiquei que se eu andar no Applet1 mostra no Applet2 que o Applet1 andou.

Até aí OK!!

Eu pretendo deixar o Servidor no java simples usando o console somente. Mas o meu problema é o Cliente.

Qual a melhor opção para criar o Cliente?
Fazer em Applet e distribuir via Browser. (E ter problemas com leitura e escrita no computador do cliente e até mesmo problema com os Sockets).
Fazer em JApplet (Não sei bem os prós e contras)
Fazer em JFrame (Não sei bem os prós e contras && Acho que é como um cliente que o cara vai no site, clica no link e executa o java no pc dele né?)

Fazer em Java3D (Não sei bem os prós e contras)

4 Respostas

ViniGodoy

Para o servidor, consulte esse projeto: http://www.reddwarfserver.org/

Seu MMO vai ser 3D ou 2D?

Se for 2D, eu usaria o próprio Java 2D associado ao JNLP, ou mesmo o C# com XNA.
Se for 3D, pense com carinho na JMonkeyEngine. Ou em usar a Unity3D com C#, JavaScript ou Boo.

Outra coisa, um MMO é muito mais complexo do que o que você fez. Exatamente pelo primeiro “M” que significa “Massive” e também pelo fato de rodar via internet, onde o lag é gigantesco. Não pense em começar sem entender os princípios básicos de replay, dead-reckoning e UDP.

VictorMatuk

ViniGodoy:
Para o servidor, consulte esse projeto: http://www.reddwarfserver.org/

Seu MMO vai ser 3D ou 2D?

Se for 2D, eu usaria o próprio Java 2D associado ao JNLP, ou mesmo o C# com XNA.
Se for 3D, pense com carinho na JMonkeyEngine. Ou em usar a Unity3D com C#, JavaScript ou Boo.

Outra coisa, um MMO é muito mais complexo do que o que você fez. Exatamente pelo primeiro “M” que significa “Massive” e também pelo fato de rodar via internet, onde o lag é gigantesco. Não pense em começar sem entender os princípios básicos de replay, dead-reckoning e UDP.

Como é aprendizado vai ser 2D. Dai eu fiquei na dúvida entre JApplet, JFrame e Applet.

Já mexi com unity 3D mas é uma ferramenta de criação, o que eu quero é criar do zero pra entender os conceitos de tudo e técnicas de programação para isso 2D (Como Iso Tiles, Scrooling, pathfinds, ray…)

O Primeiro M de Massive não significa apenas que meu servidor tem que receber as conexões dos clientes utilizando multiThread pra manter todo mundo se vendo ao msm tempo? =S

Tem algum livro pra eu ler sobre os princípios básicos que você diz?
Se forem livros de redes… (Argh)

Não esquece que é só aprendizado e não profissionalização da área!!!

ViniGodoy

Então sem dúvida, use JFrame e JNLP. De preferência em full screen. Dá animações mais suaves e mais divertidas.

O 3D exige que você aprenda mais coisas do que o 2D. Principalmente o trabalho vetorial. Mas é uma boa começar por 2D mesmo.

Não, isso é o M de “Multiplayer”. Quando você tem 8 ou 9 mil conexões simultâneas a coisa fica mais difícil. Você começa a ter problemas de banda, de tempo de resposta e outras coisas desse tipo. Como seu servidor manterá uma espécie de conexão, complica começar a ter 9 mil threads trabalhando juntas.

Você também terá clientes com conexões diferentes, que tem que coexistir. Pense, num lado alguém conectando numa linha ADSL de 10MBps e na mesma cidade do seu servidor, no outro um cara em Manaus, numa conexão via satélite, de 200KBPS, e com lag que fica variando o tempo todo entre 0,3 e 1,5 segundos… Um não pode intervir no outro.

E sim, você vai ter que ler muito sobre redes. E a maioria com conteúdo em C ou C++. Além de estudar o básico de protocolos e sistemas distribuídos, você vai ter que ver muito sobre TCP e UDP. Um livro legal é esse aqui: http://www.amazon.com/Effective-TCP-IP-Programming-Programs/dp/[telefone removido]

Mas ele assume que você já tem algum conhecimento sobre como montar um protocolo do zero. Se nem isso você tem, pegue um bom Tanenbaum para começar.

VictorMatuk

Valeu Vini. Dúvida Sanada.

Criado 5 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 4
Participantes 2