Java tem seu código facilmente revertido? Dúvida cruel!

Estou para criar um mmo só de sacanagem.
Pra aprender mesmo a trabalhar de uma maneira diferente com os sockets. Sem ficar só fazendo chat de bate papo.

Fiz um servidor em java. Conectei através de um socket em applet e tudo beleza.

Agora a DÚVIDA que me fez não querer mais programar em java e partir pro C#.

Li em muitos lugares (via google) que java tem seu código .java facilmente revertido. E com isso qualquer jogo que eu crie, nego pega e reverte meu código para copiar.

Verdade? Mentira? Não é tão fácil assim?

Se for verdade infelizmente vou para o C#.

http://www.google.pt/search?hl=pt-PT&safe=off&q=java+code+obfuscation

Você vai ter exatamente esse mesmo problema em C#, tanto é que o próprio C# tem um “Obfuscator”. O Java e o C# têm mais ou menos os mesmos problemas.

Se você não quer ter tal problema, use uma ferramenta que gera código nativo, como o Delphi ou o C++.

Fato. Existem técnicas pra dificultar isso, como ofuscamento de código, encriptação do mesmo (e desencriptação usando classloader customizado), e por aí vai. Mas nenhuma técnica consegue prevenir efetivamente, até porque isso é impossível em praticamente qualquer linguagem (mesmo em Assembly, o código ainda pode ser legível , ou , ao menos, revertido para algo que seja legível, afinal, o código não pode ser tão impossível de ser lido que nem a máquina entenda).

Mas, só de curiosidade… você disse que pretende fazer um mmo (que, obviamente, vai ficar num servidor), certo? Porque você se preocupa com isso já que, se vai ficar num servidor, não vai ter “nego que pega e reverte o código pra copiar”.

[]´s

Se C# tem o mesmo problema então porque ir pra C# quando se tem java? =)

Obrigado.

Eu tenho um amigo que é perito em “crackear” código, mesmo nativo.

[]´s

[quote=asaudate]Fato. Existem técnicas pra dificultar isso, como ofuscamento de código, encriptação do mesmo (e desencriptação usando classloader customizado), e por aí vai. Mas nenhuma técnica consegue prevenir efetivamente, até porque isso é impossível em praticamente qualquer linguagem (mesmo em Assembly, o código ainda pode ser legível , ou , ao menos, revertido para algo que seja legível, afinal, o código não pode ser tão impossível de ser lido que nem a máquina entenda).

Mas, só de curiosidade… você disse que pretende fazer um mmo (que, obviamente, vai ficar num servidor), certo? Porque você se preocupa com isso já que, se vai ficar num servidor, não vai ter “nego que pega e reverte o código pra copiar”.

[]´s[/quote]

É que eu tenho ciume dos meus programas que não são open source aiuhauia.
Dai eu ia querer proteger até o cliente pra evitar hacks.

Ahem… não é um MMO?

Então… boa parte da lógica vai ficar no servidor. E esse, ficará sob seu controle.

Procure arquitetar seu cliente de forma a não receber nenhum dado a mais do que ele precisa saber. E valide corretamente as entradas no servidor. Aí você pode liberar até que seus usuários façam plugins, ou montem seus próprios clientes.

Outra coisa, você já criou algum outro jogo? Não está fazendo a loucura de começar direto por um MMO, está?

Você pode até distribuir o seu cliente livremente. Sem uma conta no servidor, de nada vai adiantar fazer pirataria… Aliás, para você é até melhor que copiem mesmo.

Vini, eu já fiz cliente de chat com server multi thread, fiz joguinhos simples. Misturei jogo simples com o servidor de chat e os clientes conseguem visualizar os outros players.

Fiz isso em applet.

Agora tenho outra dúvida cruel!!!

Estou tentando me dedicar a uma linha no java, mas tá meio complexo pra achar conteúdo na internet.
Vou criar um outro tópico pois o assunto é diferente.

Dê uma olhada nesse projeto aqui, se seu interesse é MMO: http://www.reddwarfserver.org/

É derivado do project darkstar, que foi abandonado pela Sun, mas mantido pela comunidade na forma do red dwarf.

cruzes, só o servidor tem 10MB.
Vou começar por algo menor.
To com dúvida no Duplo Buffer. Já vi tantas técnicas de Double Buffering que to ficando maluco.
Não consigo distringuir qual a melhor e etc.
Vi uma de um livro que comprei, vi outra no livro do Killer Programming do O Reilly e outras pela internet ¬¬ To tendo problemas pra entender o porque do meu Thread ficar “engarrafando” o movimento (o quadrado anda e do nada pula um pouco pra frente)
Etc. Nao consigo achar tutorial pra sanar minha dúvidas e dai eu aprendo tanta coisa que me enrolo.
Já tentei seguir uma linha de aprendizado mas java é tão gostoso que eu quero saber de tudo (aiuhauiha) Sei que tá errado, por isso criei outro tópico tentando diferenciar com o que vou trabalhar.

No Java a melhor técnica de double buffering é usar o BufferStrategy do JFrame. Principalmente se você usar ela em full screen, no tal Full Screen Exclusive Mode (FSEM). O Killer fala disso.

Leia com atenção também o capítulo sobre o game loop. Ele é muito importante. Tão importante que no meu site há três artigos sobre isso.

Esse servidor tem 10MB, mas duvido que você faça algo muito menor para um MMO. Ele já tem suporte a várias técnicas para disfarçar o lag, que é o problema real na internet. Ele também trabalha com UDP, que tem menos lag.

Lembre-se que o socket é TCP e, por isso, tem diversas verificações de ordem e entrega, coisa que geralmente não é tão necessária em jogos.

[quote=ViniGodoy]No Java a melhor técnica de double buffering é usar o BufferStrategy do JFrame. Principalmente se você usar ela em full screen, no tal Full Screen Exclusive Mode (FSEM). O Killer fala disso.

Leia com atenção também o capítulo sobre o game loop. Ele é muito importante. Tão importante que no meu site há três artigos sobre isso.

Esse servidor tem 10MB, mas duvido que você faça algo muito menor para um MMO. Ele já tem suporte a várias técnicas para disfarçar o lag, que é o problema real na internet. Ele também trabalha com UDP, que tem menos lag.

Lembre-se que o socket é TCP e, por isso, tem diversas verificações de ordem e entrega, coisa que geralmente não é tão necessária em jogos.[/quote]

Bem vou pesquisar sobre o BufferStrategy do JFrame e acho que vou criar o cliente extendendo de JFrame mesmo.
E agora estou mais confiante no livro do Killer do que o livro que eu comprei (Esqueci o nome mas amanhã eu vejo e posto aqui).
Eu já li seu site =) gravei de cabeça todos os calculos sobre vetores aiuhauia e já fiz alguns jogos bobos usando eles.
Estudar estudar estudar.

O outro seria o Developing Games in Java do Dave Brackeen? Se for é um ótimo livro.

O killer é legal, e o bom é que é grátis. :slight_smile:

Foi este livro aqui

[list]http://www.americanas.com.br/AcomProd/1472/2851921[/list]