我是代長新,來自上海享物說,主要負(fù)責(zé)游戲客戶端研發(fā)。
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出寶安免費(fèi)做網(wǎng)站回饋大家。享物說是一個(gè)大家可以互相贈(zèng)送物品,有趣、不花錢的社區(qū)平臺(tái)。為了創(chuàng)造更好的社區(qū)氛圍,我們決定通過小游戲來增加社區(qū)的趣味性和互動(dòng)性。 《樂享花園》是我們?cè)谛∮螒蝾I(lǐng)域的第一個(gè)實(shí)踐。這個(gè)游戲,從立項(xiàng)到做完,準(zhǔn)確的說是客戶端做完,我們一共用了3天的時(shí)間。 但是,當(dāng)時(shí)我們種花澆花、領(lǐng)水滴任務(wù)都是通過瀏覽器緩存實(shí)現(xiàn)的,如果要上線還要等服務(wù)端人員到位,否則玩家清理一下手機(jī),自己種的花就沒了。但等我們服務(wù)端人員到位,再到游戲上線,就是幾周以后的事情了。
小游戲開發(fā)之痛:無法擺脫對(duì)服務(wù)端的依賴 相信,這也是大部分小游戲開發(fā)時(shí)會(huì)遇到的問題 —— 功能很簡單,但就是擺脫不了對(duì)服務(wù)端的依賴。如下圖:
具體來說,小游戲?qū)Ψ?wù)端的依賴主要有以下兩個(gè)方面: 1、微信接口只支持在服務(wù)端調(diào)用 這就意味著,我們必須為這些接口架設(shè)一個(gè)中轉(zhuǎn)服務(wù)器。如果沒有這個(gè)中轉(zhuǎn)服務(wù)器,我們就沒法做用戶登錄,沒法獲取用戶頭像、名稱信息,也拿不到access_token,更沒有辦法調(diào)用其他微信接口,如內(nèi)容審查。 2、游戲功能實(shí)現(xiàn)需要服務(wù)器開發(fā) 對(duì)于很多小游戲來說,我們唯一用到服務(wù)端的地方就是,儲(chǔ)存當(dāng)前的關(guān)卡進(jìn)度,展示一個(gè)世界排行,就可以了。而想要實(shí)現(xiàn)這么一個(gè)簡單的需求時(shí),你會(huì)發(fā)現(xiàn),隔行如隔山。 如何用云開發(fā)解決小游戲在服務(wù)端痛點(diǎn)? 1、云函數(shù)實(shí)現(xiàn)微信接口調(diào)用
曾經(jīng),我想過繞開服務(wù)器,直接通過客戶端請(qǐng)求微信接口,結(jié)果踩了一個(gè)坑。 當(dāng)時(shí)做的是聊天功能,需要對(duì)玩家發(fā)送的消息進(jìn)行內(nèi)容審查。我看完了接口文檔,就跑過去跟服務(wù)器同學(xué)說,內(nèi)容審查我這邊全部做掉就可以,他那邊不需要做額外的處理。
等我們調(diào)通,上了體驗(yàn)版,一打開報(bào)錯(cuò),我才想起來,這個(gè)接口文檔的上面,有一行小字,而且顏色是灰色的,上面寫著:此接口應(yīng)在后端服務(wù)器調(diào)用。 第一次看到這句話,還以為它只不過是一個(gè)警告,所以根本沒把它放在心上,哪知道它居然是一個(gè)error!而在這之前,我還特意做了一些我認(rèn)為比較人性化的設(shè)計(jì),比如使用這個(gè)接口需要一個(gè)密鑰,這個(gè)密鑰是有有效期的,當(dāng)密鑰過期的時(shí)候,我會(huì)把玩家發(fā)送的內(nèi)容保存起來,向后端拉取新的密鑰后,再發(fā)送出去,這樣對(duì)于玩家來說,整個(gè)過程是無感知的。而現(xiàn)在則意味著所有這些都要服務(wù)器去實(shí)現(xiàn)了。 后來,我通過云開發(fā)來實(shí)現(xiàn)多有接口調(diào)用,事情就簡單多了。
就拿登錄來說吧。 由于云函數(shù)具有微信天然鑒權(quán)的能力,可以直接返回openid,這一點(diǎn)對(duì)做登錄確實(shí)很方便。樂享花園需要和享物說平臺(tái)打通小紅花積分?jǐn)?shù)據(jù),所以需要用戶的unionid信息,這一步也是在云函數(shù)中實(shí)現(xiàn)的。 還有access_token,就是剛才用到的密鑰,為什么要單獨(dú)說這個(gè)密鑰呢?因?yàn)樗鼤?huì)用到云函數(shù)特別有意思的功能,那就是定時(shí)觸發(fā)器。由于這個(gè)密鑰是有兩個(gè)小時(shí)有效期的,我們?cè)O(shè)定一個(gè)小時(shí)間隔定時(shí)刷新,保存到數(shù)據(jù)庫中,用的時(shí)候直接從數(shù)據(jù)庫中取出來就可以了,這樣可以保證密鑰永遠(yuǎn)是不過期的。
通過云開發(fā),為微信接口準(zhǔn)備的中轉(zhuǎn)服務(wù)器就不需要了;更重要的是,服務(wù)端與微信接口分離,無需關(guān)心客戶端場景。不管這個(gè)客戶端,是來自h6游戲,還是來自小游戲環(huán)境,對(duì)于服務(wù)端來說,都是一樣的,再也不需要為客戶端提供這樣那樣的權(quán)限接口。
2、云函數(shù)+數(shù)據(jù)庫,實(shí)現(xiàn)全局排行榜功能 正如前面提到的痛點(diǎn),小游戲開發(fā)對(duì)服務(wù)端的另一個(gè)依賴是游戲功能的實(shí)現(xiàn)。對(duì)于大部分小游戲來說,我們唯一用到服務(wù)端的地方就是:保存用戶數(shù)據(jù),展示一個(gè)世界排行榜。而如果用傳統(tǒng)服務(wù)器實(shí)現(xiàn)這些功能的話,你會(huì)發(fā)現(xiàn)需要了解的后端架構(gòu)知識(shí)非常龐大。 有次,我到服務(wù)端同學(xué)的旁邊,原本是打算diss他的,因?yàn)槲夜δ芤呀?jīng)寫完了,他還不知道在忙些什么東西。這時(shí)我看到他在做什么呢 —— 一邊寫dockfile文件,一邊寫linux命令,一邊打開Postman調(diào)試,完了后發(fā)郵件給運(yùn)維說要執(zhí)行幾個(gè)mysql語句。 而所有這些都還沒有涉及到他要開發(fā)的游戲功能! 所以說,一門后端語言從會(huì)寫,到可以放到生產(chǎn)環(huán)境中,是兩個(gè)完全不一樣的概念。 云開發(fā)提供了數(shù)據(jù)庫、云函數(shù)、云存儲(chǔ),通過這些能力,我們完全可以取代服務(wù)器來實(shí)現(xiàn)游戲功能。 在《樂享花園》里,我們通過云開發(fā)實(shí)現(xiàn)了全民成語接龍這個(gè)游戲功能,并且只用了2個(gè)云函數(shù)就實(shí)現(xiàn)了我們對(duì)服務(wù)器的全部需求。這里簡單介紹一下這兩個(gè)云函數(shù): 第一個(gè)云函數(shù)是用來展示世界排行榜。由于云函數(shù)拉取數(shù)據(jù)庫的條目是有限制的,大是100條,其實(shí)這個(gè)已經(jīng)足夠滿足需求了;當(dāng)然了,你要說我們的客戶端很牛,性能不是問題,數(shù)據(jù)什么的先給我來個(gè)2000條,也不是不可以,這里做個(gè)處理就可以了。 另外在檢索數(shù)據(jù)庫數(shù)據(jù)時(shí),這個(gè)過程會(huì)很慢,一定要記得,在后臺(tái)添加數(shù)據(jù)庫索引,可以把這個(gè)過程理解為通過磁盤換取CPU計(jì)算。這樣速度會(huì)快很多。
第二個(gè)云函數(shù)是用來上報(bào)玩家數(shù)據(jù)。這個(gè)比較簡單,一行代碼搞定。
就這樣從微信接口調(diào)用,到游戲功能開發(fā),一款不需要服務(wù)器的小游戲就全部開發(fā)完成了。 小結(jié)
其實(shí),云開發(fā)可以使用的業(yè)務(wù)場景,還有很多,比如, 繞過微信https域名請(qǐng)求限制 存放游戲的全局設(shè)置 保存玩家的個(gè)性化數(shù)據(jù) 。。。 作為開發(fā)者,也希望云開發(fā)未來,可以提供更多的業(yè)務(wù)場景支持,比如 websocket,剛才說的聊天服務(wù)器,就可以省掉了; 幀同步,實(shí)時(shí)對(duì)戰(zhàn)類游戲的實(shí)現(xiàn),就不再有壓力; 日志服務(wù),方便統(tǒng)計(jì),和排查玩家的行為,方便游戲迭代優(yōu)化; 大數(shù)據(jù)統(tǒng)計(jì)分析,可以做一些事件漏斗等等~ 這樣小游戲的研發(fā)門檻,就降得很低很低了! 如果你有關(guān)于使用云開發(fā)TCB相關(guān)的技術(shù)故事/技術(shù)實(shí)戰(zhàn)經(jīng)驗(yàn)想要跟大家分享,歡迎留言聯(lián)系我們哦!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。