相位技術
相位技術大規模出現在魔獸世界WLK版本, 現在應用已經廣泛應用在各種MMORPG游戲中. 下面對相位技術的做法進行簡單歸納匯總
表現分類
副本相位
早期副本的出現, 避免搶怪問題. 所以, 副本其實本身就是一種相位技術. 只不過實現時, 我們一般會將小隊和怪物直接預分配在獨立的一個副本實例中(所以副本原文也是實例的意思)
分線相位
相位技術還沒有正式命名時, 同一個場景, 玩家進到不同的分線看到的玩家不一樣, 也是屬于相位的一種. 當然, 如果是組隊玩家, 服務器默認會分配所有隊伍玩家在同一個線(位面)
真相位
副本相位和分線相位其實都是靜態相位, 一旦進入, 中途不會有切換或者混合查看的過程. 真相位可以在一個場景中,動態切換相位, 相位內和相位外所以不同
我們常見的真相位表現為: 相位中的角色+玩家+隊伍成員
在護送任務時, 還會在上面所見角色中疊加世界中的所有角色, 也就是說, 你和隊伍成員可以看到的角色, 其他人看不到, 其他人也看不到你和你的隊伍成員
為了清晰的簡單的描述, 我為相位創建如下概念與名詞
相位客體
表現為除玩家外的角色(怪物,交互物體與相位可見場景)
私有客體
這是最常見的一種相位內角色
持有變量
取PhasingID時,為PhasingTargetID
生成規則
當玩家開啟相位后, 在玩家相位內生成的角色為私有客體.
此時, 將 PhasingTargetID設置為相位生成者的實例ID
刪除規則
如果玩家退出相位, 私有客體會存在一段時間或按照需求刪除
公共客體
一般指提前放置在場景中, 世界內不可見, 但是能被同相位玩家可見,且同相位玩家都可以互相可見 比如: 只要接了同一個任務的玩家, 都可以看到的NPC
持有變量
取PhasingID時,為PublicPhasingID
生成規則
通過場景編輯器, 放置角色時, 設置其可被觀察到的任務ID
角色被加載后, 將任務ID設置到StaticPhasingID
刪除規則
場景刪除, 角色刪除
相位主體
包含玩家與同隊伍玩家
相位開啟時, 取PhasingID時, 為角色實例ID
相位關閉時, 取PhasingID時, 為0
PublicPhasingID
可見規則
當兩個角色的PhasingID相等時, 主體與私有客體互相可見
當兩個角色的PublicPhasingID相等時, 主體與公有客體互相可見
可以通過開關設置, 是否在可見的相位客體基礎上, 疊加世界角色(護送任務)
約束