26.01.20-修复状态初始化、set展开bug、准备打包
今日总结
实现尾焰发射效果。添加粒子特效,并使其能够沿行进轨迹发射粒子。
优化怪物波次生成器。加入限流机制,避免一次性生成过多怪物导致卡顿,同时防止怪物在场景中过度堆积。
状态机bug修复
a. 非二次调用问题。尝试改为函数返回状态机,仍出错。
b. 发现直接初始化状态并输入会导致栈溢出。
c. 状态机创建失败时会进入拒绝状态,不立即报错,但调用时异常。
d. 发现 statesToEnter 多嵌套了一层 Set 结构,正常应为 Set 包含两个 StateNode,实际变为 Set 内嵌 Set 再包含两个 StateNode。
e. 逐步回溯排查:
i. filteredTransitions 起始即错误。 ii. removeConflictingTransitions 返回的 filteredTransitions 有误。 iii. 参数 transitions 传递异常。 iv. microstep 中的 target: [...getInitialStateNodes(this.root)] 展开结果异常。 v. 测试发现 Set 展开运算符 [...set] 在编译后存在 Bug,实际结果为 [set] 而非展开列表,Array.from(set) 正常。f. 添加单测测试set、es6等特性。set、map的展开运算符编译错误。
[...set]在编译后实际为[set]。但预览正常。g. 将xstate的所有set的展开运算符改为array.from后正常。
打包发现图片误引用。导致虽然有自动图集,但仍然打包了重复图片。
绑定问题。不知道为什么明明都从场景中删除预制体了,但实际节点还是收到预制体影响,且场景仍然引用。没招了,只能先凑合
26.01.19-粒子尾焰、波次优化、打包BUG
今日总结
尾焰发射。搞点粒子特效,沿行进轨迹发送粒子特效
优化怪物波次生成器。对怪物波次进行限流,防止一次性生成太多造成卡顿,也防止过多怪物挤压空间。
打包BUG
a. 按键码未定义。打印的时候全都是未定义,但实际上是正常触发的。
b. 打包版本在控制台中貌似this并未绑定到正确的上下文,但执行中上下文正常。
c. 状态机初始化问题
i. 非进入初始状态有进入函数问题。初始状态无进入调用仍然出错。 ii. 非中英文编码问题 iii. 非二次调用问题。改成函数返回状态机仍然出错。
26.01.18-暂停功能、ui调整
今日总结
暂停设计。当前暂停最后选择了手动停止
a. 停止物理系统
b. 停止所有定时器
c. 停止使用hacktween的tween
ui设计
a. 区分普通ui和暂停界面。防止取消ui时同时取消了暂停界面
b. 暂停界面添加标题。
26.01.16-社区列表、定制暂停
今日总结
- 制作暂停界面
- 去社区抄了一个列表工具。感觉是相当不错的。
- 由于直接暂停会导致列表工具无法回弹,所以准备制作一个hacktween。让暂停状态下列表也能正常回弹。
26.01.14-完成小地图、升级道具、渲染BUG、自动绑定
今日总结
完成小地图组件。
临时修复渲染问题。貌似当一定时间不启用绘制组件绘制时,会导致所有着色器都不显示,为了不影响,直接不论如何都画。
升级道具。
改进事件自动绑定。
a. 遍历对象寻找bind字典。检查tag是否符合参数。
b. 自动绑定到对应事件上。
26.01.13-放弃寻路、小地图测试
今日总结
- 寻路测试。效果太差,选择全部放弃。
- 小地图组件。坐标转换问题严重,需等待静下心来修改。
未来方向
- 重构小地图组件。坐标转换不能再让AI来了,我得自己研究。
- 经验道具。功能什么都准备好了,就缺触发方式了。
- 升级加生命值。暂时就这吧,不想再做太多了。
26.01.12-自动出怪、简单寻路
今日总结
自动出怪。自动出怪并简单通知。
简单寻路。入参:当前位置a,目标位置b,目标节点。出参:是否直达,目标位置,目标方向,目标距离
a. 算法
i. 在ab之间做射线检测。 ii. 无障碍或障碍为目标节点。直接返回。 iii. 有障碍。 (1) 在最近障碍物的aabb上找最近点c (2) 延长ac到点d,使得ad的长度大于该障碍物的aabb在ac方向上的投影。 (3) 新目标点为db. bug:射线检测发现不了墙。
26.01.09-放弃导航网格
今日总结
- 重新尝试recast-navigation,放弃类型安全,确保最低可用。但一直卡在无法初始化。放弃。
- 尝试navcat纯js的导航网格库。但太冷门了,AI搞不定,里面API也多,我一时半会也搞不定,先放着。
26.01.08-尝试地图库
今日总结
尝试导入和使用recast-navigation,问题感觉不少
- 库空间大。底层wasm最低500kb,加上零散的貌似是在900kb左右
- 不好用。貌似由于分模块和pnpm有一定小问题,导致导入一直有问题
26.01.06-异步定时测试修复
今日总结
- 简单搞了一下测试并修复异步定时工具。
26.01.05-测试事件、异步定时
今日总结
测试事件执行顺序。
a. 现象:同步函数、深度优先、先进先出。
b. 结论:emit同步函数执行完毕即所有回调执行完毕。
异步定时器。简易的异步工具,方便后续逻辑集中,不需要手动拆分微任务。
26.01.04-重构旋转状态机
今日总结
重构旋转状态机
a. 重构为状态机
b. 计算旋转角度整合进状态机中
网站bug。在线中文路径异常
26.01.03-打包依赖库
今日总结
- 准备重构旋转
- rollup重新打包依赖库
25.12.28-line-rotating.cn上线,gpu适配问题
今日总结
购买域名line-rotating.cn
构建文档网站
美化文档网站
发现适配问题。
a. 在win10无gpu电脑上流畅运行
b. 在win11有gpu电脑上卡顿,且在关闭硬件gpu对浏览器的支持后,可顺畅运行。且黑夜转换、鼠标特效在连续点击后会出BUG。
c. 但在我一番测试之后,我的电脑突然就不能复现问题了,得等待后续可复现才有修复的说法。
25.12.27-优化修复玩家控制、旋转逻辑,改进相机跟随
今日总结
- 重生后无旋转中心显示。目前是不显示,但后续可以正常操作,不确定具体问题。
- 自动切换旋转中心 a. 修复锚点摧毁。原来是没用事件,直接摧毁的。 b. 切换旋转中心导致角度异常。使用固定点计算,并在后续使用时手动修复。
- 相机插值跟随
- 拆除包围墙壁,换成地图中障碍。
25.12.26-拆分冲刺、旋转机制优化、怪物测试
今日总结
- 优化旋转与连接逻辑。暂时搁置状态机重构。
- 实现断开连接功能。
- 拆分冲刺与切换功能。将右键切换锚点与冲刺分离,新增F键向当前锚点冲刺,操作更清晰。
- 修复测试过程中的问题。
- 调整近战怪攻击距离与缩放参数,增加碰撞触发节流,避免玩家被秒杀。
- 解决面板显示异常。暂时是缩放文本
- 统一远程怪与近战怪的伤害逻辑,移除默认秒杀效果。
- 完善道具与锚点系统。
- 为随机道具与锚点增加独立容器配置,支持限时锚点生成。
- 新增怪物死亡掉落道具机制,丰富战斗反馈。
- 新增旋转中心标记与自动切换特性。
- 为旋转中心添加环形进度条标识,通过定时更新位置实现跟随。
- 尝试在一次旋转后自动切换锚点(暂存BUG,需后续处理)。
- 优化全局管理。为玩家节点绑定提供统一接口,修复预制体重复实例导致的UUID报错。
- 增强冰冻区域效果。在减速基础上附加持续伤害,提升技能感知强度。
25.12.25-优化UI、修复扇形渲染、扇形减速区
今日总结
- 调整UI设计,降低UI中8-10个DC
- 修复扇形渲染错误。调整执行顺序正确获取材质,调整角度计算方式并简单优化着色器代码。
- 扇形残留区域减速组件
25.12.24-重构评估、修复扇形角度
今日总结
- 打算用xstate的状态机重构旋转的状态管理。但很有可能要连状态组件都要重构,难度、花费都太大,放弃。
- 评估事件监听装饰器的可行性。巨大多数情况下会损失类型安全,要不就是大量的模版代码,要不就是拉长原型链,放弃。
- 修复扇形角度。将原来的夹角修正为旋转角。碰撞体创建测试正常。
25.12.23-旋转创建扇形
今日总结
- 初步解决旋转创建问题。可以创建扇形区域。
- 解决显示问题。扇形之间不存在明显冲突,可以共同显示。
25.12.22-旋转区域碰撞测试
今日总结
- 测试了旋转区域的基础功能。修复了角度异常问题。
- 测试了旋转区域的碰撞。发现持续碰撞事件无法发送。
25.12.19-多边形碰撞体
今日总结
- 重构旋转残留区域。 a. 圆弧采样生成多边形 b. 用引擎多边形碰撞体
25.12.18-旋转残留区域
今日总结
- 旋转残留区域。使用专门的扇形管理器。 a. 碰撞检测 b. 着色器
25.12.17-修复渲染问题、添加状态监听、重构控制
今日总结
- 修复渲染问题。通过随便画一笔的办法修复着色器不显示的问题。
- 简单状态监听。大致完成了一些状态监听代码。基本都是简单的监听转发。
- 重构gm控制组件。将事件与回调定义在一个字典内,提高查看的便利性。但因此导致了大量模版代码。
- 反思。今天浪费了一天在重构上面,不能再沉浸在这种非必要的事情中,新功能还在等着我。
25.12.16-状态栏UI
今日总结
- 实现了基础的状态栏UI
- 发现了渲染问题。未触发绘制前,所有着色器都不显示。
25.12.15-修复锚点问题、新增开发者模式
今日总结
- 锚点问题修复。很奇怪的是,锚点基本上把昨天的bug修好之后就不见了。我又复现不出来了。
- 完成升级组件。
- 开发者模式。挺简单的,后续测试会方便不少了。 a. 生成怪物T。编辑器中存在严重的性能和卡死问题,编辑器中慎用。 b. 生成道具Y c. 重新生成玩家N d. 开关生命值组件M
25.12.14-竟态问题
今日总结
锚点的摧毁应该涉及到了竟态问题。
还是卡在了摧毁锚点的问题上,得想个办法。得上点标志位试试了。
25.12.12-重构状态组件、测试与修复
今日总结
再次重构状态组件。使用nanostores库。无语,前段时间刚重构的,隔几天发现好库的时候就又重构了。
添加升级组件。尚未测试。
修复旋转BUG。
a. 问题:锚点消失时连续点击旋转,会导致卡在旋转状态。
b. 方案:销毁锚点前进入的停止旋转阶段,添加了禁止旋转的功能。
c. 原因:推测是该阶段未标记不能旋转,会导致在没有可用锚点的情况下仍然允许旋转,从而导致错误
d. 推论:现在能允许旋转的事件还有一个切换中心,同样会导致bug。测试后发现推论正确,bug一堆。
e. 推荐方案:添加锚点消失和恢复的事件。然后重新绑定各种关系。
锚点问题
a. 现状:现在锚点为了摧毁时不影响玩家,所以锚点的摧毁都经过玩家。但当玩家消失后,锚点就没有办法调用回调摧毁自身了。
b. 推荐方案:在gm中集中的管理。
随机预制体生成组件。微调过往的随机道具生成组件为通用的随机预制体生成组件。
未来方向
添加锚点消失和恢复事件。
gm集中管理锚点销毁。
开发者模式。为了测试方便,不需要为了一个现象反复重开游戏。需要坐标的话使用当前鼠标坐标为准。
a. 玩家重生
b. 产生怪物
c. 产生道具
d. 玩家取消生命组件。取消死亡组件导致gm监听玩家死亡事件,从而导致按键无法响应。
25.12.11-可断开锚点、环形进度条
今日总结
- 添加了断开锚点的功能。
- 添加了环形进度条。
25.12.10-血条完善、回血道具、道具生成
今日总结
- 血条显示测试并修复,添加血条标签。
- 制作简易回血道具。
- 制作掉落组件,实现随机生成道具的效果。
25.12.09-状态组件重构并测试
今日总结
- 同步调整怪兽状态组件,并改进过往设计。
- 简单测试并确定大致游戏正常。
25.12.08-生命值显示,重构状态
今日总结
- 添加了一个简单的生命值条,并添加了对应的固定组件,保证始终位于节点上方。
- 重构状态组件。改为注册中心,并添加了注册属性修改回调的功能。
25.12.05-简易生命值
今日总结
- 大致规划了一下V0.2的发展方向
- 简单建立了一个生命值系统作为基础。
25.12.04-问题修复,准备发版
今日总结
- 尝试着色器。尝试着色器,增加熟悉度,方便后续添加特效。
- 子弹问题。给子弹的碰撞回调添加忽略碰撞,以此实现仅碰撞回调而无物理效果。
- 准备发版。准备一些后续工作,为发版做准备。
25.12.03-解决旋转问题
今日总结
前段时间工作这边有个项目比较忙,游戏这边我就先放放了。
重构旋转。
a. 虚拟旋转中心。让关节固定挂载在虚拟节点上,由旋转中心作为虚拟中心的父节点。
b. 固定关节链接中心和边缘。旋转中心节点带动边缘。
c. 增加边界宽度,防止意外穿透。
简单相机视角。旋转时相机视角锁定在旋转中心。
未来方向
考虑激光超长问题。
a. 超长是否不允许旋转
b. 超长是否自动断开激光
c. 谁负责激光超长事件的发出
远程怪物问题
a. 自身朝向抖动
b. 子弹发射方向不对
c. 子弹反弹方向对不
激光特效问题
a. 是否要提前尝试特效
b. 要使用什么样的特效
25.11.27-地图边界、旋转问题
问题总结
还是得走正儿八经的物理模拟。之前的方案好用是好用,但就是和物理不对付。
- 地图边界的碰撞导致异常抖动和闪现。
- 旋转不受地形限制
25.11.26-远程怪物、LOGO
今日总结
- 远程怪物制作完成。
- 怪物转向。
- 基础游戏素材(近战、远程、子弹)。
- LOGO。一版线性一版面性。
未来方向
- 添加地图边界、地图内障碍物。
- 相机方案调整。
- 准备V0.1发版。
25.11.25-近战怪物
今日总结
- 近战怪物制作。跟随、达到距离攻击、激光碰撞销毁,玩家碰到玩家死亡。
- 规范组件事件监听。统一监听和取消到正确的生命周期,防止组件失活仍可响应。
未来方向
- 远程怪物制作。
- 玩家死亡组件。
- 地图边缘阻碍。
- 地图基础障碍。
25.11.24-修复切换旋转中心
今日总结
- 测试并修复了切换旋转中心。
- 通用怪物跟随组件。
- 文档站设置整理。
未来方向
- 通用怪物组件。
- 近战怪物。
- 伤害系统。
25.11.22-模拟旋转、切换旋转中心
今日总结
- 模拟旋转。替代物理旋转,并实现碰撞回调。
- 切换旋转中心。
25.11.21-测试旋转
今日总结
- 添加tiledmap。
- 锚点切换。冲刺时会自动切换锚点。
- 旋转关节。初步添加和测试。
未来方向
- 完成旋转功能
- 添加切换旋转中心
- 近战跟踪怪
25.11.20-模拟方案
今日总结
- 坐标转换。测试并解决坐标转换问题。现在生成和点击都无误。
- 速度衰减。实现速度衰减组件,防止无限滑动。
- 线的绘制。用绘制组件实现了基础的线的绘制。
- 线的碰撞。用模拟碰撞的方案实现了碰撞。
未来方向
- 绕锚点旋转。
- 锚点自动切换。
- 近战跟踪怪。
- 伤害判定。
25.11.19-锚点放置、锚点冲刺
今日总结
- 完善并测试了锚点放置。
- 添加并测试了锚点冲刺。但浏览器缩放导致的坐标异常仍未解决。
未来方向
- 添加速度衰减方案。现在的速度已添加就是无限移动。
- 添加地面设计。
- 优化屏幕坐标转换。
25.11.18-项目初始化、全向移动
今日总结
- 初始化项目,带入大量之前开发的工具与设置。
- 鼠标监听。模仿之前的按键监听自行监听并转发鼠标事件。
- 全向移动。简单用wasd实现了一个全向移动。
- 放下锚点。简单的实现了锚点生成,但对应的资产仍未创建。