Para programar tem que ser Linux ! Para Desktop prefiro o Ubuntu !
A melhor maneira de se descobrir uma lib gratuita é nos repositórios do Ubuntu: $apt-cache search lib <palavra_chave> dev
Ou pelo devpaks.org, mas o repositório tem me ajudado mais !!!
Pra esquentar as coisas por aqui eu resolvi voltar com uma enquete. A intenção era comentar sobre o resultado da enquete e aos poucos ir voltando a postar no blog. Bem, a intenção foi boa. O problema foi que demorei um pouco mais que o esperado para comentar sobre a enquete e ela esfriou... pra falar a verdade já deve estar vencida !
Enquete de março: O que você acha do The Mana World BR?
:D Muito legal !!! (4 votos/36%)
:-) 3D seria melhor (3 votos/27%)
:-| Poderia ser melhor (2 votos/18%)
:-( Prefiro Tíbia (2 votos/18%)
11 votos no total.
» Post Completo....:: :D Muito legal !!! (4 votos/36%) ::. Vlw por quem votou em muito legal XD... a equipe de desenvolvimento do TMW se esforça muito para desenvolver o jogo. O jogo é feito por desenvolvedores e jogadores nas horinhas que sobram entre os estudos, trabalho, horários de lazer e demais compromissos. Não é fácil, mas é muito gratificante. Principalmente quando sabemos que nosso trabalho é apreciado. VlW msm XD !!!
.:: :-) 3D seria melhor (3 votos/27%) ::. É verdade que jogos 2D perdem espaço para jogos 3D e vice versa, pois cada jogador tem sua preferência. Alguns preferem jogos 3D por serem mais realistas ou simplesmente porque se sentem dentro do jogo. Por outro lado outros jogadores preferem gráficos mais trabalhados, mais nítidos, com mais contraste e é ai que os jogos 2D ganham espaço. Pixel Arte ainda é muito apreciada mundo a fora e ela vem se renovando para ganhar o novo público. Resumindo... quem votou aqui gostou do jogo mas tem preferencia por jogos 3D. Vlw pelo voto !
.:: :-| Poderia ser melhor (2 votos/18%) ::. Também agradeço por estes votos... afinal seria uma tremenda mentira dizer que o TMW agrada a todos, pois nenhum jogo foi capaz de tal proeza. E também porque é importante escutar criticas e trabalhar nelas para que o jogo sempre melhore.
.:: :-( Prefiro Tíbia (2 votos/18%) ::. Essa aqui era uma versão zuada da opção acima... era pra aqueles que só queriam sacanear. Mas não pensem que não tem troco ! Para votar em uma dessas opções a pessoa deve se encaixar em pelo menos um desses perfis: * Só queria contrariar - Esse cara só queria sacanear msm... foi na pior opção votos e deu aquela risadinha: "HEHEHE !!!". * Queria fazer uma comparação maldosa - Esse cara tem conhecimento do jogo Tíbia e encontrou a oportunidade perfeita pra sacanear! PÔ CARA... Tíbia é apelação! Pra quem não conhece esse jogo se informe neste link... vai saber do que se trata e ainda irá dar umas boas rizadas ! * Realmente acha o Tíbia melhor - Sem querer ofender... mas essa sua doença não tem cura! Mas não se preocupe... o importante é ser feliz (pobre coitado).
Espero por comentários... acho que isso aqui vai ficar interessante !!!
Andei trabalhando muito estes dias... Oficina sobre edição de mapas 2D e palestra sobre SDL no 1º Encontro de Desenvolvedores de Jogos do Tocantins e agora uma apresentação sobre desenvolvimento de jogos em SDL... ou desenvolvimento do jogo come poto em SDL, tanto faz ;) » Post Completo...SDL é super indicada para programadores iniciantes no desenvolvimento de jogos, pois elá é simples e fácil de aprender. Mas é preciso estudar um pouco para isso. O site oficial pode te ajudar em seu primeiro contato com SDL. Você pode baixar documentação de todas as funções da SDL em Downloadable (1). sdldoc-html.zip é a documentação em HTML e SDLRef.chm é a documentação no formato help do Windows. Existe um tutorial de introdução online e em português que explica sobre SDL e detalha cada uma de suas características. Está disponível em Introduction (2). Após a leitura do tutorial de introdução você estará ápito a compreender os exemplos de código do meu blog ou do Lazy Foo.
.:: Slides ::. Não dá pra entender 20 slides feitos só por imagens... mas quem me viu apresentar pode lembrar de muita coisa. » SDL.pdf
.:: Códigos de exemplo aqui do blog ::. Cheguei a apresentar alguns bons exemplos que tenho aqui no meu blog... segue a lista.
cod_sdl.zip - Um exemplo de código para iniciantes. Este é o código exemplo que vem com o Dev-Cpp e que é mostrado quando se cria um novo projeto SDL. Também pode ser encontrado em: SDL - A Biblioteca dos Jogos 2D
cod_ttf.zip - Para imprimir o placar de recordes ou qualquer tipo de texto em SDL existem duas formas: Você pode carregar uma imagem com todas as letras e números que irá utilizar... e se virar para imprimí-los ou utilizar a SDL_Ttf e carregar diretamente de um formato verdadeiro de texto. Também pode ser encontrado em: Imprimindo texto com SDL_Ttf
velha.zip - Jogos de tabuleiro geralmente são mais fáceis de se implementar, pois eles geralmente são mais estáticos (sem movimento ou animação). Mas este neste código as peças possuem animação em seu surgimento. Experimente criar uma IA para este jogo... será um desafio interessante (dica: use o algorítimo Minimax). Também disponível em: [Mini-curso] Programação de jogos 2D com SDL
cod_fps.zip - É o exemplo onde uma bolinha fica quicando e se movendo de um lado para o outro (movimento em função do tempo). Disponível em: Controle de tempo e Frame Rate
cod_tmx.zip - Todos os exemplos valem muito a pena conferir... mas se você está procurando por algo mais profissional você não pode deixar de ver este. Ele mostra como carregar um mapa em formato TMX e também como construí-lo em seu jogo. Disponível em: Carregando mapas 2D no formato TMX
.:: Códigos de Exemplo ::. Estes códigos eu fiz especialmente para a apresentação ou resgatei de meus back-ups. O Mário Clone e o relevoGL são do tempo em que eu conheci a SDL.
drMarioClone.zip - Exemplo perfeito de como NÃO IMPLEMENTAR um jogo. Mapa da fase totalmente desprovido de sistema de tiles... no Lugar apenas uma imagem gigantesca ! Sistema de Sprite totalmente ineficiente... vários estados repetidos para animar o personagem. Colisão quase nula... um único pixel na base do personagem testando colisão na imagem máscara. A força da gravidade é a única que funciona ! Isso se você não tentar pular 2x... quando o personagem atinge a altura máxima. Eu deveria esconder este código... mas gosto dele... é muito engraçado !!!
superSmiley.zip - Já estou preparando a versão 2.0 do Mario Clone... Mapa de tiles editado no Tiled, sprites que funcionam, colisão por retângulos, coleta de moedas... tudo que precisar pra se tornar exemplo de COMO IMPLEMENTAR. Mandei o editor junto... abra o arquivo world.tmx pelo editor e veja toda a fase do Super Mário.
relevoGL.zip - Um exemplo curioso usando SDL e OpenGL onde uma esfera se move sobre uma superfície irregular formada por várias esferas. Quando se usa SDL o uso da lib GLUT é desnecessário, mas acabei usando uma função para gerar esfera. Logo tem que linkar com GLUT tbm.
drLib.zip - Classes como Timer, Frame, Sprite e Grid se encontram aqui. Além de encontrar o código você encontrará também a documentação destas classes no diretório html.
fundoDoMar.zip - Uma grande coleção de exemplos... principalmente sobre colisão de retângulos e colisão de círculos. Deve ser estudado minunciosamente. No diretório lib encontram-se vária classes que podem ser aproveitados em outros jogos. Vector2D.hpp é um desses arquivos que possuem classes milagrosas. Foi desenvolvida por ViniGodoy... que aliás tem um ótimo blog sobre SDL e OpenGL.
Damas - Um jogo de damas que tem uma IA bem +-... tô vendo que vou precisar dar uma melhorada nele.
.:: Conclusão ::. Desenvolver jogos em SDL é muito fácil... mas você deve ter reparado que desenvolver jogos não é tão fácil assim. Mesmo os jogos mais simples podem exigir o domínio de diversas técnicas. Se você estiver pensando em desenvolver o seu primeiro jogo começe de vagar. Os jogos de tabuleiro geralmente são mais simples... não tem movimento, animação ou colisão... é bem mais fácil que outros como um jogo de plataforma ou de naves.
Eis a parte desta série de tutoriais que todos esperavam. A hora de colocar as mãos na massa. Liberte toda sua criatividade desenhando mapas e escrevendo aventuras para seu jogo. Resgate agora mesmo aqueles rabiscos feitos em seus antigos cadernos de escola e comece a dar vida a todos eles !!!
» Post Completo....:: Mapas ::. Estou certo de que você já teve a curiosidade de saber como funciona um mapa em jogos 2D. Eles geralmente são formados por tiles. Mas você já editou algum em sua vida ?!
Mapa editado no RPG Maker.
Aqueles que responderam sim provavelmente estão falando do RPG Maker. A experiência de quem já é acostumado com o RPG Maker conta muita coisa, mas quem nunca o experimentou não precisa ficar preocupado. Neste tuto iremos abordar uma outra ferramenta chamada Tiled.
.:: Tiled - O editor de Mapas ::. Tiled é um editor genérico de mapas de tiles que roda em java. Ele é muito interessante, pois edita várias camadas de tiles e salva tudo em um xml (base64 e compactado). Ele segue um padrão que pode ser facilmente adotado por outros jogos... padrão que foi utilizado no jogo The Mana World ! (como eu havia descrito em: Carregando mapas 2D no formato TMX)
Nós vamos criar o nosso mapa agora mesmo, então, certifique-se de que você tem a máquina virtual do Java instalada, baixe o Tiled e o execute com o comando:
cd /caminho_completo_do_editor/ java -jar tiled.jar
Em seguida você verá uma interface como esta. (versão 0.7.2)
Ele é realmente muito simples... não tem segredo.
Então, vamos criar um novo mapa. Vá em file > New... ou digite Ctrl+N. Assim como na figura, crie um mapa Orthogonal de dimensões 32x32 e formado por tiles de dimensões 32x32. Feito isso a única coisa que você verá é uma área vazia. Sem nenhum tile para desenhar. obs.: Antes de prosseguirmos salve seu mapa no formato tmx (meu_primeiro_mapa.tmx). Os tilesets que for utilizar devem estar localizados neste mesmo diretório onde você salvou o mapa. Soltos ou organizados em outros diretórios.
Para poder desenhar tiles em nosso mapa precisamos de um tileset. Na pasta de exemplos do editor tem um bom tileset para ser utilizado: Para adicionar um tileset vá no menu e clique em Tilesets > New Tileset... e então escolha o tileset tmw_desert_spacing.png (imagem acima). Normalmente um tileset não possui espaços entre tiles, mas como esse possui nós precisamos informar isto ao editor. Tile spacing e Margin setados como 1 correspondem a esta configuração. Agora que você já possui um tileset, clique na lata de tinta, escolha o tile de areia e clique sobre a área vazia do mapa. Mude para a ferramenta lápis e desenhe algumas calçadas, pedras e plantas. Use o botão direito do mouse para selecionar tiles que irão flutuar sobre a tela. Assim você poderá editar mapas mais rapidamente.
Que tal adicionar mais um tileset para o mapa ficar um pouco mais diversificado ? Use este tileset de tiles duplos: Ao adicionar o tileset informe à opção Tile heigth o valor 64. Isto fará o Tiled reconhecer um tile um pouco maior que o configurado no mapa. Dessa forma: Experimente agora desenhar com tiles duplos... eles dão a impressão de altura ao objeto. Mas e as camadas ? Imagino que você deve estar se perguntando pra que servem as camadas... pois bem, experimente desenhar o tile do muro deste tileset: Obs.: Ao adicionar o tileset informe à opção Tile heigth o valor 96. Pois este é um tileset de tiles triplos. Me diga se ao desenhar o muro o resultado não foi este ? Um buraco no chão ? Isso acontece porque substituímos os tiles do piso por tiles que deveriam ser impressos sobre o piso. Tiles que possuem transparência devem ser impressos em uma camada separada. Para criar um nova camada clique no botão Add a layer localizado na aba Layers.
Agora só falta conhecer mais um detalhe: A camada de colisão.
Cada tile vermelho é um tile de obstrução. Tile que só tem efeito no próprio jogo.
Você pode usar qualquer tileset para esta camada, mas se quiser usar o mesmo que eu: .:: Criando mapas para o jogo The Mana World ::. Acima eu mostrei como criar mapas. Mas se você pretende criar um mapa para o TMW você deve seguir uma série de regras. Até porque o Tiled é o editor oficial do jogo, mas não foi feito exclusivamente para ele. As regras vão do diretório onde os tilesets devem ser encontrados até o nome das camadas. Mais detalhes em: Mapping Tutorial.
Algumas dicas: » Sistema de Diretórios - Para que o mapa seja corretamente carregado ele precisa respeitar o sistema de diretórios. Os tilesets devem ser encontrados em graphics/tiles e os mapas em maps. Dessa forma: » Novo Mapa - O mapa deve ser Orthogonal com tile de dimensões 32x32 e mapa de dimensões 60x60 (mínimo) a 200x200 (máximo). » Fronteiras - É recomendado reservar os 20 tiles mais extremos do mapa (diagrama). Não se deve ter acesso aos tiles destas bordas para que os senário não pareça limitado. Deixando a câmera correr livremente. » Passagens - Uma passagem é uma porta que leva a outro mapa. Mapas de cenários abertos devem ser envolvidos por algum tipo de obstáculo (montanhas, árvores, água, cercas) que reduza as passagens para alguns tiles. Pois as passagens (ou portas) não podem ser muito largas. » Novo tileset - Para adicionar um novo tileset sempre use Reference tiled image. Já Tile spacing e Transparent color não devem ser utilizados. Você pode obter os tilesets extraindo dos pacotes de atualização ou então copiando do repositório git (git://gitorious.org/tmwdata/mainline.git). » Camadas - Para que seu mapa tenha realmente um comportamento 2D suas camadas devem seguir uma ordem e nomes pré-determinados. »» Ground - Camada para terrenos. Nesta camada vão os tiles de grama, terra, areia, água, calçadas... tudo que faz parte do piso. Alguns tiles de pequenos objetos misturados ao piso também vão aqui. Regra: Devem estar abaixo da camada Fringe e possuir tiles totalmente preenchidos (sem transparência) para evitar bugs gráficos. Não precisa se chamar Ground. »» Fringe - Camada de objetos. Ela é que dá dimensão 2D ao mapa imprimindo objetos em movimento na frente ou atrás de seus tiles. Regra: Esta camada separa as camadas de piso das camadas de objetos aéreos. Precisa se chamar Fringe. »» Top - Camada de objetos aéreos. Nesta camada vão os tiles que estão acima da superfície do mapa ou aquele que você quer impresso sobre o personagem. Regra: Devem estar acima da camada Fringe. Não precisa se chamar Top. »» Collision - Camada de colisão. Esta camada não é visível no jogo e determina se um tile permite passagem ou não. Quando terminar de marcar os tiles que não permitem passagem pintes as áreas que ficarem inacessíveis, pois isto evita que o servidor coloque monstros nestas áreas. Regra: Somente o tile vermelho do tileset collision.png pode ser utilizado nesta camada. Precisa se chamar Collision. Então, vamos construir nosso primeiro mapa jogável pelo TMW !!! Primeiro baixe os dados de update diretamente do repositório utilizando o git:
cd $HOME git clone git://gitorious.org/tmwdata/mainline.git tmwdata
Antes de criar um novo mapa, experimente editar um pronto primeiro. abra o mapa 001-1.tmx pelo editor Tiled e faça algumas alterações. Para ver as alterações do mapa no jogo execute o cliente TMW de um modo diferente. Usando os parâmetros -u (para pular a tela de updates) e -d (para setar o novo diretório de dados). Dessa forma:
tmw -ud /home/nome_do_usuário/tmwdata
obs.: Substitua nome_do_usuário por seu nome de usuário. Feito isso é só entrar no jogo normalmente e ir até as alterações que você fez no mapa. Você verá os outros jogadores passando por tiles onde você impediu passagem, mas você não poderá fazer o mesmo. Teoricamente você também estaria passando por tiles bloqueados, mas o servidor não irá aceitar isto. Logo, para o servidor e outros jogadores, você não estará realmente passando por cima de tiles bloqueados. O jogo irá carregar seu mapa logo no começo da execução. Mudar o mapa não fará mudanças imediatas. Você terá que sair e entrar no jogo novamente. Para tornar este processo um pouco mais rápido você pode usar mais alguns comandos ao executar o cliente TMW:
obs.: Todos os comandos executados no terminal vão direto para o arquivo /$HOME/.bash_history... então tome cuidado com sua senha !!!
.:: Finalizando ::. O tutorial já está ficando muito extenso... e vou parando por aqui mesmo. Mas ainda tem espaço para mais dicas. Editar mapas é divertido e beeemmm demorado. É mais produtivo quando você já tem todo o mapa em mente, por isso fazer um esboço pode ser uma boa idéia. Se o mapa ficar realmente bom experimente enviar para o projeto TMW (Sending the map to the dev team). Mas é claro que você deve estar utilizando os tilesets do projeto e também criar um mapa que se encaixe no jogo. De qualquer forma, se você realmente for fazer um mapa para o projeto participe pelo menos do fórum.
O jogo TMW possui mais algumas propriedades, efeitos de partículas e Tiles animados. Coisas que não comentei por não ter total domínio... mas taí o link pra quem se interessar. Leia diretamente da fonte: Mapping Tutorial (TMW).
Para criar um pacote de atualização basta compactar os arquivos para um arquivo .zip e então adicioná-lo à lista de atualizações (resources2.txt) com seu respectivo hash. Este hash não é um hash comum, por isso você vai precisar do programa adler32. Mais detalhes em: How to release an update.
É 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
Caso você esteja tendo problemas com a clonagem, tente um outro link nesta lista de repositórios Git. 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/.
» 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
Este passo é opcional caso você mova os dados do TMWServer para o seu $HOME nomeado como 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).
Este usuário deve ser adicionado a esta lista. Você pode fazer isso copiando as informações acima ou substituindo account.txt por account.txt.example. Você 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:
Agora conecte-se com o seu cliente TMW e crie sua primeira conta para testar se tudo está funcionando bem. 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
2000000 é o id da sua conta. Para ter certeza de seu id verifique no arquivo account.txt. 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
Para criar um link simbólico em /home é preciso de privilégios de root. Ao invés disso, você pode mudar o endereço de update no arquivo conf/login_local.conf:
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:
Você estava jogando (maravilhado) um destes Multi Massive Online Role-Playing Game... MMORPG's da vida e de repente parou para se perguntar: Como será que eles funcionam ?! Como será que se faz um ?! Se você já se fez estas perguntas provavelmente morre de vontade de fazer o seu MMORPG's... e como você já tem muita experiência em jogos deste tipo estava precisando de uma mãozinha no desenvolvimento ! Pois você veio ao lugar certo !!!
» Post Completo....:: Caindo na real ::. Não encare como um sermão... mas a realidade do desenvolvimento de jogos não é um mundo virtual onde tudo acontece num passe de mágica. Envolve muito estudo e trabalho duro. Mas se você for dedicado com certeza chegará lá. (leitura recomentada: Como funciona a criação de videogames)
Mas voltando ao assunto anterior... você bolou novas idéias, mais efeitos especiais e mais emoção (mesmo pros momentos mais monótonos). Tudo que faria do seu jogo melhor que o jogo que acabara de jogar ! Afinal o Lag Age era muito bom, mas só no começo. Depois aquele lance de não ter nada pra fazer a não ser bater mais de mil vezes no mesmo monstro (digo literalmente) era entediante.
Então, decidido, qual é a primeira coisa que você faz ? a) Estudo muito sobre toda a teoria que envolva jogos e inicio pequenos projetos para que um dia eu possa criar o tão sonhado MMORPG. b) Me torno um roteirista (em menos de uma semana !), crio um cadastro num fórum de desenvolvimento de jogos qualquer e como minha primeira mensagem convoco programadores, desenhistas e demais profissionais para trabalharem (de graça !!!) no meu MMORPG que irá desbancar o Lag Age e todos os demais. Se a opção for b, meu pêsames. Pois uma hora dessas você já deve estar morto e enterrado. Fazer isto não é exatamente um crime, mas isto irá atrair a atenção de dezenas de trolls e estes irão se alimentar de toda a sua auto estima e força de vontade. Então se você quer criar um MMORPG comece pela opção a.
.:: Introdução ao MMORPG ::. Primeiramente o que significa RPG ? O Role-playing game (jogo de interpretação de Personagens) é um tipo de jogo em que os jogadores assumem os papeis de personagens. Em um jogo de RPG eletrônico, você controla personagens que seguem uma história pré-determinada, aonde seu personagem se desenvolve com o passar do tempo (Wikipedia). Da sua invenção, até os atuais, ele passou por muitas transformações. Uma delas foi a possibilidade de ser jogado por vários jogadores pela Internet, denominando-se MMORPG (Multi Massive Online RPG). RPG's geralmente envolvem uma grande trama no decorrer do jogo. É como um livro que se mergulha cada vez mais fundo a cada página lida. Os MMORPG's também deveriam ser da mesma forma, com a vantagem extra de serem para vários jogadores, mas os valores se perderam no ar. O que eu vejo são: RPG's com trama em primeiro plano e MMORPG's com trama em segundo plano. Seria interessante estudar os MMORPG's através dos RPG's. Afinal de contas, você quer criar um jogo original ou simplesmente um clone alienado por idéia pré-concebidas ?!
Não conheço muitos RPG's... mas conheço um que é uma verdadeira obra de arte !
Em relação aos recursos do jogo o MMORPG é uma evolução do RPG. O MMORPG tem tudo que o RPG tem e mais um pouco. Um RPG 2D pode ter mapas formado por várias camadas de tiles, personagens e monstros animados por sprites, quests e falas de personagens programadas por scripts, efeitos especiais por uma explosão de partículas e os mesmos cálculos matemáticos para golpes, defesas, habilidades e vulnerabilidades. Tudo isso sugere que se você for programar um MMORPG comece programando um RPG comum.
.:: RPG Maker ::. Existe uma ferramenta para construção de jogos no estilo RPG ?! Eu diria um sim tímido, pois apesar de ser conhecida ela tem seus defeitos... que podem ser pequenos ou enormes dependendo do seu projeto. Com a ferramenta RPG Maker é possível construir um RPG 2D sem a necessidades de conhecimentos aprofundados sobre programação. Com ela você pode editar mapas e quests através de janelas de diálogo e alguns botões. Além de possuir um grande banco de dados de itens, personagens, tileset's e outros recursos que podem ser utilizados em seu RPG.
Veja esta imagem do novo RPG Maker VX: Como você pode ver, com poucos botões eu criei um mapa e um personagem nele. Você também pode ver a janela do jogo em execução. Mas nem tudo é exatamente como eu gostaria que fosse: Não gostei nenhum pouco deste sistema de batalha... é lindo, mas não gostei. Gosto de batalhas abertas no próprio mapa e sem esta estória de ser abduzido !
Continuando... o RPG Maker é cheio de limitações e particularidades que tornam o seu jogo, por mais criativo que seja, uma mera cópia barata de um outro jogo qualquer. Sempre fica aquela impressão... "Acho que já vi este antes". Se o RPG Maker ainda existe é por conta de sua comunidade... afinal ele não deixa de ser divertido. O blog é meu e vou meter a porrada no RPG Maker ?! Mais ou menos por aí... mas deixo também uma entrevista que relata uma segunda opnião: Entrevista com Amanda Fitch, criadora do sucesso “Aveyond”
Como eu disse, o RPG Maker foi feito para construir jogos do tipo RPG e não MMORPG's. E mesmo alguns scripts prometendo milagres para transformar um simples jogo RPG em MMORPG, considero uma solução sem muito futuro. Seria preciso de uma ferramenta especialista para isto... logo... só vendo pra crer !!!
.:: MMORPG Maker ::. Então existe um MMORPG Maker ?! Sim e não !!! Não é exatamente uma ferramenta, mas vária. E também não são conhecidas como MMORPG Maker. Já ouviu falar de um jogo chamado The Mana World ?! Ele se tornou muito popular em meu blog: Carregando mapas 2D no formato TMX. Ele é um ótimo projeto MMORPG 2D sob licença GPL e pode nos ensinar muita coisa. Através dele eu conheci o editor tiled, para mapas 2D formados por tiles, e também o servidor eAthena (GPL), que serve como servidor para jogos MMORPG.
Jogo The Mana World:
Minha intensão é escrever uma série de tutoriais de como montar um MMORPG utilizando as mesmas ferramentas utilizadas no jogo The Mana World. Segundo esta ordem: » O cliente The Mana World. » O servidor eAthena. » O editor Tiled.
.:: O cliente The Mana World ::. O Jogo The Mana World se divide basicamente em três partes: » Cliente - Ele é o programa em si. É ele que você deve instalar para jogar online. É o cliente que mostrará tudo que acontece no servidor. Uma batalha é requisitada pelo cliente, mas ela ocorre no servidor. Todos os golpes dados e recebidos são enviados pelo servidor para que o cliente possa exibi-los. » Servidor - Onde você criou sua conta para poder se conectar. O servidor é responsável por todos os cálculos e controles como: quests, posições dos monstros e jogadores, troca de mensagens, e tudo mais que esteja ligado à lógica do jogo. » Updates ou dados - Este é o ponto que nos interessa. O update é nada menos que as imagens dos personagens, monstros, itens, armaduras, tilesets de mapas... todos os recursos que serão utilizados pelo cliente. O bom é que os dados do update são baixados pelo próprio cliente TMW e são relativos ao servidor ao qual você se conectou. O cliente TMW é um verdadeiro fliperama MMORPG... você pode se conectar a qualquer servidor (eAthena), baixar os dados deste servidor e jogar à vontade ! Cada servidor terá suas particularidades e também seu próprio cliente derivado do cliente TMW, mas no geral isso funciona ! Ele organiza os uptades de cada servidor em diretórios separados dentro do diretório /home/nome_usuário/.tmw/updates/. Esta organização já funciona à partir da versão 0.0.26.
O update do servidor original fica no diretório /home/nome_usuário/.tmw/updates/updates.themanaworld.org/, nele você irá encontrar vários arquivos compactados e também o arquivo resources2.txt. Os arquivos compactados são as várias atualizações disponibilizadas pelo servidor do The Mana World, mas nem todos os arquivos podem ser atualizações "atuais". Quem manda é o arquivo resources2.txt. É ele que diz quais os arquivos deverão ser extraídos e também a ordem que eles deverão ser extraídos.
Para extrair use o comando: unzip -ao sounds-3795.zip. Repita para todos os arquivos e na mesma ordem em que se encontram no arquivo resources2.txt. O cliente TMW não precisa dos arquivos extraídos, ele pode fazer isto virtualmente utilizando a lib libcurlPhysicsFS. Mas ele também irá procurar por arquivos extraídos, caso não os encontre nos arquivos compactados.
Experimente baixar e jogar The Mana World agora mesmo, pois no próximo artigo precisaremos dele. Para o próximo artigo precisaremos da versão 0.0.26, mas se você puder instalar a versão 0.0.27 melhor ainda ! Pois a versão 0.0.27 possui efeitos especiais extras.
Sou graduado em Ciência da Computação pela Universidade Federal do Tocantins (UFT) e estou em busca de novos cursos de pós-graduação... especialmente na área de desenvolvimento de jogos.
Sempre fui apaixonado por computação e sempre me dediquei à programação. Em minhas horas livre gosto de programar jogos em C++ e SDL.
Entre em contato comigo pelo Google Talk... terei o maior prazer em responder dúvidas... ou simplesmente bater um papo de desenvolvedor pra desenvolvedor !