相位技术介绍
相位技术(phasing technology),让玩家暂时或永久性在同一个地区,却有不同的视觉效果来体验游戏,藉由相位转换,你可以跟其它玩家共享该地区不同的视觉效果。
相位技术本质上是一种动态渲染系统,根据玩家的情况而显示不同的世界。例如:
当玩家完成了某个营救村民的任务后,在其看来这些村民就会永远一直出现在村里,而那些还没有完成该任务的玩家则无法看见这些村民。
死骑初始任务系统同样也是这种相位变换的另一种应用。随着玩家故事线的进展,建筑物会开始起火,NPC们开始徘徊,军队的出现或是战争开始等等,但彼此并不会互相干扰到。
相位分类
副本相位
早期为避免抢怪的问题,因此副本出现。副本其实本身就是一种相位技术,只不过实现时,一般会将小队和怪物直接预分配在独立的一个副本实例中(所以副本原文也是实例的意思)
分线相位
同一个场景,玩家进到不同的分线看到的玩家、NPC等游戏对象不一样,这也是属于相位的一种. 如果是组队玩家,服务器默认会将所有队伍玩家分配到同一个线(位面)
真相位
副本相位和分线相位其实都是静态相位,一旦进入,中途不会有切换或者混合查看的过程。真相位则可以在一个场景中动态切换相位,相位内和相位外所见不同。常见的真相位表现为:相位中的角色+玩家+队伍成员。
在护送任务时,还会在上面所见角色中叠加世界中的所有角色,也就是说,你和队伍成员可以看到的角色,其他人看不到,其他人也看不到你和你的队伍成员
实现原理
指定一个主位面,它是覆盖全地图的。其它位面都有一定的影响区域。次位面一般只在地图的某个区域上布置。玩家会因为任务进度的情况进入次位面,但在次位面上移动超过影响区域就自动切回主位面。
为了表述清楚准确, 为相位创建如下定义
相位客体
表现为除玩家外的角色(怪物,交互物体与相位可见场景)
私有客体
这是最常见的一种相位内角色
-
持有变量
取PhasingID时,为PhasingTargetID
-
生成规则
当玩家开启相位后, 在玩家相位内生成的角色为私有客体.
此时, 将 PhasingTargetID设置为相位生成者的实例ID
-
删除规则
如果玩家退出相位, 私有客体会存在一段时间或按照需求删除
公共客体
一般指提前放置在场景中, 世界内不可见, 但是能被同相位玩家可见,且同相位玩家都可以互相可见 比如: 只要接了同一个任务的玩家, 都可以看到的NPC
-
持有变量
取PhasingID时,为PublicPhasingID
-
生成规则
通过场景编辑器, 放置角色时, 设置其可被观察到的任务ID
角色被加载后, 将任务ID设置到StaticPhasingID
-
删除规则
场景删除, 角色删除
相位主体
包含玩家与同队伍玩家
-
开启相位后, 可见私有客体+公有客体
-
队长视为相位主体, 单人时, 自己为队长
-
队伍其他成员共享队长的私有相位客体
-
队伍其他成员根据自己的PublicPhasingID匹配目标对象的PublicPhasingID时可互相可见
-
持有变量
相位开启时, 取PhasingID时, 为角色实例ID
相位关闭时, 取PhasingID时, 为0
PublicPhasingID
可见规则
当两个角色的PhasingID相等时, 主体与私有客体互相可见
当两个角色的PublicPhasingID相等时, 主体与公有客体互相可见
可以通过开关设置, 是否在可见的相位客体基础上, 叠加世界角色(护送任务)
约束
- 玩家同时只能看见1个相位