关于 godot-genre-shooter
用于设计 Godot 第三人称及混合射击战斗系统的技能,涵盖瞄准辅助、掩体检测、武器数据、命中判定、后坐力和服务器验证的多人伤害。
主要功能
- 01软锁定瞄准辅助
- 02掩体与探身射击检测
- 03射线与实体弹模式
- 04基于 Resource 的武器数据
- 05后坐力与多人命中验证
适用场景
- 01为 TPS 添加手柄瞄准辅助
- 02探身射击前验证掩体
- 03实现射线或对象池弹体
- 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.mdmigration-notes.mdtps-gunplay-core.mdscripts/advanced_weapon_controller.gdcover_validator_rays.gdlag_compensator.gdprojectile.gdshooter_patterns.gdsoft_lock_aim_assist.gdtps_camera_spring_arm.gdweapon_recoil_pattern.gd详细介绍
核心循环
交战 → 瞄准(软锁定/掩体)→ 开火 → 确认 → 获取下一个目标
绝对不要做(TPS/混合)
- 绝对不要在此技能中加入 FPS 视角模型/镜头摆动/视角配方——转交给 shooter-fps。
- 绝对不要使用
_process()进行命中判定——使用_physics_process+ 空间状态查询。 - 绝对不要信任客户端提供的权威命中信息——由服务器验证/回溯。
- 绝对不要用 Area3D 重叠检测子弹——使用射线/形状查询。
- 绝对不要在逻辑中硬编码武器属性——使用
WeaponDataResources。 - 绝对不要在查询中漏掉对射击者 RID 的排除。
- 绝对不要用 TCP 进行射击游戏网络同步——使用 ENet/UDP。
必须阅读的脚本(非 FPS 路径)
实现对应系统前请先阅读:
- soft_lock_aim_assist.gd — 手柄/混合操作的辅助瞄准与黏性瞄准
- cover_validator_rays.gd — 掩体/探身有效性射线
- 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(服务器回溯)。
决策树
相机/姿态
| 需求 | 操作 |
|---|---|
| 越肩 TPS | tps_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