正文 移動平台的社交遊戲開發技術(2 / 2)

通過輪訓的方式與服務器通信,即每隔一段時間客戶端就向服務器發起請求,獲得最新數據,該方法的通信量很大,資源利用率低。對於移動設備上的網絡使用一般以流量進行的計費的情況,該方法將耗費大量的流量。

通過客戶端與服務器端的約定進行通信,以當前流行的農場遊戲為例,當玩家點擊農場進行種菜,該操作需要由服務器進行同步記錄,這時候客戶端想服務器端發送一個種菜請求,服務器根據該請求將相關種菜的起始時間、收獲時間及其他相關數據記錄到數據庫中,然後返回客戶端一個收獲的剩餘時間,當客戶端收到該請求的響應時,根據收獲剩餘時間建立一個定時器用來定時更新剩餘時間,當剩餘時間為0時,向玩家顯示可以收獲的狀態,這時候玩家點擊收獲再向服務器發送收獲請求,完成操作。

二、後端開發技術

(一)請求的有效性

要保證遊戲數據不被惡意修改還需要對服務器的接口進行設計,要盡量避免客戶端的請求直接對數據庫進行操作,或者請求的數據無法驗證的情況。接口設計的一般原則就是一個請求對應玩家的一個操作,並且請求附帶的數據必須能夠根據遊戲邏輯進行驗證。

(二)請求的時序控製

在遊戲過程中玩家可能會同時對多個物體進行操作,向服務器發送多個請求,由於網絡延遲的問題可能會出現服務器收到請求的順序與客戶端發送請求的順序不一致的情況。如果請求之間有嚴格的時序要求,這種情況就會發生錯誤。要避免該問題,應該從服務器客戶端兩方入手,對這種有時間關聯性的請求,客戶端程序一般需要等待前一個請求返回之後再發送後一個請求,而服務器端程序根據接口設計的原則,即使是先收到後一個請求也應該能夠判斷該請求需在另一個請求之後執行,從而向客戶端返回錯誤信息。

(三)數據庫的並發訪問

當多個請求之間沒有時序關係時,客戶端可以同時發送多個請求,以減少玩家不必要的通信等待時間,在服務器端收到請求時通常會新建立一個線程對請求進行處理,多個請求可能會涉及到對同一數據進行更新,這時候需要對數據庫的訪問進行並發控製。對數據庫的並發控製通常以加鎖的方式實現,加鎖分為悲觀鎖和樂觀鎖。

悲觀鎖是指在對數據進行更新前對該數據進行加鎖,但往往鎖定的的數據不隻是即將要更新的數據,這樣造成對該數據意外的其他操作也隻能掛起等待,降低了效率。該方式一般隻有在並發衝突可能性比較大的情況下使用。

樂觀鎖是指假設同一時刻不會有其他操作對該數據進行更新,如果在更新過程中發現有數據不一致的情況,說明發生了並發操作,這時候不提交更新了的數據,回滾至更新前的狀態,樂觀鎖一般需要數據庫具有事務功能。

三、總結

手機社交遊戲開發技術集合了多中計算機技術,包括計算機圖形圖像處理,網絡通信,數據庫設計與管理等等,這對開發人員提出了很大的技術要求,而當今市場對手機社交遊戲的需求與日俱增,對從事手機遊戲開發者而言也將是機遇與挑戰並存。