Steamworks 文獻庫
Steam 網路連線
我們有幾個不同的網路 API 可供玩家之間傳送訊息使用。

預設狀況下,我們最新的 API 會透過 Valve 網路轉送封包,以確保玩家與遊戲伺服器受到保護。 這麼做的效能更佳,並且使用的是更高品質的可靠性階層。 它也支援普通的 UDP 連線。 開源版本可於 Github 取用。
  • ISteamNetworkingMessages 是用來向任意端點發送訊息的高階介面。 以不使用連線控制代碼這點來說,它與 UDP 很相似。 與 sendto() 通訊端函式相似,您每次發送訊息時都需要指定接收者。 您無須選擇一個端點做為「用戶端」來發起連線,伺服器也無須「監聽」或「接受」用戶端連線。 兩邊的端點都可以立即傳送訊息。 因為與 UDP 極其相似,這可能是傳輸既有 UDP 程式碼最簡單的 API。 然而,與原始 UDP 不同,此 API 支援大於一個封包的訊息,以及可靠的訊息遞送。 流量會透過 Valve 骨幹轉送,或可能在適用時直接連線。
  • ISteamNetworkingSockets 是連線控制代碼導向、用來傳送和接受訊息的低階介面。
  • ISteamNetworkingUtils 具有多種公用程式,包含估算任意兩個網路主機之間的 Ping 時間的工具。
  • steamnetworkingtypes 是一種擁有多種常用型別和公用程式的標頭。
  • Steam 資料包轉送是一種透過 Valve 骨幹轉送遊戲流量的服務。 這可以避免顯示 IP 位址,並且在多數情況下能改善 Ping 時間和連線品質。 所有點對點連線會在適當時自動透過 Valve 骨幹進行轉送。 如果您希望在專屬伺服器遊戲上使用 SDR,來最佳化 Ping 時間和保護伺服器免於 DoS 攻擊,本文將說明如何進行。

ISteamNetworking 是較老舊、已棄用的 API。 若您正在使用,請考慮盡快換用較新的 API,因為在未來推出 SDK 時我們可能會移除該 API。

此 API 與 Steam 遊戲配對與大廳同時使用最為契合,根據封包的類型,您可以透過擔任主機(通常為大廳擁有者)或遊戲伺服器的一位玩家,以路由方式傳送所有資訊,或直接向每位玩家發送所有訊息。

網路上有許多關於各種網路連線主題的優異文章。 以下為我們推薦的幾篇:

若希望參考在用戶端與伺服器之間使用 ISteamNetworkingSockets 溝通的範例,請見 Steamworks API Example Application (SpaceWar)