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_collide.zip - Um exemplo de código que mostra como tratar colisão. Ele quase se encaixou no trabalho do jogo come ponto. Também pode ser encontrado em: SDL_Collide - Colisão 2D para jogos
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_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 !!!
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.
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.
.:: Jogos de Exemplo ::.
.:: 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.
.:: Menu Rápido ::.
Linux | C/C++ | Downloads | SDL | [×]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 !!!
- Script's GIMP - Python-Fu !!!
- Dicas Web
- Vídeo Compiz Fusion (Desktop 3D)
- Compilando com gcc e Makefile
- Que tal mudar para Ubuntu ?!
- SDL - A Biblioteca dos Jogos 2D
- Analisador léxico de arquivos script
- Simpatizando com a Libxml2
- AsciiGen - Tabela ASCII em C
- Conexão com API C do MySQL
- Compilando com gcc e Makefile
Tópicos: downloads
Se você quer aprender a programar jogos... SDL !!!
- Carregando mapas 2D no formato TMX
- Controle de tempo e Frame Rate
- SDL em Processamento de Imagens
- SDL_Surface - Introdução detalhada
- Imprimindo texto com SDL_Ttf
- SDL_Collide - Colisão 2D para jogos
- Tocando música e sons com SDL_mixer
- Gerando e carregando mapas 2D em jogos
- SDL - A Biblioteca dos Jogos 2D
terça-feira, 5 de maio de 2009
Apresentação da SDL na aula de P.A.
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...
Postado por
Diogo_RBG
6
comentários
terça-feira, 31 de março de 2009
Construindo um MMORPG - Parte 3
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 ?!

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

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.

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
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:
tmw -ud /home/nome_do_usuário/tmwdata -U nome_do_usuário -P senha_do_usuário
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.
.:: Link's ::.
» Tiled
» Tiled Wiki
» Game map edition using Tiled (Silveira Neto)
» Mapping Tutorial (TMW)
» How to release an update (TMW)
---
Fico devendo os scripts para o próximo !!!
Postado por
Diogo_RBG
5
comentários
Tópicos: jogos
sexta-feira, 20 de fevereiro de 2009
Construindo um MMORPG - Parte 2
git clone git://gitorious.org/tmw-eathena/mainline.git eathena cd .. gcc -o eathena-monitor eathena-monitor.c cd $HOME // Server name, no more than 19 characters // Character Server IP update_host: http://updates.themanaworld.org/ 0 s1 p1 2009-02-19 23:15:42.856 S 699 0 a@a.com - 0 127.0.0.1 - 0 ./eathena.sh start diogorbg@pc:~/tmwserver$ ./eathena.sh start // <account ID> <level> cd $HOME update_host: file:///home/updates adler32 new-update.zip >> resources2.txt
É 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:
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/:
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/.
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/).
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: MMORPG REVOLUTION
// Login Server IP
login_ip:127.0.0.1
// Character Server IP
char_ip:127.0.0.1
» conf/map_local.conf:
char_ip:127.0.0.1
// Map Server IP
map_ip:127.0.0.1
» conf/login_local.conf:
» save/account.txt: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:
./eathena.sh restart
./eathena.sh stop
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:
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:
ln -s /caminho_completo_ate_o_diretorio/eathena-tux tmwserver
ln -s /caminho_completo_ate_o_diretorio/updates /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:
.:: 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.
Postado por
Diogo_RBG
14
comentários
Tópicos: jogos
sexta-feira, 23 de janeiro de 2009
Construindo um MMORPG - Parte 1
sounds-3795.zip 890b723c
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 !
Site oficial do do Cave Story (Doukutsu Monogatari)
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.
ambient-3795.zip 2942034a
tiles-3961.zip 5d9b6141
update-3998-4056.zip bc599f23
sprites-4235.zip 7d8a966c
update-4235-4319.zip 52b261c0
update-4319-4411.zip 7f87b88
particles-4412-4604.zip df32f8ed
update-4412-4604.zip d2078869
update-4604-4625.zip f7e1230e
update-4665-4696.zip f96a6c39
update-4732-4789.zip deec551
update-4789-4802.zip 8253631
update-4846-4957.zip e06f0358
update-4957-4963.zip cbc40a88
update-92f5898-5e3b3ca.zip c5a98a9e
database-5e3b3ca.zip f1380cc0
update-5e3b3ca..03da427.zip 218a7faf
update-03da427..54e6da8.zip 3ff4fcfb
items-54e6da8.zip e0512e95
update-54e6da8..b5a9d98.zip 8f561d9a
update-b5a9d98..589d43c.zip 2219df21
update-589d43c..90f54d3.zip 8a53af60
update-90f54d3..a915928.zip c6b49f79
update-a915928..3108eb8.zip 2a7577a9
update-3108eb8..82f97c6.zip 91a8f8f7
O cliente TMW não precisa dos arquivos extraídos, ele pode fazer isto virtualmente utilizando a lib libcurl PhysicsFS. 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.
.:: Link's ::.
» Como funciona a criação de videogames
» Cave Story (Doukutsu Monogatari)
Postado por
Diogo_RBG
12
comentários
Tópicos: jogos
quinta-feira, 22 de janeiro de 2009
[off-topic] Meme Aleatoriedades
Inicio este ano com o Meme Aleatoriedades. O qual Vinícius Godoy me intimou a participar. ARQUITETO: Você arriscou demais.
Minha ultima postagem foi em dezembro e antes desta foi em julho (seis meses atrás). Mas este ano pretendo aquecer as coisas por aqui. Inclusive já iniciei um trabalho sobre MMORPG's.
» Post Completo....:: Regras ::.
1. Linkar a pessoa que te indicou.
2. Escrever as regras do meme em seu blog.
3. Contar 6 coisas aleatórias sobre você.
4. Indique mais 6 pessoas e coloque os links no final do post.
5. Deixe a pessoa saber que você o indicou, deixando um comentário para ela.
6. Deixe os indicados saberem quando você publicar seu post.
.:: Aleatoriedades ::.
1. Minha cor preferida sempre foi verde cana. Inclusive nem digo verde, mas sim VÊÊÊRDE !!!
Gosto de verde dês de criança e hoje gosto mais ainda porque acho que verde é a cor da computação.
Uso verde onde posso. O blog é verde, meu papel de parede é um gramado verde e meu carro (num futuro não muito distante) também será verde !!!
2. Se tem um filme que idolatro é o Matrix. Gosto de todos eles. Principalmente o terceiro que terminou de forma incrível.
Último diálogo entre o Oráculo e o Arquiteto:
ORÁCULO: A mudança sempre é.
ARQUITETO: Por quanto tempo acha que essa paz vai durar?
ORÁCULO: O quanto for possível. ... E quanto aos outros?
ARQUITETO: Que outros?
ORÁCULO: Os que quiserem sair.
ARQUITETO: Obviamente serão libertados.
ORÁCULO: Tenho sua palavra?
ARQUITETO: O que acha que eu sou? Humano?
3. Eu tenho uma importante teoria que diz: A bola é redonda.
Não estou brincando... eu inclusive posso provar isto !
É que minhas outras habilidades incluem sinuca. E quando estou ensinando alguém a jogar eu logo digo: A bola é redonda.
Ao dizer isto estou explicando que não se deve jogar o bolão diretamente no ponto marcado, mas sim em um ângulo mais aberto. O Bolão é redondo e possui raio. O que é diferente de jogar com uma partícula.
Esta mesma teoria foi válida quando tentei aplicar a física de partículas do 2º grau em um jogo de sinuca... não deu certo. Esferas são bem diferentes de partículas.
4. Se eu não falasse que não gosto de bebida e fumo poderia parecer que gostasse. Sendo que na verdade eu detesto.
Na boa... sala com ar condicionado (não ventilada) e cigarro não combinam.
5. Se eu tenho um vício, são os jogos. Mas não é nada grave... é sadio e moderado. Nunca briguei nem apostei nada em jogos. Gosto deles pelo simples prazer do desafio.
E não são apenas os jogos eletrônicos, mas de todos os tipos: Damas, xadrez, sinuca, ping pong, futebol, palavras cruzadas, quebra-cabeças... qualquer coisa que não envolva apenas sorte.
6. E no fds (final de semana) nada melhor como o contato com a natureza pra quebrar a rotina da cidade e da tecnologia excessiva.
Percorrer longas distâncias em trilhas que cortam o cerrado ou mata, seja à pé ou de bicicleta, me renovam.
Em Palmas, um lugar que sempre gostei de visitar foi o parque Cesamar. Ele possui uma pista de 2km em torno de um lago que é ótimo para caminhar. E você ainda topa com animais por todo o caminho... só não é bom topar com cobras !
Para continuar a Meme eu convido Renê, Rômulo e Erick.
A lista poderia ser maior... talvez eu a aumente depois !
--
Esperem pelo próximo post... é sobre MMORPG !
Postado por
Diogo_RBG
1 comentários
Tópicos: off-topic


