mcpField
G
godot-genre-shooter

godot-genre-shooter

github.com/thedivergentai开发907286 次安装2 周前更新
代码仓库

关于 godot-genre-shooter

用于设计 Godot 第三人称及混合射击战斗系统的技能,涵盖瞄准辅助、掩体检测、武器数据、命中判定、后坐力和服务器验证的多人伤害。

主要功能

  1. 01软锁定瞄准辅助
  2. 02掩体与探身射击检测
  3. 03射线与实体弹模式
  4. 04基于 Resource 的武器数据
  5. 05后坐力与多人命中验证

适用场景

  1. 01为 TPS 添加手柄瞄准辅助
  2. 02探身射击前验证掩体
  3. 03实现射线或对象池弹体
  4. 04在服务器验证多人游戏命中

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-genre-shooter

安装后在 Claude Code 中输入/godot-genre-shooter确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-meta-systems.md
migration-notes.md
tps-gunplay-core.md
scripts/
advanced_weapon_controller.gd
cover_validator_rays.gd
lag_compensator.gd
projectile.gd
shooter_patterns.gd
soft_lock_aim_assist.gd
tps_camera_spring_arm.gd
weapon_recoil_pattern.gd

详细介绍

核心循环

交战 → 瞄准(软锁定/掩体)→ 开火 → 确认 → 获取下一个目标

绝对不要做(TPS/混合)

  • 绝对不要在此技能中加入 FPS 视角模型/镜头摆动/视角配方——转交给 shooter-fps。
  • 绝对不要使用 _process() 进行命中判定——使用 _physics_process + 空间状态查询。
  • 绝对不要信任客户端提供的权威命中信息——由服务器验证/回溯。
  • 绝对不要用 Area3D 重叠检测子弹——使用射线/形状查询。
  • 绝对不要在逻辑中硬编码武器属性——使用 WeaponData Resources。
  • 绝对不要在查询中漏掉对射击者 RID 的排除。
  • 绝对不要用 TCP 进行射击游戏网络同步——使用 ENet/UDP。

必须阅读的脚本(非 FPS 路径)

实现对应系统前请先阅读:

  1. soft_lock_aim_assist.gd — 手柄/混合操作的辅助瞄准与黏性瞄准
  2. cover_validator_rays.gd — 掩体/探身有效性射线
  3. tps_camera_spring_arm.gd — SpringArm3D TPS 相机碰撞

另有:advanced_weapon_controller.gd(通用武器控制器——追求 FPS 手感时优先使用 FPS 技能)、shooter_patterns.gd、projectile.gd、weapon_recoil_pattern.gd(散射 Resource)、lag_compensator.gd(服务器回溯)。

决策树

相机/姿态
需求操作
越肩 TPStps_camera_spring_arm.gd
探身开火前检查掩体cover_validator_rays.gd
软锁定/辅助瞄准soft_lock_aim_assist.gd
真正的 FPS 发掘点→ godot-genre-shooter-fps
开火模式
需求操作
射线检测/实体弹理论通用 WeaponData + 空间状态;FPS 实现细节见 shooter-fps
对象池弹体projectile.gd / patterns 脚本
爆炸半径shooter_patterns.gd 中的 ShapeCast3D 模式
网络
需求操作
客户端爽感在本地预测曳光弹
伤害由服务器权威判定;不匹配时显示未命中反馈
网络回溯/延迟补偿lag_compensator.gd + advanced-meta-systems.md
可学习的散射模式weapon_recoil_pattern.gd

武器选择(简要)

步枪/冲锋枪使用射线检测;火箭/箭矢使用实体弹;通过 WeaponData Resources(.tres)进行平衡调整,绝不要在节点中硬编码。

类型射速伤害实现方式
冲锋枪高低射线检测 + 紧凑的垂直散射
狙击枪低高射线检测 + 曳光弹
霰弹枪连发中多弹丸散射,<10m
火箭慢高projectile.gd + 形状检测 AoE

枪战理论 → tps-gunplay-core.md。网络回溯 → advanced-meta-systems.md。

后坐力与手感(原因)

