Nach meiner Erfahrung müssen Sie mehrere Schritte ausführen. Die Auswahl von C ++ - Bibliotheken ist nicht die dringendste. Es gibt wichtigere Dinge, die Sie berücksichtigen müssen.
Hosting
In Bezug auf das Hosting Ihrer Rangliste müssen Sie eine Wahl treffen. Entweder Sie mieten Server und Sie können die gewünschten Technologien auswählen und tun, was Sie wollen. Oder Sie mieten Hosting-Räume und müssen mit den Technikern zusammenarbeiten, die Ihnen zur Verfügung stehen. Oder Sie verwenden eine der Cloud-Lösungen und müssen mit den Einschränkungen und Vorteilen dieser arbeiten.
Es ist alles eine Frage der Zeitinvestition und der Wiederverwendbarkeit. Wenn Sie bereits einen Server haben, können Sie versuchen, Ihre Bestenlisten dort zu hosten. Wenn Sie bereits eine gehostete Site verwenden, können Sie damit mit dem Prototyping beginnen.
Persönlich würde ich empfehlen, zunächst einen Server oder einen virtuellen Server zu mieten.
Diese Frage verdient einen eigenen Thread und sollte unabhängig beantwortet werden, wenn Sie Schwierigkeiten haben, damit umzugehen.
Bedienung
Welche Servertechnologien Sie verwenden, liegt bei Ihnen und hängt stark von den Hosting-Lösungen ab, die Sie auswählen.
DB
Natürlich können Sie mit einem SQL-Speicher beginnen. MySQL ist ziemlich billig, effizient und einfach zu bedienen und wird von den meisten Hosting-Anbietern unterstützt. Dies ist die Lösung, die ich verwendet habe. Beachten Sie jedoch die Skalierbarkeit, die Sie möglicherweise später bereuen werden.
Es gibt andere bessere Lösungen. ERLANG-basierte DB-Server wie CouchDB sind sehr beliebt. Einer von ihnen, Riak ist einfach über mehrere Server zu verteilen, effizient verwendet JSON und wird von großen Namen wie Mozilla und GitHub verwendet.
Backend
Sie erhalten keinen direkten Zugriff auf Ihren Datenspeicher über Ihre Client-Apps. Sie müssen eine Anwendung schreiben, um Authentifizierungen, Berechtigungen, einige Logiken und den DB-Zugriff zu verwalten.
Java, PHP und Perl werden häufig zum Schreiben von Webdiensten verwendet, die diese Funktionen bereitstellen, von Hosting-Anbietern gut unterstützt werden und starke Entwicklergemeinschaften haben.
Wenn Sie jedoch den Overhead eines vollwertigen HTTP-Servers wie Apache vermeiden möchten, sollten Sie nodeJS verwenden . Es ist eine sehr effiziente, flache und schnelle Lösung. Wird von e-bay, Microsoft und Linked-In verwendet. Es lässt sich sehr gut in Setups integrieren, die JSON für den Datenaustausch verwenden.
Design
Ihr Leaderboard-Design beginnt mit der Datenspeicherung. Was möchten Sie speichern? Wie und wie lange möchten Sie es aufbewahren?
Sie möchten natürlich die Punktzahlen speichern (Zeit, Entfernung, Punkte ...), aber damit haben Sie mehrere Ebenen? Dann müssen Sie die Level-IDs speichern. Unterstützen Sie mehrere Plattformen? Wenn die Schwierigkeit des Spiels aus technischen oder demografischen Gründen auf verschiedenen Plattformen unterschiedlich sein kann, werden Sie das auch speichern ...
Wie willst du es wund machen? Möchten Sie nur die besten Ergebnisse erzielen und alle vorherigen vom Spieler auf derselben Plattform / Ebene / demselben Kontext ersetzen? Oder speichern Sie alles, um alle möglichen Ergebnisse im Auge zu behalten? Halten Sie an den verworfenen vorherigen Ergebnissen für Data Mining fest?
Sobald Sie diese Fragen beantwortet haben, können Sie über die Implementierung nachdenken.
Protokoll
Sie möchten Daten von und zu den Clients übertragen. Dazu müssen Sie ein gutes Kommunikationsprotokoll erstellen.
Die Auswahl der zugrunde liegenden Protokolle ist in diesem Schritt zweitrangig (HTTP, TCP, UDP). Unabhängig von Ihrer Wahl müssen Sie Ihr eigenes Protokoll sorgfältig erstellen, damit Sie mit Fehlern, Protokolländerungen, Anwendungsaktualisierungen usw. umgehen können.
Stellen Sie daher sicher, dass Ihre Serveranwendung Daten für aktualisierte Anwendungen und Anwendungen, auf denen auch ältere Versionen ausgeführt werden, bereitstellen kann.
Stellen Sie sicher, dass die zum und vom Server übertragenen Daten geschützt sind. Seien Sie vorsichtig beim Schutz von Score-Uploads. Sie können Hash-Schlüssel, Verschlüsselung und andere Mechanismen verwenden, um Ihren Server vor Betrügern zu schützen.
Wo immer Sie Binär- oder Textdaten (JSON, XML) senden möchten, liegt ganz bei Ihnen. Aus Gründen der Flexibilität und Kompatibilität würde ich JSON empfehlen. Vermeiden Sie XML. Verwenden Sie Binär, wenn Sie es wirklich brauchen / wollen.
Dieses Thema verdient mehr Aufmerksamkeit und Sie haben möglicherweise weitere Fragen ...
Klient
Der Kunde muss sich in Ihre Lösung integrieren. Sie sollten Ihre Servertechnologie- und Protokollschichten nicht basierend auf der Sprache des Clients auswählen. Sie sollten Ihre Serverlösung in Ihr Spiel integrieren.
Wenn Sie JSON anstelle von HTTP gewählt haben, gibt es dafür Bibliotheken.
Es gibt C / C ++ - Bibliotheken für JSON, ich würde empfehlen, sie zu verwenden. Sie können Ihre eigenen schreiben, wenn Sie möchten. Ich habe in wenigen Stunden eine kleine JSON-Bibliothek geschrieben. Es wird jetzt in Spielen auf Dutzenden von Plattformen verwendet.
In Bezug auf HTTP in C ++ verwenden Sie etwas Moderneres als CURL. cpp-netlib sollte reichen.
Achten Sie beim Senden der Daten jedoch auf die Zeichenkodierungen usw.
Authentifizierung
Um die besten Ergebnisse für Ihre Benutzer speichern und anzeigen zu können, müssen diese irgendwie identifiziert werden. Es gibt mehrere Möglichkeiten.
Das einfachste ist keines. Verwenden Sie das Feld Name hier eingeben, um die Namen in der Bestenliste anzuzeigen.
Sie können die Spieler auch bitten, sich zu registrieren. Dies ist oft ein Prozess, der die Spieler entmutigt.
Eine Möglichkeit, die ich häufig verwendet habe, ist die Facebook-Authentifizierung. Auf diese Weise können Sie die Authentifizierungsdaten an oder über Ihren Server weitergeben, Daten über die Freunde abrufen und personalisierte Bestenlisten bereitstellen, z. B. globale Bestenliste, Bestenliste für Freunde ...