Adicionando multijogador a um jogo HTML5 [fechado]

15

Estou interessado em criar um jogo que atualmente tenha uma experiência cooperativa, no entanto, estou curioso para saber o melhor método de implementar isso no HTML5.

Eu fiz jogos antes de usar soquetes C retos e também com a biblioteca Net para SDL.

Quais são algumas das minhas melhores opções para fazer isso em um ambiente baseado em tela?

No momento, tudo o que posso apresentar são soluções AJAX / banco de dados (com uma alta taxa de atualização) ou, de alguma forma, implementar um servidor PHP que canalize os dados através de soquetes.


A jogabilidade geral seria do tipo jogo de plataforma 2.5D, de modo que os dois clientes precisariam ser atualizados continuamente com as posições dos jogadores, posições inimigas, projéteis, dados ambientais, etc.

te
fonte
11
Quando o websockets ( en.wikipedia.org/wiki/WebSockets ) é finalizado (e implementado etc.), isso provavelmente seria uma boa maneira, até então acho que o AJAX (sem o X, não é necessário XML para isso) provavelmente seria o melhor caminho (ainda não é uma maneira muito boa, suponho).
Eiva
Parece que o apoio a tomadas de web está caindo rápido ...
the_e
Você quer se posicionar ou jogar? Se você quer fazer jogo; não se preocupe ir para html5.
@stefan: por que não os dois? só porque não está finalizado ainda não significa que não posso trabalhar com ele!
7372

Respostas:

12

O Socket.IO oferece um sistema construído sobre várias outras camadas (incluindo websockets, flash, técnicas de cometa) com uma seleção elegante.

O Node.js é uma opção para executá-lo no lado do servidor.

Vincent Scheib
fonte
5

Veja esta resposta :

No entanto, você pode usar o Flash, quando disponível, para fornecer um script de reserva até que o WebSocket esteja amplamente disponível. O web-socket-js do Gimite é um exemplo gratuito disso. No entanto, você está sujeito às mesmas limitações que os Flash Sockets, a saber, que seu servidor deve ser capaz de cuspir uma política de domínio cruzado a pedido da porta de soquete, e muitas vezes você terá dificuldades com proxies / firewalls. (Os soquetes Flash são criados diretamente; para alguém sem acesso IP público direto que só pode sair da rede por meio de um proxy HTTP, eles não funcionarão.)

Ricket
fonte
3

" Cometa " é provavelmente um termo genérico que você poderia usar aqui. No entanto, os WebSockets serão uma opção mais desejável (quando ficarem satisfeitos que seja seguro).

casr
fonte
3

Node.js é a resposta. Eu o usei para desenvolver um jogo de tiro multiplayer em tempo real e levou cerca de 1 mês do início ao fim. Ele apresentou alguns desafios únicos, de modo que precisava ter latência mínima, e todos os jogadores devem permanecer sincronizados dentro de outro para que o conceito funcione.

O lado do cliente e o servidor são escritos em javascript e compartilham classes / lógicas entre si. Isso começa a contar ao tentar corrigir bugs, pois você não precisa implementar tudo duas vezes.

O jogo terminou, por cerca de 2 meses, sem ser reiniciado e milhares de partidas foram disputadas.

O Socket.io é uma implementação de sockets e usa o node.js, no entanto, neste momento, é muito inchado para um jogo. Existem outras implementações de websocket no github para node.js e também exemplos de jogos usando-o.

onedayitwillmake
fonte
2

Você sempre pode usar o AJAX e algum tipo de fila de mensagens. O ActiveMQ é um bom exemplo. Você executa o ActiveMQ no servidor, e seu JavaScript pode enviar e receber mensagens. Apenas faça com que cada jogador tenha um nome único e envie mensagens para o outro jogador.

Brendan Long
fonte
2

Você pode tentar usar o http://easywebsocket.org/ , é fácil de implementar e é uma solução sem servidor baseada no websocket :)

Pierre-Loic Doulcet
fonte
2

Atualmente, estou usando o seguinte: http://code.google.com/p/phpwebsocket/ como meu servidor de soquete para testar. Faz chamadas para os soquetes C que você está acostumado. Pode ser de algum serviço.

Tamler
fonte
2

Trabalhamos em uma plataforma multijogador que você pode achar interessante. Você pode ver nosso projeto em www.16cubes.com - estamos fornecendo uma camada javascript simples para fazer comunicação ponto a ponto. É um pouco baseado no princípio do cometa, e temos planos de passar a usar websockets à medida que se torna um pouco mais padronizado. Por outro lado, estamos fornecendo alguns recursos disponíveis, como correspondência automática de oponentes, bate-papo no jogo, convite com um clique para amigos do Facebook etc.

Temos uma demo tic-tac-toe, você provavelmente pode ter uma idéia melhor se a vir. E sim, você pode jogar anonimamente também. Não é necessário registro, se você não quiser. Há menos de 10 APIs javascript que você precisa codificar e está disponível em www.16cubes.com/documentation

Estamos buscando ativamente feedback, por isso avise-nos bons e maus


fonte