必读(更新日志).txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 这是一份更新项目进度后的必读文件。
  2. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  3. Commit中过多的内容请全体开发者在这里更新并留档。
  4. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  5. 2026/2/5
  6. 项目启动。
  7. 2026/2/13 DrDuck
  8. 1. 统一了所有的动画接口,完全弃用image_speed, 改用animation_spd
  9. 需要在所有create中手动定义,并在step中动画步骤位置image_index += animation_spd;
  10. 顺带更新了animation_end()函数,与新的动画系统适配,防止卡死
  11. 2. 新增set_sprite()函数,与名字一致,但会自动检测前后sprite是否一致
  12. 并决定是否将image_index归零,防止动画跳帧
  13. 3. 可以注意到gml的所有sprite都有独立的fps参数设置,之前设置为15.
  14. gml内部会计算image_index += sprite_fps / game_fps * image_speed等等公式进行适配
  15. 所以画面结果没有问题,但是不便于后续维护与统一性
  16. 所以将所有sprite统一为60fps, 新的aniation_spd定义为0.25
  17. 除攀墙/跳跃等手动状态判断单帧动画,直接将fps设置为0
  18. 4. 重定义了玩家碰撞箱反馈逻辑,与父对象统一性,太过繁杂不加具体解释
  19. 简单概括,把每种攻击给玩家的反馈都打包进hitbox/create中的hit_feedback(_owner){...}
  20. 5. 修正了玩家状态机的命名规范。现在所有可能被赋值给state的函数名字都以state_起始
  21. 所有按帧执行的检测/更新逻辑往往以player_check_起始
  22. 6. 优化了敌人状态机,不详细展开
  23. 7. 我发现点右上角最大化代码窗口显然是更拟人的工作方案,不用把一堆窗口拖来拖去
  24. 8. 优化敌人碰撞箱逻辑,封装enemy_create_hitbox(x, y, ...)函数,详见EnemyStates
  25. 另外player的碰撞箱被设计为几个自带sprite和参数(例如hit_feedback)的object, 拥有共同父对象
  26. 因为player的击中逻辑和碰撞箱形状太过复杂,无法通过简单逻辑变幻得到
  27. 而enemy目前的碰撞箱全部为矩形,可以通过2*2的sprite拉伸位移得到
  28. 所以enemy统一创建oEnemyHitbox再为其赋不同的属性
  29. 9. 新增了oEnemyDummy自动受击反击,方便测试闪避等
  30. 10. 你可以接着写
  31. 2026/2/...
  32. ...