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

Cena de abertura de packs para card game com visual premium em Godot 4.6 - Quero uma cena de box e a mecânica de abrir boxes/packs muito similar ao que acontece em Yu-Gi-Oh Duel Links, porém com originalidade e identidade própria. Quero visual premium,...

Criação de jogos no Roblox Studio - Este trabalho tem como objetivo o desenvolvimento de uma experiência interativa utilizando o Roblox Studio, explorando conceitos de programação, lógica e design de jogos....

Desenvolvimento de scripts e design para FiveM - Desenvolver scripts para FiveM conforme a ideia e solicitação do cliente e realizar design conforme a demanda de pedidos. Trabalho inclui criação e customizaç&at...

Criar servidor Discord para FiveM (GTA RP) - Realizar a criação de canais e cargos para um servidor de GTA RP (FiveM). Projeto de cidade nova; preciso que o servidor esteja pronto para abertura em 7 dias. Inclui estrutura&ccedi...

Criar protótipo funcional em Unity de auto-battler estilo TFT - Criar protótipo funcional em Unity de um auto-battler 2D (estilo TFT). O foco é a lógica de combate automático, o sistema de economia/loja e a evolução ao ...

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.