将冲击施加到相机旋转和散射扩张上,而不只是武器网格。通过 weapon_recoil_pattern.gd 实现可学习的散射模式。分层呈现枪声:机械声、枪声和混响尾音分别使用独立的 3D 播放器。

多人游戏(简要)

客户端预测视觉特效/曳光弹;服务器验证命中(rpc + 回溯)。绝不信任客户端提供的伤害信息。使用 ENet/UDP,不使用 TCP。不匹配时以服务器判定为准——显示未命中反馈。

参考

渐进式披露:仅在研究特定 API 时打开官方文档链接;需要转至相关领域时再加载相关技能——不要预加载整个技能网络。

官方文档
  • 射线投射 — PhysicsDirectSpaceState3D.intersect_ray 命中扫描查询、例外和碰撞掩码,让射击不受帧率影响。
  • 物理简介 — 层/掩码、_physics_process 时序和能确保命中判定稳定的物体类型。
  • PhysicsDirectSpaceState3D — 直接使用 intersect_ray / intersect_shape 进行高频射击,无需承担 RayCast3D 节点开销。
  • PhysicsRayQueryParameters3D — 起点/终点、排除 RID 和 collision_mask,用于射手自身拥有的命中扫描查询。
  • CharacterBody3D — 使用 move_and_collide 实现具有重力、反弹和生命周期的投射物。
  • SpringArm — 支持碰撞检测的 TPS 摄像机悬臂和肩部偏移,避免穿入掩体。
  • 使用 Decal — 使用透视正确的弹孔和撞击痕迹,而非 Sprite3D 广告牌。
  • 控制器、游戏手柄和摇杆 — 瞄准辅助的摩擦/磁吸效果会调节摇杆视角输入。
  • 高层级多人游戏 — 使用 RPC 权限和不可靠模式处理开火事件,并由服务器验证命中。
  • Camera3D — FOV 冲击、从 -global_basis.z 发出的瞄准射线,以及用于 TPS 肩部切换的 h_offset。
  • PhysicsShapeQueryParameters3D — 使用球体/形状查询实现火箭/手榴弹的范围伤害,避免滥用 Area3D。
  • AudioStreamPlayer3D — 使用分层的射击声/机械声/尾音播放器,营造有冲击力的空间枪声。
相关技能
前置条件
  • godot-physics-3d — CharacterBody3D/RigidBody3D、碰撞层和直接空间查询;命中扫描和投射物都依赖这些内容。
  • godot-input-handling — 在实现瞄准辅助和后坐力冲击前,先配置视角/开火/装填动作映射和游戏手柄摇杆曲线。
  • godot-camera-systems — FPS/TPS 摄像机装置、FOV 和 SpringArm 模式;武器冲击和软锁定会旋转摄像机。
  • godot-project-foundations — 在平衡武器原型前,了解基于 Resource 的 WeaponData、场景结构和导入默认设置。
补充
  • godot-combat-system — 伤害事件、命中区域和生命值处理流程,用于处理射击器 take_damage 的结果。
  • godot-raycasting-queries — 可复用的射线/形状查询助手,用于掩体检查、视线检测和即时命中,无需重复设置查询。
  • godot-audio-systems — 总线布线和 3D 衰减,用于机械声、枪声和混响尾音等枪声层。
  • godot-multiplayer-networking — ENet 对等端、RPC 模式和权限控制,使射击由客户端预测,伤害由服务器验证。
  • godot-adapt-single-to-multiplayer — 在即时命中验证外围实现预测、协调和延迟补偿。
  • godot-particles — 枪口闪光、曳光弹和命中爆发效果,让枪战更具表现力,同时不阻塞射击流程。
下游/使用方
  • godot-monte-carlo-balancer — 模拟 TTK、散射模式和武器不对称矩阵,确保不同类型武器的伤害/后坐力保持竞争力。
  • godot-genre-shooter-fps — 专为 FPS 打磨的移动和视角模型,在此类型的枪战框架上进一步构建。
  • godot-genre-battle-royale — 大规模对局,在空投/安全区循环中复用即时命中/弹丸战斗。
主模块
  • godot-master — 库路由器和镜像模块入口,便于跨技能发现。

评论

支持 Markdown