中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何不用服務器來開發一個小游戲

發布時間:2020-07-12 08:21:24 來源:網絡 閱讀:733 作者:騰訊技術 欄目:移動開發

我是代長新,來自上海享物說,主要負責游戲客戶端研發。


如何不用服務器來開發一個小游戲


享物說是一個大家可以互相贈送物品,有趣、不花錢的社區平臺。為了創造更好的社區氛圍,我們決定通過小游戲來增加社區的趣味性和互動性。

《樂享花園》是我們在小游戲領域的第一個實踐。這個游戲,從立項到做完,準確的說是客戶端做完,我們一共用了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相關的技術故事/技術實戰經驗想要跟大家分享,歡迎留言聯系我們哦!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉首市| 潞西市| 承德市| 曲阜市| 西青区| 安龙县| 十堰市| 大同县| 邵阳县| 吕梁市| 锦屏县| 洞头县| 平江县| 西城区| 增城市| 南溪县| 深水埗区| 凤山县| 高邑县| 怀远县| 丰顺县| 新宁县| 洞口县| 巩义市| 元氏县| 左贡县| 仪陇县| 泗水县| 东港市| 滦南县| 庆城县| 高密市| 哈尔滨市| 新宾| 金昌市| 措勤县| 沂南县| 咸阳市| 横峰县| 宽甸| 姜堰市|