Releases
Latest - v1.1.18 (11th May 2022)
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 inf
- 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
Previous Releases
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