Releases

Latest - v1.1.21 (14th November 2022)

Additions

  • Scriptable render pipeline support
    • Shader graph versions of all NeoFPS shaders
    • Modified demo materials for SRPs as part of extension packages
    • Example materials and prefabs
    • New MonoBehaviours for SRP holographic sights and render texture scopes
    • Installer built into Unity Settings page of NeoFPS Hub
  • Floating origin system for large scale worlds
    • Repositions the player character and the world once they pass a certain threshold
    • Works with all the following:
      • Standard transform
      • World space particle systems
      • Trail renderers
      • Projectiles
      • Moving platforms
      • NeoCharacterControllers
  • New PickableLockedInteractiveObject can be used for interactive items like locked containers
  • InventorySelectionAnimator sets an animator parameter based on currently selected quick-slot

Changes

  • Streamlined package checks on install for better SRP handling
  • Modified demo materials to switch legacy shaders for modern to aid upgrading to SRPs
  • Added auto-switch setting to inventories (none, always or starting order)
  • Added “Fire Event On Start” setting to firearm mode switcher

Bug Fixes

  • Fixed melee weapon using its own animator instead of the abstract animation handler (prenvented full character animation)
  • Blocked wizards from creating prefabs during playmode due to broken domain reload
  • Added stricter null and initialisation checks for pose handler on thrown weapons
  • Fixed out of bounds error when rebinding inputs at bottom of the list in menu when entries are disabled

Previous Releases

Additions

  • Multi-scene save system to allow splitting levels into multiple scenes
  • SubSceneManager provides and API for loading/unloading sub-scenes
  • SubSceneLoadTrigger and SubSceneUnloadTrigger provide trigger zones for loading/unloading subscenes
  • On unloading a sub-scene, the save system will save its contents to a buffer to recreate later
  • Loading a sub-scene checks for existing save data to recreate the contents
  • Sub-scene save data is included in quick, manual and auto saves
  • Multi-Scene Save demo scene with 3 rooms, each using separate sub-scenes
  • New AdditiveSceneSaveInfo component to track sub-scene contents and data
  • InventoryInteractionHandler controls weapon selection when interacting with objects
  • New weapon inspect system that sets animator parameters and blocks weapon use while inspecting

Changes

  • Set animator parameter motion graph behaviours now have options to use motion graph parameter values
  • Added shell collision audio clips to ParticleSystemShellEject firearm module
  • Automated animator and skinned mesh culling options for first person body
  • Automated animator culling options for weapons
  • Updated Kubold demo package with animator controller fix
  • Updated input system package with weapon inspect trigger

Bug Fixes

  • Fixed sprint to crouch slide blend when using hold to sprint (full body character animator)
  • Wieldable tool wasn’t correctly setting crosshair on selection
  • Added 1 frame delay to info popup in FP body demo to prevent out of order issues
  • Waypoint moving platform was overwriting save data on start

Additions

  • Added stub animations and override controller for first person body
  • New FpsInventoryMultiDrop can be used to drop multiple items at once
  • Added new backpack drop to demo characters on death
  • Added one-shot local camera shakes + motion graph behaviour to trigger them
  • ContinuousTrigger adds support for weapons like beams or flamers
  • New FirstPersonBodyRotationTracker sends steering direction changes to animator controller
  • New MapCaptureCamera helper to capture top down views of a scene
  • New enemy health bar and world space hit damage counters (example in firing range demo)
  • New pre-spawn UI popup system and game modes
    • Spawn point selection
    • Character selection
    • Loadout selection
    • Loadout builder (pick individual weapons)
    • Created new game mode for the Demo Facility using spawn point selection and loadout builder
  • Added pooled object and save game prefab collection assets that can be shared between scenes

Changes

  • Pooling system now allocates pools over time for new items requested after level load
  • Replaced mouse smoothing algorithm with proper damping
  • Removed unused head recoil handler from BetterSpringRecoilHandler
  • Sample UI multi-select widgets can now be set to looping
  • Added unityCamera property to FirstPersonCameraBase class (for cinemachine)
  • Switched to new DamageEvents static events class instead of hit handler on character
  • Modified crosshair to use new events
  • Added healthManager property to IDamageHandler
  • Improved world space HUD markers system for better flexibility
  • Allowed resuming trigger press after reload, etc
  • Wrapped all input manager code in #if ENABLE_LEGACY_INPUT_MANAGER
  • Tweaked NeoCharacterController depenetration algorithm to prioritise ground
  • Disabled old PhysX sphere/capsule cast workaround in NeoCharacterController that’s no longer required (huge speed boost)
  • Reduced memory allocations (baseline is now just an intermittent gamepad connectivity check with no alternative)
  • Added “Mark All As Up To Date” option to unity settings page in the hub
  • Improved finger matching in FirstPersonCharacterArms
  • Removed duplicate heading behaviours and constraints from FP body motion graph
  • Added prefab recognition to ObjectInHierarchy editor (better prefab stage handling)
  • Added warning to any components that change an object’s layer on start
  • Split singleplayer game mode into base class
  • Added option to popups to prevent back button / escape / clicking off
  • Added progress events to NeoSceneManager and demo LoadingScreen class
  • Separate out onUsed event on interactive objects to C# event + unity event to allow character parameter
  • Added DropAllWieldables method to inventories
  • Extended LockSelectionOnDeath to add dropping items
  • Added error to RootMotion motion graph state if no body animator found
  • Updated Cinemachine and Input System extension packages
  • Added damping to AnimatorVelocityBehaviour
  • Added highlighted colour for selected connections in the motion graph editor
  • Added spawn point add/remove events to SpawnManager

Bug Fixes

  • Replaced drop objects on first person body firearms with correct pickups
  • Fixed problem with wielder change not correctly activating IK
  • Forced pool transform positions to world origin
  • Prevented repeat event calls on character controller change
  • Added in-game check to first person body game mode when popup disabled
  • Added initialisation checks to inventories to prevent adding things before initialised
  • Fixed wrong additive transform handler and object tags in character wizard
  • Prevented auto-switch weapons for disabled inventories
  • Fixed incorrect FoV readout in in-game settings
  • FpsSoloGameMinimal now correctly resets inGame property after exiting level
  • Changed game settings json save path on mac and uwp (access denied)
  • Fixed reload trigger lock not resetting on weapon switch
  • Removed crouch jump popping from character controller gizmo in motion debugger view
  • Prevent “RequiredString” property from deselecting when validity check result changes
  • Fixed lock/unlock inventory selection multiple times on consecutive frames causing failure to unlock
  • Added vertical velocity reset to mantle state to prevent momentum causing it to fail
  • Set correct stencil indices on scope rings
  • Prevented non-prefabs showing “register with save manager” in NSGO inspector
  • Fixed character arm IK not disabling when switching to a weapon without the required component
  • Prevented error in PackageDependencyChecker due to invalid version code
  • Fixed game mode not applying loadout on respawn
  • Fixed broken using directive error due to Unity feature leaving experimental
  • Switched AssetDatabase.Find calls to use fully qualified type name to prevent fail if duplicate names exist
  • Improved prefab ID check on duplicated variant prefabs
  • Set correct ammo count on 40mm grenade x 2 pickup
  • Set correct audio mixers and clips on pickup prefabs
  • Fixed time scale 0 causing “Not A Number” errors on NeoCharacterController and AimController
  • Fixed incorrect visual state on dead cameras and turrets after loading from save
  • Added pose handler init checks to prevent save system setting pose before initialised

