原神※千星奇域UGC初体验

前言

最近原神推出了千星奇域玩法,允许玩家进行随心所欲的创作,制作自己的关卡并分享给其他玩家游玩。作为一名原神玩家,我也是第一时间体验了这个新玩法,下面就来分享一下我的个人体验。

其实在几个月之前就有所耳闻,那时已经有up主开始了超前体验,初看有种眼前一亮的感觉。不过体验一段时间后,发现目前的功能还是比较有限,很多东西还需要等待后续更新。

学习

官方学习资料

官方视频教程

官方文字教程

官方文档

奇匠论坛 备注:官方将参与到千星奇域开发中的玩家称为“奇匠”。

官方的学习资料还是挺足的,不过有个非常令人难受的问题:

演示中的文本显示,需达到特定奇匠等级解锁【自定义文本外显】功能,教程中以效果展示为主

上面这句话在文字教程中出现了非常多次,感觉就很无奈……想要显示文本就需要先达到3级,而达到3级就需要发布自己的作品给其他人玩,并达到一定的游玩指数。所以就出现了非常多快速通关的小游戏单纯为了升级而升级。

(更新:截至文章发布的这天,官方终于把【自定义文本外显】功能下放到了2级,只需要通过答题考试即可,真是可喜可贺)

整体印象

千星奇域的编辑器主体是内置在原神客户端中的,有点类似于尘歌壶

编辑器主体包含地形编辑、实体摆放、元件库和战斗预设四个部分:

  1. 地形编辑:地编
  2. 实体摆放:可以将元件库中的元件放到场景中并进行配置,跟Unity的场景是类似的
  3. 元件库:所谓元件也就是预制体,包括物件(静态和动态)、造物(就是怪物)、掉落物(道具的实体形态)、元件组。元件可以挂载通用组件,但目前没有办法添加自定义组件
  4. 战斗预设:可以配置玩家、角色、状态(buff)、技能、本地投射物(客户端投射物)、道具

除了上述之外,还有非常多功能,比如编辑器可以快速试玩、多人试玩等等,不一一赘述。

而千星沙箱也就是节点图编辑器,是一个外部工具,会随着进入千星奇域的同时一起启动

节点图的形式非常像虚幻的蓝图,但是挂载形式更像是Unity的组件系统——每个实体可以挂载多个节点图。

关于节点图的类型:

  • 节点图总体分为服务端节点图和客户端节点图两个大类,这两个大类的区分比较容易,因为客户端节点图只有过滤器和技能这两类,其他类型都是服务器的(实体、状态、职业、道具)
  • 每个类型的节点图只能配置在指定的位置,比如实体节点图只能挂载在实体元件上,技能节点图只能在技能时间轴里调用。

现阶段问题

编辑器

  1. 编辑器没有保存偏好设置,比如镜头垂直速度等,每次重新进入编辑器都要重新配置(不然的话场景里移动镜头会非常不舒服),另外,居然不支持Unity里的Alt加鼠标左键围绕旋转
  2. 无法自定义元件的预设状态,也就是类似于控制器的东西。也许是因为现阶段并不支持自定义模型吧
  3. 大量游戏内容的缺失,角色、怪物、武器,不论模型还是图标都非常匮乏,比如怪物居然几乎只有蒙德的,而且没有任何NPC
  4. BUG:造物不在镜头内就不巡逻

千星沙箱

  1. 有些节点的必要参数即使没有传参也不会提示,比如启动定时器节点一定需要指定目标实体
  2. 无法拼接字符串,可能跟【自定义文本外显】这个功能是一样的考量吧
  3. 耦合程度过高,非常多的地方都需要手填各种ID,包括元件ID、实体ID、对话ID,一旦复杂起来会非常难以维护。明明特效就可以直接选择资产的……
  4. 复合节点无法使用泛型引脚、无法指定底层英文标识符(实际上各个内置节点是可以通过英文名进行搜索的)
  5. 没有配置表支持,比如像配置道具、装备的各项属性都只能通过在关卡实体上添加字典类型的变量来实现
  6. 没有办法让角色自动释放技能、播动画
  7. 没有寻路接口
  8. 局部变量不支持结构体类型
  9. 添加单位状态时的单位参数字典目前仅支持护盾值
  10. 添加了自定义铭牌后就无法显示状态(默认逻辑已经包含状态、生命护盾等)
  11. BUG:配置ID类型的自定义变量没有同步给客户端
  12. BUG: 道具获取时赋予的状态会在复活后丢失(所有状态都不是真正永久的,需要自行实现恢复的逻辑)
  13. BUG:默认血条旁的等级无法隐藏

个人笔记

