2025-08-10
-
Welcome to another development update.
As we mentioned before, we only post updates if we have something to show and today we do.Changelog:
Scripting:
Today we're showing off the first aspects of our unified (read: consistent environment between server and client code) scripting system.
It is powered by WebAssembly, providing a fast and very secure environment for executing untrusted code.Our current "user side implementation", referenced as guest from here on, is written in C#, which was chosen due to its simplistic syntax and language features that map nicely upon the games existing scripting layer.
Other guest languages will be supported and will benefit from an already fleshed out ABI developed for this current C# guest.
Guest WASM modules are downloaded and executed upon connecting to a game server or hot (re)loaded whilst in a server session.
They are isolated from each other and can only interact outside of their context through strictly defined interfaces.
They can interface with existing game code and control flow through multiple means.A few examples of what is possible (Watch the attached video for a visual demonstration):
Please be aware that hooking syntax is WIP
Hooking scripted or native game function, no matter if global, static or class members:
Calling arbitrary functions:
Implementing a fully networked chat, using a JS/HTML/CSS UI in CEF as frontend with client and server guest code for activation and transport:
PSM (PlayerStateMachine) Control:
With the addition of guest scripting and more specifically hooking, we paved the way for manipulating state machine control flow into whatever way you desire for your game modes.
A demonstration of this can be seen in the hooking screenshot or the attached video.
Instead of fading to black and transitioning into a "Death" state, the psm is kept in a "probing for transition" state until user input (Think a "Press E to get up" or a "Press E to revive your friend") is received.DLC Management:
Whilst we would personally recommend everyone to purchase the Phantom Liberty DLC (its really good!), some people might not be able to afford the purchase and may desire to run their server without DLC content.
We managed to implement hot-loading of DLC replacement content into an already running engine state (This is where we display ourPreGame
menu) based on a specific server ConVarThis means no restarting of the client depending on server configuration when joining a specific type of server
Media: