A parte mais chata não é a parte Web (que é a que você está citando - e que você pode fazer do jeito que achar melhor) mas a parte de infraestrutura (“engine”) que lida com o jogo, que varia muito de jogo para jogo.
Exemplo de um MMOG escrito em Java:
eu comecei a fazer um, mais acabei desistindo por falta de tempo…
quando você chegar na parte do tempo, você vai ver várias pessoas falando sobre o cron…atualizar de 1 em 1 segundo etc…
só que há outras maneiras de se fazer…como…guardar a ultima atualização do servidor: 5:00h, quando qualquer usuário fizer uma requisição e a diferença for maior que 1segundo(questão de performance), você subtrai o horario da requisição com o horário da ultima atualização…
com o tempo em milissegundos, você realiza suas “formulinhas” e atualiza todas as tabelas do banco de todos os usuários: recursos, construções, ataques, pesquisas…
os combates são o “diferencial” do jogo, você tem que ter um bom algoritmo para fazer com que os jogadores tenham que usar estratégias, como quantidade de guerreiros de cada tipo para defesa/ataque, combate em equipe, defesa em equipe…etc… (essa parte é complexa pois se há muitos elementos que influenciam no ataque, quando o jogo fica com muitos jogadores com muitas tropas, o processamento pode ficar lento na hora H)
técnologias que você vai precisar aprender: Javascript, Jquery(ajax), Banco de dados, triggers e procedures,( html, css, menos importante). e alguma linguagem de escolha, PHP, Java, C#…
Como posso manipular o tempo real do jogo? Teria que usar uma biblioteca como a JodaTime rodando em uma thread?
Exemplos de uso:
O jogo mostrara o horário de brasília em tempo real. Construções e tropas tem um tempo para serem construídos/treinados.
Então, vamos supor que agora é 10h:21min:13s e uma contrução demora 5min para ficar pronta. Quando o horário do jogo for 10h:26min:13s essa construção deverá estar pronta.
[quote=gustavo_mb]Então, vamos supor que agora é 10h:21min:13s e uma contrução demora 5min para ficar pronta. Quando o horário do jogo for 10h:26min:13s essa construção deverá estar pronta.
Como fazer isso?[/quote]
Tive uma idéia maluca aqui:
Por que não tenta fazer o jogador te falar que algo existe, e você somente valida se ele está certo?
[quote=“gsutavo_mb”]Na verdade não havia pensado no uso do HTML 5 por não ser totalmente compatível com os browsers. Em que situação você acredita que o HTML 5 daria esse toque especial?
Estou estudando o seguinte, veja se estou no caminho certo:
Lado cliente: XHTML + CSS + JQuery
Lado servidor: Java + VRaptor 3 + Hibernate
Algumas dúvidas:
É aconselhavel o uso do Hibernate 4?
A maioria do browser games são em PHP. Há alguma vantagem do PHP em relação ao Java nessa situação?
[/quote]
Essa citação foi enviada ao Viny por MP e ele me orientou a postar no tópico. Quem souber responder, por favor opine!
html 5 nunca vi um browser game…ainda…logo logo pipocam por ai…
o lance é que sendo flash ou html+css+javascript…
pra inicio…tente montar um contador sincronizado, igual ao dos sites onde se espera X segundos para baixar alguma coisa
o que imagino, é que fique um contador no servidor…quando o cliente da refresh na tela, sistema pega o valor do contador, e imprime em uma função JS, quando essa função javascript termina, ela envia uma requisição para o servidor para verificar se o contador ja zerou, se sim, ela chama novamente outra requisição para puxar mais alguma informação do servidor
Desculpe, pensei se tratar de um trabalho de faculdade. Agora relendo, vi que vc não fala nada sobre isso. Nesse caso, o HTML5 poderia ser um assunto interessante para a pesquisa.
Se não é o caso, acho que você está no caminho certo.
[quote=ViniGodoy]Desculpe, pensei se tratar de um trabalho de faculdade. Agora relendo, vi que vc não fala nada sobre isso. Nesse caso, o HTML5 poderia ser um assunto interessante para a pesquisa.
Se não é o caso, acho que você está no caminho certo.[/quote]
Não é trabalho de faculdade, apenas um projeto pessoal. Vou dar estudada no HTML 5.
E quanto a essas dúvidas:
[quote=“gustavo_mb”]
É aconselhavel o uso do Hibernate 4?
A maioria do browser games são em PHP. Há alguma vantagem do PHP em relação ao Java nessa situação? [/quote]
eu guardei ele aqui por que tem várias informações que achei legais.[/quote]
Rapaz que saudade deste periodo, rsrsr… (Lembro disto no começo de minhas pesquisas praticas)
Obrigado pela referencia.
O projeto atualmente esta sendo continuado aqui: http://www.einformacao.com.br/parallax/
[quote=entanglement]A parte mais chata não é a parte Web (que é a que você está citando - e que você pode fazer do jeito que achar melhor) mas a parte de infraestrutura (“engine”) que lida com o jogo, que varia muito de jogo para jogo.
Exemplo de um MMOG escrito em Java:
[/quote]
O Project DarksTar agora se chama RedDwarf (http://www.reddwarfserver.org/)
Neste caso ele não serviria (Apesar que pode servir para algo similar em outra situação, comentaria já já sobre isto), se quer fazer mesmo um “Game Browser”, por motivo obvio a massa esta recorrendo a um simples site php + mysql, andei dando uma estudada em relação a eles e documentação referente a criação deles é obscura ( como muita coisa nesta área hahaha…), parei para anlizar o travian ( tenho conta lá, é bem divertido e o Gladiatus ao qual minha esposa usa. xD ).
Sinceramente, eles parecem usar as mesmas regras normais de um site “CRUD based”, o diferencial é que de forma temporal eles mantem atualizados os dados em tempo “real” os dados no cliente.
Como poderia fazer isto? bom a pergunta chega a ser mais importante que a resposta, então vamos lá.
Quando carrego a pagina ele precisa me dar os dados atualizados do banco? E ele precisa forçar os outros clientes a commitarem possiveis atualizações?
Resp: sim! Não, pois como qualquer sistema normal a ordem de chegada e requisição prevalece e se imagina que qualquer ação nos outros clientes vai ser commitado, logo tua informação vai estar o mais atualizado possivel.
Então quando eu faço algo no cliente ele salva no bd?
Resp: Sim!
E quanto a temporização a cada X tempo preciso checar se algo deve ser feito como faço?
Resp: Aqui vai um pouco da imaginação de cada um (A solução do douglaskd foi boa), vamos pensar juntos, poderia por um temporizador no lado cliente se possível? Ser der seria interessante, enquanto a pagina ficar aberta a cada X seg ele olha o BD (normalmente vai estar filtrado por coisas em andamento, o que deve deixar o resultado da pesquisa pequeno), fazendo com que o cliente só veja e solicite atualizações do servidor enquanto a pagina estiver aberta, ao fechar a pagina não teria nenhuma pergunta indo ao servidor.
Posso fazer isso temporizando no lado servidor, posso desde que manipule o fato da sessão esta aberta ou fechada para parar as requisições ao bd e envia-las ao cliente (Se necessário).
Sabendo o que quer fazer e onde o como fica até relativamente fácil (Se conhecer a linguagem).
Um web browser game, poderia ser interessante com HTML 5 e Node.JS.
HTML5 principalmente com o uso de Canvas (nova tag para renderização gráfica)
E o Node.JS para fácil conectividade entre a camada visual HTML com websocket.
Eu tenho alguma experiência nesses dois, no caso, tente pesquisar essas tecnologias e poste suas dúvidas novamente aqui. Acredito que, mesmo sendo novas, é uma forte tendência para web game.
[quote=Grinvon]Um web browser game, poderia ser interessante com HTML 5 e Node.JS.
HTML5 principalmente com o uso de Canvas (nova tag para renderização gráfica)
E o Node.JS para fácil conectividade entre a camada visual HTML com websocket.
Eu tenho alguma experiência nesses dois, no caso, tente pesquisar essas tecnologias e poste suas dúvidas novamente aqui. Acredito que, mesmo sendo novas, é uma forte tendência para web game.[/quote]
O problema de se utilizar o HTML 5 nesse caso, é que nem todos os navegadores são compatíveis, e fica deselegante obrigar o cliente(jogador) baixar o browser para ter que jogar o jogo. Não conheço Node.JS, vou dar uma pesquisada.
No código do jogo pode-se misturar chamadas ajax para atualizar o status no servidor.
Por exemplo chamando $(’#status’).load(‘salvar_jogo.php?pontos=’+pontos); quando o framecount chegar a cada 1000 de intervalo, ou quando algum outro evento for disparado
8 meses depois a coisa melhorou muito. Mas o fato é que o HTML5 continua não estando pronto.
A parte de som ainda não está bem resolvida, nem o suporte em todos os navegadores (em especial o IE).
É claro que para o tipo de browser game que o autor do tópico falou, é mais do que suficiente.
O bom de ver isso, é que dá para ver que muita gente está apostando no HTML5 e criando ferramental para isso.
Assim que o padrão for oficialmente lançado, já vai ter muita coisa bacana para se trabalhar.