Skip to content

26.01.20-修复状态初始化、set展开bug、准备打包 ​

今日总结 ​

  1. 实现尾焰发射效果。添加粒子特效,并使其能够沿行进轨迹发射粒子。

  2. 优化怪物波次生成器。加入限流机制,避免一次性生成过多怪物导致卡顿,同时防止怪物在场景中过度堆积。

  3. 状态机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后正常。

  4. 打包发现图片误引用。导致虽然有自动图集,但仍然打包了重复图片。

  5. 绑定问题。不知道为什么明明都从场景中删除预制体了,但实际节点还是收到预制体影响,且场景仍然引用。没招了,只能先凑合

26.01.19-粒子尾焰、波次优化、打包BUG ​

今日总结 ​

  1. 尾焰发射。搞点粒子特效,沿行进轨迹发送粒子特效

  2. 优化怪物波次生成器。对怪物波次进行限流,防止一次性生成太多造成卡顿,也防止过多怪物挤压空间。

  3. 打包BUG

    a. 按键码未定义。打印的时候全都是未定义,但实际上是正常触发的。

    b. 打包版本在控制台中貌似this并未绑定到正确的上下文,但执行中上下文正常。

    c. 状态机初始化问题

     i. 非进入初始状态有进入函数问题。初始状态无进入调用仍然出错。
    
     ii. 非中英文编码问题
    
     iii. 非二次调用问题。改成函数返回状态机仍然出错。
    

26.01.18-暂停功能、ui调整 ​

今日总结 ​

  1. 暂停设计。当前暂停最后选择了手动停止

    a. 停止物理系统

    b. 停止所有定时器

    c. 停止使用hacktween的tween

  2. ui设计

    a. 区分普通ui和暂停界面。防止取消ui时同时取消了暂停界面

    b. 暂停界面添加标题。

26.01.16-社区列表、定制暂停 ​

今日总结 ​

  1. 制作暂停界面
  2. 去社区抄了一个列表工具。感觉是相当不错的。
  3. 由于直接暂停会导致列表工具无法回弹,所以准备制作一个hacktween。让暂停状态下列表也能正常回弹。

26.01.14-完成小地图、升级道具、渲染BUG、自动绑定 ​

今日总结 ​

  1. 完成小地图组件。

  2. 临时修复渲染问题。貌似当一定时间不启用绘制组件绘制时,会导致所有着色器都不显示,为了不影响,直接不论如何都画。

  3. 升级道具。

  4. 改进事件自动绑定。

    a. 遍历对象寻找bind字典。检查tag是否符合参数。

    b. 自动绑定到对应事件上。

26.01.13-放弃寻路、小地图测试 ​

今日总结 ​

  1. 寻路测试。效果太差,选择全部放弃。
  2. 小地图组件。坐标转换问题严重,需等待静下心来修改。

未来方向 ​

  1. 重构小地图组件。坐标转换不能再让AI来了,我得自己研究。
  2. 经验道具。功能什么都准备好了,就缺触发方式了。
  3. 升级加生命值。暂时就这吧,不想再做太多了。

26.01.12-自动出怪、简单寻路 ​

今日总结 ​

  1. 自动出怪。自动出怪并简单通知。

  2. 简单寻路。入参:当前位置a,目标位置b,目标节点。出参:是否直达,目标位置,目标方向,目标距离

    a. 算法

    i. 在ab之间做射线检测。
    
    ii. 无障碍或障碍为目标节点。直接返回。
    
    iii. 有障碍。
    
        (1) 在最近障碍物的aabb上找最近点c
    
        (2) 延长ac到点d,使得ad的长度大于该障碍物的aabb在ac方向上的投影。
    
        (3) 新目标点为d
    

    b. bug:射线检测发现不了墙。

26.01.09-放弃导航网格 ​

今日总结 ​

  1. 重新尝试recast-navigation,放弃类型安全,确保最低可用。但一直卡在无法初始化。放弃。
  2. 尝试navcat纯js的导航网格库。但太冷门了,AI搞不定,里面API也多,我一时半会也搞不定,先放着。

26.01.08-尝试地图库 ​

今日总结 ​

尝试导入和使用recast-navigation,问题感觉不少

  1. 库空间大。底层wasm最低500kb,加上零散的貌似是在900kb左右
  2. 不好用。貌似由于分模块和pnpm有一定小问题,导致导入一直有问题

26.01.06-异步定时测试修复 ​

