查看: 5180|回复: 14

[讨论] Clickteam Fusion 2.5+更新内容一览及个人经验

[复制链接]

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

发表于 2020-3-20 10:33:39 | 显示全部楼层 |阅读模式
众所周知现在CTF有了2.5+版本
为了让大家(尤其是英文太长不看的人)了解CTF2.5+究竟更新了哪些地方
我就来把官方的更新内容翻译一下
顺便说一些个人使用上的心得吧~

评分

参与人数 2经验 +6 收起 理由
囿里有条小咸鱼 + 3 是个好东西,赞了
2333ty + 3 支持!

查看全部评分

个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 10:40:25 | 显示全部楼层
综述
这次 2.5+ 的功能主要是面向大型项目的,让 CTF 原本不易制作大型项目这一软肋得到了很好的优化。对于 MF 这边来说,很多制作者以前被困扰的问题都得到了很好的解决,所以就这个更新方向来说,大家还是可以期待一下的。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 10:53:05 | 显示全部楼层
综合改进
· 现在存储和读取 mfa 时间变快了。
  (但是对大作还是有点慢
· Find All 功能
  CTF 的编辑器内新增了 Find All 功能,按 Ctrl+Shift+F 或 Edit-Find All... 可以调出,其允许你查找应用中的当前/所有场景(frame)有特定字符的元件名称/值/数据/事件/表达式等,并且会返回这个字符所出现的具体位置(精确到第几行事件的第几个动作/条件)。
  Find All 搜索时只要出现这个字符就算,例如搜索"Always"有惊喜,所以请慎重填写搜索字段~

· Profiler 功能
  Profiler 功能可以用于计算执行一段脚本或是具体一行事件所实际消耗的时间,以便确定项目中运行效率的瓶颈并且用于确定应用的最佳帧率。
  如果需要对整个应用进行 profile,需要先在整个应用的 proprerties 的 Settings 选项卡(一般是第一个选项卡)的 Profiler 栏中勾选 Enable profiling 和 Start profiling at start of frame 两项,CTF 就会记录每个事件的执行时间,并且最后在 Profiler 窗口进行显示,显示内容包括每一场景的执行时间,以及每一场景内生成图像和执行每一行事件所用的时间。
  当然还有一些其他的选项,例如一般来说一个场景的第一帧是用来初始化数据,因此可以从 profiler 里拿掉。如果你想要这么做,就取消勾选 Start profiling at start of frame,并且在事件中使用 Start profiling 这一动作(在 Special object 的 Profile 子目录中),这样就可以在你想要开始 profile 的时间开始了。
  另外一种方法是在整个应用的 properties 中勾选 Record slowest app loops,这种情况下系统会在每一帧开始时重置计时器并且在最后比较每一帧的执行时间,并且存储最慢的一个周期的时间,以便用户分析那些帧到底发生了什么。在 profiler 中每一帧都会显示其开始时间和运行总时长。
  最后一种方法是勾选 Profile top-level conditions only,此时不会显示子事件的执行时间以及 loops,以便避免丢失 child event 内的 profile 时间以让 parent event 有更真实的执行时间。
  注意:Profiler 中显示的总时间包括 profile 这一过程它本身的时间,因此实际上游戏的运行时间会更少一些,因此这个时间仅用于对比,不作为绝对时间的估计手段。
  可以拿来打某些60帧狂热爱好者的脸了。如果早几天出的话估计116来确定k4搞了某些幺蛾子就更方便很多了(

· 从当前帧开始运行应用
  有的时候你需要测试整个应用(的多个场景)并且需要从具体的某一场景开始测试,现在有了 Run app from current frame 这一功能。

· 现在保存/编译时的进度也会在 windows 的任务栏(就正常情况下你电脑下面那一条玩意)中显示。
· 现在物件会按字母进行排序。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 11:05:41 | 显示全部楼层
属性
· 打开文件夹功能
  可以打开mfa所在的整个文件夹。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 11:07:19 | 显示全部楼层
场景编辑器
· 创建新对象窗口的改进
  现在创建新对象时可以筛选这个对象可编译的平台。选择 current 可以看到当前应用编译类型下的平台,选择 any 可以看所有的平台,支持多选。

· 查看对象事件
  在场景编辑器(Frame Editor,就是你平时摆关卡的界面)和 workspace toolbar 中右键具体对象会出现 Show object events 选项,选择后会打开事件编辑器并且自动选中这个特定对象。
  用处不是很大,好处是不用再在事件编辑器的一长条里面海底捞针对象了(

· 新的选择对象命令
  在场景编辑器右键时出现了三个命令,分别是选择某个对象的所有实例、选择和被选中对象属同一对象组(qualifier,下同)的对象、选择特定对象组的所有对象。
  注意:只有可见图层的对象才会被选中。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 11:11:05 | 显示全部楼层
资源管理器
· 资源管理器(Data element editor,下同)中现在会列出你的应用所用到的所有字体(对个别插件可能无效),并且可以进行替换。
· 现在可以一次性导出多个声音。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 13:31:20 | 显示全部楼层
事件编辑器
它来了!
· 子事件
  子事件只会在父事件(parent event)的条件(condition)为真时执行,父事件中被选择的对象将会在子事件中同样被选择
  在事件行右键选择“Add a new child condition”以添加一个子事件。也可以选择“Insert / A new block of event”来创建一个带子事件的新事件。
  虽然只有寥寥两段话,但是这无疑是一个非常重要的特性。除了其选择结构嵌套特性可以简化代码以外,子事件的出现解决了部分MMF的物品选择模糊的问题,让很多因为物品选择造成的问题不再需要通过一些奇怪的写法来解决,从而大幅降低了开发难度。
  不过还是要注意嵌套选择结构并不等效于每行子事件的代码前面加上父事件的条件,这点大家可以体会一下。

· 事件/事件表模式切换
  现在可以通过“Toggle Event List mode”(Ctrl+T)命令在事件表编辑器和事件编辑器间相互切换。这个命令也可以在全局事件和行为(behavior)编辑中生效。
  是!的!现在行为和全局事件也可以直接看事件表不需要再一个个勾点开了,是不是感觉舒服多了
· 自定义事件组
  在应用属性的Events选项卡中点击 Qualifiers 栏的edit,你可以修改应用中的物件组。选中并且单击名字可以编辑物件组的名称。
  注意修改名称和图标只对当前的应用生效。
· 基场景设置
  由于全局事件只处理元件的快捷方式而不是元件本身,而这些元件在不同场景是不同的,在以前的版本中元件的变量、开关和动画名称在全局事件中使用的都是默认名称(如 alterable value A 等等)。现在在应用属性的Events选项卡中选择 Base frame (基场景),可以在全局事件中显示基场景中对应物件的变量、开关和动画。仅对全局事件编辑器生效,不影响游戏的生成。
· 现在可以在全局事件和行为中使用物件组。
  它 回 来 了!又一个重要的更新!现在我们可以和组G4说再见了!在行为中使用物件组可以大幅减小在已经制作中的作品修改引擎等基本设置所需要的开销,并且也让物件的可复用性大幅度提高。在原来的600行代码中有将近400行代码可以移到行为中去了!
  不过不要盲目把场景事件移动到行为,尤其是涉及到没有加防彻删物品的,不然你会发现物件消失的情况。

· 当你复制事件时,可以将事件以文本的方式粘贴到记事本等文本编辑器上。
  交流便捷度++
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 14:05:59 | 显示全部楼层
游戏运行时
· Direct X 11 模式
  现在显示模式支持全新的 Direct X 11 模式,这允许你在 windows 应用中使用 DX11。DX11 相较 DX9 速度更快并且可以用更新的像素着色器。
  DX11 和 DX9 主要的差异有:
  · 预乘图像:DX11 默认初始使用预乘图像(一种表现更符合直觉的颜色叠加算法),也就是说 RGB 值会和 Alpha 值进行预乘(这句话在解释原理,不过大部分人估计都不了解就算了)。这可以在多层效果叠加时得到最好的效果。你也可以取消勾选 Premultiplied alpha 来获得和 DX9 模式下同样的显色行为,虽然此时在某些特效下可能会有图像卡顿的问题。
  · 像素着色器:DX9 的着色器文件无法在 DX11 模式下编译。当然其中的多数已经在 CTF 2.5+ 安装的时候默认被转换了,但是我们依旧需要转换其他的文件。如果你使用未转换的着色器,你并不需要在 DX11 下创建一个 .HLSL 文件并且在 DX9 下创建一个 .fx 文件然后用 FXC 编译成 .fxc 文件。从 DX9 .fx 文件转换成 DX11 .hlsl 文件所需要的改动只需要在特效文档中描述即可。注意:场景编辑器和特效编辑器即使在应用使用 DX11 模式也依旧会用 DX9 模式进行着色,DX11 .fxc 文件只会在运行时使用。
  · 字体:DX 11 运行时的字体 API 工作时和应用中使用的字体的 TTF 文件相关。和其他的 windows 字体运行时有若干区别。例如这个 API 不会试图从相近字体中寻找缺失字形,所以你需要确保应用中的文本覆盖了所有的字形。此外同一个 TTF 文件中的部分字体样式不会工作,所以你需要拆分成不同的 TTF 文件。另外以 TTC 文件提供的字体可能不会工作。这里提醒一下,各位特效党慎用 DX11,因为你可能搞不懂情况然后发现特效都乱的一团糟了,也是因此我把这段翻译完全了,方便各位参考。
· 事件优化
  在应用的 properties 的 settings 选项卡中 Optimizations 组提供了三个选项框,纵使 CTF 2.5+ 做的应用运行速度已经得到了提升,这些选项可以让你的应用跑得更快。
  Optimize events: 当这个选项选中时,CTF 会对你的事件进行优化,举个例子,众所周知测试全局值比测试碰撞更快,所以测试全局值的条件在事件中会被自动挪到测试碰撞事件的上方,它也可以将一些事件自动打包,等等。如果出现因为这个原因事件出了一些问题,你可以取消勾选这个选项(但是这时候请务必向我们(CTF 开发人员)提供你的样例)。
  Optimize image size in RAM (Windows runtime):这个选项有这些效果:第一,当你的应用编译时,CTF 会将图像压缩成不同的格式,但是这时编译时间会更长;第二,当你的应用运行时,因为 CTF 不需要再解压这些文件,它会加载更快并且消耗更少内存(RAM),但是第一次将图片上传到视频 RAM 时会消耗更长时间,不过在绝大多数情况下不易被察觉。不过注意这个选项在编辑器中测试应用时会拖慢加载速度,(以下省略一堆对原因的解释,需要了解的人应该也懂英文)
  Optimize Play Sample (Windows runtime):当这个选项没有被选中时,在播放声音执行的时候声音会立即开始播放,当这个选项勾选时,声音也许会滞后播放,但是这也能让声卡表现得更好。这不一定在所有应用中都能有很好的表现,所以我们将其做成了可选项,如果出现任何问题可以回滚。
· 调试器的输出窗口
  现在 debugger (调试器)中有了一个输出窗口,这允许你输出一些文字,在调试的时候极为有用。
  这个功能比较适合一言不合 print/log 的代码玩家(
· 新增了“Set anti-aliasing when resizing”动作(action),你可以在运行时进行修改了。
  在事件的 Storyboard Control 元件下。
· 新增了“Preload / Discard Sample File”动作,你可以预加载声音文件让声音能更快播放。
  在事件的 Sound 元件下。
· 新增了“Preload Image File”动作,以便于让“Load Image file”和“Set Image Texture Parameter”动作可以更快执行。
  在各元件的 Animations 里面,不过我不太清楚这是个什么操作求教。
· 面向安卓:新增“Enable object Load On Call”选项,当这个选项未勾选(默认情况)时,“Load On Call”选项在安卓编译时会被忽略。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 14:10:31 | 显示全部楼层
注意事项和已知议题
· MFA 格式:用 CTF 2.5+ 保存的 mfa 文件可以在 CTF 2.5 中打开,除非你的文件使用了子事件或是在全局事件使用了元件组。在这种情况下 CTF 2.5 会拒绝加载你的 mfa。如果你将这些特性移除,mfa 文件将依旧可以被 CTF 2.5 打开。
· 注意一下 DX 11 运行时和先前的差异。
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

36

主题

720

回帖

13

精华

版主

经验
7341
硬币
1154 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

发表于 2020-3-20 18:24:22 | 显示全部楼层
无视我233 发表于 2020-3-20 14:05
游戏运行时
· Direct X 11 模式
  现在显示模式支持全新的 Direct X 11 模式,这允许你在 windows 应用 ...

那个 preload image 应该是这个

                               
登录/注册后可看大图
Moonstruck Blossom
个人网站:dasasdhba.github.io

153

主题

1180

回帖

12

精华

管理员

脚滑王

经验
8104
硬币
662 枚

永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第十一届MW杯冠军欢乐演员对不起,小姐欢迎光临秘密合战!

 楼主| 发表于 2020-3-20 18:44:27 | 显示全部楼层
dasasdhba 发表于 2020-3-20 18:24
那个 preload image 应该是这个

我是想说这个咋用(
个人网站wsw233.com
新作 AUEV0.5.0 制作中!
解说/版聊视频随缘更新!

36

主题

720

回帖

13

精华

版主

经验
7341
硬币
1154 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

发表于 2020-3-20 22:55:02 | 显示全部楼层
无视我233 发表于 2020-3-20 18:44
我是想说这个咋用(

不知道(,可能之后再 Load Frame 会变快((
Moonstruck Blossom
个人网站:dasasdhba.github.io

56

主题

407

回帖

8

精华

版主

☯ 博 丽 不 是 灵 梦 ☯

经验
6090
硬币
1024 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章

发表于 2020-8-3 10:20:47 | 显示全部楼层
无视我233 发表于 2020-3-20 18:44
我是想说这个咋用(

挖个坟,
个人推测应该是这样用的:
举个例子,假如你要制作一个支持自定义材质的作品,你需要在应用一开始的时候就调用preload image file这个方法,在游戏加载完毕并进入需要使用替换材质的地方再配合调用load image方法
preload正如楼上所说,应该是作为input的一个缓冲区,等需要的时候再调用load进行加载
>❀ To the Best You ❀<

36

主题

720

回帖

13

精华

版主

经验
7341
硬币
1154 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

发表于 2020-8-5 11:22:02 | 显示全部楼层
雨树·电童 发表于 2020-8-3 10:20
挖个坟,
个人推测应该是这样用的:
举个例子,假如你要制作一个支持自定义材质的作品,你需要在应用一开 ...

然而mmf读取外部图片的能力残废得跟没有一样

                               
登录/注册后可看大图
Moonstruck Blossom
个人网站:dasasdhba.github.io

87

主题

1713

回帖

11

精华

超级版主

经验
10245
硬币
1245 枚

赞助用户永吧十五周年倒计时海报勋章第三届MW杯冠军第十一届MW杯四强PK!MF3 冠军PK!MF5 季军PK!MF4 殿军欢乐演员人气之王

发表于 2020-8-11 19:43:11 | 显示全部楼层
dasasdhba 发表于 2020-8-5 11:22
然而mmf读取外部图片的能力残废得跟没有一样

慰电
自己制作的游戏The Frontiers 点击进入
您需要登录后才可以回帖 登录 | 创建账户

本版积分规则