Vì vậy, tôi đang viết một hệ thống mai mối Tướng dựa trên chế độ xem Sảnh với các phòng chơi trò chơi, trò chuyện chung, v.v ... Cho đến nay tôi có một nguyên mẫu hoạt động nhưng tôi nghi ngờ lớn về một số điều tôi đã làm với máy chủ. Viết một máy chủ sảnh chơi game là một trải nghiệm lập trình mới đối với tôi và vì vậy tôi không có một mô hình lập trình rõ ràng cũng như chính xác cho nó. Tôi cũng không thể tìm thấy một bài báo mô tả nó nên hoạt động như thế nào. Tôi đã đặt hàng "Lập trình mạng Java phiên bản thứ 3" từ Amazon và vẫn đang chờ giao hàng, hy vọng tôi sẽ tìm thấy một số ví dụ / thông tin hữu ích trong cuốn sách này.
Trong khi đó, tôi muốn thu thập ý kiến của bạn và xem bạn sẽ xử lý một số việc như thế nào để tôi có thể học cách viết một máy chủ chính xác. Dưới đây là một vài câu hỏi ngoài đầu tôi: (có thể nhiều hơn sẽ đến)
Đầu tiên, hãy xác định những gì một máy chủ làm. Chức năng chính của nó là giữ các kết nối TCP với khách hàng, lắng nghe các sự kiện họ tạo và gửi chúng cho những người chơi khác. Nhưng có nhiều hơn thế không?
Tôi có nên sử dụng một chủ đề cho mỗi khách hàng? Nếu vậy, 300 khách hàng = 300 chủ đề. Có quá nhiều không? Phần cứng nào là cần thiết để hỗ trợ điều đó? Và một sảnh tiêu thụ bao nhiêu băng thông?
Loại cấu trúc dữ liệu nào nên được sử dụng để giữ ổ cắm của khách hàng? Làm thế nào để bạn bảo vệ nó khỏi sửa đổi đồng thời (ví dụ: một người chơi vào hoặc tồn tại tiền sảnh) khi lặp qua nó để gửi một sự kiện mà không làm tổn thương thông lượng? Có phải ConcảnHashMap là câu trả lời chính xác ở đây, hoặc có một số kỹ thuật tôi nên biết?
Khi một người dùng vào sảnh, bạn sẽ sử dụng cơ chế nào để chuyển trạng thái của sảnh cho anh ta? Và trong khi điều này đang xảy ra, các sự kiện khác sẽ nổi lên ở đâu?