Trang chủ Program Netcode – Phần 2

Netcode – Phần 2

bởi Tran Tung

Tiếp theo phần 1, trong phần 2 sẽ trình bày về các cách mà người chơi kết nối và chơi game cùng nhau.

Peer-to-peer (P2P)

Trong mô hình này mỗi người chơi sẽ kết nối trực tiếp với người chơi khác, càng nhiều người thì sẽ có càng nhiều kết nối. Mỗi người sẽ tự quản lý các đơn vị của mình, bên cạnh đó nhận data từ người chơi khác để dựng lại state của trận đấu.

Image for post

Lợi ích:

  • Không cần làm server
  • Kết nối trực tiếp giữa các client góp phần vào việc giảm độ trễ (không phải lúc nào cũng đúng nhưng lý thuyết là vậy)

Điểm hạn chế:

  • Không có cơ chế đồng bộ state, cơ chế xác thực dẫn đến việc cheat, hack, bất đồng bộ trạng thái trận đấu giữa các người chơi
  • Mỗi người chơi thiết lập kết nối trực tiếp đến người chơi khác nên tốn băng thông nếu có đông người, bên cạnh đó còn các config liên quan đến firewall, port ở mỗi máy sẽ khá phức tạp.

Server-client with authoritative game server

Trong mô hình này thay vì việc người chơi tự kết nối với nhau, tự chạy logic ở máy của mình thì tất cả người chơi sẽ kết nối đến 1 máy chủ –  dedicated game server (DGS). Game Server có nhiệm vụ chạy logic, nhận input từ người chơi, xử lý input, cập nhật lại trạng thái của ván chơi, gửi thông tin của ván chơi về tất cả người chơi. Ý nghĩa của Authoritative game server có nghĩa là server làm hết, client chỉ nhận data và diễn theo thôi. Hiện nay hầu hết các game online có yếu tố real-time đều xây dựng bằng cách này.

Image for post

Lợi ích: Với việc có server độc lập thì chúng ta có thể loại bỏ việc bất đồng bộ giữa các client, bên cạnh đó hạn chế tối đa hack/cheat và một số cơ chế giảm giật lag cho game.
Khó khăn: Phát triển và vận hành hệ thống server cần thêm nguồn lực.

Server-client with authoritative client-host

Với cách này, thay vì dùng server độc lập để làm công việc xử lý thì sẽ dùng 1 trong các máy client. Có nghĩa là trong các máy thì có 1 máy được chọn để làm “server”, các máy khác sẽ kết nối đến “server” này để chơi game. Chúng ta có thể liên tưởng ngay các game như CS, Đế chế, Dota… khi chơi trong mạng lan thì sẽ có 1 máy tạo game và thường được gọi là hos :D.

Image for post

Lợi ích: Không cần thêm chi phí để phát triển và vận hành server
Khó khăn: Máy làm host cần phải tính toán nhiều hơn các máy khác và máy host sẽ có lợi thế về độ trễ so với các máy khác thường được gọi là “host-advantage”

Relay/matchmaking server (server-client with non-authoritative server)

Đây là kiểu kết hợp giữa Peer2Peer Dedicated game server , nhiệm vụ của server chỉ đơn giản là kết nối các client với nhau.

Image for post

Ưu điểm: Chính vì sự đơn giản của server như thế sẽ không cần tốn nhiều chi phí để phát triển phần server, dễ dàng chuyển đổi từ P2P sang cách dùng relay server
Nhược điểm: Giống của P2P tuy nhiên độ trễ của cách này sẽ cao hơn và vẫn phát sinh thêm chi phí để phát triển server relay

Massively-Social (asynchronous gameplay)

Để cho đầy đủ thì cần nhắc đến kiểu cuối cùng đó là asynchronous gameplay. Trong kiểu này , người chơi không tương tác với nhau real-time. Những game kiểu này thường là dạng auto-battle, có nghĩa là không cần người chơi tương tác nhiều, có các hệ thống “thăm nhà” người chơi khác để thu thập tài nguyên … Những người chơi offline sẽ nhận được những sự kiện đã diễn ra của game vào lần đăng nhập tiếp theo.
Vì những đặc điểm trên thì server không cần xử lý các vấn đề liên quan đến độ trễ, đồng bộ trạng thái real-time.

Image for post

Trong phần 3 sẽ đi vào tìm hiểu (DGS)

Nhấn để đánh giá bài viết!
[Số đánh giá: 1 Trung bình: 5]

Có thể bạn quan tâm

Để lại bình luận