今日总结 ​

  1. 简单搞了一下测试并修复异步定时工具。

26.01.05-测试事件、异步定时 ​

今日总结 ​

  1. 测试事件执行顺序。

    a. 现象:同步函数、深度优先、先进先出。

    b. 结论:emit同步函数执行完毕即所有回调执行完毕。

  2. 异步定时器。简易的异步工具,方便后续逻辑集中,不需要手动拆分微任务。

26.01.04-重构旋转状态机 ​

今日总结 ​

  1. 重构旋转状态机

    a. 重构为状态机

    b. 计算旋转角度整合进状态机中

  2. 网站bug。在线中文路径异常

26.01.03-打包依赖库 ​

今日总结 ​

  1. 准备重构旋转
  2. rollup重新打包依赖库

25.12.28-line-rotating.cn上线,gpu适配问题 ​

今日总结 ​

  1. 购买域名line-rotating.cn

  2. 构建文档网站

  3. 美化文档网站

  4. 发现适配问题。

    a. 在win10无gpu电脑上流畅运行

    b. 在win11有gpu电脑上卡顿,且在关闭硬件gpu对浏览器的支持后,可顺畅运行。且黑夜转换、鼠标特效在连续点击后会出BUG。

    c. 但在我一番测试之后,我的电脑突然就不能复现问题了,得等待后续可复现才有修复的说法。

25.12.27-优化修复玩家控制、旋转逻辑,改进相机跟随 ​

今日总结 ​

  1. 重生后无旋转中心显示。目前是不显示,但后续可以正常操作,不确定具体问题。
  2. 自动切换旋转中心 a. 修复锚点摧毁。原来是没用事件,直接摧毁的。 b. 切换旋转中心导致角度异常。使用固定点计算,并在后续使用时手动修复。
  3. 相机插值跟随
  4. 拆除包围墙壁,换成地图中障碍。

25.12.26-拆分冲刺、旋转机制优化、怪物测试 ​

今日总结 ​

  1. 优化旋转与连接逻辑。暂时搁置状态机重构。
  2. 实现断开连接功能。
  3. 拆分冲刺与切换功能。将右键切换锚点与冲刺分离,新增F键向当前锚点冲刺,操作更清晰。
  4. 修复测试过程中的问题。
    • 调整近战怪攻击距离与缩放参数,增加碰撞触发节流,避免玩家被秒杀。
    • 解决面板显示异常。暂时是缩放文本
    • 统一远程怪与近战怪的伤害逻辑,移除默认秒杀效果。
  5. 完善道具与锚点系统。
    • 为随机道具与锚点增加独立容器配置,支持限时锚点生成。
    • 新增怪物死亡掉落道具机制,丰富战斗反馈。
  6. 新增旋转中心标记与自动切换特性。
    • 为旋转中心添加环形进度条标识,通过定时更新位置实现跟随。
    • 尝试在一次旋转后自动切换锚点(暂存BUG,需后续处理)。
  7. 优化全局管理。为玩家节点绑定提供统一接口,修复预制体重复实例导致的UUID报错。
  8. 增强冰冻区域效果。在减速基础上附加持续伤害,提升技能感知强度。

25.12.25-优化UI、修复扇形渲染、扇形减速区 ​

今日总结 ​

  1. 调整UI设计,降低UI中8-10个DC
  2. 修复扇形渲染错误。调整执行顺序正确获取材质,调整角度计算方式并简单优化着色器代码。
  3. 扇形残留区域减速组件

25.12.24-重构评估、修复扇形角度 ​

今日总结 ​

  1. 打算用xstate的状态机重构旋转的状态管理。但很有可能要连状态组件都要重构,难度、花费都太大,放弃。
  2. 评估事件监听装饰器的可行性。巨大多数情况下会损失类型安全,要不就是大量的模版代码,要不就是拉长原型链,放弃。
  3. 修复扇形角度。将原来的夹角修正为旋转角。碰撞体创建测试正常。

25.12.23-旋转创建扇形 ​

今日总结 ​

  1. 初步解决旋转创建问题。可以创建扇形区域。
  2. 解决显示问题。扇形之间不存在明显冲突,可以共同显示。

25.12.22-旋转区域碰撞测试 ​

今日总结 ​

  1. 测试了旋转区域的基础功能。修复了角度异常问题。
  2. 测试了旋转区域的碰撞。发现持续碰撞事件无法发送。

25.12.19-多边形碰撞体 ​

