gamedev-skills/awesome-gamedev-agent-skills

fps-shooter

Build a first-person shooter: move+mouse-look controller, hitscan or projectile shooting, weapons, health, and enemy AI.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/gamedev-skills/awesome-gamedev-agent-skills --skill fps-shooter

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

FPS Shooter

A playbook for first-person shooters — the look/move controller, the shooting model, weapon feel, and combat. This is a compositional skill: it wires a 3D controller, input, and AI into a shooter. It does not re-teach 3D nodes or raycasts; it defines the shooting model and the feel knobs (TTK, recoil, spread) that decide whether the guns feel good.

When to use

  • Use when building a first-person game whose core verb is aim and shoot — arena shooter,

tactical FPS, PvE shooter, boomer-shooter.

  • Use when deciding hitscan vs. projectile, tuning time-to-kill, recoil, spread, or aim feel.

When not to use:* third-person/2D shooting → reuse the shooting model here but build the camera/controller from the relevant genre. Wave survival with towers → tower-defense. For the camera/character body itself, use godot-3d-essentials / unreal-cpp-gameplay.

Core loop

Scan → acquire a target → aim and fire → confirm the kill (feedback) → reposition / reload / advance. The whole experience rests on the aim-and-fire micro-loop feeling crisp: responsive look, clear hit feedback, and a death that reads instantly.

Must-have systems

  1. First-person controller — move (WASD/stick) + mouse/stick look, gravity, jump/crouch.
  2. Camera — eye-height view, configurable FOV and sensitivity, recoil kick.
  3. Shooting model — hitscan raycast and/or projectile spawn; one impact path for feedback.
  4. Weapons + ammo — damage, fire rate, magazine, reload, switching.
  5. Health + damage — HP, hit/headshot multipliers, death; player and enemy share the model.
  6. Enemy AI — perceive → alert → attack → search; cover and reaction delays (game-ai).
  7. Feedback — hitmarkers, impact decals/particles, hit sounds, screen shake, kill confirms.
  8. Objectives — what you do besides shoot: clear, capture, survive, escort.

Design knobs

KnobEffectSane default
Time-to-kill (TTK)lethality, forgivenessTune dmg × fire-rate × HP together (refs).
Hitscan vs projectileaim skill typeHitscan = flick; projectile = lead/dodge.
Damage falloffrange limitingFull to ~20 m, floor by ~60 m.
Headshot multiplierskill reward~1.5–2.0×.
Recoil patternlearnable kickFixed pattern > pure random.
Spread (bloom)suppress laser-accuracyFirst shot accurate; grows while firing.
Fire rate / magazine / reloadrhythm, downtimeReload = vulnerability window.
Mouse sensitivity / FOVcomfort, readabilityAlways expose both as options.
Aim assist (pad)controller parityMagnetism/slowdown near targets.

Patterns

1. Hitscan shot (instant ray, the workhorse)

python
# Pseudocode. Cast from the camera; first hit takes damage scaled by range + headshot.
direction = apply_spread(camera.forward, current_spread)
hit = raycast(camera.world_position, direction, max_dist=RANGE, mask=SHOOTABLE)
if hit:
    dmg = base_damage * falloff(hit.distance)
    if hit.is_head: dmg *= HEADSHOT_MULT
    hit.actor.take_damage(dmg)
    spawn_impact_fx(hit.point, hit.normal)        # decal + sound + hitmarker

2. Projectile shot (dodgeable, leads the target)

python
# Pseudocode. Spawn a moving body; it deals damage on its own collision.
p = spawn(projectile_scene, at=muzzle.world_position)
p.velocity = camera.forward * PROJECTILE_SPEED
p.on_hit   = lambda other, point: (other.take_damage(base_damage), explode_fx(point))
p.lifetime = RANGE / PROJECTILE_SPEED             # despawn so shots don't live forever

3. Time-to-kill (balance the trio together)

python
# Pseudocode. TTK falls out of HP, per-shot damage, and fire rate — tune as one system.
shots_to_kill = ceil(target_hp / damage_per_shot)
ttk_seconds   = (shots_to_kill - 1) / fire_rate_per_second   # first shot at t=0

