Đối với một dự án trường học, chúng ta phải tạo trò chơi nhiều người chơi bằng Java (nó phải là máy khách/máy chủ) có thể được phát qua internet (chúng tôi đang lập trình ở trường học) nó không phải là bài tập về nhà). Trò chơi là theo lượt, nhưng phải có một cuộc trò chuyện, trong đó ofcourse là thời gian thực. Tuy nhiên, không ai trong chúng ta có kinh nghiệm với lập trình mạng và tôi càng đọc nhiều về nó, tôi càng có nhiều câu hỏi hơn.Trò chơi nhiều người chơi Java - khái niệm mạng
Suy nghĩ đầu tiên của tôi là sử dụng API socket để triển khai phần nhiều người chơi. Máy chủ đợi dữ liệu mới từ máy khách. Tuy nhiên, có nhiều loại dữ liệu để nhận, như tin nhắn trò chuyện, chuyển động, v.v. Ngoài ra, khi kết nối với máy chủ được thực hiện, một số dữ liệu ban đầu (như tên người chơi) sẽ được gửi đi. Máy chủ sẽ có thể xem loại tin nhắn nào nhận được, nhưng làm cách nào? Tôi đã nghĩ đến việc tạo ra một lớp Message
với một trường chuỗi type
. Nhưng trong mã máy chủ của tôi, tôi sẽ nhận được mã như thế này:
Khi có rất nhiều loại khác nhau của dữ liệu để gửi (và There Will Be), điều này không giống như cách hiệu quả nhất. Ngoài ra, điều này có nghĩa là cả máy chủ và máy khách nên có thông báo này lớp/giao diện (mã trùng lặp).
Còn trò chơi khác thì sao? Ví dụ: người chơi 1 di chuyển nhân vật của mình đến một vị trí đánh bại một nhân vật khác. Khách hàng của người chơi 1 tính toán sự thất bại này và áp dụng các hành động chính xác. Nhưng những gì nên được gửi đến máy chủ? Chỉ là vị trí người chơi mới hoặc cũng là thất bại? Với tùy chọn đầu tiên, nó có nghĩa là tất cả các khách hàng khác nên thực hiện các phép tính. Điều này có gây ra rắc rối không? Vì tôi không có kinh nghiệm lập trình mạng trước, tôi hơi bối rối về cách làm tất cả những điều này.
Tôi cũng đã đọc một chủ đề khác ở đây trên Stackoverflow rằng RMI có thể là một lựa chọn tốt hơn. Sau khi đọc một số thông tin về điều này, tôi hiểu RMI là gì, nhưng tôi vẫn không thể xem liệu nó có phải là một lựa chọn tốt cho dự án này hay không. Bất kỳ lời khuyên cho điều này?
Như bạn thấy, tôi hơi bối rối về cách bắt đầu với phần mạng của dự án này. Tôi đã tìm kiếm một số cuốn sách lập trình trò chơi (cho Java ofcourse), nhưng không ai trong số họ được tập trung vào phần mạng. Tôi cũng đã tìm kiếm các cuốn sách kết nối mạng Java, nhưng chúng dường như tập trung vào công nghệ, chứ không tập trung vào các quy tắc mã tốt.
Nếu bất kỳ ai biết một cuốn sách hay hoặc có một số lời khuyên trong đúng hướng, nó sẽ được đánh giá cao.
Cảm ơn
"... lập trình này ở trường, vì vậy nó không phải là bài tập về nhà" . Cổ điển. – CPerkins
Ít nhất anh ta không muốn mã. –
@CPerkins: Chúng tôi phải làm việc cho dự án này ở trường, vâng. Tôi không yêu cầu bất cứ ai làm công việc của tôi, chỉ cần hỏi ý kiến về cách thực hiện điều này. – Bv202