今日总结 ​

  1. 重构旋转残留区域。 a. 圆弧采样生成多边形 b. 用引擎多边形碰撞体

25.12.18-旋转残留区域 ​

今日总结 ​

  1. 旋转残留区域。使用专门的扇形管理器。 a. 碰撞检测 b. 着色器

25.12.17-修复渲染问题、添加状态监听、重构控制 ​

今日总结 ​

  1. 修复渲染问题。通过随便画一笔的办法修复着色器不显示的问题。
  2. 简单状态监听。大致完成了一些状态监听代码。基本都是简单的监听转发。
  3. 重构gm控制组件。将事件与回调定义在一个字典内,提高查看的便利性。但因此导致了大量模版代码。
  4. 反思。今天浪费了一天在重构上面,不能再沉浸在这种非必要的事情中,新功能还在等着我。

25.12.16-状态栏UI ​

今日总结 ​

  1. 实现了基础的状态栏UI
  2. 发现了渲染问题。未触发绘制前,所有着色器都不显示。

25.12.15-修复锚点问题、新增开发者模式 ​

今日总结 ​

  1. 锚点问题修复。很奇怪的是,锚点基本上把昨天的bug修好之后就不见了。我又复现不出来了。
  2. 完成升级组件。
  3. 开发者模式。挺简单的,后续测试会方便不少了。 a. 生成怪物T。编辑器中存在严重的性能和卡死问题,编辑器中慎用。 b. 生成道具Y c. 重新生成玩家N d. 开关生命值组件M

25.12.14-竟态问题 ​

今日总结 ​

锚点的摧毁应该涉及到了竟态问题。

还是卡在了摧毁锚点的问题上,得想个办法。得上点标志位试试了。

25.12.12-重构状态组件、测试与修复 ​

今日总结 ​

  1. 再次重构状态组件。使用nanostores库。无语,前段时间刚重构的,隔几天发现好库的时候就又重构了。

  2. 添加升级组件。尚未测试。

  3. 修复旋转BUG。

    a. 问题:锚点消失时连续点击旋转,会导致卡在旋转状态。

    b. 方案:销毁锚点前进入的停止旋转阶段,添加了禁止旋转的功能。

    c. 原因:推测是该阶段未标记不能旋转,会导致在没有可用锚点的情况下仍然允许旋转,从而导致错误

    d. 推论:现在能允许旋转的事件还有一个切换中心,同样会导致bug。测试后发现推论正确,bug一堆。

    e. 推荐方案:添加锚点消失和恢复的事件。然后重新绑定各种关系。

  4. 锚点问题

    a. 现状:现在锚点为了摧毁时不影响玩家,所以锚点的摧毁都经过玩家。但当玩家消失后,锚点就没有办法调用回调摧毁自身了。

    b. 推荐方案:在gm中集中的管理。

  5. 随机预制体生成组件。微调过往的随机道具生成组件为通用的随机预制体生成组件。

未来方向 ​

  1. 添加锚点消失和恢复事件。

  2. gm集中管理锚点销毁。

  3. 开发者模式。为了测试方便,不需要为了一个现象反复重开游戏。需要坐标的话使用当前鼠标坐标为准。

    a. 玩家重生

    b. 产生怪物

    c. 产生道具

    d. 玩家取消生命组件。取消死亡组件导致gm监听玩家死亡事件,从而导致按键无法响应。

25.12.11-可断开锚点、环形进度条 ​

今日总结 ​

  1. 添加了断开锚点的功能。
  2. 添加了环形进度条。

25.12.10-血条完善、回血道具、道具生成 ​

今日总结 ​

  1. 血条显示测试并修复,添加血条标签。
  2. 制作简易回血道具。
  3. 制作掉落组件,实现随机生成道具的效果。

25.12.09-状态组件重构并测试 ​

今日总结 ​

  1. 同步调整怪兽状态组件,并改进过往设计。
  2. 简单测试并确定大致游戏正常。

25.12.08-生命值显示,重构状态 ​

今日总结 ​

  1. 添加了一个简单的生命值条,并添加了对应的固定组件,保证始终位于节点上方。
  2. 重构状态组件。改为注册中心,并添加了注册属性修改回调的功能。

25.12.05-简易生命值 ​

今日总结 ​

  1. 大致规划了一下V0.2的发展方向
  2. 简单建立了一个生命值系统作为基础。

25.12.04-问题修复,准备发版 ​

