溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

發(fā)布時(shí)間:2020-07-12 08:21:24 來(lái)源:網(wǎng)絡(luò) 閱讀:725 作者:騰訊技術(shù) 欄目:移動(dòng)開發(fā)

我是代長(zhǎng)新,來(lái)自上海享物說(shuō),主要負(fù)責(zé)游戲客戶端研發(fā)。


如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲


享物說(shuō)是一個(gè)大家可以互相贈(zèng)送物品,有趣、不花錢的社區(qū)平臺(tái)。為了創(chuàng)造更好的社區(qū)氛圍,我們決定通過(guò)小游戲來(lái)增加社區(qū)的趣味性和互動(dòng)性。

《樂(lè)享花園》是我們?cè)谛∮螒蝾I(lǐng)域的第一個(gè)實(shí)踐。這個(gè)游戲,從立項(xiàng)到做完,準(zhǔn)確的說(shuō)是客戶端做完,我們一共用了3天的時(shí)間。

但是,當(dāng)時(shí)我們種花澆花、領(lǐng)水滴任務(wù)都是通過(guò)瀏覽器緩存實(shí)現(xiàn)的,如果要上線還要等服務(wù)端人員到位,否則玩家清理一下手機(jī),自己種的花就沒了。但等我們服務(wù)端人員到位,再到游戲上線,就是幾周以后的事情了。


小游戲開發(fā)之痛:無(wú)法擺脫對(duì)服務(wù)端的依賴


相信,這也是大部分小游戲開發(fā)時(shí)會(huì)遇到的問(wèn)題 —— 功能很簡(jiǎn)單,但就是擺脫不了對(duì)服務(wù)端的依賴。如下圖:

如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

具體來(lái)說(shuō),小游戲?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ì)于很多小游戲來(lái)說(shuō),我們唯一用到服務(wù)端的地方就是,儲(chǔ)存當(dāng)前的關(guān)卡進(jìn)度,展示一個(gè)世界排行,就可以了。而想要實(shí)現(xiàn)這么一個(gè)簡(jiǎn)單的需求時(shí),你會(huì)發(fā)現(xiàn),隔行如隔山。


如何用云開發(fā)解決小游戲在服務(wù)端痛點(diǎn)?


1、云函數(shù)實(shí)現(xiàn)微信接口調(diào)用

曾經(jīng),我想過(guò)繞開服務(wù)器,直接通過(guò)客戶端請(qǐng)求微信接口,結(jié)果踩了一個(gè)坑。

當(dāng)時(shí)做的是聊天功能,需要對(duì)玩家發(fā)送的消息進(jìn)行內(nèi)容審查。我看完了接口文檔,就跑過(guò)去跟服務(wù)器同學(xué)說(shuō),內(nèi)容審查我這邊全部做掉就可以,他那邊不需要做額外的處理。

如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

等我們調(diào)通,上了體驗(yàn)版,一打開報(bào)錯(cuò),我才想起來(lái),這個(gè)接口文檔的上面,有一行小字,而且顏色是灰色的,上面寫著:此接口應(yīng)在后端服務(wù)器調(diào)用。

第一次看到這句話,還以為它只不過(guò)是一個(gè)警告,所以根本沒把它放在心上,哪知道它居然是一個(gè)error!而在這之前,我還特意做了一些我認(rèn)為比較人性化的設(shè)計(jì),比如使用這個(gè)接口需要一個(gè)密鑰,這個(gè)密鑰是有有效期的,當(dāng)密鑰過(guò)期的時(shí)候,我會(huì)把玩家發(fā)送的內(nèi)容保存起來(lái),向后端拉取新的密鑰后,再發(fā)送出去,這樣對(duì)于玩家來(lái)說(shuō),整個(gè)過(guò)程是無(wú)感知的。而現(xiàn)在則意味著所有這些都要服務(wù)器去實(shí)現(xiàn)了。

后來(lái),我通過(guò)云開發(fā)來(lái)實(shí)現(xiàn)多有接口調(diào)用,事情就簡(jiǎn)單多了。

如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

就拿登錄來(lái)說(shuō)吧。

由于云函數(shù)具有微信天然鑒權(quán)的能力,可以直接返回openid,這一點(diǎn)對(duì)做登錄確實(shí)很方便。樂(lè)享花園需要和享物說(shuō)平臺(tái)打通小紅花積分?jǐn)?shù)據(jù),所以需要用戶的unionid信息,這一步也是在云函數(shù)中實(shí)現(xiàn)的。

