Tài liệu Steamworks
Mạng lưới Steam
Chúng tôi có vài API mạng lưới khác nhau có thể dùng để gửi thông điệp giữa các người chơi.

Mặc định, các API mới nhất của chúng tôi chuyển tiếp các gói dữ liệu (packet) qua hệ thống mạng Valve để đảm bảo người chơi và máy chủ trò chơi được bảo vệ. Nó có hiệu suất cao và dùng lớp có độ tin cậy chất lượng cao hơn. Nó cũng hỗ trợ kết nối UDP thông thường. Phiên bản mã muồn mở có thể tìm thấy tại github.
  • ISteamNetworkingMessages là giao diện cấp cao để gửi tin nhắn tới các peer bất kỳ. Nó giống UDP ở điểm không dùng tới các handle kết nối. Bạn chỉ định người nhận tin mỗi khi gửi tin đi, tương tự như hàm socket sendto(). Bạn không cần chọn một peer làm "client" và khởi tạo kết nối, và máy chủ không cần "nghe" các kết nối client hoặc "chấp nhận" chúng. Một trong hai peer có thể gửi tin nhắn ngay lập tức. Bởi vì rất giống UDP, nó có thể là API đơn giản nhất để chuyển qua mã UDP hiện có. Tuy nhiên, khác với UDP thô, API hỗ trợ tin nhắn lớn hơn một gói dữ liệu đơn lẻ, và gửi tin nhắn đáng tin cậy hơn. Lưu lượng được chuyển tiếp qua backbone của Valve, hoặc thiết lập một kết nối trực tiếp khi phù hợp.
  • ISteamNetworkingSockets là giao diện handle kết nối cấp độ thấp hơn cho việc gửi và nhận tin nhắn.
  • ISteamNetworkingUtils có các tiện ích phụ, bao gồm công cụ để ước lượng thời gian ping giữa các host mạng độc lập.
  • steamnetworkingtypes là một header có nhiều loại và tiện ích phổ biến.
  • Steam Datagram Relay là dịch vụ để chuyển tiếp băng thông trò chơi của bạn qua backbone của Valve. Tính năng này giúp ngăn địa chỉ IP bị lộ và trong nhiều trường hợp cải thiện thời gian ping cùng chất lượng kết nối. Mọi kết nối P2P được tự động chuyển tiếp qua backbone của Valve khi phù hợp. Tài liệu này mô tả điều bạn cần làm nếu muốn dùng SDR cho máy chủ trò chơi chuyên dụng, để tối ưu hóa thời gian ping và bảo vệ máy chủ khỏi tấn công DoS.

ISteamNetworking là một API cũ, không còn dùng. Nếu bạn vẫn dùng nó, hãy xem xét sớm chuyển qua một API mới hơn, vì chúng tôi có thể gỡ bỏ API này khỏi SDK trong một phiên bản tương lai.

API này hoạt động tốt nhất khi được dùng với Hệ thống xếp trận & phòng chờ của Steam, tùy thuộc vào loại gói dữ liệu, bạn có thể định tuyến mọi thứ qua một người chơi đóng vai trò host (thông thường là chủ phòng chờ) hoặc máy chủ trò chơi, hoặc gửi tất cả trực tiếp tới từng người chơi.

Có rất nhiều bài viết trực tuyến lấy chủ đề về hệ thống mạng. Sau đây là vài khuyến nghị từ chúng tôi:

Xem Steamworks API Example Application (SpaceWar) để đọc ví dụ về việc dùng ISteamNetworkingSockets cho giao tiếp client-server.