Compatible with EFT 0.16.9.40087
CoopGame
has been refactored into sub-components:ClientGameController
,HostGameController
andHeadlessGameController
for headless clients.- This has allowed us to abstract most of the logic, making it easier to separate host, client, and headless modes
- Mod authors should note the new structure if they relied on
LocalGame
-specific data. Adjusting should not be difficult - This also optimizes AI updates, which should now run more efficiently than in the base game (SPT and PvE)
- Debug commands can now be used when not hosting (these are still not available on public builds)
- The transit system for Fika has been refactored
- It should now allow transit without a headless server, though this is still an unsupported feature due to its unreliability.
- The
KeepAlive
pinging now runs on its own thread, reducing hitches when the backend is slow to respond - Added support for the new Rocket Launcher
- Fixed a base game bug where players in local games didn’t play idle breathing animations (this has been bugged for years on live and still is)
- The
VisualPass()
method — responsible for most of the lag apart from AI — has received a massive overhaul and now runs much faster for clients, more in line with live raids. Most players should see a noticeable performance gain from this change - Optimized many loops and coroutines throughout the code base
- Surface audio calculations have been overhauled and should no longer randomly play the wrong sound, especially for clients on a headless session
- The headless will now keep running for ~5 minutes if the last disconnect was not graceful (crash, disconnect, etc.)
- The method responsible for updating every player each frame has been slightly optimized compared to the base game version, resulting in a small performance boost
- The pedometer (the class that counts your steps in a raid) no longer runs for bots and other players
- Server FPS now updates more frequently in the debug menu
- Corpses are now culled when not visible in the camera, unlike in live local games
- Movement sync has received several major updates
- Removed redundant math in many movement states that ran every frame
SprintSpeed
is now synced over the network rather than calculated locally, resulting in more accurate sprinting- States are now only updated when a new one is available, instead of every frame, improving performance
- Jumping has been dramatically improved and should no longer play incorrect animations when jumping from a running stance
- Fixed an incorrect calculation of the time difference between the server and client
- The
IsMoving
checks have been overhauled and should now be 100% accurate, also fixing a bug where bots appeared to ice skate in place when opening doors - Overall, movement sync is now near perfect on a stable connection and looks better than live online games in every way
- Many
struct
s have been improved - Networking and data serialization/deserialization have received a major overhaul
- Many primitive types are now packed into smaller data; for example, a float is now either 2 or 1 bytes instead of 4 in many cases
- Structs such as
Vector3
andVector2
are now written and read up to 10× faster (in some cases, more than 100 of these were written every frame) - Certain primitives, e.g.,
int
andshort
, are now read ~3× faster - The packet header for every packet is now half the size
MongoID
s are now 12 bytes instead of 24byte[]
arrays are now packed usingLZ4
, resulting in a major decrease in size when sent- On average, Fika now uses ~60% less bandwidth (highly situational)
- Modders can use all these new methods in
FikaSerializationExtensions
- Most packets used in Fika have been updated to utilize these changes
- Packets are now sent with a
broadcast
parameter from clients, allowing the server to process and forward them to everyone much faster without first interpreting the entire message - Many Fika-specific packets are now pooled and reuse instances instead of creating new ones each time, reducing both memory and CPU usage — especially noticeable during heavy gunfights
- Restructured how armor damage is synced to be faster and use fewer allocations
- Updated
LiteNetLib
- Updated several methods to use
ReadOnlySpan<T>
instead ofbyte[]
, reducing allocations - Changed the default VOIP settings to a 20-second speaking limit
- Added missing logic for taking damage
- Fixed a bug where bots would not take damage from environmental or border hazards (snipers, mines)
- Updated the
FreeCam
overlay UI - Improved
IndexOf()
lookups when replicating shots - Added a new
AdminSettings
menu, allowing admins to change server settings from the main menu - Fixed a bug where aiming with the range finder would not replicate
- The BTR getting hit by bullets is no longer calculated by clients, as it had no effect
Fika Chat
has been remade from scratch- Pops up for 3 seconds when receiving a message (while still allowing movement)
- No longer uses
OnGUI()
- Easier to interact with
- Added a
RaidAdminUI
, accessible from the console- Allows raid hosts to see statistics from every client
- Allows raid hosts to kick players from the raid (intended to solve AFK problems)
- FreeCam now correctly returns behind your player, facing the original direction when toggled
- Fixed a bug where firing
OnlyReloadBarrel
weapons (e.g., the double-barrel shotgun) did not correctly remove fired ammo, causing desync - UPnP and NAT Punching are now marked as Advanced options
- Refactored how the server and client handle expected player counts
- Fixed a bug where bots that fail to load remained unspawned indefinitely — they now spawn after 30 seconds if a client fails to load them
- Reduced GC allocations in several places by replacing
LINQ
queries withfor
loops - Improved logic for dropping an equipped weapon (can still appear buggy for other players)
- Fixed a bug where having any Unicode characters in the computer name would prevent the server from starting
VOIP
has been slightly refactored for significantly improved stability and performance- SPT settings that were originally disabled by default are now enabled again (SPT chat bots, profile types, etc.)
- Fixed several (harmless) bugs with the interpolation system due to Unity docs straight out lying