Pitfalls / failure modes

  • Look tied to frame rate or unscaled by `dt` → sensitivity changes with FPS. Look should

be driven by raw mouse delta; movement integration uses dt (see physics-tuning).

  • Pure random recoil/spread → feels uncontrollable and unfair. Use a learnable recoil

pattern; keep the first shot accurate.

  • Hitscan with no falloff → pistols snipe across the map. Add range-based damage falloff.
  • No hit feedback → players can't tell if shots land. Always show hitmarkers, impact FX, and

a distinct kill confirm.

  • Mismatched TTK → too low feels twitchy/unfair; too high feels spongy. Tune damage,

fire rate, and HP as one system (Pattern 3).

  • Trusting the client in multiplayer → cheating and "I shot first" disputes. Keep authority

server-side; use lag compensation (refs) and defer netcode to the engine multiplayer skill.

  • No FOV / sensitivity options → motion sickness and accessibility failures. Always expose them.

Composition (build it from these skills)

  • Controller + camera: godot-3d-essentials (Godot) or unreal-cpp-gameplay / unreal-blueprints; Unity uses unity-physics + a character controller.
  • Input: input-systems (or unreal-enhanced-input) for look/move, rebinding, and gamepad aim assist.
  • Shooting physics: godot-physics / unity-physics for raycasts and projectile collision.
  • Enemies: game-ai with unity-navmesh / unreal-behavior-trees / Godot navigation.
  • Camera & feel: camera-systems for FOV/recoil kick and look smoothing; game-feel for hit-stop, screen shake, and impact juice.
  • Polish: audio-design for weapon/impact sound; shader-programming for muzzle/impact VFX.
  • Process: prototype-fast to validate aim feel before building content.

References

  • For hitscan vs. projectile trade-offs, damage falloff, recoil/spread, TTK math, hit

registration/lag compensation, and enemy AI states, read references/shooting-and-feel.md.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
gamedev-skills
社区

game-feel

Add "juice" and game feel that makes actions satisfying — screen shake, hit-stop/freeze frames, tweened/eased motion, squash & stretch, knockback, and layered audio-visual feedback — as engine-neutral techniques that pair with the detected engine's tween, particle, and camera APIs. Use when the user mentions game feel, juice, "make it feel good/punchy", screen shake, hit stop, screen freeze, easing, squash and stretch, impact frames, or feedback/polish on hits, jumps, pickups, and deaths.

安装量
16
GitHub Stars
4316
最近更新
10月24日
gamedev-skills
社区

audio-design

Implement game audio practice — bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via layering and re-sequencing, SFX variation, and beat synchronization. Engine-neutral. Use when the user mentions audio mixing, audio buses, adaptive/dynamic music, ducking, SFX variation, music layers, or syncing gameplay to the beat.

安装量
13
GitHub Stars
4316
最近更新
10月24日
gamedev-skills
社区

performance-optimization

Find and fix game performance problems methodically — measure with the engine profiler first, reason about the frame-time budget, locate the CPU-vs-GPU bottleneck, then apply the right fix: object pooling, draw-call batching, fewer allocations/GC spikes, and asset budgets. Engine- neutral method that pairs with each engine's profiler. Use when the user mentions performance, optimize, low/dropping FPS, frame drops, stutter, lag, profiler, frame budget, draw calls, batching, garbage collection/GC

安装量
13
GitHub Stars
4316
最近更新
10月24日
gamedev-skills
社区

shader-programming

Write game shaders from cross-engine fundamentals — the vertex→fragment pipeline, coordinate spaces, UV math, and common 2D/3D effects (tint, UV scroll, dissolve, outline, fresnel rim, vignette) in GLSL with HLSL equivalents. Use when the user mentions shaders, fragment/pixel shader, vertex shader, UV, GLSL, HLSL, or effects like dissolve, outline, or rim light.

安装量
13
GitHub Stars
4316
最近更新
10月24日