Resumo:
Meu sidecroller 2D de 50% com o Box2D como mecanismo de física deve ter suporte para vários jogadores na versão final. No entanto, o código atual é apenas um jogo para um jogador.
- O que eu deveria fazer agora?
- E mais importante, como devo implementar o multiplayer e combiná-lo com o singleplayer?
- É uma má ideia codificar o modo singleplayer separado do modo multiplayer (como Notch fez no Minecraft)?
O desempenho no singleplayer deve ser o melhor possível (simular a física com o uso de um servidor de loopback para implementar o modo singleplayer seria um problema)
Histórico completo / perguntas:
Estou trabalhando em um projeto de jogo 2D relativamente grande em C ++, com a física como elemento principal. (Eu uso o Box2D para isso)
O jogo final deve ter suporte completo para vários jogadores, no entanto, cometi o erro de não planejar adequadamente a parte da rede e basicamente trabalhei em um jogo para um jogador até agora.
Eu pensei que o suporte multiplayer poderia ser adicionado ao jogo singleplayer quase acabado de uma maneira relativamente fácil e clara, mas aparentemente, pelo que li, isso está errado.
Eu até li que um jogo multiplayer deve ser programado desde o início, com o modo singleplayer consistindo apenas em hospedar um servidor local invisível e conectar-se a ele por meio de loopback. (Eu descobri que a maioria dos mecanismos de jogos FPS faz dessa maneira, um exemplo seria Source)
Então, aqui estou eu, com meu jogo sidecroller 2D meio acabado e realmente não sei como continuar.
Simplesmente continuar trabalhando no singleplayer / cliente me parece inútil agora, pois eu teria que recodificar e refatorar ainda mais tarde.
Primeiro, uma pergunta geral para quem possivelmente se encontrou em uma situação como esta:
- Como devo proceder?
Então, o mais específico - eu tenho tentado descobrir como posso abordar a parte da rede para o meu jogo:
(Soluções possíveis:)
- Servidor invisível / loopback para um jogador
Isso teria a vantagem de que basicamente não há diferença entre o modo singleplayer e multiplayer. Não seria necessário muito código adicional.
Uma grande desvantagem: desempenho e outras limitações no singleplayer. Haveria duas simulações de física em execução. Um para o cliente e outro para o servidor de loopback.
Mesmo se você contornar, fornecendo um caminho direto para os dados do servidor de loopback, através da comunicação direta pelos encadeamentos, por exemplo, o singleplayer seria limitado.
Isso é um problema porque as pessoas devem poder brincar com massas de objetos de uma só vez.
- Modo singleplayer / multiplayer separado
Não haveria servidor envolvido no modo singleplayer.
Não tenho muita certeza de como isso funcionaria. Mas pelo menos acho que haveria muito trabalho adicional, porque todos os recursos para um jogador precisariam ser reimplementados ou colados no modo multiplayer.
- Modo multiplayer como um módulo para singleplayer
Este é apenas um pensamento rápido que tive. O multiplayer pode consistir em um jogo singleplayer, com um módulo de rede adicional carregado e conectado a um servidor, que envia e recebe dados e atualiza o mundo singleplayer.
Na retrospectiva, lamento não ter planejado o modo multiplayer anteriormente. Estou realmente preso neste momento e espero que alguém aqui possa me ajudar!