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 ?! sounds-3795.zip 890b723c
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)
.:: Menu Rápido ::.
Linux | C/C++ | Downloads | SDL | [×]
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 !!!
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 ?!
C e C++ são minhas linguagens de programação. No começo foi muito difícil, mas agora já estou mais prático (Ainda não é fácil).
- 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
Jogos e programas de minha autoria !
- DR Tetris 0.3 - Tetris no estilo tradicional !
- DR Quebra-Cabeça disponível para download !!!
- Freeggs - Liberdade aos ovos \o/
Se você quer aprender a desenhar... lápis e palel.
Se você quer aprender a programar jogos... SDL !!!
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
sexta-feira, 23 de janeiro de 2009
Construindo um MMORPG - Parte 1
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...
Tópicos: jogos
Assinar:
Postar comentários (Atom)
14 comentários:
Olá Diogo, tudo bom? Conheci seu blog pelo site do Vinygodoi e acompanho tem uns 6 meses já...primeira vez q posto..hehehe!! tem um ano mais ou menos que eu e um amigo meu juntamos pra fazer um MMO, idêntico ao que vc postou ai..jogavamos muito e queriamos fazer!! hehehe..eu sou programador PHP tem 5 anos...creio que não terei problemas com programação em outras linguagens...ai eu tava tentando fazer um servidorzinho em C++ (aprendendo ao mesmo tempo) no linux e o resto no windows com o code::blocks...tive muitos problemas com sockets no linux e acabei que mudei pra java (Aprendendo também)..a gente conseguiu mais duas pessoas para o projeto..hehe..para design e 3D..não sabemos muito e estamos aprendendo com o tempo..tenho um acervo de links muito grande..envolvendo o seu e o do viny...eu gostaria de tirar umas dúvidas na teoria..tipo algo que estou em dúvidas no funcionamento do jogo..por exemplo..como o cliente irá conectar no banco de dados do servidor, sendo que ele não pode de maneira nenhuma conter os dados desse servidor? um amigo meu do www.projetoarret.com.br me falou q passava todas as informações (SELECT, INSERT e UPDATE) pelo socket...mas ai é que tá..se tiver 100 pessoas fazendo isso acaba com o server...correto??
Esses seus artigos irão me ajudar muito em todas essas partes...hehehe
Obrigado ai..pode ter certeza que vou acompanhar os seus próximos post e estou esperando os próximos artigos sobre MMO!!
Abraço
Eu apenas iniciei meus estudos sobre servidores MMORPG e ainda não tive a curiosidade de saber o que se passa entre o cliente TMW e o servidor eAthena.
Mas passar SELECT, INSERT e UPTADE por socket é no mínimo uma falha de segurança:
Veja isto: "Falha ao Preservar a Estrutura da Busca SQL (conhecido como Injeção de SQL): Se os atacantes podem influenciar as procuras SQL do seu programa, então eles podem controlar o seu banco de dados."
Quanto ao número de usuários que seu MMORPG pode suportar vai depender do seu servidor e também da intensidade de interação entre cliente e servidor... eu também não saberia pra onde correr !!!
Boa sorte com seu projeto e obrigado pela força !!!
Do jeito que eu conversei com ele foi o que deu a entender..não sei se são os dados ou se são os SELECTS...mas eu penso que se passasse as informações do banco de dados (ip, login e senha) pelo socket fica mais perigoso ainda..não?
Eu tenho um estudo legal em SQL Injection na parte de PHP...vou dar um look nele para a parte de linguagens de desktop!! Valeu
Obrigado!
Um Servidor MMO segue os mesmos princípios dos servidores web.
Para manter a segurança banco de dados do servidor: ip, login e senha do banco de dados são conhecidos apenas pelo servidor.
O servidor é o único que tem acesso ao banco de dados e é ele que gera os SELECT's e tudo mais.
O cliente acessa a base de dados de forma indireta... ele pede tudo ao servidor.
Para manter a segurança do cliente já é mais complicado. Para preservar a senha basta envia-la codificada por um hash MD5 MD5(login+senha). No banco de dados a senha tbm está gravada de forma codificada. Para garantir a segurança do usuário de verdade já é mais difícil. Mas funciona do mesmo modo que o protocolo https.
É muito difícil fazer um jogo interativo em rede, principalmente na Internet, já que você tem que gerenciar atrasos de conexão.
Os jogos atuais já fazem misérias para disfarçar o lag e só esse aspecto já é bastante complicado de ser programado.
Esqueça jogos de ações de tempo real ou comportamento muito previsível.
Existem também as preocupações com segurança. Se você deixar coisas para o client fazer, você reduz a carga do server, mas permite que seus jogadores criem game hacks. Se você deixar tudo no server, terá que garantir um enorme poder de processamento. Existirão pessoas tentando descobrir como funciona o seu protocolo para tirar proveito de falhas no servidor.
Depois, tem o fato dele ser massivo. São 8000 jogadores realizando ações ao mesmo tempo, o que implica em ter uma IA leve e bem feita. Isso explica porque a IA de jogos massivos é geralmente rudimentar.
Eu não me preocuparia tanto com o BD, no quesito performance ou carga. Eles são feitos para muito mais transações do que isso. Eu me preocuparia mais em como organizar os dados para que boa parte deles possam ser mantidos na memória do client, sem muito acesso ao servidor. O que realmente compromete a performance na rede é fazer consultas constantes ao banco. Cada SELECT enviado sofre o mesmo lag do jogo, tanto na ida do comando pro server, quanto na volta dos dados para o client.
ou seja...vc indica enviar o login, senha e ip pelo socket e assim nao precisa mais conectar e fazer selects pelo socket? (o bd)...
e nessa questão de desenvolvimento, segurança e criações de ferramentas vc indica C++ ou Java Vini?? pois pelo que eu lembre vc desenvolve os dois!!
Percebo que login, senha e IP são uma dúvida cruel a vc ! O que o vini disse não contradiz nada do que eu disse antes... login, senha e IP do banco de dados é uma coisa que o cliente nunca irá saber.
O login, senha e IP que pertencentes ao cliente são:
* login e senha do jogador
* IP do servidor... não do banco de dados.
Para que a senha do jogador não seja pega pela rede a gente codifica ela em hash: Hash(login+senha)... mas só isso não garante muita coisa. Eu pensei em outra coisa também: O cliente e o servidor combinam uma palavra qualquer... que pode ser inclusive ser uma data e daí vc manda assim: MD5(palavra+MD5(login+senha)) e o servidor compara com MD5(palavra+hash_senha).
hash_senha é o que foi gravado na base de dados e corresponde a MD5(login+senha).
C++ ou Java... eu respondo essa com outro post: O jogo, pasmem, é feito em Java e roda razoavelmente bem. Acho que fosse feita em C++...
Oi Diogo,
Primeiro parabéns pelo blog, acabei de encontrá-lo e ainda estou me "divertindo".
Quanto à questão de autenticação, senha, e etc. Bom todo bom amante de MMORPG, sabe que mais dia menos dia acabam aparecendo os famigerados bots, dupes, hit maximizers, auto-heals, etc.
Esta sem dúvida é uma questão que dá pano para manga e está diretamente ligada à intercepção de dados entre cliente/servidor. Sinceramente, até hoje não joguei nenhum MMORPG que conseguisse "fechar todas suas portas" para tal vulnerabilidade.
Well... fora isto, gostaria de saber de vocês se alguém conhece um bom gerador de snippets para C++ que pudesse ser utilizado aqui no Blogger. Estou retomando meus estudos de Computação Gráfica e eventualmente vou querer postar alguns trechos de código no meu blog.
Sobre o uso de bots... bem, neste caso é ainda mais fácil deles existirem para seu jogo, pois qualquer bot feito para o servidor eAthena pode ser utilizado aqui ! Não tem pra onde correr !
Eu não conheço nenhum snippets que possa ser utilizado no blogger. Eu apenas utilizo um div com alguns parâmetros que tornam o parágrafo diferente dos demais... sem qualquer destaque de sintaxe.
Legal o seu blog. Não pude deixar de reparar que seu blog está todo em Inglês !
Encontrei um formatador de snippets:
SyntaxHighlighter
Eis aqui um tutorial de como espetar no Blogger.
Para dizer a verdade não gostei muito... principalmente porquê quando você dá [ctr]+c/[ctrl]+v o número das linhas vêem junto. Não gostei muito... mas é melhor que nada.
Sobre meu blog estar em inglês... bom não é antinacionalismo não... é que via de regra, na época que eu estudava, eu conseguia encontrar muito mais gente utilizando o inglês. Vou estudar uma forma de manter um blog em paralelo em português, ou então algum esquema de transliteração.
[]s e obrigado!
um dos meus amigos do projeto me falou existe um MMO q é impossível de se hackeiar...
www.talesofpirates.com
não sei..não joguei e não olhei direito..hehehe..mas eh uma boa dar uma pesquisada pra ver como realmente funciona!!
digo..em questões de segurança e se existe realmente algo sobre!!
Sei não... me parece propagando enganosa !!!
É que nem algoritmo de criptografia. Você só não o quebra porque tem mais o que fazer. A recompensa não vale o esforço do tempo e quantidade de máquinas necessárias para o feito.
Só jogando pra crer !!!
Ja joguei tales of pirates...
E essa coisa de que nao pode ser hackear é mentira !
tinha um hack la de trade...
Voce colocava itens no trade e o trade era cancelado e seus itens desapareciam!
Mas pelo visto ja corrigiram este problema nunca mais ouvi falar sobre isso.
Esse seu post e muito interessante para mim.
ele tem continuações não achei link para próxima parte. ou você finalizou ele?
Postar um comentário