近期重構(gòu)技能的一些心得

重構(gòu)心得

????最近一直在做有關(guān)技能和戰(zhàn)斗相關(guān)的代碼整理奏瞬,也史無前例血淚交加的進(jìn)行了3次重構(gòu)侄刽,程序員果然是一群與眾不同的群體,如此的樂于推翻自己過往的工作,卻又樂此不疲蒲赂。

????但是話說回來阱冶,每一次的重構(gòu)都帶來的意想不到的效果,雖然說中途會遇到一些小問題滥嘴,但是大體上來說木蹬,重構(gòu)帶來的好處是非常多的,特別適合項(xiàng)目前期探索階段若皱。

戰(zhàn)斗技能的腳本系統(tǒng)

????一般游戲都免不了需要接觸戰(zhàn)斗系統(tǒng)镊叁,戰(zhàn)斗無非就是單位/技能/Buff/飛行物/事件這些模塊而已。而這其中的核心就是技能走触。 最開始做的一版架構(gòu)下晦譬,每一個技能都由腳本進(jìn)行處理,通過技能表直接映射到技能文件互广,新加一個技能新寫一個腳本文件敛腌,這樣的好處是,技能邏輯可以做的非常靈活惫皱,而且調(diào)試也比較方便像樊,直接在相應(yīng)的技能中output或者斷點(diǎn)就好了。

第二次重構(gòu)

????不過上述做法缺點(diǎn)也是很明顯的逸吵,新加一個技能必須重新新一些一個腳本凶硅。雖然可以通過模版的方式減少后續(xù)的操作,但是追求完美的程序是不會止步于此(閑的蛋疼)的扫皱,考慮到多數(shù)技能可能只是中途的某些元素不一樣足绅,其實(shí)多數(shù)流程大體上都差不多(造成傷害,搜索單位韩脑,移動目標(biāo)氢妈,顯示特效,播放動作段多,等等)首量,那么我們是不是可以將這些元素獨(dú)立出來,并提供一個可以配置的機(jī)制进苍,這樣任何一個技能只是基礎(chǔ)元素的組合加缘,程序只需要維護(hù)一個個的基礎(chǔ)元素就好。這樣就形成了第二次重構(gòu)的思路基礎(chǔ)觉啊。具體設(shè)計上拣宏,我們獨(dú)立出來了一個效果的概念,技能可以擁有多個效果杠人,效果可以主動施放的時候觸發(fā)勋乾,也可以被動監(jiān)聽事件的時候觸發(fā)宋下,效果內(nèi)部是一個個的基礎(chǔ)元素,我們稱之為操作辑莫,操作附帶條件学歧,這樣一個效果內(nèi)就形成了一個簡單的邏輯,技能施放本質(zhì)上就是走效果內(nèi)部的邏輯流程各吨。工作中實(shí)際情況是枝笨,重構(gòu)結(jié)束后技能應(yīng)用配置上也確實(shí)達(dá)到了預(yù)期的效果,程序員不用再維護(hù)一個個的技能了绅你,確實(shí)蠻爽的伺帘,但是需要著重注意的一點(diǎn)是,對基礎(chǔ)元素的設(shè)計一定要慎重忌锯,我們現(xiàn)在光是傷害就有5種基礎(chǔ)的操作伪嫁,沒辦法,需求就是要支持不同類型偶垮。所以基礎(chǔ)元素的設(shè)計一定要根據(jù)具體的游戲需求來张咳。

第三次重構(gòu)

