Releases
Latest - v1.1.24 (27th February 2023)
HOT-FIX: A 1.1.24b hotfix was released on 6th March to fix an error with an editor script that wasn't correctly set up to be excluded from runtime compilation and was causing errors on build
Additions
- New instant use inventory item consumables such as heals (modular actions)
- Heal
- Recharge shields
- Play audio
- Unity event
- Consume inventory item
- Quick melee, throw, shoot and tool wieldables
- Switch from current weapon, perform action and then switch back
- Disable equipped weapon functionality and then perform action before re-enabling
- Quick-action wieldable can signal animator on equipped weapon (eg to lower left hand)
- New InputFirearmWithMelee (and InputSystemFirearmWithMelee) component allows adding a melee weapon behaviour to a firearm for melee attacks (eg pistol whip)
- New CriticalHitAudioPlayer to add some extra feedback (eg CoD)
Changes
- Disabled button filtering for gamepad profiles to allow things like reload and interact on one
- Added position marker option for virtual analog sticks
- New v7 input system extension package to match new input changes
- Added onCategoryFull event to swappable inventory
- Added item ID conditions to HUD ammo counters to allow unique counters per gun
- InputInventory (and InputSystemInventory) now allow you to specify quick slot inputs to allow better quick use items
- Eg Keys 1-4 for weapons, and “Quick Melee” button to select the quick-melee weapon slot
- HudInventoryStandardPC now lets you specify which quick slots are displayed
- Exposed onAimUp and onAimDown C# events on BaseAimerBehaviour
Bug Fixes
- Laser pointer flare now set to correct layer on creation
- Prevented dropping backup item if it has a drop item set
- Prevented instant weapon switch and deselect when swapping weapons
- Fixed incorrect clamp values for mouse sensitivity setting
- Changed demo hit FX particles transparency type to prevent visible box
- Unity settings page in hub now correctly refreshes notification state when manually applying settings
- Fixed teleporters breaking if stepping outside zone after triggering
- Fixed broken aim offset calculations in firearm wizard
- Fixed error when applying offsets to HeadMoveAimer in firearm wizard
- Prevented manual save still occuring on cancel
- Fixed error when rebinding keys at the end of the list when rebinding is disabled on multiple above
- Improved error handling during save (now correctly aborts instead of leaving save system waiting for write)
- Prevented CheckpointTrigger from triggering a save, etc immediately on loading
- Fixed incorrect Follow Curve behaviour for projectiles
Previous Releases
Additions
- Added new touch screen controls system
- Custom touch screen buttons, virtual analog (movement) and virtual track ball (aim)
- Replacement HUD and menu prefab with full demo setup
- Unity input manager and Unity input system versions
Changes
- Added virtual input systems to both input managers (emulates input buttons / actions)
- Renamed “Floating Origin” feature to “Origin Shift” due to trademark issue
- Added new on-consume options to inventory item pickups (“DisableOnPartial”, “RespawnOnPartial”, “Infinite”)
- Improved error log messages for NeoSceneManager and SurfaceManager
- Added new extended gizmo options for drawing 2D arrows
- FirstPersonCharacterArms now disables arms when selecting nothing or a weapon without kinematics if not part of a full body
- Added new “RespawnWithItems” option to FpsSoloGameMinimal which respawns you with your inventory when you died
- Added new “Custom” save path option to SaveGameManager, along with “Enable Save Games” toggle that can disable the whole system
- Can now specify a save name for autosaves in the CheckpointTrigger behaviour (uses scene display name if blank)
- Switched NeoFpsTimeScale from static class to Monobehaviour to allow saving value with save system
- Added impact clip playback to empty shotgun shells
- Added dynamic update system for motion graph behaviours and states (eg better smoothing for animator parameters)
- Modified inventories to check for items under item root on start
- Can now specify which object to disable in HudHider component
- Added new input toggles to character base class (allowMoveInput, allowLookInput, allowWeaponInput)
- Modified input handlers to check against this
Bug Fixes
- Modified input handlers to block input if context gains focus this frame (prevents shooting if context switch is due to mouse click for example)
- Prevented inventories from modifying prefab item quantity on appending to an existing inventory item using AddItemFromPrefab
- Fixed broked arm IK and position matching if spawning with no weapons and then picking one up
- Fixed real time between fixed updates increasing with NeoFpsTimeScale change
- Replaced broken ammo crate in quickswitch inventory demo
- Fixed load-on-demand and json bugs for FpsGamepadSettings when using input system
- Startup checks used wrong conditional compilation version for Unity API change causing error on 2021.1
Additions
- New demo scenes for camera shake and floating origin
- ContactDamageSend and InstantDamageZone components for damaging player via collider and trigger collisions
- Added CameraShakeOneShot behaviour for placing on scene objects and triggering via API or events
- New OverlaySceneCamera for rendering scene in an area over the first person view
- Used in floating origin, multi-scene save and first person body demos
Changes
- Added scene camera to multi-scene saves demo with text log for scene load events
- Renamed “Level Select” to “Feature Demos” in main menu and moved to top of single player list
- Can now set quickswitch max inventory size down to 1
- Can now set swappable inventory per-category sizes down to 0
- Added warning to floating origin particle systems when applied to local space particle systems
- Added error to inventories when trying to add wrong wieldable type (swappable vs non-swappable)
- New onSceneLoadRequested C# event added to NeoSceneManager
- Added OnEmptyChanged unity and C# event to incremental reloader
- Modified SurfaceManager to make key functions virtual and add a basic hit FX method
- Modified FirearmAnimEventsHandler to make functions virtual and expose firearm property
Bug Fixes
- Fixed error when dropping wieldable tool
- Various floating origin fixes
- Trail renderer glitches solved
- Fixed moving platform interpolation
- Removed floating origin from bullet hit particles systems when not needed
- Fixed broken projectiles
- Fixed crosshair pop on origin shift when physics auto-sync transforms disabled
- Fixed prototype player controller not attaching
- Fixed broken prefab override in moving platforms demo
- Added jump transition to first person body animators to prevent lag on raising feet
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 abstracct 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
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