É com grande satisfação que escrevo a continuação deste tutorial. Demorou pra sair, mas saiu !
E só relembrando, iremos montar nosso MMORPG 2D utilizando o servidor eAthena e o cliente TMW.
Construindo um MMORPG - Parte 1 foi "um tanto" superficial, mas agora o bicho vai pegar.
Diria que instalar o servidor eAthena e configurá-lo a gosto é o bicho da goiaba. Mas o basicão tá garantido.
» Post Completo...
.:: Pré-requisitos ::.
Uma pergunta: Você já tem o cliente TMW instalado? Pois dessa vez realmente precisaremos dele. É mais pro final... nos testes do nosso servidor, mas já deve tê-lo instalado. Procure pela versão 0.0.26 ou superior. Pois à partir desta versão o cliente TMW passou a guardar atualizações de servidores diferentes em locais separados.
Outro pré-requisito é Linux. Pois, além da compilação do servidor eAthena, iremos apelar para a linha de comando. E também porque você pode ter dificuldades em rodar o servidor eAthena no Windows.
Também iremos utilizar o programa Git... então vá fazendo a lista:
» Sistema operacional Linux. Ubuntu é um boa opção.
» Cliente TMW versão 0.0.26 ou superior.
» Programa Git. (procure também nos repositórios do Ubuntu)
Git é um software gratuito para controle de versão distribuído. Git foi inicialmente criado por Linus Torvalds para o desenvolvimento do kernel Linux (kernel). (wikipédia)
.:: O servidor eAthena ::.
O English Athena é um software Internacional para criação de servidores privados de Ragnarok Online. É baseado no jAthena (Japanese Athena). É um software de código aberto licenciado como Gnu/GPL. Foi escrito em C, surgiu em 2004, pode rodar no win32 ou Linux, embora seja recomendado seu uso no Linux, por proporcionar maior estabilidade e segurança. (wikipédia)
Além da versão em TXT, que é a versão que irei explorar, existe também a versão em SQL. Inicialmente o servidor eAthena servia apenas ao jogo Ragnarok, mas ultimamente ele tem servido a outros jogos também, um deles é o jogos TMW.
Se você reparar bem, o TMW possui as mesmas características do jogo Ragnarok, mas ele não é uma cópia deste, pois possui vida própria. Característica que nosso jogo também possa ter... quem sabe !
.:: Configurando um TMWServer ::.
A melhor maneira de compreender o funcionamento do servidor eAthena é configurando um. Para poupar tempo, e também por ser mais fácil, iremos rodar uma cópia do servidor The Mana World. Além do meu passo-a-passo, você também poderá acompanhar por este tutorial. Recomendo ao leitor criar um novo diretório, pois no final teremos muitos outros diretórios e arquivos.
» Primeiro passo: Baixe o servidor eAthena do repositório Git para compilação. E logo em seguida o compile com make:
git clone git://gitorious.org/tmw-eathena/mainline.git eathena
cd eathena
make
Este inda não são os dados do servidor TMW, mas apenas os arquivos de um novo servidor eAthena e seu código fonte.
Após a compilação você deverá ter 3 novos binários: char-server, login-server e map-server.
» Segundo passo: Baixe os dados do TMWServer do repositório Git para o diretório eathena-data/:
cd ..
git clone git://gitorious.org/tmw-eathena-data/mainline.git eathena-data
cd eathena-data
» Terceiro passo: Compile o arquivo eathena-monitor.c que se encontra com os dados do TMWServer (diretório eathena-data/) e copie os binários do diretório eathena/ para eathena-data/.
gcc -o eathena-monitor eathena-monitor.c
cp -iv ../eathena/*-server .
» Quarto passo: Crie um diretório link simbólico chamado tmwserver/ dentro de seu $HOME que aponte para o diretório onde se encontram os dados do TMWServer (nosso diretório eathena-data/).
cd $HOME
ln -s /caminho_completo_ate_o_diretorio/eathena-data/ tmwserver
» Configuração: Após seguir todos os passos precisamos fazer algumas configurações em eAthena-data/ para que a "instalação" esteja completa.
Primeiro crie um diretório onde serão armazenados os arquivos de log. mkdir log resolve o problema (dentro do diretório eathena-data/).
Em eathena-data/conf você encontrará vários arquivos com a extensão .example. Remova esta extensão do nome de todos os arquivos. Agora é só configurá-los.
» conf/char_local.conf:
// Server name, no more than 19 characters
server_name: MMORPG REVOLUTION
// Login Server IP
login_ip:127.0.0.1
// Character Server IP
char_ip:127.0.0.1
» conf/map_local.conf:
// Character Server IP
char_ip:127.0.0.1
// Map Server IP
map_ip:127.0.0.1
» conf/login_local.conf:
update_host: http://updates.themanaworld.org/
Aqui não faremos mudanças por enquanto. Explico que os dados de update serão conferidos diretamente no servidor do TMW, mesmo com nosso servidor rodando no localhost (127.0.0.1).» save/account.txt:
0 s1 p1 2009-02-19 23:15:42.856 S 699 0 a@a.com - 0 127.0.0.1 - 0
Este usuário deve ser adicionado a esta lista. Você pode fazer issoVocê poderia copiar a linha acima e colar no arquivo save/account.txt. Mas não dá pra copiar do blog. O problema é que os tab's se perdem ao serem exibidos no blog !
Mas se você copiar esta mesma linha do arquivo account.txt.example e colar em account.txt, garanto que funciona.
.:: Servidor eAthena em ação ::.
Para auxiliar nas tarefas de execução do servidor e também em seu monitoramento, temos o script eathena.sh e programa eathena-monitor. O programa eathena-monitor lança todos os servidores e os reinicia quando falham. O script eathena.sh é utilizado para iniciar/finalizar o programa eathena-monitor.
Para iniciar/reiniciar/finalizar o servidor execute o script eathena.sh com os parâmetro start/restart/stop:
./eathena.sh start
./eathena.sh restart
./eathena.sh stop
diogorbg@pc:~/tmwserver$ ./eathena.sh start
Starting eathena monitor...
Starting:
* interval: 5 s
* workdir: /home/diogorbg/tmwserver
* login_server: /home/diogorbg/tmwserver/login-server
* map_server: /home/diogorbg/tmwserver/map-server
* char_server: /home/diogorbg/tmwserver/char-server
Esta é a primeira tela do jogo. Você tem a opção de se registar ou logar. Use o ip 127.0.0.1 quando pretender se conectar ao servidor local que configuramos e server.themanaworld.org quando pretender se conectar ao servidor oficial.
MMORPG REVOLUTION é o nome do nosso servidor... como configuramos em conf/char_local.conf.
Como nós ainda não temos nosso próprio endereço de updates deixamos por padrão o repositório oficial.
Se você reparar, em versões anteriores à 0.0.26, esta tela era a primeira... o que não nos permitia escolher o servidor de update no próprio jogo.
Escolha do Char (personagem). No servidor oficial me procure por "Heroi br".
E aí está. A cópia do The Mana World rodando em nossa máquina.
Fique atento nos comentários... é uma dica de quest do jogo TMW.
.:: Tornando-se um GM ::.
Dê permissões de GM para sua conta editando o arquivo conf/gm_account.txt:
// <account ID> <level>
2000000 99
99 é o seu nível de permissão. 99 é o maior nível e lhe permite fazer de tudo.
Veja o exemplo acima. Estou em uma caverna cheia de cobras perigosíssimas, do tipo que atacam se exitar, e ainda por cima, meu personagem se encontra apenas no nível 6 e muito mal equipado por sinal. Uma mordida bastaria, mas porque eu ainda não morri ? É porque eu estou invisível. Se você for GM, ficar invisível é fácil... é só digitar o comando @hide.
Para ter mais detalhes sobre comandos especiais de GM's leia a documentação que veio junto com o código do eAthena (arquivo eathena/doc/readme.html).
.:: Solucionando problemas ::.
Primeiro verifique se você seguiu todos os passos corretamente. Se os IP's e portas estão corretos.
» Rode o servidor e verifique se o usuário "s1" do servidor se encontra no arquivo save/account.txt. Crie um usuário pelo cliente TMW e verifique se ele também se encontra neste arquivo.
Não se esqueça que você deve ter um diretório do tipo link simbólico em seu $HOME nomeado como tmwserver que aponte para o diretório onde se encontram os dados do TMWServer (diretório eathena-data). O meu $HOME é o diretório /home/diogorbg.
.:: Mundo Tux ::.
Por falta de um tema mais apropriado... resolvi criar meu MMORPG com o nome de Mundo Tux.
Um mundo onde todos os NPC's são pinguins. Tudo não passa de um exemplo de teste, mas até que ficou legal.
Retirando os pinguis, tudo é do projeto TMW ou de algum tópico em discussão no fórum oficial. Eu só tive que juntar tudo. Montei um mapa, configurei o servidor, criei alguns scripts NPC's e criei pacotes de atualização.
O tutorial está ficando extenso... mas ainda cabe instruções de como configurar o Mundo Tux.
» Primeiro passo: Baixe os dois arquivos necessários para executar o mundo tux: eathena-tux.tar.gz e updates.tar.gz. Para ficar mais organizado, extraia os arquivos no mesmo diretório que trabalhamos o eathena e o eathena-data.
» Segundo passo: Como o servidor já foi previamente configurado para rodar no localhost, você só precisa se preocupar em criar diretórios do tipo link simbólico:
cd $HOME
ln -s /caminho_completo_ate_o_diretorio/eathena-tux tmwserver
ln -s /caminho_completo_ate_o_diretorio/updates /home/updates
update_host: file:///home/updates
Execute o servidor normalmente (./eathena.sh start) e em seguida conecte-se pelo cliente TMW usando o IP local (127.0.0.1).
Para logar com o char Hercules lvl 98 use o login:diogorbg e a senha:asdf.
Você verá que a tela de updates é bem rápida... pois o jogo vai copiar arquivos locais para o diretório $HOME/.tmw/updates/home/updates.
Repare que são vários arquivos compactados e que todos estão descritos no arquivo resources2.txt. Para adicionar um arquivo a esta lista use o programa adler32, cujo código fonte foi enviado em updates.tar.gz (para mais detalhes How to release an update). Exemplo:
adler32 new-update.zip >> resources2.txt
.:: Link's ::.
» Servidor eAthena (wikipédia)
» The Mana World (site oficial)
» Git (wikipédia)
» Configurando o servidor eAthena
--
O melhor eu deixei pro próximo tutorial.
Nele vamos criar script's de NPC's, mapas e modificação de algumas configurações.
16 comentários:
Simplesmente brutal, adorava conseguir fazer um mmorpg
Aguarde pela parte 3. Deverá sair dia 20/03. (As coisas estão corridas !)
Até agora só se viu falar de teoria e instalação do servidor, mas pretendo abordar scripts, mapas, personagens, monstros, armas, itens, efeitos de partícula... tudo que que for possível.
Como é tudo também é novidade pra mim, levará um tempinho pra regar todo este conteúdo. O certo é que ainda terei muito material.
Meus sinceros agradecimentos ao meus leitores... T++
Legal diogo. Parabens.
Vc disse que ainda é novidade pra vc, então vc está aprendendo de algum lugar... Não quero estragar as surpresas dos seus proximos tutoriais, mas posso perguntar de onde está tirando esse material??
Abraço!
Não seria estragar a surpresa não !
Eu retiro estas informações do Projeto The Mana World.
* No site, no fórum, no wiki (sessão 'For developers').
Nem todas as informações estão interligadas de forma a seguir uma linha de aprendizagem, e por isso é fica meio complicado.
Seria bom ter uma outra fonte, ou alguma documentação de um projeto brasileiro, mas não encontrei ainda.
Eu estava pesquisando sobre o eAthena, e encontrei o Cronus, que é baseado no eAthena, como se fosse a tradução do eA para o portugues. ele também é de código livre.
Não sei muito de C ou C++, gosto mais de Python, mas acharia interessante modificar o cronus para que fosse possivel criar encima dele MMO's que não seguissem a linha do ragnarok. O que vc acha? seria algo muito complexo?
A pergunta é: O que o Cronus tem de diferente do eAthena ? É open source mas todos os exemplos explicam como criar um servidor de Ragnarok!
Não dá pra resolver a sua dúvida sobre o Cronus. Tbm é minha dúvida !
Mas se você quer algo totalmente diferenciado do Ragnarok... o projeto The Mana World está com planos de desenvolver o próprio servidor... esse compensa modificar.
Server development
Setting up a TMW server
sim, o cronus é apenas a tradução do eA.
Vi algo sobre um novo server na parte onde poem o que já foi feito e o que ainda está por fazer.
Espero que isso realmente aconteça, quem sabe eu não participo e te encontro nesse projeto um dia desses?? rsrs
Então tá aí. Cronus, mais uma ferramenta a ser estudada.
muito legal, mas estou com umas duvida... vc tem msn?
Tenho sim... mas é melhor a gente conversar pelo Google Talk. Quase não apareço no MSN !
Meu talk é diogorbg. O MSN tbm é diogorbg !
olá diogo,
como vão as coisas?
será que temos um novo post esse mes ainda??
sei que a faculdade aperta, xD
Blz Lucas,
Em breve estarei postando a parte 3 da sequência. Já estou a alguns dias escrevendo... 12 imagens até agora !
Pode até sair meio apertado... 29, 30 ou 31. Mas este mês sai !
Voce poderia ensinar a compilar o servidor SQL em vez de TXT, pois fica mais facil pra mim criar um site usando PHP + MySQL?
Diogo_RBG, cara estou interessado em criar um Server de TMW, só que eu não entendi algumas coisas. Me add no msn pra voçê me ajudar plx. hodiashbs@hotmail.com
n da pra criar com windows?
Olá Daniel,
Até tem como, mas eu não me aventurei a montar um servidor no Windows.
O que eu posso te garantir é que o servidor não foi feito pro windows, mas nada que uma DLL do cygWin não resolva.
Postar um comentário