還有access_token,就是剛才用到的密鑰,為什么要單獨(dú)說(shuō)這個(gè)密鑰呢?因?yàn)樗鼤?huì)用到云函數(shù)特別有意思的功能,那就是定時(shí)觸發(fā)器。由于這個(gè)密鑰是有兩個(gè)小時(shí)有效期的,我們?cè)O(shè)定一個(gè)小時(shí)間隔定時(shí)刷新,保存到數(shù)據(jù)庫(kù)中,用的時(shí)候直接從數(shù)據(jù)庫(kù)中取出來(lái)就可以了,這樣可以保證密鑰永遠(yuǎn)是不過(guò)期的。


如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

通過(guò)云開發(fā),為微信接口準(zhǔn)備的中轉(zhuǎn)服務(wù)器就不需要了;更重要的是,服務(wù)端與微信接口分離,無(wú)需關(guān)心客戶端場(chǎng)景。不管這個(gè)客戶端,是來(lái)自h6游戲,還是來(lái)自小游戲環(huán)境,對(duì)于服務(wù)端來(lái)說(shuō),都是一樣的,再也不需要為客戶端提供這樣那樣的權(quán)限接口。


2、云函數(shù)+數(shù)據(jù)庫(kù),實(shí)現(xiàn)全局排行榜功能

正如前面提到的痛點(diǎn),小游戲開發(fā)對(duì)服務(wù)端的另一個(gè)依賴是游戲功能的實(shí)現(xiàn)。對(duì)于大部分小游戲來(lái)說(shuō),我們唯一用到服務(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)維說(shuō)要執(zhí)行幾個(gè)mysql語(yǔ)句。

而所有這些都還沒有涉及到他要開發(fā)的游戲功能!

所以說(shuō),一門后端語(yǔ)言從會(huì)寫,到可以放到生產(chǎn)環(huán)境中,是兩個(gè)完全不一樣的概念。

云開發(fā)提供了數(shù)據(jù)庫(kù)、云函數(shù)、云存儲(chǔ),通過(guò)這些能力,我們完全可以取代服務(wù)器來(lái)實(shí)現(xiàn)游戲功能。

在《樂(lè)享花園》里,我們通過(guò)云開發(fā)實(shí)現(xiàn)了全民成語(yǔ)接龍這個(gè)游戲功能,并且只用了2個(gè)云函數(shù)就實(shí)現(xiàn)了我們對(duì)服務(wù)器的全部需求。這里簡(jiǎn)單介紹一下這兩個(gè)云函數(shù):

第一個(gè)云函數(shù)是用來(lái)展示世界排行榜。由于云函數(shù)拉取數(shù)據(jù)庫(kù)的條目是有限制的,最大是100條,其實(shí)這個(gè)已經(jīng)足夠滿足需求了;當(dāng)然了,你要說(shuō)我們的客戶端很牛,性能不是問(wèn)題,數(shù)據(jù)什么的先給我來(lái)個(gè)2000條,也不是不可以,這里做個(gè)處理就可以了。

另外在檢索數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),這個(gè)過(guò)程會(huì)很慢,一定要記得,在后臺(tái)添加數(shù)據(jù)庫(kù)索引,可以把這個(gè)過(guò)程理解為通過(guò)磁盤換取CPU計(jì)算。這樣速度會(huì)快很多。


如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲


第二個(gè)云函數(shù)是用來(lái)上報(bào)玩家數(shù)據(jù)。這個(gè)比較簡(jiǎn)單,一行代碼搞定。

如何不用服務(wù)器來(lái)開發(fā)一個(gè)小游戲

就這樣從微信接口調(diào)用,到游戲功能開發(fā),一款不需要服務(wù)器的小游戲就全部開發(fā)完成了。


小結(jié)


其實(shí),云開發(fā)可以使用的業(yè)務(wù)場(chǎng)景,還有很多,比如,

繞過(guò)微信https域名請(qǐng)求限制

存放游戲的全局設(shè)置

保存玩家的個(gè)性化數(shù)據(jù)

。。。


作為開發(fā)者,也希望云開發(fā)未來(lái),可以提供更多的業(yè)務(wù)場(chǎng)景支持,比如

websocket,剛才說(shuō)的聊天服務(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)系我們哦!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI