作者eplis (Eplis)
看板mud_mars
標題[閒聊] 為什麼不做屬性攻擊
時間Fri Dec 7 11:58:42 2012
很多人提過這個東西,攻擊附帶了火系傷害之類的,聽起來很簡單,
做起來貌似也不難,但是那是要看基於什麼架構底下。來談談Mars吧!
Mars的每一個系技能是在一個skill table裡面,每個系技能有各種招式
(這邊統稱spell,無論是物理或法術,事實上任何東西都叫spell)
當承受攻擊時會去統計身上該系的抗性,例如我被火系攻擊就會去統計
火系的總抗性是多少,再來做加減。Mars的每個spell都是規類在skill
底下,所以劍系的招就是對應在劍系的抗性底下。
所以抗性到底實作上如何觸發?
每個skill都有所謂的sn,也就是skill_number,當你使用這系的招式時
就會去觸發抗性計算,你身上有這個sn的抗性就會進行減免
fireball火球術 -> 屬於 Fire -> sn_fire -> 呼叫抗性減免計算(sn_fire)
所以無法在各招裡面分別設定是什麼抗性。
如果真的要做,當然不是不行,畢竟程式絕對辦得到,問題是你要怎麼寫
有一定程式經驗的人都知道,去維護別人的code是很累人的,如果架構寫
得好、夠彈性,那就算輕鬆,如果是一堆程式規範外的特例,那保證日後
維護會搞死人。而且程式這種東西,每日隨便寫都是幾百行以上,昨天的
想法搞不好到今天就會忘記了,所以會要求開發者要下註解,至目前為止
我看Mars的註解只有泡麵有在做,雖然還是很少很不清楚,但是相對之下
算是好的了,其他像是只會寫 by xxx 這種註解就算了吧!是代表說這我
寫的不准刪除嗎?還是這我寫的有問題可以找我?
什麼叫做特例很難維護?
範例一:
各職業在每個等級、每種陣營都有自己的稱號,例如滿等正義的武士就是
真武大將,這些內容統一寫在一個table內,放在一個職稱的檔案。在顯示
職稱時會呼叫這個檔案內的table,然後找到對應的職稱顯示出來,偏偏就
有人喜歡在呼叫的時後加入一個判斷,例如 ID = xxx 的時後另外顯示自
己定義的職稱。所以這應該怎麼維護?要修改職稱不是應該去找存放職稱
的檔案嗎?變得要改一個東西需要去搜尋其他檔案看他放在哪。
範例二:
一定有很多MOB無法被一擊必殺吧!像是不能被call death or weakhit
這些東西原本是沒有所謂的tag的,也就是說你要寫出不能被一擊殺的MOB
需要進程式裡面,找到 call_death 這招的程式,加入一個例外判斷,這
判斷叫做 if(ID = xxx) { 一擊殺無效; } 這樣。那請問未來無法接觸
程式碼的開發者需要如何做這種區域MOB?這也就是先天很大的缺陷,很
多創意性的功能都因為要修改程式,變得必須要捨棄。這種東西很好解決,
只要在定義檔新增一個 免疫一擊殺 的標籤,接著在招式裡面遇到MOB有
這種標籤就免疫。接下來任何開發者就可以直接在怪物定義檔裡設定這個
標籤,即使不需修改程式也能達到目的!
所以很多功能不是不做,是現階段程式碼寫得太死。很長一段時間我都在
修改架構,所以很少再新增區域。目的是為了讓想做創意區域、技能等的
人有更大的發揮空間。
--
Mars-瑪爾斯群英傳,為一種多人的地下城文字網路遊戲(MUD),
以西方魔法奇幻風格為背景,讓玩家扮演各種職業進行冒險、解謎。
IP:
220.135.242.105:8888 討論板:
PTT mud_mars
Eplis @ Mars
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.71.24
推 dasskabusk:b( ̄︿ ̄)d辛苦了ep 12/07 12:27
推 minder116: b( ̄︿ ̄)d辛苦了ep 12/07 12:38
→ eplis:還有誰想了解什麼我趕快講一講 解釋清楚 12/07 12:51
推 dasskabusk:多幾個被動技能? :D 像是死神協定那種的 XDDD 12/07 12:55
→ dasskabusk:歐 對了 還有合擊? 這個東西做的到嘛? 12/07 12:56
→ lizardXD:你為什麼寧願去出差也不來跟我玩(拍桌 12/07 12:57
→ eplis:盚褔@去玩桌遊也不要去出差 出差只能換地方上網(茶 12/07 13:00
→ eplis:合擊是兩個mob一起打暴你嗎XD 12/07 13:00
→ eplis:mob做合擊會比玩家容易..戛a的狀況比較特殊 12/07 13:00
推 lizardXD:結果你是不是出差了嘛 12/07 13:01
→ eplis:為啥我今天的推文都變亂碼 12/07 13:01
→ eplis:吃人頭路嘛 12/07 13:01
推 prtsrc:從 Mob 開始也不錯,或許哪天玩家就也有了 XD 12/07 13:47
推 dasskabusk:那 連續技哩? XDDD 12/07 13:47
推 prtsrc:畫面已經夠洗了 XD 12/07 13:50
推 prtsrc:從結構下去解決才是根本之道,只是比較辛苦,加油!! 12/07 13:53
→ eplis:戰鬥中看到死神協定超有成就感得不是嗎XD 12/07 14:48
推 dasskabusk:是阿 超有成就感的 XDDD 12/07 16:51