持续更新中,边玩边学

  • 修改元件后需要手动点击“保存”按钮,Ctrl+S并不会保存
  • 碰撞器需要注意配置生效目标:角色、物件、造物
  • 碰撞器可以添加多个,但是进入碰撞触发器时需要判断触发器ID
  • 碰撞触发器只对碰撞触发源生效,只有怪物和角色默认携带碰撞触发源
  • 非常多的内置界面都是通过挂载组件来完成,选项卡、铭牌、对话气泡、小地图标识、背包、装备栏、商店
  • 只有部分组件可以通过节点图激活和关闭,比如激活/关闭选项卡激活基础运动器
  • 玩家实体拥有角色实体,目前千星奇域里玩家和角色是一一对应的,可以通过获取角色归属的玩家实体节点获取玩家实体(比如碰撞的是角色,但是职业信息在玩家身上)
  • 可以通过以GUID查询实体节点获取实体
  • 玩家是虚拟实体,玩家拥有的角色是逻辑实体,但是玩家实体拥有GUID,而角色实体没有GUID
  • 创建实体创建的只能是场景中提前摆放的实体,只是没有勾选“初始创建”,只有创建元件才是真正动态创建
  • 所有通过创建元件创建的实体都没有GUID
  • 职业可以配置默认镜头、界面、允许的能力。初次切换职业后会变成该职业的默认等级,后续切换会保持记录的等级。相关节点更改玩家职业更改玩家当前职业等级
  • 挂载玩家上的职业节点图可以监听玩家职业更改时,但是角色上的职业节点图无法监听;职业等级变化时也是如此
  • 界面控件组触发事件仅玩家可触发,事件源实体就是玩家实体(此事件对应所有的控件,需要手动判断控件索引来知道点了哪个按钮……)
  • 卡牌选择完成时也是仅玩家可触发
  • 实体销毁时事件仅关卡实体可监听,是全局的实体销毁;这时无法查询实体的标签
  • 实体创建时事件所有实体都可监听,只会对自己触发;此事件是异步出发的,并不会在创建元件后同步调用
  • 注意启动定时器节点并没有提供回调,需要使用定时器触发时来编写定时器逻辑(这是一个通用事件,需要判断定时器名……)
  • 定时器序列是一个列表,表示触发的时间点(而不是间隔),比如[1, 3, 5],表示会分别在第1、3、5秒时触发定时器触发时
  • 默认没有任何技能,需要在[技能-资产库-预设技能]里导入。注意:默认技能的攻击目标包含友方,需要修改打攻击盒的目标阵营
  • 在技能节点图可以通过通知服务器节点图调用服务器,对应服务器节点图的技能节点调用时节点
  • 信号就是一种全局事件,相关节点:发送信号监听信号;信号的事件源实体是自身,发信号的是信号来源实体
  • 目前给角色身上加武器是通过挂载循环特效实现的
  • 可拾取的武器:空物体去掉原生碰撞,添加单手剑特效
  • 自定义变量变化时节点的泛型参数必须确定,否则报错;而且只能监听所在实体的变量;容器类型的没有变化前/后值
  • 有且仅有设置自定义变量会触发变化事件:直接操作容器(列表、字典、结构体)不会触发;赋值相同的值也会触发
  • 可以动态添加自定义变量,但是不会同步给客户端
  • 复合节点也可以使用节点图变量,但是需要在调用节点图里提前定义;复合节点可以使用事件
  • 复合节点可以捕获输入的参数,从而可以获得保存状态的能力
  • 状态里有很多特殊功能,比如禁止移动
  • 能力单元就是特殊能力的封装,方便调用(命中组件调用或者由发起攻击、恢复生命节点调用)
  • 通过节点图调用能力单元必须在能力单元所在实体上,但是可以指定发起者来使用发起者的属性;注意攻击目标不能是能力单元所在实体,可以设置为发起者比如角色
  • 如果调用能力单元攻击没有伤害,很有可能是元件自身属性非常低,需要指定发起者来使用发起者的属性
  • 装备就是归属于装备页签的道具
  • 服务端投射物:实体添加投射运动器组件、命中检测组件,通过创建投射物节点创建(本质上是创建元件,并指定追踪而已),此元件不会随着创建者属性进行变更
  • 客户端投射物(给技能用):新建本地投射物元件,通过定点发射投射物节点创建。本质上,客户端的也是依赖于投射运动器和命中检测组件
  • 如何在服务端调用能力单元:创建投射物
  • 元件详情面板默认是锁住的,类似于Unity的Inspector默认勾了lock,选择其他元件默认不会刷新详情面板
  • 如果取消了道具交互设置中的「允许交易选项」,那么道具将不会在商店中出现
  • 虽然容器(列表等)是按照引用传递的,但是节点输出可能是拷贝的,比如直接修改节点出参列表,再次获取节点出参可能没变
  • 获取局部变量就会定义一个局部变量
  • 状态变化时状态移除时只能在状态节点图中使用
  • 道具节点图:获得道具后会被附加在角色上;背包道具新增时背包道具数量变化时只能在道具节点图里用,而且只会监听到本道具的变化
  • 如果道具配置为进包自动使用,将不会弹出获得提示。可以改成自行判断然后修改道具数量
  • 如果新建道具时选择的不是装备类型,后续即使改成装备页签也不能作为装备
  • 虽然修改界面布局内控件状态传入的是玩家,但其实是跟玩家的职业绑定的,切换职业后会恢复默认状态
  • 技能动画时间轴里得「结束事件轨道」可以在技能被打断时触发,可以用来退出技能状态
  • 角色倒地后会清除所有状态,在状态节点图的单位状态结束时中移除原因为「状态失效」,可以同时判断所有角色是否倒地以及移除者是否为空
  • 可以用自定义变量用来做接口调用和接口实现
  • 某些造物不攻击,很可能是因为没有烘焙寻路网格