Pesquisar

Ajustar multiplayer de simulador de TCG

25/11/2025 às 08:48

Descrição do Projeto:

Tenho um simulador de TCG (jogo de cartas) desenvolvido em HTML, CSS e JavaScript, com backend simples usando Node.js, Express e ws (WebSocket).
O modo single player e o modo “vs IA” estão funcionando normalmente.
O modo multiplayer (MP) já conecta, cria salas e envia mensagens, mas ainda não está sincronizando tudo corretamente.

O projeto está hospedado no Render e versionado no GitHub.

Preciso de um desenvolvedor para:

• Ajustar o modo multiplayer (P1 vs P2)
• Corrigir a sincronização de escolha de líder
• Sincronizar todos os estados iniciais e ações durante a partida
• Corrigir o funcionamento dos “fragmentos” (mana) no MP

---

Situação atual do multiplayer:

O que já funciona:

• P1 cria sala com código (ex: TESTE123)
• P2 entra com o mesmo código
• Ambos entram via URL MP (mp-game.html?room=XXXX&side=p1/p2&mode=mp)
• WebSocket conecta
• Algumas ações chegam em ambos os lados

O que está errado:

1. Escolha do líder:

• P2 escolhe o líder corretamente.
• No P1, o líder do P2 até aparece na mesa.
• Mas P1 continua com a mensagem “Aguardando ambos escolherem o líder”.
• Ou seja: o evento chega, mas a flag de “pronto” não é atualizada corretamente.

2. Fragmentos (mana) não sincronizam:

• Os fragmentos gerados/invocados por cada jogador aparecem só localmente.
• O outro jogador não vê a quantidade correta.
• Às vezes, fragmentos aparecem como valores aleatórios.
• A mudança de fragmentos durante a partida (gastar/receber mana) não chega do outro lado.

3. Espelhamento de ações incompleto:

• Algumas ações vão e voltam, outras não são aplicadas no cliente remoto.
• O estado de mesa fica inconsistente entre P1 e P2.

---

O que preciso exatamente:

1. Ajustar a sincronização do estado inicial:

• Escolha de líder
• Escolha de deck
• Flags de pronto (p1Ready/p2Ready)
• Remover corretamente a mensagem “aguardando ambos”

2. Sincronizar os fragmentos (mana):

• Os fragmentos são essenciais no jogo e precisam:
• Aparecer igual para P1 e P2
• Atualizar em tempo real quando são gastos
• Atualizar em tempo real quando são gerados
• Manter valores consistentes durante todo o turno
• Ser enviados e recebidos corretamente via WebSocket

3. Ajustar o pipeline multiplayer (client + server):

• Net.sendAction
• wsClient
• Dispatcher.apply
• applyX() das ações internas
• Estrutura do snapshot inicial da partida
• Replicar ações de forma simétrica para ambos os lados

4. Testar fluxo completo:

• Início da partida
• Compra de cartas
• Fragmentos funcionando
• Invocar aliados
• Ataques
• Mudança de fases

---

Requisitos técnicos:

• JavaScript (domínio)
• Node.js (Express + ws)
• Experiência com WebSocket e sincronização de estado
• Experiência com jogos em turno é diferencial

---

Entregáveis:

• Modo multiplayer 100% funcional:
• P1 x P2 com estado idêntico dos dois lados
• Fragmentos funcionando corretamente e sincronizados
• Escolha de líder funcionando
• Ações replicadas corretamente
• Comentários explicando o fluxo MP
• Pequena explicação textual de como manter o código

---

Critério de aceite:

Testarei abrindo dois navegadores:

1. P1 cria sala
2. P2 entra
3. Ambos escolhem o líder – partida começa sem travar
4. Fragmentos idênticos dos dois lados
5. Invocação, ataque e ações espelhando corretamente.

Atividades do cliente nesse projeto:

Última visualização: 14/01/2026 às 23:54

Última interação: 05/12/2025 às 11:39

Informações adicionais

Categoria: Web, Mobile & Software
Subcategoria: Desenvolvimento de Games
Orçamento: Aberto
Nível de experiência: Intermediário
Visibilidade: Público
Propostas: 5
Interessados: 8
Valor Mínimo: R$ 50,00

Cliente

Freelancer vencedor

Propostas (5)
  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

Nenhuma proposta foi encontrada.

Carregando...
Projetos semelhantes no 99Freelas

Jogo de luta e tiro em Unity estilo RPG com multiplayer e coop - Criar um jogo de luta e tiro na Unity, estilo RPG. Deve combinar combate corpo a corpo, tiroteios e elementos de bruxaria/magia. Requisitos principais: • Desenvolvido em Unity. • Estilo ...

Desenvolvimento de recursos educacionais em Unity - Estou procurando alguém com experiência em Unity, especialmente na criação de recursos educacionais em 2D, 3D e/ou realidade virtual. É importante que o profissio...

Desenvolvedor de jogo para Roblox (tema Dark Seas / One Piece) - Criação de jogo no Roblox (Tema: Dark Seas) Olá! Estou buscando um desenvolvedor com experiência em Roblox Studio e na linguagem Lua para criar um jogo original e intera...

Mod para Among Us focado na interceptação da escolha de funções - Preciso de um mod para o jogo Among Us. O objetivo é criar um painel para interceptar a seleção de funções, permitindo aumentar a porcentagem de o host ser design...

Desenvolver jogo PacMan personalizado para evento - Estamos em busca de um profissional que desenvolva um jogo personalizado PacMan com a identidade do nosso negócio para um evento que ocorrerá no dia 31/03. Iremos utilizar a TV que j...

Carregando...

Carregando...

Pesquisar

FREELANCERS
PROJETOS
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.