通过命令行创建 1W 只蛇,每只蛇具有隐藏血条会跳出伤害,lowHp 会跳出别的属性,有声音类似于 apex,玩家具有体力,双人同步旋风斩割 1W 只蛇。性能要求是达标 40fps,完美情况是 60fps。
最低程度且高扩展得完成主线程,目标是构建开放具有 Z 轴得 2D 世界+Kingdom PVP。
蛇攻击
1.1 攻击盒子
1.1.1 初步完成完成通用实例创建函数 (doing)
攻击特效
no
生命属性系统
done
todo:创建后一定时间内销毁,或者碰到东西立即销毁 攻击盒子
gms 解包 untiy 解包 godot 解包
人攻击 2. 武器系统
粒子系统
地图编辑(等待 1.0 支持)
5.1 4+9 动态地图加载 坍塌函数也没有看 这个研究还是太早了点,等联机 ok 了再搞这个 已经支持了,下一个 todo
碰撞 https://github.com/jcornaz/impacted 6.1 把碰撞形状实装父实体 6.2 把碰撞形状放进 aabbs 输出碰撞事件 反馈给父实体 6.3 碰撞性能优化成功,里程碑 0.2
ui 试点 https://github.com/mvlabat/bevy_egui.git 7.1 按 M 呼出菜单 7.2 优化文字显示(done) 7.3 碰撞实例个数显示(done)
怪物 8.1 素材 蛇 8.2 ai 8.2.1. 随机移动(done) 8.2.2 看到玩家进行攻击(done) 8.2.2.1 攻击事件分发系统 (done) 8.2.2.2 生命属性系统 (wip) 8.2.2.3 粒子系统 (wip)
8.2.3 血量过低,逃跑
pvp
联网
debug 改成命令行
开发工具 12.1 地形编辑器
bevy_prototype_lyon 画图性能很烂 bevy_ecs_ldtk= "0.3.0" 性能也有点烂
cargo install cargo-watch cargo watch -x 'run'
cargo run cargo run --features bevy/trace_chrome
1.相机解锁 f3 DebugStatus.camera_debug 2.fps 显示 f11 DebugStatus.fps_show 3.碰撞体积显示 f12 DebugStatus.collision_debug 4.放置怪物 f10 DebugStatus.instance_debug
无内存泄露 20000sprite 20000collision = 70-90fps 40000sprite 40000collision = 37-43fps
20000sprite 20000collision 理想碰撞规则 = 66-78fps 40000sprite 40000collision 理想碰撞规则 = 30-37fps
// here 20000sprite 20000collision 实际碰撞规则 = 66-78fps 40000sprite 40000collision 实际碰撞规则 = 30-37fps
能加字段就加字段解决
ecs 的模式很适合生产消费模式 明确系统需要做什么? 西兰花提供什么能力? 接受一组矩形 然后调用回调函数(可以用来输出点心)
碰撞系统需要接受一组形状,判断是否碰撞. 碰撞之后要做什么? 1.防止移动 2.排斥力 3.侦察是否包含 做到这些需要什么? 碰撞两人的形状
生产者就需要提供自己的形状 作为生产者的 生产因子
生产者需要输入的,这个输入需要捋清楚所有线路,才会知道生产因子。
如果需要不同类型的实例需要相互修改就放在 总线 或者是 并行总线 里去做,不要放在并行系统里搞。
在一个地方产生事件 并存在当时的仓库里 到一个系统里去处理事件 然后分发(这个需要总线怎么处理呢) 给实例的仓库让他去消费事件。 先抓住这个开发路线
1w 可以用实例 2w 碰撞检测 有 42 到 47 帧数左右
10000:42
none 10000:122-135 20000:60-70
only collision 10000:90-100 20000:45-50 使用 Mutex 10000:35
only snake_step 10000:100 20000:54 优化手段是什么呢?
完美优化成功 里程碑达到
相机抖动(done) 解决办法:镜头移动快速点 小于一定值直接等于
碰撞抖动问题(done)
命名改造(P0 done) 实例的 children 有动画 阴影 范围 主体包括 碰撞 ai 属性 动画实例索引
https://github.com/bevyengine/bevy/blob/main/docs/profiling.md