浅谈游戏单位属性模块设计:属性组成、分级、计算与同步
一個單位的屬性(攻擊力、最大血量、防御力等)一般由多個模塊決定,比如我們游戲的屬性由三塊決定:
1.基礎屬性:由單位的等級和成長決定。
2.裝備屬性:影響人物面板顯示的屬性值。最常見的是裝備等。
3.外部屬性:每次進入副本時都會重置。一般來說,都是由戰斗過程中的buff等影響
屬性分級
單位的屬性一般分為多級,比如lv影響力量、敏捷,力量又影響血量、攻擊力,那么把屬性分級為:
0:等級
1:力量、敏捷
2:血量、攻擊力
?
屬性計算
屬性的計算每次都是由低級屬性開始,計算到最高級屬性。
一般來說,每次修改了低級屬性,那么高級屬性都需要重新計算。
具體的計算方式根據策劃需求可能不同。
屬性同步
對于每個玩家,他都有一個面板屬性(也就是顯示在玩家屬性UI上的數值),此屬性包括了基礎屬性和裝備屬性,當玩家賣手游每次進入游戲時,首先根據他的等級信息和裝備信息計算他的面板屬性,并保存到player模塊中。
每次進入場景創建一個玩家單位的時候,單位把面板屬性保存在屬性組件中,在戰斗過程中buff等可能修改外部屬性,但外部屬性并不保存在player模塊中,即玩家更換場景時buff對屬性的修改就清空了。(不同游戲需求也不同,有的游戲可能要求buff信息也保存在玩家身上,這樣玩家更換場景buff也存在)
狀態同步
屬性的同步應該使用狀態同步而不是命令同步(battle server和client之間),這主要是因為AOI等問題,命令同步并不能保證屬性的一致。
此外,因為傷害結算等大部分邏輯都在battle server中計算,其實client中并不需要保存太多屬性信息,只需要將client需要知道的屬性信息如血量/最大血量比例等同步到客戶端用于表現。
總結
以上是生活随笔為你收集整理的浅谈游戏单位属性模块设计:属性组成、分级、计算与同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity热更新方案探索与讨论
- 下一篇: Unity VR游戏开发干货教程:优化V