Từ kinh nghiệm của tôi, có nhiều bước bạn sẽ phải trải qua. Chọn lib C ++ không phải là điều cấp bách nhất trong số đó. Có nhiều điều quan trọng hơn bạn sẽ phải xem xét.
Lưu trữ
Liên quan đến việc lưu trữ bảng xếp hạng của bạn, bạn sẽ phải đưa ra lựa chọn. Hoặc bạn thuê máy chủ và bạn có thể chọn các công nghệ bạn muốn và làm những gì bạn muốn. Hoặc bạn thuê không gian lưu trữ và bạn sẽ phải làm việc với các kỹ thuật viên theo ý của bạn. Hoặc bạn sẽ sử dụng một trong những giải pháp đám mây và phải làm việc với những hạn chế và lợi thế của những giải pháp đó.
Đó là tất cả một câu hỏi về đầu tư thời gian chi phí và tái sử dụng. Nếu bạn đã có máy chủ, bạn có thể thử lưu trữ bảng thành tích của mình ở đó, nếu bạn đã sử dụng một trang web được lưu trữ, bạn có thể bắt đầu tạo mẫu với điều đó.
Cá nhân tôi lúc đầu khuyên bạn nên thuê một máy chủ hoặc một máy chủ ảo.
Câu hỏi này xứng đáng là một chủ đề của riêng nó và nên được trả lời độc lập nếu bạn gặp khó khăn trong việc xử lý nó.
Dịch vụ
Những công nghệ máy chủ nào bạn sẽ sử dụng tùy thuộc vào bạn và phụ thuộc rất nhiều vào các giải pháp lưu trữ bạn sẽ chọn.
DB
Tất nhiên bạn có thể bắt đầu với một bộ lưu trữ SQL, MySQL khá rẻ và hiệu quả để sử dụng, được hầu hết các nhà cung cấp dịch vụ lưu trữ hỗ trợ. Đây là giải pháp tôi đã và đang sử dụng. Nhưng hãy cẩn thận khi nói đến khả năng mở rộng, bạn có thể hối tiếc khi sử dụng nó sau này.
Có những giải pháp khác tốt hơn. Các máy chủ DB dựa trên ERLANG như CouchDB khá phổ biến. Một trong số đó, RIAK rất đơn giản để phân phối trên nhiều máy chủ, hiệu quả, sử dụng JSON và được sử dụng bởi các tên tuổi lớn như Mozilla và GitHub.
Back-end
Bạn sẽ không cấp quyền truy cập vào bộ lưu trữ dữ liệu của mình trực tiếp từ ứng dụng khách. Bạn sẽ cần phải viết một ứng dụng để quản lý xác thực, ủy quyền, một số logic và truy cập DB.
Java, PHP và perl thường được sử dụng để viết các dịch vụ web cung cấp các chức năng này, được hỗ trợ tốt bởi các nhà cung cấp dịch vụ lưu trữ và có cộng đồng phát triển mạnh.
Nhưng nếu bạn muốn tránh chi phí hoạt động của một máy chủ HTTP chính thức như Apache, bạn nên sử dụng nodeJS . Đó là một giải pháp nhanh chân rất hiệu quả và nhanh chóng. Được sử dụng bởi e-bay, Microsoft và Linked-In. Nó tích hợp rất độc đáo trong các thiết lập sử dụng JSON để trao đổi dữ liệu.
Thiết kế
Thiết kế bảng xếp hạng của bạn sẽ bắt đầu với việc lưu trữ dữ liệu. Bạn muốn lưu trữ những gì. Làm thế nào để bạn muốn lưu trữ nó và trong bao lâu?
Bạn muốn lưu trữ điểm số của khóa học (thời gian, khoảng cách, điểm ...), nhưng với điều đó bạn có nhiều cấp độ không? sau đó bạn sẽ cần lưu trữ ID cấp độ, bạn có hỗ trợ nhiều nền tảng không? Nếu vậy, độ khó của trò chơi có thể khác nhau trên các nền tảng khác nhau vì lý do kỹ thuật hoặc nhân khẩu học, bạn cũng sẽ lưu trữ điều đó ...
Làm thế nào để bạn muốn đau nó? Bạn có muốn chỉ giữ điểm số tốt nhất, thay thế tất cả những điểm trước đó được thực hiện bởi người chơi trên cùng một nền tảng / cấp độ / bối cảnh không? Hoặc bạn sẽ lưu trữ mọi thứ để theo dõi tất cả các điểm có thể? Bạn sẽ giữ để loại bỏ điểm số trước đây để khai thác dữ liệu?
Một khi bạn trả lời những câu hỏi này, bạn có thể bắt đầu suy nghĩ về việc thực hiện.
Giao thức
Bạn sẽ muốn chuyển dữ liệu từ và đến khách hàng. Đối với điều này, bạn sẽ phải tạo ra một giao thức truyền thông tốt.
Sự lựa chọn của các giao thức cơ bản là thứ yếu trong bước này (HTTP, TCP, UDP). Dù lựa chọn của bạn là gì, bạn sẽ phải tạo ra giao thức của riêng mình một cách cẩn thận để bạn có thể xử lý các lỗi, thay đổi trong giao thức, cập nhật ứng dụng, v.v ...
Vì vậy, hãy đảm bảo ứng dụng máy chủ của bạn có thể xử lý việc cung cấp dữ liệu cho các ứng dụng được cập nhật và các ứng dụng chạy các phiên bản cũ hơn.
Đảm bảo bảo vệ dữ liệu được truyền đến và từ máy chủ. Hãy cẩn thận về việc bảo vệ tải lên điểm số, bạn có thể sử dụng khóa băm, mã hóa và các cơ chế khác để bảo vệ máy chủ của bạn khỏi những kẻ gian lận.
Bất cứ nơi nào bạn chọn gửi dữ liệu nhị phân hoặc văn bản (JSON, XML) là tùy thuộc vào bạn. Nhưng để linh hoạt và tương thích, tôi muốn giới thiệu JSON. Tránh XML. Sử dụng nhị phân nếu bạn thực sự cần / muốn nó.
Chủ đề này đáng được chú ý hơn và bạn có thể có nhiều câu hỏi hơn ...
Khách hàng
Khách hàng sẽ phải tích hợp với giải pháp của bạn. Bạn không nên chọn các lớp giao thức và công nghệ máy chủ của mình dựa trên ngôn ngữ của máy khách. Bạn nên tích hợp giải pháp máy chủ của bạn vào trò chơi của bạn.
Nếu bạn chọn JSON trên HTTP, sẽ có libs cho điều đó.
Có các lib C / C ++ cho JSON, tôi khuyên bạn nên sử dụng chúng. Bạn có thể viết của riêng bạn nếu bạn muốn. Tôi đã viết một lib lib nhỏ trong vài giờ. Hiện tại nó được sử dụng trong các trò chơi trên hàng chục nền tảng.
Liên quan đến HTTP trong C ++ sử dụng một cái gì đó hiện đại hơn CURL. cpp-netlib nên làm.
Cảnh giác với các mã hóa ký tự, vv khi gửi dữ liệu mặc dù.
Xác thực
Để có thể lưu trữ và hiển thị điểm số tốt nhất cho người dùng của bạn, họ sẽ phải được xác định bằng cách nào đó. Có nhiều cách.
Đơn giản nhất là không có. Sử dụng trường Enter Name Here để hiển thị tên trên bảng thành tích.
Bạn cũng có thể yêu cầu người chơi đăng ký ... đây thường là một quá trình khiến người chơi nản lòng.
Một cách tôi đã sử dụng rất nhiều là xác thực Facebook. Bằng cách này, bạn có thể truyền dữ liệu xác thực đến hoặc thông qua máy chủ của mình và nhận dữ liệu về bạn bè và phục vụ bảng xếp hạng được cá nhân hóa, ví dụ như bảng xếp hạng Toàn cầu, bảng xếp hạng bạn bè ...