An FPS framework for Unity. Includes physics-based movement and parkour, modular weapons with recoil and ammo, abilities, status effects, a grid inventory, and more. A great foundation for any fps.Axiom is an FPS framework for Unity. The player controller, weapons, recoil, inventory, abilities, status effects, and HUD systems are already built and wired together. You deal with the art and game design, and Axiom handles the systems underneath.=====Discord Demo=====---- FEATURES AND BASIC ASSET DESCRIPTION----Player ControllerBuilt on a Rigidbody with a PID hover, so movement feels physical and handles anything from stairs and slopes, to small bumps and weird changes in geometry. Includes air strafing, wallrun, wall climb, mantle, ledge hang, ladders, three swim modes, sliding, and crouching. Stamina, multi-jump, coyote time, and jump buffering are all included. Three entire movement presets (Movement Shooter, Old-School, and Realistic, all with interchangable settings through scriptable objects) ship with the package so you can compare feels side by side.Weapon SystemUp to nine weapon slots, five possible fire types per weapon (automatic, burst, single, charge, press and release), independent primary and secondary channels, hitscan with falloff, pierce, and bouncing, physics projectiles, and radial explosions with line of sight checks. Ammo supports four modes including a physical magazine model where you reload individual rounds into stacked magazines, a 'loose' type where ammo is stored directly under the gun itself, and more.RecoilThree pluggable motion solvers (spring, lerp, curve) plus scripted spray patterns. Each weapon channel can use a different solver. You can author profiles by physics values (stiffness, damping, mass) or designer values (settle time, damping ratio). Also, an editor tool for displaying, testing, and working with recoil, with real-time playback.InventoryGrid-based inventory with multi-cell items, rotation, stacking, splitting, nested container items, and per-grid weight. Single-cell grids act as equipment slots. Dragging a weapon into an equipment slot equips it. Right-click context menus are extensible. Gamepad navigation is included. It can also easily be adjusted for a more traditional 'one item per slot' feel.AbilitiesThree ability slots that reuse the weapon fire-type model. Dash and grappling hook examples are included. You can add your own by subclassing AbilityBase.CombatHealth with overheal, ten typed damage channels, with the ability to add per-type resistances, and a status effect engine that supports build-up, stacking, and chaining. Teams and friendly fire are configurable through presets.Camera, HUD, and InputCamera composes headbob, hit-bob, dual FOV, tilt, slide roll, and recoil into one chain you can tune layer by layer. HUD ships in two flavors, UGUI and UI Toolkit, behind a single interface, so you can use either or both. Input is event-driven on the new Input System with full rebinding for keyboard, mouse, and gamepad. Settings persist to disk.How customizable is it?Almost every setting lives in a ScriptableObject preset. Movement, camera, recoil, crosshair, hitmarker, team, item, and ability presets can be swapped at runtime, which means you can build a sprint feel, a slow walk feel, and a heavy armor feel without duplicating prefabs or writing code. Subsystems you might want to replace are exposed through interfaces. Weapon Fire behaviors and abilities use abstract bases you can subclass.Inspectors are organized with NaughtyAttributes so fields only show when they apply. The codebase is namespaced under AFPS and uses cached delegates, allocation-free hot paths, and early-out guards where it matters.What genre is it suitable for?Best fit:First-person shooters where movement feel matters, including extraction, parkour, military, and sci-fi shootersSurvival or extraction projects that need a grid inventory and physical magazinesHero shooters that need an ability systemPrototypes where you want a working FPS in a day instead of a monthNot the best fit:Multiplayer shooters (planned for a future update, not in v1)Projects that have a strong emphasis on melee weapons (planned for a future update, not in v1, can be done with the current system but no complete support)Projects that need a save system (planned for a future update, not in v1)What is not includedNo art, no weapon models, no animations, etc. beyond the demo. This is a code framework primarly. Axiom is the backbone, not the finished product.Player MovementRigidbody character controller with a PID hover float that handles everything from slopes to stairs perfectlyAir strafing with momentum preservationWallrun with six-ray side detection and camera tiltWall climb with PID controller and AnimationCurve-determined velocity profileMantle, vault, and ledge hangCrouch slide with ceiling clearance check and impulse cooldownMulti-jump with coyote time and jump bufferingStamina pool with separate sprint, jump, and climb costsThree swim modes and three ladder modesCustom gravity pipeline with per-state vectorsSlope handling with projection-based slideMoving platforms with waypoints, rotation, easing, and different movement types.Explosion knockback integrationCameraComposed LateUpdate transform stack (yaw, pitch, roll, tilt, hit-bob, headbob, recoil)Velocity-driven FOV changes for cameraProcedural headbob in sine or AnimationCurve mode with per-axis amplitudesAcceleration-based hit-bob with spring reboundMovement-reactive tilt (mouse input, strafe lean, wallrun, slide)Ledge hang camera cone clamp with soft inner and hard outer limitsURP vignette flash presets for damage, heal, and status feedbackSensitivity reads from persisted settings, Keyboard & Mouse and Gamepad separateWeapon SystemSlot-based weapon manager, one to nine slotsFive different fire types (automatic, burst, single, charge, press and release)Independent primary and secondary fire channelsCoroutine-guarded weapon switching, cancellable mid-swapComposed view model offset pipeline (recoil, sway, bob, tilt, ADS, bump, equip)Per-weapon equip and de-equip tween presetsAI-usable weapons through input-less trigger methodsInventory-integrated equip and drop with same-type stack mergingRecoilThree independent channels: camera rotation, view model rotation, view model positionThree pluggable motion solvers behind IRecoilSolver (spring, lerp, curve)Dual spring authoring modes (raw stiffness/damping/mass or settle time / damping ratio)Procedural per-axis jitter or scripted spray patternsRecoil momentum and barrel climb with reset on tap firePer-profile solver state, swap-safe between weapons and fire modesLive inspector tuning during playThree recovery modes (auto zero, continuous, hold)Custom editor window for displaying, testing, and working with recoil, with real-time playbackAmmoFour storage modes (simple, loose, magazine, infinite)Physical nested magazine model that allows for anything from normal ammo storage to mixed ammoAllows for multiple ammo components per weapon (rifle plus underbarrel example)Reload progress feed and abort safetyFire BehaviorsHitscan with falloff curve, multi-pellet spread, pierce dictionary keyed off PhysicsMaterialBouncing hitscan with rangePhysics projectiles with bouncing, gravity, and lifetimeRadial explosions with line of sight checks, distance falloff, chain reactions, and self-damage controlsAim down sights as a fire script (tweens position, FOV, sensitivity, spread, crosshair)Auto-aim direction modes (forward, nearest ally, nearest enemy, nearest agent)Procedural Weapon FeelWeapon sway in lerp, slerp, or smooth damp modes, allows for both position-based and rotation sway.Velocity-scaled weapon bobGeometry-aware weapon bump with fire suppression and visual feedbackState-driven weapon tilt mapped to MovementState, allowing for weapon tilt while sliding, sprinting, crouching, etc.Equip and de-equip position and rotation tweensAbilitiesThree ability slots using a system similar to the weapon fire-type modelCan be built in the inspector or assigned with pickup.Dash and grappling hook example abilities includedAbilityBase abstract class for custom abilitiesHealth, Damage, StatusBase HP plus overheal pool with infinite-health overrideTen typed damage channels with per-type resistanceStatus effect engine with build-up, reapply tick, stacking, and chainingDamageInfo payload (instigator, hit point, normal, etc.)Agent and team identity with friendly fire and ally rulesSpatial queries (nearest agent, teammate, ally, enemy)Simple checkpoint respawn with deep-copied HP and status snapshotHealth affect area triggers with per-occupant tick timersInventoryMulti-cell grid with item rotationStacking, even split, place-one-from-stack, and double-click consolidationAuto rotate when only the rotated orientation fitsCategory-constrained grids with specialist-first sortingSingle-cell equipment slots with auto equip and unequip eventsNested storage containers with capacity, whitelist, and recursive serializeCount-driven sprite, badge, and HUD icon swapsRight-click context menus (Consume, Destroy, Drop, Use, Split, Throw, Remove)Per-grid weight trackingGamepad navigation (virtual pointer or grid snap)Resolution-adaptive cell sizingInteractionDual spherecast targeting (weapon layer plus general layer)Instant or hold-to-interact with progressPickup routing with refusal when no grid has room / weight limit reachedPhysics drag objects with PID position and rotation, three rotation modes, throw impulsePickup interactables with stack and storage serialize on dropUI and HUDRenderer-agnostic dual HUD behind IHUDLayer (UGUI and UI Toolkit both ship)State-driven crosshair with per-MovementState mappingThree-phase hitmarker (start, hold, end) with soundMagazine display with per-mag round and capacity readoutUI sway and fire impulseCompassScreen-space interaction box with name, description, outline, and stack textMain Menu, Settings, LevelsPush-down menu state machine with history stackTabbed options (video, audio, gameplay, controls)Settings persist to JSON in persistentDataPathFull rebinding for KBM and gamepad, primary and secondary slots per actionLevel select with scene reference and async loaderEnvironmentMoving platforms with waypoints or rotator motion, five end modes, five trigger typesRider carry with optional rotation carry and exit velocity inheritanceLadders by trigger volume or interaction buttonFluid volumes with swim state, drag, and rigidbody drag for non-player objectsGeneric triggers with collision, any-agent, or player-only gatingAudioSurface-aware footsteps via PhysicsMaterial to AudioResource dictionaryMovement SFX (jump, air jump, land, sprint start, slide loop)ArchitectureScriptableObject-first presets, hot-swappable at runtimeInterface seams (IRecoilSolver, IHUDLayer, IItemMenuRenderer, IDamageable, IMenuState)Abstract bases (FireWeaponBase, AbilityBase, ItemMenuButtonBase)NaughtyAttributes-driven inspectorsAllocation-free hot paths, cached delegates, squared-magnitude comparisonsDontDestroyOnLoad singletons with duplicate-instance guardsCode debugging primarily, Code Generation, and Comments / Documentation. The UI Toolkit UI and pipeline was also designed with AI through UXML, but as far as art goes that is the extent of it. Most systems were baseline built and programmed by me, but in many cases small, isolated features were added on top of those systems with AI for increased functionality and feature set.