Additions

  • AnimatedFirearmObstacleHandler and ProceduralFirearmObstacleHandler classes for moving weapon if obstructed
  • New ProceduralSpineLean replaces BodyLean additive effect for full body characters

Changes

  • Switched wieldable pose system to use a referenced priority queue for better stacking of poses
  • Added intro popup to FirstPersonBody demo with third party asset info
  • Improved error message for invalid package names in package dependency checker
  • Added root motion position and rotation multipliers and damping to motion graph
  • Split BodyLean into base class for sharing
  • Added lean settings to ProceduralSpineAimMatcher
  • Improved character and fp camera handling of disabling/enabling player character
  • Modified WieldableItemKinematics to work on child objects (to allow switching between multiple)
  • Updated input system extension package for parity with current input handlers

Bug Fixes

  • Fixed error on quantity = 0 for inventory wieldables
  • Fixed jump state using physics gravity instead of character gravity
  • Fixed issue with guns and hand IK desync on scroll wheel
  • Switched foot IK rotation blending to start on character up not world up
  • Replaced platform rotation algorithm in NeoCharacterController for better handling of slow rotations
  • Fixed input bindings failing to recognise changes to toggle v hold
  • Fixed firearm getting stuck in aim if switching from hold to toggle while ADS

Additions

  • New first person body features for full character body and separate arms vs weapon
  • FirstPersonBody component handles foot IK, aim direction animations and
    • FirstPersonBodyRootMotion captures root motion from Animator and passes to the NeoFPS motion controller
    • FirstPersonCharacterAnimationProfile allows you to specify (and name) which animations are exposed for overriding
    • FirstPersonCharacterArms handles IK matching character hands and fingers to weapon
    • HandBoneOffsets scriptable object stores character/weapon rotation offsets for reuse and runtime editing
    • WieldableItemKinematics works with the character arms to specify handle weapon switching
    • WieldableItemBodyAnimOverrides applies animation overrides to the character on switching weapons
    • ProceduralSpineAimMatcher uses additive rotation to bend the spine when aiming up/down or left/right
    • FirstPersonCameraTransformConstraints constraints camera position to one or more objects (eg animated head bone)
    • The firearm CameraConstraintsAimer aimer module uses camera constraints to align the camera when ADS
  • New placeholder input handlers
    • InputVehicle disables character controls while keeping cursor locked as basis for vehicle controls
    • UiInputToggle adds an escape handler that toggles cursor lock and character controls
  • HudWorldSpacePositionTracker and HudWorldSpaceTarget combine to align a HUD object with an object in the world
  • New LockSelectionOnDeath component forces the character to lower their weapon (optionally drop it) on death
  • New motion graph behaviours
    • AlignWithVelocity aligns the character body with the movement velocity vector (eg wall running)
    • ConstrainCharacterHeading aligns the character body to a vector (eg climbing ladder)
    • FootIkBehaviour sets the character foot IK strength while in the state/sub-graph
    • SetRootMotionStrength blends between the current state’s move vector and animated root motion
    • SpineAim enables or disables the ProceduralSpineAimMatcher
    • AnimatorGroundSlopeBehaviour sends ground slope and direction values to the character animator
  • New motion graph conditions
    • InventoryItemCondition checks if the character has an object with a certain ID in their inventory
    • WieldableSelectedCondition checks if the character has the object with the specified ID selected
  • New RootMotion motion graph state sends input to the character animator and moves based on root motion
  • DeathAnimation component triggers an animation when the player character dies

Changes

  • Modified NeoCharacterController, MotionController and AimController classes to enable first person body features
  • Added root motion support to motion controller
    • Added animator property to motion controller (instead of old system that set it as a motion graph parameter)
    • Extended aim controller constraints to add heading constraints (for aliging body to certain movements)
    • Motion controller has new properties for head bone and head root, plus character height animation parameter. If motion controller has a valid animator and “Height Anim Float”, then character height will be animation driven
  • Switched all private Unity message handlers (awake, start, etc) to protected
  • Added 2D sound effect pooling to audio manager
  • Added custom inputs to InputCharacterMotion component (drive motion graph parameters with input buttons)
  • Added “Scroll Select” setting to inventory input handlers
  • Added “Show Mouse Cursor” setting to InputMenu handler
  • All wieldable types have new “Animator Location” setting to specify one or more animators on weapon or character
  • Wieldables that hit 0 quanitity now deselect before destroying
    AddForce motion graph behaviour now had “Space” setting so you can apply in local space
  • AnimatorInputVector motion graph behaviour has new directional multiplier and damping settings
  • Added “Slope Effect” setting to enhanced cast motion graph conditions. Adapts cast to ground slope
  • Enabled opening motion graphs in the editor by double clicking the asset
  • Added “Minimum Distance” settings to all impulse motion graph states. Prevents issues with extreme tick rates
  • Added “ignoreTilt” parameter to NeoCharacterController teleport method in case using rotation from an object
  • Added “Default” layer to interactable mask since it has to block casts
  • Moved shared logic for firearm aimer modules to shared base class
  • All firearm modules now support multiple animators
    Added “Shell Scale” setting to StandardShellEject and ParticleToRigidbodyShellEject
  • Added onSwitchModes C# event to IModularFirearmModeSwitcher
  • ConstrainCameraPitch and ConstrainCameraYaw motion graph behaviours have added ground slope and transform based options
  • Extended HealToolAction for wieldable tools
    • Has separate heal settings for different tool phases
    • Handles inventory consume internally due to timings
  • New “Auto Hold” settings for wieldable tools that act like the trigger is held after clicking until complete
    Added “New Game” button to main menu that loads a specific scene

Bug Fixes

  • Added missing help URLs to tool modules
  • Fixed broken gamepad recognition
  • “Empty as Backup” now works with locking selections and switching between empty slots
  • Reloading immediately on switching weapons now prevents shooting until reload finishes
  • FpsInventorySwappable now checks category count on awake instead of just OnValidate
  • Fixed motion graph editor not updating at runtime for some people
  • Prevented motion graph MovementState never hitting zero speed due to smooth damp
  • Fixed automatic trigger not resuming after reload while pressed
  • Switched AddInventoryItemToolAction to use correct item class
  • Fixed continue and load game buttons in main menu not initialising properly
  • Prevented character controller getting stuck on slightly sloped walls

Additions

  • Input system extension package
  • New AnimatorBoolToolAction that sets an animator parameter while the trigger is held

Changes

  • Changed underlying input architecture to allow for input system extension
  • Rewrote package dependency checker due to upcoming changes to Unity API
  • Added “Empty As Backup” option to inventories to switch to backup item if selecting an empty slot
  • IQuickSlots interface now has additional slot int parameter in onSelectionChanged event
  • Added origin point matcher tool from firearms to melee, thrown weapons and wieldable tools
  • Added “Quality Preset” switcher to in-game graphics settings

Bug Fixes

  • Added missing help URLs to tool modules
  • Fixed broken weapon pickup with multiple of the same weapon
  • Submerging when swimming is now aware of surface level to prevent issues with moving water

