Google開源新項目Quilkin,這是與游戲公司Embark Studios合作開發(fā)的UDP代理,以支持高性能即時多人游戲。Quilkin將原本單體式游戲服務(wù)器與客戶端中的安全、訪問控制、遙測和指標(biāo)分離出來,讓開發(fā)者以組合和配置的方式,提供這些通用功能,并在各種多人游戲中重復(fù)使用。
Google解釋,傳統(tǒng)的做法,即時多人游戲的專用游戲服務(wù)器,使用特別的UDP協(xié)議,提供游戲內(nèi)玩家間的通信,并且與服務(wù)器同步信息,這種通信通常捆綁在單體游戲服務(wù)器和客戶端中,并且結(jié)合安全性、控制訪問、物理模擬、人工智能計算等功能。在快節(jié)奏的多人游戲中,游戲?qū)υ挼耐暾M,通常發(fā)生在單體專用游戲服務(wù)器的內(nèi)存,由于游戲狀態(tài)都在內(nèi)存中,因此每個客戶端都直接連接到游戲服務(wù)器,但這帶來幾個問題。
由于專用游戲服務(wù)器都是單點故障,因此故障出現(xiàn),則整個游戲?qū)υ挾紩?,而這成了惡意攻擊者的攻擊目標(biāo),而且連接到游戲服務(wù)器的IP和端口口都是公開的,直接暴露給游戲客戶端,因此容易讓外部發(fā)現(xiàn)而遭到鎖定。另外,游戲服務(wù)器模擬和網(wǎng)絡(luò)通信等部分都在同一程序中,難以重用和模塊化,同時增加性能問題風(fēng)險。
不過這些問題,可以在多人UDP流量中部署代理服務(wù)器來解決,包括通過提供冗余通信入口點,來提升可靠度,讓UDP資料封包同時發(fā)送到任意數(shù)量的代理,再路由到游戲服務(wù)器,當(dāng)游戲服務(wù)器出現(xiàn)單點故障的時候,代理能夠改善通信層的冗余和故障轉(zhuǎn)移來解決。
增加代理也提升了安全性,游戲?qū)S梅?wù)器的IP和端口口不需要公開,游戲客戶端只能看到代理池子集,因此限制了潛在的攻擊面,而且使用代理也能獲得足夠的擴展性,通過分解單體程序,將通信協(xié)議、指標(biāo)、通信安全和訪問控制等各功能,轉(zhuǎn)移到代理中,讓游戲服務(wù)器能夠在運算循環(huán)中,刪除非游戲的運算。
Google提到,目前這些功能,都只有大型游戲工作室可以采用,因為這些工作室才有資源,構(gòu)建專屬于自己的技術(shù)。而Google與Embark Studios共同創(chuàng)建的Quilkin,提供了標(biāo)準(zhǔn)開源解決方案,讓開發(fā)者可用于部署大型多人專用游戲服務(wù)器,獲得安全性、訪問控制、遙測資料和指標(biāo)等功能。
Quilkin非透明代理設(shè)計,讓惡意攻擊者不容易探查游戲架構(gòu)的內(nèi)部狀態(tài),但其提供用戶極高的可見度,有一組搭配使用的處理過濾器,能夠用于監(jiān)控路由、訪問控制和速率限制等。開發(fā)者可以將Quilkin用作獨立的二進制文件,不需要變更客戶端和服務(wù)器即可使用,或是也可以當(dāng)作Rust函數(shù)庫,Google提到,使用方式取決于用戶要進行多深的系統(tǒng)集成。