| name | godot-genre-shooter |
| description | Expert blueprint for TPS/hybrid shooters: soft-lock aim assist, cover validation rays, SpringArm TPS camera, and genre routing to FPS sibling for viewmodel/hitscan feel. Use for third-person/cover shooters and hybrids. Keywords: TPS, soft_lock, cover, SpringArm3D, hybrid shooter, aim assist โ not FPS-only movement. |
Core Loop
Engage โ Aim (soft-lock/cover) โ Fire โ Confirm โ Acquire Next
NEVER Do (TPS / hybrid)
- NEVER put FPS viewmodel/bob/look recipes in this skill โ route to shooter-fps.
- NEVER use
_process() for hit registration โ _physics_process + space-state queries.
- NEVER trust the client for authoritative hits โ server validate / rewind.
- NEVER use Area3D overlap for bullets โ ray / shape queries.
- NEVER hardcode weapon stats in logic โ
WeaponData Resources.
- NEVER skip excluding the shooter's RID on queries.
- NEVER use TCP for shooter net sync โ ENet/UDP.
MANDATORY scripts (non-FPS paths)
Read before implementing the matching system:
- soft_lock_aim_assist.gd โ controller/hybrid assist & sticky aim
- cover_validator_rays.gd โ cover / peek validity rays
- tps_camera_spring_arm.gd โ SpringArm3D TPS camera collision
Also available: advanced_weapon_controller.gd (shared weapon controller โ prefer FPS skill for FPS feel), shooter_patterns.gd, projectile.gd, weapon_recoil_pattern.gd (spray Resource), lag_compensator.gd (server rewind).
Decision trees
Camera / stance
Fire mode
| Need | Action |
|---|
| Hitscan / projectile theory | Shared WeaponData + space-state; FPS implementation details in shooter-fps |
| Pooled projectiles | projectile.gd / patterns script |
| Explosion radius | ShapeCast3D pattern in shooter_patterns.gd |
Net
Weapon selection (short)
Hitscan for rifles/SMGs; physical projectiles for rockets/arrows; balance in WeaponData Resources (.tres), never hardcoded on nodes.
| Archetype | ROF | Damage | Implementation |
|---|
| SMG | High | Low | Hitscan + tight vertical spray |
| Sniper | Low | High | Hitscan + tracer |
| Shotgun | Burst | Medium | Multi-pellet spread, <10m |
| Rocket | Slow | High | projectile.gd + shape AoE |
Gunplay theory โ tps-gunplay-core.md. Net rewind โ advanced-meta-systems.md.
Recoil and feel (WHY)
Apply kick to camera rotation and spread bloom, not weapon mesh alone. Learnable spray via weapon_recoil_pattern.gd. Layer gunfire: mechanical + shot + reverb tail on separate 3D players.
Multiplayer (short)
Client predicts VFX/tracers; server validates hits (rpc + rewind). Never trust client damage. ENet/UDP, not TCP. Server wins on mismatch โ show no-reg feedback.
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain โ do not preload the whole lattice.
Official Documentation
- Ray-casting โ
PhysicsDirectSpaceState3D.intersect_ray hitscan queries, exceptions, and collision masks for frame-rate-independent fire.
- Physics introduction โ layers/masks,
_physics_process timing, and body types that keep hit registration deterministic.
- PhysicsDirectSpaceState3D โ direct
intersect_ray / intersect_shape for high-frequency shots without RayCast3D node overhead.
- PhysicsRayQueryParameters3D โ from/to, exclude RIDs, and collision_mask for shooter-owned hitscan queries.
- CharacterBody3D โ
move_and_collide projectile bodies with gravity, bounce, and lifetime.
- SpringArm โ collision-aware TPS camera boom and shoulder offset without clipping into cover.
- Using decals โ perspective-correct bullet holes and impact marks instead of Sprite3D billboards.
- Controllers, gamepads, and joysticks โ stick look input that aim-assist friction/magnetism modulates.
- High-level multiplayer โ RPC authority and unreliable modes for fire events with server-validated hits.
- Camera3D โ FOV punch, aim rays from
-global_basis.z, and h_offset for TPS shoulder swap.
- PhysicsShapeQueryParameters3D โ sphere/shape queries for rocket/grenade AoE without Area3D spam.
- AudioStreamPlayer3D โ layered shot/mechanical/tail players for punchy spatial gunfire.
Related Skills
Prerequisites
- godot-physics-3d โ CharacterBody3D/RigidBody3D, collision layers, and direct space queries that hitscan and projectiles depend on.
- godot-input-handling โ look/fire/reload action maps and gamepad stick curves before aim assist and recoil kick.
- godot-camera-systems โ FPS/TPS camera rigs, FOV, and SpringArm patterns that weapon kick and soft-lock rotate.
- godot-project-foundations โ Resource-based WeaponData, scene structure, and import defaults before balancing archetypes.
Complements
- godot-combat-system โ damage events, hit zones, and health pipelines that consume shooter
take_damage results.
- godot-raycasting-queries โ reusable ray/shape query helpers for cover checks, LOS, and hitscan without duplicating query setup.
- godot-audio-systems โ bus routing and 3D attenuation for mechanical + shot + reverb-tail gunfire layers.
- godot-multiplayer-networking โ ENet peers, RPC modes, and authority so fire is predicted client-side and damage is server-validated.
- godot-adapt-single-to-multiplayer โ prediction, reconciliation, and lag-compensation shells around hitscan validation.
- godot-particles โ muzzle flash, tracers, and impact bursts that sell gunplay without blocking the fire path.
Downstream / consumers
Master
- godot-master โ library router and mirrored module entry for cross-skill discovery.