O que é necessário para um browser game?

Olá pessoal,

Estou com a idéia de fazer um browser game(estilo Travian, TribalWars, etc).

No momento não tenho conhecimentos para isso, mas quero começar a estudar para fazer esse projetinho num futuro não muito distante.

Gostaria da ajuda de vocês para me indicares livros, artigos, tutoriais e técnologias que deverei saber para tocar isso pra frente.

Obrigado!

Leia atentamente o artigo.

[quote=entanglement]http://en.wikipedia.org/wiki/Massively_multiplayer_online_game

Leia atentamente o artigo. [/quote]

Eu já havia lido esse artigo, mas obrigado. :smiley:

O que eu preciso saber mesmo são as técnologias que precisarei saber e livros que abordem elas, para dar uma estudada.

Exemplo: HTML, CSS, JavaScript, VRaptor, etc.

Gostaria de saber quais técnologias usar, e o motivos para usa-las. E se possível indicar algum livro / artigo para estudo.

talvez esse tópico te ajude: http://www.guj.com.br/java/245205-sourceforge-jmmorpg-project/5

eu guardei ele aqui por que tem várias informações que achei legais.

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#…

espero ter ajudado…

1 curtida

Voltando com esse projeto. 8)

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.

Como fazer isso?

[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!

ainda usam muito flash com php…

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]

Qual é o seu objetivo com esse projeto pessoal? Só aprender sobre games e Java, ou tentar fazer um game comercialmente viável?

Um game comercialmente viável.

Usam PHP por ser rápido de codificar. Mas na prática, não vejo tanta diferença assim. O grande trabalho vai ser mesmo em cima de JavaScript/JQuery.

Quanto ao Hibernate 4, não tenho uma opnião formada.

[quote=maior_abandonado]talvez esse tópico te ajude: http://www.guj.com.br/java/245205-sourceforge-jmmorpg-project/5

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á.

  1. 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.

  2. Então quando eu faço algo no cliente ele salva no bd?
    Resp: Sim!

  3. 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.

Obrigado a todos que comentaram! ;D

Olá, não sei se ainda estão interessados nesse tópico.

Mas a dupla html 5 e jquery pode ser interessante.

Vejam esse pequeno exemplo: http://programadorprofissional.blogspot.com.br/2012/11/criando-jogos-em-html-5-utilizando.html
Fácil fácil desenhar no canvas.
Hoje em dia já tem muito jogo feito em html5 e muitos tutoriais na internet.

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

att

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.

Nesse meio tempo surgiram várias engines legais.

Ouço falar muito bem da Impact.js: http://impactjs.com/
E da cocos-javascript: http://cocos2d-javascript.org/

Já fiz alguns testes com a CAAT, que achei interessante: http://labs.hyperandroid.com/static/caat/
E um de meus alunos usou a MelonJS para fazer um game na Global Game JAM: http://www.melonjs.org/

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.