Làm cách nào để tạo một máy chủ trò chơi RPG đơn giản? [đóng cửa]


8

Tôi đang làm việc trên một trò chơi Sprite Kit. Tôi muốn biến nó thành một trò chơi nhiều người chơi thực sự, ý tôi là mỗi người tham gia trò chơi đều có máy ảnh riêng. Tôi đã xem hướng dẫn về các trò chơi nhiều người chơi trong đó người chơi chia sẻ cùng một màn hình trò chơi, nhưng đó không phải là điều tôi muốn.

Tôi hiểu rằng cần phải có một máy chủ mà người chơi kết nối, có nghĩa là "thế giới" mà người chơi kết nối nên được chạy trên máy chủ. Điều này có đúng không?

Làm cách nào để tôi có một máy chủ chạy 'thế giới' cho trò chơi này? Nó có phải là một loại máy chủ cụ thể không, hoặc tôi có thể sử dụng Node.js hoặc bất cứ thứ gì tôi muốn không?

Câu trả lời:


17

Bạn đang đi đúng hướng.

Điểm chính của mô hình mạng máy khách-máy chủmáy chủ là điểm kiến ​​thức trung tâm mà khách hàng kết nối. Một máy chủ trò chơi thường chứa

  • một đại diện thế giới trong bộ nhớ ,
  • một danh sách các cầu thủ được kết nối ,
  • một vòng lặp trò chơi (ví dụ như trình xử lý điều khiển người chơi, động cơ vật lý & AI).

Bạn cũng sẽ cần một kênh liên lạc giữa máy chủ và máy khách của mình để khách hàng có thể truyền các hành động của người chơi và máy chủ có thể truyền trạng thái trò chơi.

Các cấu hình máy khách-máy chủ nâng cao hơn có thể liên quan đến

  • nén delta (chỉ gửi những gì đã thay đổi giữa các trạng thái trò chơi, không phải toàn bộ trạng thái trò chơi) vì lý do hiệu suất,
  • dự đoán đầu vào phía khách hàng để giảm độ trễ đầu vào cảm nhận (ví dụ : điều khiển CS: GO ),
  • một cơ sở dữ liệu trên đĩa (ví dụ như World of Warcraft 's lưu trữ hàng tồn kho),
  • giảm tải công việc cho các máy khách (ví dụ AI của kẻ thù Maple Story ),
  • hoặc chuyển giao kết nối giữa các máy chủ (ví dụ: liên kết thế giới của OpenSimulator ).

Bắt đầu đơn giản. Tốt nhất chỉ nên thêm độ phức tạp khi cần thiết . Lỗ thỏ này sâu.


Bạn đã đề cập đến Node.js : Tôi đã viết một vài máy chủ cho các trò chơi nhỏ trong đó và điều đó thật tuyệt. Nhưng bạn có thể viết một máy chủ và máy khách trong bất cứ điều gì bạn thích. Eve Online phần lớn ở Erlang , Minecraft trong Java, gần như mọi thứ của Valve đều ở C ++, et cetera.


Cảm ơn bạn đã trả lời chi tiết! Một điều vẫn làm tôi bối rối là: vì trò chơi được viết bằng bộ sprite cho iPhone, nên máy chủ có cần biết về điều này không? Tôi chỉ bối rối vì tôi cứ nghĩ, trò chơi nằm trong bộ sprite, nên thế giới được cung cấp bởi máy chủ cũng phải là bộ sprite. Suy nghĩ của bạn là gì
duxfox--

@AbdulAhmad Không, bạn có thể tạo máy chủ với bất kỳ ngôn ngữ hoặc thư viện nào bạn muốn. Hãy nhớ rằng máy chủ của bạn đang và nên tách biệt hoàn toàn. Bạn đang xây dựng hai ứng dụng khác nhau và bạn nên nghĩ về nó theo cách đó. Một cho khách hàng và một cho máy chủ. Phần gắn kết chúng lại với nhau là giao thức giao tiếp giữa hai ứng dụng. Mặc dù sẽ có những chi tiết khác phải được phối hợp giữa chúng (chẳng hạn như trạng thái trò chơi), về bản chất chúng hoàn toàn không liên quan. Bạn thậm chí sẽ không sử dụng nhiều cho Sprite Kit ở phía máy chủ.
Logic mờ

@FuzzyLogic vậy thì cố gắng hiểu điều này tốt hơn. Nếu máy chủ cung cấp 'thế giới' (hình ảnh, vật lý, v.v.) thì máy khách (iPhone) không nên có bất kỳ thứ gì trong số đó, vì máy khách chỉ là "chế độ xem" cho môi trường này. điều này có đúng không Vì vậy, tôi sẽ chỉ sử dụng sprite-kit ở phía máy khách để chỉ cung cấp một lớp trực quan cho dữ liệu đến từ máy chủ? Nói cách khác, trò chơi nên được xây dựng chủ yếu ở phía máy chủ (tất cả logic, v.v.) và máy khách chỉ là chế độ xem của tôi và là nơi tôi có thể gửi các sự kiện / lệnh đến máy chủ. Điều này có nghĩa là tôi không cần bất kỳ logic động cơ / trò chơi vật lý nào trong sprite-kit
duxfox--

@AbdulAhmad Yep! Một khách hàng thực hiện xử lý tối thiểu có thể được gọi là một khách hàng mỏng . Đó là một điểm khởi đầu tuyệt vời.
Anko

3
@AbdulAhmad Có và không. Đó là một cách tốt để suy nghĩ về nó nhưng chủ yếu là vì lý do hiệu quả, khách hàng thường sẽ sao chép nhiều thứ thay vì yêu cầu máy chủ cho từng chi tiết, nếu không bạn có thể sẽ gặp vấn đề về hiệu suất. Như Anko đã đề cập, nó sẽ là một nơi tốt để bắt đầu. Đây là một chủ đề lớn, có nhiều cách, nhiều cân nhắc và nhiều phần vì vậy thật khó để giải thích hoàn toàn cách thức hoạt động của tất cả. Làm thế nào nó phức tạp thực sự phụ thuộc vào các chi tiết của trò chơi của bạn mặc dù. Thành thật mà nói, dựa trên câu hỏi của bạn, tôi không khuyên bạn nên cố gắng làm điều này.
Logic mờ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.