????最開始的設(shè)計上,邏輯和顯示是一一對應(yīng)的似舵,完全的所見即所得脚猾,游戲中進(jìn)行到了什么步驟,比如回合制中等待玩家操作砚哗,單位A移動中這些情況下龙助,邏輯也是完全處于這個狀態(tài)的,這種設(shè)計的好處是在于蛛芥,所見即所得提鸟,調(diào)試清晰,缺點(diǎn)也非常的明顯仅淑,就是邏輯和顯示存在耦合称勋。舉個例子就是施放技能,當(dāng)顯示復(fù)雜一些的時候涯竟,邏輯甚至需要去讀取某一個模型的執(zhí)行時間來決定邏輯自身需要協(xié)程式的卡住多久赡鲜,這種設(shè)計下實(shí)現(xiàn)邏輯會非常復(fù)雜,特別是邏輯存在各種各樣事件的時候庐船。這個需求促使了我們進(jìn)行了第三次重構(gòu)银酬。首先我們分析,由于我們自己是一個回合制游戲筐钟,游戲中并不存在過多的玩家操作揩瞪,甚至可以非常簡化,即輪到玩家的操作盗棵,施放一下技能壮韭,后續(xù)的邏輯(直到下一輪之前)都是確定的。那么我們可以這樣設(shè)計:玩家操作后(主要是技能施放)纹因,邏輯就開始進(jìn)行運(yùn)算喷屋,在一幀之內(nèi)將所有的結(jié)果都計算完畢,亦即邏輯已經(jīng)停留在了下一回合階段瞭恰,在這個過程中邏輯會輸出一系列的顯示流屯曹,通知顯示進(jìn)行處理。顯示層根據(jù)顯示流來進(jìn)行一個個具體表現(xiàn)的處理惊畏,諸如顯示單位恶耽,播放動作,播放特效等等颜启。這樣的好處是偷俭,將復(fù)雜的表現(xiàn)和清晰的邏輯分開,表現(xiàn)層只關(guān)心自己的表現(xiàn)缰盏,而邏輯可以更清晰的處理自己最終輸出數(shù)據(jù)的結(jié)果涌萤,分離的算是比較完美。這種設(shè)計的復(fù)雜度會更多的交給表現(xiàn)口猜,甚至是表現(xiàn)需要負(fù)責(zé)進(jìn)行表現(xiàn)的排序處理等等负溪。不過這種設(shè)計帶來的好處實(shí)在是太多了,過往我們需要做諸如游戲開始后整個邏輯屏幕抖動一下/播放各種特效后游戲才真正開始這樣的效果济炎,是需要修改邏輯的川抡,現(xiàn)在邏輯已經(jīng)完全不關(guān)心這個了,全部交給表現(xiàn)來處理须尚,可以做很多豐富的效果崖堤。

總結(jié)

????總而言之,對于產(chǎn)品來說恨闪,好的游戲都是磨出來的倘感,而對于程序來說,好的設(shè)計也都是重構(gòu)出來的咙咽。 與君共勉@下辍!钧敞!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜡豹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溉苛,更是在濱河造成了極大的恐慌镜廉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啡彬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)体捏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門塔插,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梗摇,“玉大人,你說我怎么就攤上這事想许×媸冢” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵流纹,是天一觀的道長糜烹。 經(jīng)常有香客問我,道長漱凝,這世上最難降的妖魔是什么疮蹦? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮碉哑,結(jié)果婚禮上挚币,老公的妹妹穿的比我還像新娘。我一直安慰自己扣典,他們只是感情好妆毕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贮尖,像睡著了一般笛粘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湿硝,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天薪前,我揣著相機(jī)與錄音,去河邊找鬼关斜。 笑死示括,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痢畜。 我是一名探鬼主播垛膝,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丁稀!你這毒婦竟也來了吼拥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤线衫,失蹤者是張志新(化名)和其女友劉穎凿可,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體授账,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枯跑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年惨驶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敛助。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡敞咧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜腺,到底是詐尸還是另有隱情,我是刑警寧澤乍恐,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布评疗,位于F島的核電站,受9級特大地震影響茵烈,放射性物質(zhì)發(fā)生泄漏百匆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一呜投、第九天 我趴在偏房一處隱蔽的房頂上張望加匈。 院中可真熱鬧,春花似錦仑荐、人聲如沸雕拼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啥寇。三九已至,卻和暖如春洒扎,著一層夾襖步出監(jiān)牢的瞬間辑甜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工袍冷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留磷醋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓胡诗,卻偏偏與公主長得像邓线,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子乃戈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案褂痰? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,753評論 1 92
  • 教程ISO11 Beta 降級 ISO10 ???本人iPhone6S和iPhone6,在第一時間升級了IOS11...
    i黃濤閱讀 859評論 0 1
  • 故事斷片了吧,要不怎么亂的找不到邏輯呢症虑? 當(dāng)生活變得不純粹的時候缩歪,心情也有了雜質(zhì)。不知何時后來的我比以前的想象中多...
    意恐遲遲閱讀 300評論 0 0
  • “大多數(shù)人都在關(guān)注你飛的高不高谍憔,只有少數(shù)人關(guān)心你飛的累不累匪蝙≈骷” 不記得是幾年前,這句話開始在網(wǎng)絡(luò)上盛行逛球。咋聽之下千元,...
    my彩色沙漠閱讀 286評論 6 9