menu 宵夜律者's Blog
【持续更新中】游戏设计思维内阁 | Game Design Tips
2024-05-02 |0 条评论
前言工作一段时间后,越发觉得游戏开发中实现各种复杂功能并不是最难的,我们在各种顶尖大作中体验到的功能:《怪物猎人》的打击感、《泰坦陨落》的后坐力、《战神》的敌人群组、《地平线》的角色运动、《鬼泣...
【解包】鸣潮
2023-11-15 |0 条评论
前言鸣潮是使用 UE 制作,所以解包起来相当简单,与其他 UE 游戏解包流程大致相同所需工具UmodelSDL2_64.zip密钥0xF259C330E6B308BF34086CF3001324...
【解包】艾尔登法环
2022-10-02 |1 条评论
解包相关工具工具功能相关链接需求UXM用于对游戏本体进行解包与打包https://github.com/JKAnderson/UXM.NET 4.7.2Yabber对文件进行解包,支持 .bnd...
动作游戏设计经验 - 其一
2022-08-20 |0 条评论
设计射击游戏有瞄准,射击,后坐力三个绕不开的部分,动作游戏也有一些天然要去设计的元素想象一个角色从玩家输入触发攻击按键,到角色执行攻击动画,再到敌人受到伤害做出受击动画这个过程可拆解分为:输入触...
一三人称共用存在的问题 — 射击游戏
2022-06-22 |0 条评论
动画共用存在的问题常规的游戏做法在会制作两套动画,一套全身动画用于第三人称,一套只包含手臂的动画用于第一人称而在 Escape from Tarkov (逃离塔科夫)和 Arma(武装突袭)中,...
message
2022-05-27 22:30:00

UE 通用解包工具

UE Viewer :https://github.com/gildor2/UEViewer

使用方法

解压后打开 umodel.exe ,在 Path to game files 中找到游戏路径,勾选 Override game detection
选择 UE4,并找到 ARK ,在 View / export object types 中可以选择想要查看和导出的文件类型
最后找到需要的文件点击 Export 即可导出

image2022-4-11_14-27-42.png

目前 UE Viewer 适配的游戏

image2022-4-11_14-32-57.png

Unity 通用解包工具

AssetStudio:https://github.com/Perfare/AssetStudio/releases
UnityAssetsExplorer:https://archive.org/download/UnityAssetsExplorer

使用方法

对 Bundles 文件进行解包,选中 .bundle 文件

image2022-4-11_10-38-52.png

点击 File → Load Folder,找到刚才解包的文件夹,选择 content.bundle_unpacked 文件夹

image2022-4-11_10-44-25 (1).png

找到想要的模型,点击 Model → Export selected objects 选择一个文件夹进行导出

image2022-4-11_11-8-31.png

【UE5】 Control Rig 对于 IK 的相关方法
2022-03-24 |0 条评论
Basic IK (Two Bone IK)优点:准确、快速、开销小缺点:不能作用与三根及以上的骨骼FARBIK基于位置的数值算法,从尾到头,再从头到尾进行位置迭代至目标距离阈值内,或达到迭代次...
【Unity | NetCode】使用 Ghost 方式传递信息
2021-04-03 |0 条评论
NetCode 官方搭建文档NetCode 0.1.0 文档翻译前期准备创建一个 GameObject 并添加 ConvertToClientSeverEntity 组件,用来负责在客户端与服务...
message
2021-03-27 10:26:00

当一个实体被删除时,会有以下几步操作

  • 查找引用该实体的所有组件
  • 删除这些组件
  • 回收实体的 ID 以供重新使用

但当存在 State 组件时,实体不会被删除,只会删除除了 State 组件以外的组件
当配合使用 StateComponentData 与 ComponentData 时可以实现观察实体当前的状态

Tag(ComponentData)State(StateComponentData)
Tag 存在,State 缺失实体刚被创建,未被初始化
Tag 存在,State 存在实体已被初始化,可以使用
Tag 存在,State 存在实体处于删除状态

例如:

Entities
    .WithAll<Tag>()
    .WithNone<State>()
    .WithStructuralChanges()
    .ForEach((Entity entity) =>{
        // Spawn
}).Run();

Entities
    .WithAll<Tag>()
    .WithAll<State>()
    .ForEach((Entity entity) =>{
        // Update
}).Run();

Entities
    .WithNone<Tag>()
    .WithAll<State>()
    .ForEach((Entity entity) =>{
        // Destroy
}).Run();
message
2021-03-26 16:24:00

( EntityCommandBuffer 以下简称 ECB)

ECB 主要解决了两个问题

  • 第一个问题,在使用 Schedule 和 ScheduleParallel 操作使用 Job 时,是无法直接使用 EntityManager 的
  • 第二个问题,在进行结构化改变时,需要等待所有 Job 完成后在同步点进行操作

结构化改变包括

  • 创建实体
  • 删除实体
  • 向实体中添加组件
  • 从实体中删除组件
  • 修改共享组件的值

同步点

  • 在同步点进行的操作,会导致 Job 无法工作,所以应该尽量减少结构化改变的操作
  • 使用 ECB 可以将分散的结构化改变操作同步在同一个同步点内

当我们在使用 Job 时,为了防止多线程运行时对同一个实体进行了冲突的操作时,同步点的存在是必要的
例如:当线程 A 对实体 a1 的组件进行了删除操作,线程 B 又去获取实体 a1 被删除的组件时,就会发生错误
所以当我们使用了 Job 的多线程时,需要使用 ECB 来延迟结构化改变操作,统一到同步点内再进行操作

加载中... 世界之底
加载更多