Additions

  • Cinemachine extension package
  • New CinemachineFirstPersonCamera component for first person characters
  • New SurfaceFootstepAudioSystem moves footstep handling to character component and exposes onStep C# event
  • SurfaceFootstepAudiobehaviour motion graph behaviour interacts with new footstep system
  • MatchTransformState motion graph state for syncing character motion to animated transforms
  • MoveToPointState motion graph state interpolates to a fixed point in space
  • BlinkToolModule adds an Arkane style blink ability in tool form
  • Added SwimSubmergeState motion graph state and switched swimming graphs over for better surface height awareness
  • New IMeleeHitExtension interface that can be used to extend melee weapon behaviour with new components
  • New AddInventoryItemToolAction for behaviours like adding armour
  • ParticleSystemPlayOnEnable utility component for easier use of pooled particle systems for hit reactions

Changes

  • Added root NeoFPS assembly definition
  • Added “Query Trigger Colliders” and “Layer Mask” settings to melee weapons
  • Split melee weapons into base class
  • Changed melee weapons to use virtual primary and secondary fires instead of attack and block
  • Modified melee sprint handlers and stance manager to adapt to above change
  • Added “Query Trigger Colliders” setting to explosions
  • Added “Grapple Tags” setting to grapple tool
  • Changed script execution orders project wide to align with Cinemachine’s fixed order
  • Split FirstPersonCamera into new base class (for cinemachine extension)
  • Improved capsule and arrow scene gizmos
  • Added colour coding to spawn point gizmos to show when obstructed
  • Improved SetLoadout method on inventories to work after initialisation
  • Added static “CreateLoadout()” methods for FpsInventoryLoadout class
  • Added “Min Load Time” setting to NeoSceneManager
  • Better warnings for player character HUD components if a watcher isn’t found in the parent hierarchy
  • Added onLanded C# event to base character
  • Improved project hierarchy browser to show “Searching…” on open instead of freezing
  • Added AddPositionOffset() and AddYawOffset() to NeoCharacterController
  • Added Interrupt() virtual method and IsValid checks for base tool modules
  • Switched modular firearm camera offset helper to use child object browser
  • Created common base class for input handlers to separate input contexts from button press checks
  • Set firearm aimer module “Aim Transform” settings to use child object pickers
  • Limited inventory item max quantity to prevent rollover to negative at int max value
  • Added scale matching to ParticleToRigibodyShellEject when matching pooled object size and velocity
  • Added rigidbody support to WaterZoneMover for better interpolation matching with character movement
  • Changed locks to allow multiple lock IDs (eg skeleton key + specific key)
  • Added start delay and easing options to SimpleMovingPlatform and SimpleRotatingPlatform
  • Added multiple objects of same type support to swappable inventory (new “Duplicate Behaviour” setting – “Allow”)
  • Added “Holster Action” setting to inventories to allow holstering to nothing instead of backup item
  • Split NeoFpsInputManager to base class

Bug Fixes

  • Prefab browser was ignoring “None” selection
  • Fixed spawn point overlap tests offset
  • Prevented motion graph editor viewport from repainting without input
  • Moved FpsPrototypePlayerController init to Start method to prevent out of order errors
  • Fixed projectiles showing early for near hits
  • Added NeoSerializedGameObject components to swimming demo water zones to prevent issues when saving
  • Fixed error when locking selection in stacked inventory
  • Fixed broken PS4 controller mapping on OSX
  • Fixed error in stacked inventory setup section of player character wizard
  • Fixed error in spread ballistic shooter setup in firearm wizard
  • Switched to correct inventory key types for  ArmouredDamageHandlers and HudInventoryItemTracker
  • Fixed HudInventoryItemTracker failing to get inventory if character spawned but not initialised
  • Fixed settings pages in hub not saving changes
  • Improved stance reset on changing wieldable item selection
  • Fixed MotionGraphDataOverrideAsset inspector not saving changes properly
  • Body impacts now cause the camera to bounce in the correct direction
  • Load and Continue single player menu buttons now initialise before selection
  • Fixed broken save/load for SimpleMovingPlatform and SimpleRotatingPlatform

Additions

  • Added TimedExplosive component

Changes

  • Added filtering to save game thumbnails
  • Added location options to FirearmTransformMatchSetter (head, upper body, aim transform)
  • Added “Pose Transform” setting to firearms to prevent pose system moving root in some situations
  • Applied custom object browsers to object properties on ricochet and penetrating ammo effects
  • Added valid target tag setting and onTargetLost event to target tracking ammo
  • Added damage source interface to sticky projectiles to allow passing of damage info
  • Max distance for hitscan trails
  • Enabled dynamic batching for demo materials
  • Added button to highlight child objects to module lists in ModularFirearm inspector
  • Added “Register With Database” button to inventory database tables
  • Reworked explosion protected virtual methods to allow more flexibility
  • New “Auto Reload” gameplay setting
  • Wieldable tool modules no longer auto-end if there’s no continuous actions
  • Added “Query Trigger Colliders” settings to shooter modules and projectiles
  • Improved coverage of known gamepad names

Bug Fixes

  • Character impact handler switched to impulse forces to prevent insane values being required
  • Corrected quaternion order on transform matcher
  • Removed depth of field from default demo post processing profile (was messing with RT scopes)
  • Tweaked script execution order for HUD target lock markers
  • Removed post processing from player character wizard if not installed
  • Fixed missing property in guided projectile editor script
  • Prevented aim contollers taking input when disabled
  • Fixed broken particle system connection for muzzle effects in firearm wizard
  • Reordered prototype spawnerless character hierarchy to prevent broken spring effects
  • Removed depth fade from laser pointer dot as it stopped working properly
  • Fixed vertical recoil with 0 wander in BetterSpringRecoilHandler
  • Pickup wizard now centers trigger collider on render geo
  • Fixed broken stacked inventory settings for wieldables in wizards
  • Aim toggle is cancelled when rebinding keys, preventing getting stuck aiming
  • Fixed verticalFoV script error in graphics settings on Android
  • Added initial update to accuracy when entering/exiting aim to ensure accuracy caps are handled properly
  • Fixed BetterSpringRecoilHandler error when no aimer attached to weapon

Additions

  • New wieldable tools system (code only – no demo art included currently)
    • New wieldable type alongside firearms, thrown and melee weapons
    • Primary and secondary fire modules
    • Start, continuous (hold) and end actions
      • Animator trigger actions
      • Hold to charge action
      • Consume inventory item actions
      • Flashlight tool module (toggle action)
      • Grapple tool module
      • Heal actions (wielder or target)
      • Play audio actions
      • Shield booster actions
      • Unity event actions
    • Procedural and keyframed sprint handlers
    • Stance system
  • Grapple-swing motion graph state
  • Add force and record velocity motion graph behaviours
  • New HeadBobV2 head bob system with crosshair centering and bob strength sliders in game options
  • Character velocity based weapon sway
  • ParticleToRigidbodyShellEjector uses particle system while in view, swapping particles for rigidbodies after

