您好,登錄后才能下訂單哦!
我是代長新,來自上海享物說,主要負責游戲客戶端研發。
享物說是一個大家可以互相贈送物品,有趣、不花錢的社區平臺。為了創造更好的社區氛圍,我們決定通過小游戲來增加社區的趣味性和互動性。 《樂享花園》是我們在小游戲領域的第一個實踐。這個游戲,從立項到做完,準確的說是客戶端做完,我們一共用了3天的時間。 但是,當時我們種花澆花、領水滴任務都是通過瀏覽器緩存實現的,如果要上線還要等服務端人員到位,否則玩家清理一下手機,自己種的花就沒了。但等我們服務端人員到位,再到游戲上線,就是幾周以后的事情了。
小游戲開發之痛:無法擺脫對服務端的依賴 相信,這也是大部分小游戲開發時會遇到的問題 —— 功能很簡單,但就是擺脫不了對服務端的依賴。如下圖:
具體來說,小游戲對服務端的依賴主要有以下兩個方面: 1、微信接口只支持在服務端調用 這就意味著,我們必須為這些接口架設一個中轉服務器。如果沒有這個中轉服務器,我們就沒法做用戶登錄,沒法獲取用戶頭像、名稱信息,也拿不到access_token,更沒有辦法調用其他微信接口,如內容審查。 2、游戲功能實現需要服務器開發 對于很多小游戲來說,我們唯一用到服務端的地方就是,儲存當前的關卡進度,展示一個世界排行,就可以了。而想要實現這么一個簡單的需求時,你會發現,隔行如隔山。 如何用云開發解決小游戲在服務端痛點? 1、云函數實現微信接口調用
曾經,我想過繞開服務器,直接通過客戶端請求微信接口,結果踩了一個坑。 當時做的是聊天功能,需要對玩家發送的消息進行內容審查。我看完了接口文檔,就跑過去跟服務器同學說,內容審查我這邊全部做掉就可以,他那邊不需要做額外的處理。
等我們調通,上了體驗版,一打開報錯,我才想起來,這個接口文檔的上面,有一行小字,而且顏色是灰色的,上面寫著:此接口應在后端服務器調用。 第一次看到這句話,還以為它只不過是一個警告,所以根本沒把它放在心上,哪知道它居然是一個error!而在這之前,我還特意做了一些我認為比較人性化的設計,比如使用這個接口需要一個密鑰,這個密鑰是有有效期的,當密鑰過期的時候,我會把玩家發送的內容保存起來,向后端拉取新的密鑰后,再發送出去,這樣對于玩家來說,整個過程是無感知的。而現在則意味著所有這些都要服務器去實現了。 后來,我通過云開發來實現多有接口調用,事情就簡單多了。
就拿登錄來說吧。 由于云函數具有微信天然鑒權的能力,可以直接返回openid,這一點對做登錄確實很方便。樂享花園需要和享物說平臺打通小紅花積分數據,所以需要用戶的unionid信息,這一步也是在云函數中實現的。 還有access_token,就是剛才用到的密鑰,為什么要單獨說這個密鑰呢?因為它會用到云函數特別有意思的功能,那就是定時觸發器。由于這個密鑰是有兩個小時有效期的,我們設定一個小時間隔定時刷新,保存到數據庫中,用的時候直接從數據庫中取出來就可以了,這樣可以保證密鑰永遠是不過期的。
通過云開發,為微信接口準備的中轉服務器就不需要了;更重要的是,服務端與微信接口分離,無需關心客戶端場景。不管這個客戶端,是來自h6游戲,還是來自小游戲環境,對于服務端來說,都是一樣的,再也不需要為客戶端提供這樣那樣的權限接口。
2、云函數+數據庫,實現全局排行榜功能 正如前面提到的痛點,小游戲開發對服務端的另一個依賴是游戲功能的實現。對于大部分小游戲來說,我們唯一用到服務端的地方就是:保存用戶數據,展示一個世界排行榜。而如果用傳統服務器實現這些功能的話,你會發現需要了解的后端架構知識非常龐大。 有次,我到服務端同學的旁邊,原本是打算diss他的,因為我功能已經寫完了,他還不知道在忙些什么東西。這時我看到他在做什么呢 —— 一邊寫dockfile文件,一邊寫linux命令,一邊打開Postman調試,完了后發郵件給運維說要執行幾個mysql語句。 而所有這些都還沒有涉及到他要開發的游戲功能! 所以說,一門后端語言從會寫,到可以放到生產環境中,是兩個完全不一樣的概念。 云開發提供了數據庫、云函數、云存儲,通過這些能力,我們完全可以取代服務器來實現游戲功能。 在《樂享花園》里,我們通過云開發實現了全民成語接龍這個游戲功能,并且只用了2個云函數就實現了我們對服務器的全部需求。這里簡單介紹一下這兩個云函數: 第一個云函數是用來展示世界排行榜。由于云函數拉取數據庫的條目是有限制的,最大是100條,其實這個已經足夠滿足需求了;當然了,你要說我們的客戶端很牛,性能不是問題,數據什么的先給我來個2000條,也不是不可以,這里做個處理就可以了。 另外在檢索數據庫數據時,這個過程會很慢,一定要記得,在后臺添加數據庫索引,可以把這個過程理解為通過磁盤換取CPU計算。這樣速度會快很多。
第二個云函數是用來上報玩家數據。這個比較簡單,一行代碼搞定。
就這樣從微信接口調用,到游戲功能開發,一款不需要服務器的小游戲就全部開發完成了。 小結
其實,云開發可以使用的業務場景,還有很多,比如, 繞過微信https域名請求限制 存放游戲的全局設置 保存玩家的個性化數據 。。。 作為開發者,也希望云開發未來,可以提供更多的業務場景支持,比如 websocket,剛才說的聊天服務器,就可以省掉了; 幀同步,實時對戰類游戲的實現,就不再有壓力; 日志服務,方便統計,和排查玩家的行為,方便游戲迭代優化; 大數據統計分析,可以做一些事件漏斗等等~ 這樣小游戲的研發門檻,就降得很低很低了! 如果你有關于使用云開發TCB相關的技術故事/技術實戰經驗想要跟大家分享,歡迎留言聯系我們哦!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。