uno
上周五公司年會(huì)。在一個(gè)從頭到尾我都不知道名稱的地方進(jìn)行的。最有吸引力的抽獎(jiǎng)環(huán)節(jié)中,我們小組全軍覆沒(méi)。明年繼續(xù)幻想! 周五晚上玩了一種叫UNO的紙牌游戲。和變色龍有點(diǎn)相似。不過(guò)有更豐富的功能牌。9個(gè)人玩到晚上3點(diǎn)多,實(shí)在撐不住了。 周一回到公司開始構(gòu)思寫一個(gè)這樣flash游戲。今天終于有點(diǎn)眉目了,寫了4千多行代碼,先看看截圖吧。設(shè)計(jì)就不要打擊我了,一切從簡(jiǎn)! 游戲使用的架構(gòu)有點(diǎn)特別。flash即使服務(wù)器,又是客戶端;所有計(jì)算都在客戶端,然后數(shù)據(jù)在swf里面計(jì)算后,交給服務(wù)器,由服務(wù)器分發(fā)給所有連接玩家: 這里展示是一個(gè)大致的數(shù)據(jù)流向,那玩家出牌為例:玩家點(diǎn)擊一張牌出牌,這時(shí)候并沒(méi)有出牌,而是將改動(dòng)作發(fā)送給服務(wù)器【2】,服務(wù)器將數(shù)據(jù)分發(fā)【3】;這個(gè)時(shí)候,主swf(主swf是整個(gè)游戲模型運(yùn)作中心)接收到該數(shù)據(jù)后,將數(shù)據(jù)輸入游戲模型中做運(yùn)算處理【4】。處理后,該結(jié)果——真正的出一張牌,被交給服務(wù)器分發(fā)【6】。接下來(lái)就是各個(gè)swf接收到該數(shù)據(jù),做相應(yīng)處理。 這樣的架構(gòu),缺點(diǎn)肯定是存在。首先是數(shù)據(jù)請(qǐng)求太繁瑣。每個(gè)操作幾乎都是得先發(fā)送操作請(qǐng)求,然后到主swf中去運(yùn)行。然后才被公之于眾。不過(guò),同時(shí)又體現(xiàn)了一個(gè)優(yōu)點(diǎn)——服務(wù)器架構(gòu)簡(jiǎn)單!因?yàn)?#xff0c;此時(shí)服務(wù)器就只做一件事:接受數(shù)據(jù)并分發(fā)。其實(shí)使用這樣的架構(gòu),也是由于我?guī)缀醪欢?wù)器端的搭建。就在周一,我嘗試用用socket連php,結(jié)果無(wú)奈失敗二終。最后還是使用FMS——這個(gè)游戲服務(wù)器端,只有32行代碼。這個(gè)代碼量,估計(jì)用任何后臺(tái)語(yǔ)言重構(gòu)都是一件簡(jiǎn)單的事。 令一個(gè)缺點(diǎn)就是,數(shù)據(jù)的保密性。由于游戲模型在swf中運(yùn)行,這樣就難免需要發(fā)送一些敏感數(shù)據(jù)。比如,當(dāng)主swf關(guān)閉時(shí),同時(shí)其整個(gè)游戲的模型也被銷毀,為了游戲能照常運(yùn)行,需要另外的swf重構(gòu)一個(gè)model來(lái)繼續(xù)運(yùn)行整個(gè)游戲。這個(gè)時(shí)候就需要原先模型的運(yùn)行數(shù)據(jù)。于是模型的運(yùn)行數(shù)據(jù)被無(wú)情的被傳遞,包括當(dāng)前用戶手中牌列表。如果采用服務(wù)器運(yùn)行游戲模型的話,就不需要了。服務(wù)器肯定是一直開著的。 自己其實(shí)還是挺喜歡這樣的架構(gòu)——適合做一些局域網(wǎng)內(nèi)運(yùn)行的小游戲。這次也是第一次開發(fā)紙牌類游戲。a za za~~
轉(zhuǎn)載于:https://www.cnblogs.com/laan860102/archive/2009/01/16/1509232.html
總結(jié)
- 上一篇: Session对象的集合
- 下一篇: XP屏幕上下翻转的现象及解决