Pela minha experiência, há várias etapas pelas quais você terá que passar. A escolha de bibliotecas C ++ não é a mais urgente delas. Há coisas mais importantes que você terá que considerar.
Hospedagem
Em relação à hospedagem da sua tabela de classificação, você terá que fazer uma escolha. Você aluga servidores e pode escolher as tecnologias que deseja e fazer o que quiser. Ou você aluga um espaço de hospedagem e terá que trabalhar com os técnicos à sua disposição. Ou você usará uma das soluções em nuvem e precisará trabalhar com as restrições e vantagens delas.
É tudo uma questão de investimento em tempo de custo e reutilização. Se você já possui um servidor, pode tentar hospedar seus placares de líderes lá. Se você já usa um site hospedado, pode começar a criar protótipos com ele.
Pessoalmente, eu recomendaria alugar um servidor ou servidor virtual primeiro.
Essa pergunta merece um tópico próprio e deve ser respondida independentemente, se você tiver dificuldade em lidar com isso.
Serviço
As tecnologias de servidor que você usará dependem de você e dependem muito das soluções de hospedagem que você escolher.
DB
Claro que você pode começar com um armazenamento SQL, o MySQL é bastante barato, eficiente e simples de usar, suportado pela maioria dos provedores de hospedagem. Esta é a solução que tenho usado. Mas tenha cuidado quando se trata de escalabilidade, você pode se arrepender de usá-lo mais tarde.
Existem outras soluções melhores. Os servidores de banco de dados baseados em ERLANG, como o CouchDB, são bastante populares. Um deles, o RIAK é simples de distribuir em vários servidores, eficiente, usa JSON e é usado por grandes nomes como Mozilla e GitHub.
Processo interno
Você não concederá acesso ao seu armazenamento de dados diretamente de seus aplicativos clientes. Você precisará escrever um aplicativo para gerenciar autenticações, autorizações, algumas lógicas e acesso ao banco de dados.
Java, PHP e perl são frequentemente usados para escrever serviços da web que fornecem essas funções, são bem suportados por provedores de hospedagem e têm fortes comunidades de desenvolvedores.
Mas se você deseja evitar a sobrecarga de um servidor HTTP completo como o Apache, deve usar o nodeJS . É uma pegada baixa muito eficiente e uma solução rápida. Usado pelo e-bay, Microsoft e Linked-In. Ele se integra muito bem às configurações que usam JSON para troca de dados.
Projeto
O design do seu cabeçalho começará com o armazenamento de dados. O que você quer armazenar? Como você deseja armazená-lo e por quanto tempo?
Você deseja armazenar as pontuações, é claro (tempo, distância, pontos ...), mas com isso você tem vários níveis? você precisará armazenar os IDs de nível. Você suporta várias plataformas? Nesse caso, a dificuldade do jogo pode ser diferente em plataformas diferentes por razões técnicas ou demográficas, você também armazenará isso ...
Como você quer machucá-lo? Deseja manter apenas as melhores pontuações, substituindo todas as anteriores realizadas pelo jogador na mesma plataforma / nível / contexto? Ou você armazenará tudo para acompanhar todas as pontuações possíveis? Você manterá as pontuações anteriores descartadas para mineração de dados?
Depois de responder a essas perguntas, você pode começar a pensar na implementação.
Protocolo
Você deseja transferir dados de e para os clientes. Para isso, você precisará criar um bom protocolo de comunicação.
A escolha dos protocolos subjacentes é secundária nesta etapa (HTTP, TCP, UDP). Seja qual for sua escolha, você terá que elaborar seu próprio protocolo com cuidado para poder lidar com erros, alterações no protocolo, atualizações de aplicativos, etc.
Portanto, verifique se o aplicativo do servidor pode lidar com o fornecimento de dados para aplicativos atualizados e aplicativos que executam versões mais antigas também.
Certifique-se de proteger os dados transferidos de e para o servidor. Tenha cuidado ao proteger os uploads de pontuação, você pode usar chaves de hash, criptografia e outros mecanismos para proteger seu servidor de trapaceiros.
Qualquer que você escolha enviar dados binários ou de texto (JSON, XML), é com você. Mas, para flexibilidade e compatibilidade, eu recomendaria o JSON. Evite XML. Use binário se você realmente precisa / deseja.
Este tópico merece mais atenção e você pode ter mais perguntas ...
Cliente
O cliente terá que se integrar à sua solução. Você não deve escolher as camadas de protocolo e tecnologia do servidor com base no idioma do cliente. Você deve integrar sua solução de servidor ao seu jogo.
Se você escolheu JSON sobre HTTP, existem bibliotecas para isso.
Existem bibliotecas C / C ++ para JSON, eu recomendaria usá-las. Você pode escrever o seu próprio, se quiser. Eu escrevi uma pequena biblioteca JSON em questão de horas. Agora é usado em jogos em dezenas de plataformas.
Em relação ao HTTP em C ++, use algo mais moderno que o CURL. cpp-netlib deve fazer.
Cuidado com as codificações de caracteres etc. ao enviar os dados.
Autenticação
Para poder armazenar e exibir as melhores pontuações para seus usuários, eles precisam ser identificados de alguma forma. Existem várias maneiras.
O mais simples é nenhum. Use o campo Digite o nome aqui para exibir os nomes no placar.
Você também pode pedir aos jogadores que se registrem ... esse é um processo que desencoraja os jogadores.
Uma maneira de usar muito é a autenticação do Facebook. Dessa forma, você pode passar os dados de autenticação para ou através do servidor e obter dados sobre os amigos e servir tabelas de líderes personalizadas, como Tabela de classificação global, Tabela de classificação de amigos ...