Changes

  • Added FoV settings to graphics menus
  • Vastly improved explosion damage handling (won’t stack damage on multiple colliders / damage handlers for a single character)
  • Reworked KeyBindingContext system to allow for easier addition of inputs that can share keys
  • Added support for multiple inputs on each gamepad button (eg ADS + secondary fire)
  • Improved KinematicHingeDoor 1-way behaviour (you can now add a hinge transform to either the positive or negative)
  • Added “Tilt Towards” setting to BodyTilt motion graph behaviour
  • Can now specify new pool size prior to adding new pools to scene pool info or pool manager
  • Added max speed multiplier to ricochets and penetration in SurfaceBulletPhysicsInfo
  • Improved bullet trail cleaner for projectiles that aren’t removed on hit
  • Added OnTagged unity event to TargetTrackingAmmoEffect to make switching ammo effects easier on tagging a target
  • Made it easier to extend TargetTrackingAmmoEffect and add conditions to tagging objects
  • Added template descriptions to item creation wizards
  • Checked and re-exported all item templates
  • Switched prefab references in neo inspectors to use new project browser system (eg projectiles, explosions, hitscan trail)
  • Split thrown weapons into base class to remove inventory dependency from core functionality
  • Demo sticky projectile is now set up as an interactive ammo pickup (using shotgun ammo to demonstrate)
  • Item pickups now support pooling (destroy on consume now changed to “return to pool or destroy” on consume)
  • Removed inventory key from generated constants (you should now add new items via the database)
  • Removed FpsInputAxis from generated constants settings and made it harder to accidentally generate all
  • Improved lookahead on StandardShellEject to compensate for character position interpolation
  • Added new shell casing physics material for better bounce
  • More intuitive velocity and slope handling in AnimCurveDashState
  • Better interpolation handling in PhysicsBulletCasing
  • Added ADS multiplier for RotationBob on weapons
  • Made hitboxes on cameras and turrets slightly bigger
  • Nicer water surface texture
  • Demo characters now lower weapons when swimming or climbing ladders
  • Better exception handling when loading from save

Bug Fixes

  • Fixed camera seeker angle ranges clamping in OnValidate before input is finished
  • Prevented hammering different weapon slots from blocking ADS when ending on the original selection
  • Fixed registering NSGO save game prefabs with save system from within prefab-stage
  • Prevented gamepad settings from creating NeoFPS manager objects on run when NEOFPS_LOAD_ON_DEMAND is used
  • Prevented animator parameters resetting on disable/enable for chambered and incremental reloaders
  • Fixed broken player character wizard (incorrect stamina system setup)
  • Restored correct inventory IDs on armour prefabs
  • Dimmed the stylised projectile trail to prevent blinding people
  • Teleporting NeoCharacterController now resets interpolation properly to prevent crazy skipping effect
  • Fixed potential out of range bug on pattern editor for pattern shooters
  • Fixed gizmo error with character prefab open in prefab stage while in play mode
  • Fixed aimer gizmo not matching aim offset transform
  • Fixed LaserPointerAimerSwitch causing error on load from save when not on active weapon
  • Fixed ModularFirearmModeSwitcher not connecting after load from save if weapon was never selected

Additions

  • New water shaders in swimming demo

Changes

  • Added version number to hub front page

Bug Fixes

  • Fixed duplicate script error on upgrading from 1.1.09

Additions

  • Locked doors
    • Inventory based keyring
    • Locked interactive objects and trigger zones
    • Destructible lock example
    • Lockpicks and lockpicking mini-game
    • Keypad based passcode locks
  • Guided projectiles
    • Simple steering and drunken steering examples
    • Player tracking
    • Nearest object with tag and layer tracking
    • Laser pointer targeting system (HL2 style)
    • Target lock firearm trigger (hold to lock, release to fire)
    • Multi-target lock firearm trigger (hold to add targets, release to fire once per target)
    • Raycast targeting (homes on initial aim point)
    • Target tracking ammo effect (tag a target with a bullet to get missiles to home on)
  • Sticky projectiles
  • Contact thrown weapons
  • Recharging ammo firearm module
  • Audio-only muzzle effect firearm module
  • Queued trigger module (hold to queue shots, release to fire)
  • Ability based firearms (eg shoulder mounted launchers)
  • Tribes inspired demo scene for jetpacks and guided missiles
  • New motion graph states
    • Adaptive jetpack (allows for hover effects and max speeds)
    • Anim curve dash
  • New motion graph behaviours
    • Animator parameter setters
    • Animator velocity, speed and input behaviours
    • Impact damage (temporarily disable/enable)
    • Modify character velocity
    • Camera kick, jiggle and shake spring effects
    • Camera FoV pulses
    • Constrain camera pitch
    • Steering rate
  • Info popup trigger (add to interactive objects to show text popups)
  • Checkpoint trigger (enable/disable spawnpoints, and auto-save)
  • World to screen position HUD markers (currently used for target locks)
  • Prefab UI popups system to allow showing arbitrary UI popups from prefabs (eg door keypads)
  • New inventory loadout assets
  • Added HUD Toggle component (press a key to hide/show the HUD for screenshots)

Changes

  • FpsInventoryKey constants replaced with full inventory database system (easier to work with and expand to your needs)
  • Added set and reset velocity methods to NeoCharacterController
  • Added locked animation curve for door handles
  • Improved object fields and browsers in wizards
  • FirstPersonCamera now has methods for FoV pulses
  • Added volume settings to firearm
  • Firearm movement accuracy now exposed in ModularFirearm component settings
  • Firearm modules switched to a common base class and given lifecycle settings
  • Smoother blend in and out of position bob
  • Added sprint hold and ability button to character motion input component
  • New settings for motion graph states: boost pad, jump, fall
  • Improved audio falloff for default audio manager audio sources
  • Motion graph data override API has been changed to allow stacking of overrides
  • Stamina system now uses multipliers for motion when tired instead of absolute values
  • Projectiles can now be teleported
  • Charged trigger now has options for different animation setups (parameter, layer blend, events)
  • Door trigger zones have added “characters only” setting
  • Body lean has new settings to counter rotate camera and weapon
  • Added demo example for multi-waypoint moving platforms (select a destination)
  • Passthrough reloader now has magazine size settings for modules that want to check it
  • Added trigger cancellation using reload button for certain trigger types (and settings)
  • Added onTooltipChanged event to interactive objects (eg Unlock vs Open)
  • IInventory now has AddItemFromPrefab method
  • Added settings for which hit ammo effect to use when penetrating ammo effects fail to penetrate
  • Switched ballistic projectiles to common base class
  • New onShootContinuous event on trigger modules
  • Added deceleration setting to basic motion state (no input)
  • Airborne only setting for recoil pushback component
  • Added inventory loadouts to game mode / spawner
  • Can no longer set character height directly from motion controller property. Must use methods instead
  • Added steering properties to IAimController
  • Added enabled checks to INeoCharacterControllerHitHandler
  • Added reload current setting to NeoSceneSwitcher
  • Added onValueChanged event to motion graph transform parameters
  • New “Decal Layers” setting on surface manager allows you to specify which layers accept decals
  • Character spawns now have a setting to reorient gravity to their tilt on spawn
  • Added filter to modular firearm mode switcher to make it easier to select modules
  • Added ground contact lookahead settings to NeoCharacterController (detect slopes vs steps)
  • Stacked inventory wieldables are now fixed at the maximum stack size of 10 (other options were causing confusion)

Bug Fixes

  • Fixed incorrect force calculations on NeoCharacterController
  • Fixed improper naming of trigger events on character trigger zones
  • Animator parameter key checks now work for animator override controllers
  • Stacking bullet effects can now longer select themselves
  • Fixed persistent stacked inventory HUD (now selection dropdowns fade out)
  • Fixed automatic and burst trigger spacing if shot causes error
  • Driven moving platform gets correct values from rigidbodies if used
  • Fixed tilted spawn points causing character up vs gravity mismatch
  • Fixed FpsInput base class allowing input without focus