今日总结 ​

  1. 尝试着色器。尝试着色器,增加熟悉度,方便后续添加特效。
  2. 子弹问题。给子弹的碰撞回调添加忽略碰撞,以此实现仅碰撞回调而无物理效果。
  3. 准备发版。准备一些后续工作,为发版做准备。

25.12.03-解决旋转问题 ​

今日总结 ​

  1. 前段时间工作这边有个项目比较忙,游戏这边我就先放放了。

  2. 重构旋转。

    a. 虚拟旋转中心。让关节固定挂载在虚拟节点上,由旋转中心作为虚拟中心的父节点。

    b. 固定关节链接中心和边缘。旋转中心节点带动边缘。

    c. 增加边界宽度,防止意外穿透。

  3. 简单相机视角。旋转时相机视角锁定在旋转中心。

未来方向 ​

  1. 考虑激光超长问题。

    a. 超长是否不允许旋转

    b. 超长是否自动断开激光

    c. 谁负责激光超长事件的发出

  2. 远程怪物问题

    a. 自身朝向抖动

    b. 子弹发射方向不对

    c. 子弹反弹方向对不

  3. 激光特效问题

    a. 是否要提前尝试特效

    b. 要使用什么样的特效

25.11.27-地图边界、旋转问题 ​

问题总结 ​

还是得走正儿八经的物理模拟。之前的方案好用是好用,但就是和物理不对付。

  1. 地图边界的碰撞导致异常抖动和闪现。
  2. 旋转不受地形限制

25.11.26-远程怪物、LOGO ​

今日总结 ​

  1. 远程怪物制作完成。
  2. 怪物转向。
  3. 基础游戏素材(近战、远程、子弹)。
  4. LOGO。一版线性一版面性。

未来方向 ​

  1. 添加地图边界、地图内障碍物。
  2. 相机方案调整。
  3. 准备V0.1发版。

25.11.25-近战怪物 ​

今日总结 ​

  1. 近战怪物制作。跟随、达到距离攻击、激光碰撞销毁,玩家碰到玩家死亡。
  2. 规范组件事件监听。统一监听和取消到正确的生命周期,防止组件失活仍可响应。

未来方向 ​

  1. 远程怪物制作。
  2. 玩家死亡组件。
  3. 地图边缘阻碍。
  4. 地图基础障碍。

25.11.24-修复切换旋转中心 ​

今日总结 ​

  1. 测试并修复了切换旋转中心。
  2. 通用怪物跟随组件。
  3. 文档站设置整理。

未来方向 ​

  1. 通用怪物组件。
  2. 近战怪物。
  3. 伤害系统。

25.11.22-模拟旋转、切换旋转中心 ​

今日总结 ​

  1. 模拟旋转。替代物理旋转,并实现碰撞回调。
  2. 切换旋转中心。

25.11.21-测试旋转 ​

今日总结 ​

  1. 添加tiledmap。
  2. 锚点切换。冲刺时会自动切换锚点。
  3. 旋转关节。初步添加和测试。

未来方向 ​

  • 完成旋转功能
  • 添加切换旋转中心
  • 近战跟踪怪

25.11.20-模拟方案 ​

今日总结 ​

  1. 坐标转换。测试并解决坐标转换问题。现在生成和点击都无误。
  2. 速度衰减。实现速度衰减组件,防止无限滑动。
  3. 线的绘制。用绘制组件实现了基础的线的绘制。
  4. 线的碰撞。用模拟碰撞的方案实现了碰撞。

未来方向 ​

  1. 绕锚点旋转。
  2. 锚点自动切换。
  3. 近战跟踪怪。
  4. 伤害判定。

25.11.19-锚点放置、锚点冲刺 ​

今日总结 ​

  1. 完善并测试了锚点放置。
  2. 添加并测试了锚点冲刺。但浏览器缩放导致的坐标异常仍未解决。

未来方向 ​

  1. 添加速度衰减方案。现在的速度已添加就是无限移动。
  2. 添加地面设计。
  3. 优化屏幕坐标转换。

25.11.18-项目初始化、全向移动 ​

今日总结 ​

  1. 初始化项目,带入大量之前开发的工具与设置。
  2. 鼠标监听。模仿之前的按键监听自行监听并转发鼠标事件。
  3. 全向移动。简单用wasd实现了一个全向移动。
  4. 放下锚点。简单的实现了锚点生成,但对应的资产仍未创建。