Additions

  • New firearm optics
    • Holographic & red dot sights with reticules projected in front of the weapon
    • Render texture based scopes
    • Stencil based scopes
    • Built-in (standard) render pipeline shaders
  • Weapon flashlights
  • Laser pointers
  • New weapon attachments geometry (system not yet implemented)
  • New in-game quick options menu to bypass full UI if changing volume, mouse sensitivity, vsync, etc
  • Added “ability” based slow-mo (press the button to enter slow-mo)
  • Added DirectionalDash motion graph state

Changes

  • Updated demo facility
    • New motion graph for character with swimming, crouch slides and climbing
    • Wall running implemented but disabled by default
    • Firearms switched to projectile based shooters
    • Firearm geometry replaced with new models
    • New camo material options for weapons
    • Firearm prefabs have a variety of optics and other attachments
      • Activate / deactivate in the prefab as required (the attachment system is not yet implemented)
    • Re-baked lighting with light and reflection probes
  • Added keyboard layouts (Qwerty, Azerty, Qwertz, Dvorak, Colemak)
    • In game key bindings now has option to reset to defaults based on layout
  • Added key binding filter to options menu to hide specific inputs that might not be used
  • Improved NeoCharacterController interpolation for smoother results
  • Head move and weapon move aimers can now set separate input sensitivity to FoV multiplier (for RT scopes)
  • New minimum accuracy setting for weapons (in script)
  • New movement accuracy penalty multiplier for weapons (in script)
  • Added strength multipliers to additive spring effects (in script)
  • Added HideCrosshair and ShowCrosshair methods to weapons (in script)
  • Added “ability”, toggle flashlight, and optics brightness up/down input buttons
  • Improved modular firearm wizard to allow non-model prefabs
  • Added NEOFPS_LOAD_ON_DEMAND scripting define, to prevent manager load and creation on start
  • Redesigned pattern shooter pattern editor interface

Bug Fixes

  • Key bindings options menu was showing every input as W
  • Better handling of wieldable selection locks from motion graph behaviours
  • Fixed motion graph states and connections not showing in inspector in 2020+
  • Aimers now use correct rotation easing setting (were using position easing)
  • Character played pain grunt when health went up instead of down
  • Advanced particle muzzle effect particles were disappearing when switching weapons
  • Character step rate now blends in/out to stop popping in spring effects (eg head and weapon bob)
  • Fixed aim persisting between weapon switches (ADS, switch, stop aiming, switch back)
  • Additive transform handler using FixedAndLerp option wasn’t interpolating properly
  • Aim up/down audio was playing at end of transition instead of start

Additions

  • New item creation wizards
    • Pickups (revamped)
    • Melee Weapons
    • Thrown Weapons
    • Player Character
    • Modular Firearm
    • Interactive Objects

Changes

  • Damage dealers (hitscan and projectile firearms, melee weapons and explosives) no detect multiple damage handlers on an object
  • Implemented registration of NeoSerializedGameObject components with the save manager (or scene save info) from the component’s inspector

Bug Fixes

  • Fixed motion graph states and connections not showing in inspector in 2020+
  • Aimers now use correct rotation easing setting (were using position easing)

Additions

  • Regenerating health manager
  • Armour (inventory & pickup based)
  • Shields (recharging, and staggered with pickups to fill empty bars)
  • Healing and damage zones
  • Slow-motion system with slow-mo zones and motion graph behaviour
  • New HudAdvancedCrosshair with hit and critical hit feedback
  • HUD based Interaction tooltips
  • New CameraYawConstraint motion graph behaviour (used in the demo curved wall runs)
  • CutsceneCamera handles disabling HUD and character input for external camera views
  • RecoilPushback behaviour pushes the player character backwards when they shoot a firearm
  • Added a “Pickup Wizard” to the NeoFPS hub to simplify creating item pickups and powerups
  • New example contact based and interactive pickups (inventory items, health and armour)
  • HUD based meters and counters for inventory items, and other systems
  • JumpDirectionV2 motion graph state replaces old directional jump and handles analogue input correctly

Changes

  • Camera constraints are now damped near the limits
  • Character controller height change speed is now set along with target height
  • Added separate body lean settings for crouching vs standing
  • Added frame rate cap options to graphics settings when V-Sync is disabled
  • New IShooterCameraAim interface added to relevant shooters to make it easier to swap shared property at runtime

Bug Fixes

  • Better save system thread handling for IL2CPP
  • Fixed incorred disable on InfiniteAmmo firearm module
  • The character controller is now much better at handling head collisions (doesn’t get stuck on overhang corners now)
  • Swappable inventory sytem now gets the correct slot index from save games
  • Improved spawn order handling by adding an OrderedSpawnPointGroup component
  • Removed assumption from inventory system that starting items would have a save system component (NeoSerializedGameObject)
  • Switched sample scene thumbnails to enable read/write as it was causing an error in save games

Additions

  • TeleportZone1Way allows simple teleportation
  • TargetVelocity condition for motion graph (velocity before collision response)
  • MaintainVelocity motion graph state

Changes

  • Improved pose handler reset
  • Added motion graph parameter reading for head duck spring effect
  • Added FixedUpdate + interpolation in Update or LateUpdate for spring effects (more consistent at low framerates)
  • Added BreathingEffect to all demo weapons

Bug Fixes

  • Fixed firearm quick-setup using wrong transform for spring animation (blocks new stance system from working)
  • Blocked sprint handlers from catching events while not selected
  • Fixed jump charge sometimes resetting before actual jump
  • Fixed broken screenshots in save games
  • Fixed trigger state being saved with save games (would shoot on load)
  • More consistent behaviour when swapping aimer and trigger modules while in use
  • Prevented rapid unlock/lock inventory selection from causing weapon to pop up

Additions

  • New wieldable stance managers that can be used for weapon stances/poses
    • FirearmWieldableStanceManager, MeleeWieldableStanceManager, ThrownWieldableStanceManager
    • SetWieldableStance motion graph behaviour to control stance from motion graph (eg crouching or falling)
  • Procedural and keyframed sprint animation handlers for weapons
    • ProceduralFirearmSprintHandler, ProceduralMeleeSprintHandler, ProceduralThrownSprintHandler
    • AnimatedFirearmSprintHandler, AnimatedMeleeSprintHandler, AnimatedThrownSprintHandler
    • Options to pause sprint animation or break out of sprinting motion state on shooting, reload, melee attack and throwing
  • New BetterSpringRecoilHandler firearm module replaces the old spring recoil module and is much more intuitive and powerful
  • New breathing system provides a consistent way to count breaths for procedural animation (new BreathingEffect additive transform component), as well as firing unity events on breath for things like particle systems
  • StaminaSystem tracks the player character’s stamina and can modify movement speed and breathing rate based on fatigue
    • DrainStamina and ModifyStamina motion graph behaviours let you affect stamina based on movement
    • FirearmAimFatigue behaviour can be added to a modular firearm to drain stamina while aiming down sights
    • Exhaustion lets you block sprinting and others until stamina has recovered to a set threshold
    • New stamina bar HUD item
  • CameraShake additive effect for use with continuous shakes such as earthquakes, and one-off shakes such as explosions
    • Example shake zones can be placed in the scene and activated via events: BoxShakeZone, BoxShakeZone2D, CircleShakeZone, SphereShakeZone
    • Shake has been added to pooled explosions for grenades and exploding barrels
  • New step tracking system added to MotionController and motion graph
    • TrackSteps motion graph behaviour can be added to relevant states and sub-graphs to set stride length
    • Used to sync head and weapon bob, along with procedural sprint animations
    • Can switch on “Use Dumb Stepping” on MotionController instead of using motion graph behaviours for a simple implementation
  • New PositionBob and RotationBob spring effects replace deprecated (but still functional) HeadBob and WeaponBob
    • Better syncing allows gameplay settings to blend head bob out to weapon bob for people that get motion sickness
  • LockInventorySelection and UnlockInventorySelection motion graph behaviours let you set the character inventory to a specific item, hands (backup item) or nothing when entering and exiting motion states
  • AdditiveJiggle adds a Z-axis rotation spring effect
  • Added quickstart to hub for firearm overheat

Changes

  • Added new DemoFacility character and weapons to show off new features. These will be updated much more frequently than the other demo characters and weapons
  • Updated demo weapons with new bob effects and better spring recoil
  • Weapon deselect can now use a lower animation instead of just being instant (demo weapon animators have been updated to add this, but the weapon prefabs are set to instant as before)
  • WeaponMoveAimer and ScopedAimer switched to use new pose handlers for seamless blends to other stances / poses
  • CharacterTriggerZone and CharacterTriggerZone OnTrigger* methods renamed to OnCharacter* due to Unity errors using method names that match message names
  • Added preset accuracy kick settings to all recoil modules
  • OnWielderChanged event on IWieldable (affects firearms, melee and thrown)
  • Aimer modules have replaced onAimUp and onAimDown events with onAimStateChanged event that includes transitions
  • IAdditiveTransform interface now includes properties for bypassing position and rotation scaling
  • IThrownWeapon interface has new properties for throw durations and events for throwing
  • IMeleeWeapon interface has events for attacking and entering/exiting block state
  • ITrigger interface gained an onStateChanged event
  • Added Floor and Ceiling options to ModifyFloatParameter motion graph behaviour
  • Moved damage handling before applying force in bullet effects for better ragdoll force handling on death
  • Moved jetpack example to new “SmallFeatureExamples” folder in samples
  • Added “Lead In” option to AdditiveKicker to allow smoother entry
  • Switched demo assault rifles to use base ModularFirearm behaviour and ModularFirearmModeSwitcher instead of pointless ModularAssaultRifle behaviour

Bug Fixes

  • Fixed head bob speed on ladders
  • Fixed AdvancedParticleSystemMuzzleEffect breaking on guns that aren’t in inventory on start
  • Fixed issue with rearranging prefab hierarchies using NeoSerializedGameObjects breaking object’s save hierarchy
  • Prevented spawn points registered with spawn system persisting outside play mode
  • AdditiveTransformHandler was stacking transforms incorrectly, leading to the pivot point getting out of sync
  • Removed ModularFirearm error checks in play mode (were being triggered by mode switching)

Additions

  • New pooled object surface hit FX
  • Added new demo realistic particle system effects for weapon muzzle flashes
  • New demo bullet trails and projectiles
  • Overheat system for firearms including barrel glow, heat-haze and HUD heat bar
  • New standard shaders for firearm VFX and interactive object highlighting
  • Added transition settings for weapon move aimer, using different easing functions

Changes

  • Improved timing on entering aim mode from reload
  • Moved recoil to end of frame to prevent bullet trails from using recoil position
  • Split ParticleSystemMuzzleEffect to Simple and Advanced versions
  • Added distortion shockwave to explosions
  • Added more options to wall running state for entry speed and target speed

Bug Fixes

  • Prevented decals persisting across scene loads
  • Fixed standalone build error
  • Fixed interactive object detection and highlighting
  • Fixed broken inspector for SurfaceBulletPhysicsInfo scriptable object
  • Improved head bob speed on ladders

Additions

  • Added new ricochet ammo effects (ballistic and hitscan) which stack with normal bullet effects
  • Added new penetration ammo effects (ballistic and hitscan) which stack with normal bullet effects
  • Added new pooled hitscan bullet trails

Changes

  • Moved ammo effect modules into own folder
  • Hitscan shooters no longer use a bullet trail on the weapon, but a pooled trail object instead
  • Added speed parameter for bullet effects
  • Added speed based bullet damage falloff to advanced bullet ammo effect

Bug Fixes

  • Fixed script errors when upgrading from 1.1.01 or earlier due to deprecated scripts not being deleted automatically
  • Fixed issue with asset store pulling in 2018 package manager UI as a dependency when importing into 2019+
  • Interactive object markers now work properly with objects of negative scale
  • Post-process Layer Fix behaviour now does nothing if a PPL component already exists on the camera

Additions

  • NeoFPS Hub replaces the welcome popup and settings wizard with a page based editor UI
    • Quick start readmes
    • Update notes tracks the installed version and shows required changes when updating the asset
    • Demo scenes list and readmes for each demo scene
    • Improved game settings (player controlled options)
    • Improved game managers (NeoFPS and unity systems options)
    • Custom script creation wizard
    • Integrations page linking to asset store and GitHub integration repos
    • Standalone tools page describing non-hub tools and providing shortcuts to open them
  • Pattern shooters (hitscan and ballistic) shoot in a specific pattern
  • Spread ballistic shooter allows random spread (shotgun style) with ballistic projectiles
  • Advanced bullet ammo effect adds randomised damage and damage falloff over range to modular firearm bullets
  • Ballistic projectile with simple drag adds a basic drag system to the standard projectiles for more interesting trajectories
  • Anim only aimer adds a simple aimer module to firearms that triggers an aim animation (useful for AI)
  • Accuracy only recoil handler adds a recoil handler that modifies a firearms accuracy each shot, but nothing else
  • New passthrough reloader shoots directly from a firearm’s ammo module instead of a magazine
  • NeoFpsInputManager asset now moves default key bindings and generated constants to one place for easier editing
  • NeoFpsAudioManager moves mixer properties and audio source pooling out of settings for easier editing

Changes

  • MAJOR CHANGE updated samples to Unity 2018.4 and new prefab system
    • New variant prefabs for characters and weapons to reduce maintenance errors
    • Nested prefabs for scenes for easier changes (eg updating lights for HDRP conversion)
    • Old prefabs moved to new Samples/Legacy folder
    • Renamed prefabs and assets for more consistent naming conventions
  • Added toggle lean option to character input
  • Added climb height output to motion graph climbable condition fr synching animation
  • Added health changed and alive changed events to health manager
  • Can now allow reloading while ADS
  • Infinite ammo module has been split out so that the reloader component is now the passthrough reloader
  • New options for what happens when a weapon is deselected
  • Split variable gravity out of INeoCharacterController interface for optimised mobile version
  • New absolute input options in motion graph input vector condition
  • New GetItems() methods on inventories (including non-allocating versions)
  • Added optional steering system to aim controllers (detaches character heading and aim direction)
  • In-game menu now has an option to pause the game when active
  • Added IWieldable interface to items and exposed as a property in the inventory behaviours for better event handling
  • Bullet trail cleaner now has an optional delay before starting trail
  • Added distance parameter to firearm ammo effects
  • Added readme objects to all demo scenes with breakdown of contents and links to in-scene items, documentation, etc
  • Ballistic shooters now use an IProjectile interface instead of referencing the ballistic projectile directly
  • NeoSceneManager is now a scriptable object and exposes unity events to handle scene load success/failure
  • New default loading screen options in scene switcher (default is specified in NeoSceneManager)
  • All managers are now scriptable objects, reducing scene setup complexity
  • Gamepad input now auto-detects the attached gamepad and uses gamepad-agnostic profiles
  • Asset now automatically adds a NEOFPS scripting define to the player settings
  • Game settings now only contain options the player should access (eg no audio mixer variable names)
  • Mouse cursor capture is now on demand instead of default. Prevents issues using NeoFPS alongside other assets

Bug Fixes

  • Swappable inventory was incorrectly setting category sizes to 0 when first placed, causing errors
  • Post process layer fix was setting the wrong layer for post processing profiles
  • Pooled objects with an NSGO attached that aren’t registered with the save system no longer cause an error
  • Inventory items quick slots are now clamped to the available range
  • Motion graph bob interval was being detected, but not correctly used
  • Removed infinite loop in descending order inventory starting slot selection

Additions

  • New ModularFirearmModeSwitcher and API to simplify using the firearm mode switch to swap firearm modules and more
  • Added an AnimationEventAudioPlayer component which can be attached to animated objects for flexible system to play audio clips using animation events

Changes

  • Added absolute rotation option to NeoCharacterController.Teleport
  • Improved blend in and out for head and weapon bob
  • Improved repeat timing for burst fire trigger
  • Added Color32 to save games serializers
  • Graphics settings now retrieves first run settings at runtime and hides options in editor
  • Added discord link to welcome popup
  • Changed gamepad settings to default to off
  • Added NSGO parameters to serialization formatters for saving object references
  • Changed damage and health methods to virtual
  • Added “onItemDropped” event to inventories

Bug Fixes

  • Fixed missing sounds on turrets
  • Removed PostProcessLayer components that were spamming errors and added a component that rebuilds them at runtime
  • Fixed sync issues with incremental reloader
  • Prevented infinite loop in inventory reverse starting selection order
  • Delayed start on projectile trails to prevent spike to origin in 2018.4+
  • HUD scopes now hide other HUD elements when raised
  • Fixed NeoSerializedGameObject prefabs failing to create serialization key for some child objects
  • Removed debug logging from pitch condition and swimming motion graph
  • Fixed null texture data bug in savegame metadata load when not using screenshots
  • Extra bomb proofing for MG condition groups to prevent circular references
  • Fixed multiple audio listener issues with async loading screen

Additions

  • New save game system
    • Quick save/load using F5/F9 (by default) on standalone
    • Quick, auto (checkpoint) and manual saves
    • Save browser in main menu
    • Continue button in main menu resumes from latest save
    • Optional screenshots or thumbnails for quick and auto saves
    • Persistence (save character health and inventory on scene change)
    • NeoSerializable interface for components and scriptable objects
    • Formatters for adding save/load to complex third party components
    • File read/write on separate thread to prevent freezes on save
    • Loading screen system for async scene loading
    • In-game saving notification
    • Custom binary serializer/deserializer
    • Custom serializer for restricted platforms (eg WebGL)
    • Save file inspector
  • Parkour motion graph elements and demo
    • New motion graph states for wall running, dashing, mantling, skiing (crouch slide), pushing off walls, jump pads
    • New conditions for climbing, air time, collision flags, time comparisons, lookahead casts (velocity, direction, etc), enhanced casts that output results to parameters, direction and velocity tests, aim tests
    • New behaviours for recording time, applying body tilt effects, clamping parameters
    • New jump pad scene elements
  • Swimming motion features
    • Surface and underwater swimming states, with or without strokes
    • Wading state that modifies speed by water depth
    • Climbing out of water onto ledges
    • New water zone scene elements with flow and surface info
    • Drowning system that tracks time underwater
  • Jetpack motion state behaviours
  • HUD meters and readouts for motion graph parameters
  • Motion debugger tool
    • Charts character movement stats in detail
    • View character controller and motion graph data
    • Track motion graph parameter values
    • Scrub the graph to inspect specific frames and view movement in the scene
  • Body tilt
    • Lean left / right, with proximity and speed checks
    • Motion graph behaviours to tilt based on wall contacts or movement
  • Weapon momentum sway spring effect that moves held items as the camera rotates
  • New scene management system for async loads with loading screen (ties into save system)
  • Added PS4 controller support

Changes

  • Motion graph now supports vector parameters
  • Motion graph connections can now use condition groups that allow combos of any/all
  • Complete rework of NeoCharacterController slope handling
    • Slope speed curves now applied to movement states, not controller
  • Moved game settings to scriptable object resources for easier editing
  • Scene switcher can now switch based on index or name, and allows persisting character data
  • Added “On Death” options to example game mode for loading from saves or returning to menu
  • Added object to surface hits to allow more complex effects
  • Changed weapon aim amplifier to work with variable up vector, and use more intuitive settings
  • Tied head and weapon bob to motion graph for more control over bob amount and rate
  • Added “rounds per second” and “rounds per minute” readouts to trigger inspectors
  • Added settings to block trigger when transitioning aim mode to prevent interrupting animations
  • Simplified ammo effect assignment in ammo firearm modules
  • Explosion and impact forces can now push the character
  • Improved inspector for level select menu
  • Added optional parameter to disable ground snapping when adding a force to the NeoCharacterController
  • Removed old explosion system deprecated in 1.0.05
  • Added audio handling to health pickup
  • Added repeat functionality to charged trigger
  • Added match camera position system to firearm editor to simplify setup process
  • Added all in one character for drop-in testing (doesn’t require spawner and reloads scene on death)
  • Enabled AI turrets in demo facility by default
  • Enabled post-processing by default (asset store tools can now save dependencies)
  • Can now specify camera FoV as horizontal (based on 16:9 aspect) or vertical, but applied in vertical

Bug Fixes

  • Fixed NeoCharacterController throwing errors on non-readable mesh colliders
  • Audio settings now correctly modifying mixer
  • Fixed OnEnter/OnExit for disabled motion graph behaviours
  • Swapped menu dropdown icon on motion graph behaviours to be more visible on light UI
  • Fixed surface manager returning incorrect surface from default layers
  • Pressing escape no longer locks input, but blocks it correctly
  • Removed 1 frame lag on moving platforms
  • Contact ladded base handling fixed (doesn’t force detach)
  • Fixed death camera height
  • Fixed over-amplified weapon sway when looking up / down

Additions

  • New NeoCharacterController demo scene with arbitrary up-vector demo

Bug Fixes

  • Script errors in FpsGamepadSettings.cs due to refactoring not picked up with platform dependent compilation
  • FoV issues on ultra-widescreen monitors and when resizing window
  • Fixed HUD elements not unsubscribing from events properly on destroy

Changes

  • Tweaked pistol recoil
  • Added optional parameter to disable ground snapping when adding a force to the NeoCharacterController

Additions

  • New explosion system that uses pooled particle effect objects and a simple PooledExplosion behaviour.
  • Added example explosion prefabs.
  • New multi-object and particle muzzle flash firearm modules.
  • Split ballistic shooter into new simple ballistic shooter that ignores accuracy and camera aim.
  • Added explosive barrels (red in demo scenes).

Bug Fixes

  • Fixed issues with generated constants editor not refreshing valid state when name clashes are fixed.
  • Set proper layers for AI seeker targets on inventory demo characters.
  • Set correct audio sources for inventory demo characters.
  • Firearm drops now correctly set ammo even without a FirearmAmmoDrop attached.

Changes

  • Fixed “Apply Manually” errors in settings wizard (2018.3+).
  • The ballistic shooter now correctly handles accuracy based on the spread property.
  • All shooters now have options to use the camera aim or gun forward for both hip fire and aimed fire.
  • New accuracy caps in aimer modules allow maximum accuracy (0-1) to be set for aimed and hip fire.
  • Added layers property to CharacterInteractionHandler to choose layers it interacts with.
  • Added multiple inventory types to firearm editor quick-setup.
  • Added aim transform property to camera so effects can be layered on top.
  • Switched swappable inventories to use new FpsSwappableCategory for neater editor and easier expansion.
  • Renamed inventory keys to better describe items.
  • Reorganised inventory editors to make more readable.
  • The spring recoil module can now bypass spring multipliers for more intuitive settings.
  • Added RaycastHit versions of AddDamage on damage handlers for more complex use cases.
  • Renamed spring multipliers on aimers.
  • Added events to AI Seekers for state changes.
  • Thrown grenades now use new explosion system.
  • Demo grenade launcher now uses new explosion system.
  • Spring recoil handler can now bypass the spring multipliers.
  • Added base accuracy level for hip firing and aimed.
  • Tweaked demo firearms (recoil, shooters and aimers) for better handling.

Additions

  • Added new IRecoilHandler modules to modular firearms
  • Added health pickups
  • Added new BaseCharacter and BaseController behaviours and switched singleplayer versions to use these
  • Added new player character and inventory watchers and switched hud elements to use these
  • Added C# events to motion graph parameters

Bug Fixes

  • Hitscan and spread shooter were dealing damage twice when set to use camera forward vector
  • Set HUD inventories to auto-populate slot property in OnValidate and added start errors if not found
  • Enabled collisions between default layer and rough envirnoment geo
  • Fixed WebGL build issue with input bindings
  • Fixed motion graph connectable build error outside editor
  • Hitscan and spread shooters now use correct camera transform for aim (not spring parent)
  • Fixed divide by zero in AdditiveKicker if starting play mode from paused
  • Fixed start-order bug with character disabling on spawn
  • Prevented reload continuing after weapon switch
  • Fixed aimers being blocked if aiming during reload, but switching weapons before done
  • Fixed hold to aim not working
  • Fixed key rebinding not detecting some clashes
  • Fixed startup scripts not triggering properly in 2017.4
  • Added delay between startup checks to prevent overlap on 2019.2+

Changes

  • Moved firearm handling out of modular firearm and into new IRecoilHandler modules
  • Moved firearm scripts into NeoFPS.ModularFirearm namespace
  • Added firearm module error reporting in ModularFirearm inspector
  • Added collision mask option to firearm shooters with that defaults to bullet blockers
  • Switched firearm aimer modules to use vectors instead of proxy transforms (can set from a transform)
  • Switched HUD elements to use new base classes and be more “multiplayer friendly”
  • Removed static onLocalPlayerInventoryChanged event from inventory base and used character change instead
  • Switched canvas HUD in demo scenes to use root prefab instead of individual element prefabs
  • Reorganised weapon drop heirarchies to be more intuitive
  • Replaced crosshair and switched default colour
  • New motion graph editor UI elements

Additions

  • Added new infinite ammo firearm module
  • Added particle system firearm ammo effect
  • Modular firearm behaviour inspector now has troubleshooting and “add modules” features
  • New ChamberedReloader firearm module that uses different reload (anim & duration) when empty
  • New integrations available (https://neofps.com/integrations)
    • Emerald AI
    • Inventory Pro (in progress)
  • New TransformMatcher additive transform for matching animated camera moves

Bug Fixes

  • Enabled inventory HUD in DemoFacility scene
  • Fixed missing explosion sound effects
  • Fixed shadow casting on first person weapons and arms
  • Set default values for all variables to prevent import warnings in 2018.3+
  • Fixed turret damage, sight checks and rate of fire
  • Fixed hard-coded root asset path for auto build settings and startup checks
  • Added bullet trail cleaner that resets trail renderer on pooled projectiles
  • Fixed key bindings index out of range when changing button count after saving settings
  • Fixed occasional start order blocking character input activation bug
  • Fixed hard coded animator key for burst trigger hold
  • Fixed automatic trigger getting stuck in fire mode on quick switch
  • Fixed enabling character object or weapon while menu up bypassing the menu input block

Changes

  • Major rework of motion graph editor to make more reactive and respond to undo/redo better
    • Graph elements are now edited through the standard Unity inspector
    • Added copy/paste to graph viewport
    • Added “Move to Sub-Graph” to graph viewport
  • Replaced MotionData asset with data entries on motion graph and new MotionGraphDataOverride asset
  • Simplified API for creating new graph elements (states, conditions and behaviours)
  • Lowered minimum supported version to 2017.4 (long term support)
  • Split health manager out from solo character to allow swapping (Inventory Pro integration)
  • Added support for multiple box colliders (eg door and handle) to interactive object corner highlights
  • Tweaked layer, tag, and physics settings for Emerald AI integration
  • Tweaked FpsInputButton generated constant for Inventory Pro integration and future work
  • Added inactive “security” layer to demo facility with turrets and cameras
  • Added animator key parameter drawer to check keys exist in animator while inspecting behaviours

Additions

  • Added PlatformDependentObject to allow disabling objects based on platform (used for WebGL and console menus)
  • Disabled exit and graphics options on WebGL
  • Disabled exit, graphics and key bindings for console

Bug Fixes

  • Fixed build errors due to OnValidate on ladder motion graph states
  • Fixed obsolete GetPrefabObject warning on 2018.3
  • Fixed wrong type of hand grenades in inventory demo ammo crates
  • Fixed dropping excess swappable grenades from crates on floor

Tweaks

  • Tweaked light settings for facility and rebuilt lightmaps
  • Switched menu and back key to Tab for WebGL since Escape is reserved

Additions

  • Added minimal character setup with only movement and aim features

Bug Fixes

  • Fixed script compile errors for non-standalone builds
  • Fixed shotgun reload interrupt blocking input
  • Prevented welcome popup appearing on run when “Show on start” set
  • Improved startup order on first import
  • Fixed console errors when deleting a graph connection while inspecting
  • Prevented clicking off “Add Entry” dropdown in MotionControllerData inspector causing an error
  • Temporarily removed copy/paste and move to subgraph features of motion graph editor pending re-engineering
  • Improved ladder aim handling and removed incorrect up-down movement for “AimerHeading” setting on contact ladders
  • Can now change interactive ladder aim constraints while in play mode
  • Motion graph editor now correctly handles exiting play mode while editing runtime graph instance

Tweaks

  • Tweaked timings and recoil on weapons
  • Fixed execution order issue with NeoCharacterController height

The initial release on NeoFPS on the asset store