Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Groups
Collapse
Brand Logo

replay

Private

Posts


  • 2025-08-10
    purpleP purple

    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:

    9a03e0f1-53ba-48fd-b971-bfe521fc6570-PSM_Hooking.JPG

    Calling arbitrary functions:

    aa0ad780-eb6a-4e1f-96ee-46fca36e8627-FunctionCalling.PNG

    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:

    4b89579f-c051-4476-9fe5-938e0989aba3-ChatExample.png

    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 our PreGame menu) based on a specific server ConVar

    This means no restarting of the client depending on server configuration when joining a specific type of server

    Media:

    Youtube Video

    Development Updates

  • 2025-06-01
    purpleP purple

    Welcome back to another development update. Its been quite some time since we published a proper post besides the occasional small update info in discord.

    Lets get right into it.

    Changelog:

    • UGC: Introducing support for user generated content bundles (called UGC bundle from here on) that are streamed to connecting clients on session join
      -- Bundles will be able to contain server and client code.
      -- Client code may contain "Web content" that will be overlaid on top of the game viewport (For UIs, dialogs or any other kind of user interaction)
      (Note: Client/Server code system is still under development. We have committed and merged multiple upstream PRs in preparation. We will have an extensive update log talking about that upcoming system soon)
      (Note2: Streaming of game mods is a roadmap feature, but no showcase of this is yet available)

    • CEF: A lot of work has gone into our CEF implementation. Making it fast, stable, secure and as optimized as you can get something involving chromium
      -- ClientUI frontend for PreGame(server list, LAN servers, joining) and PostGame(disconnect reason) phase.
      Still under development, but functional enough for the connection flow you can see in the video showcase
      -- UGC "UI" host that supports multiple UGC bundle provided "Web UIs" concurrently. Supports layering, hardware acceleration, etc.

    • Backend: Another big task has been the development of the required backend infrastructure to provide a server list and to authenticate users when connecting to a server
      -- Proof of identity: Provide an easy way for servers to uniquely identify connecting users to prevent the requirement of self-rolling player authentication for allowlisted communities

    Note: Due to the lack of DRM systems (Seriously, this is great. Never forget to thank CDPR for their stance regarding DRM and mods) there is no existing "identifier" for clients / users / players.
    Usage of this authentication system is completely optional, servers may opt to not validate joining account tokens against our backend and employ their own proof of identity.
    This is also means LAN servers (and clients) are fully supported, without requiring an internet connection.

    Media:
    Youtube Video

    Development Updates

  • 2025-04-13
    purpleP purple

    Its been two weeks since our last update. As we mentioned before, we will only post stuff if we have a reason to do so.
    That is the case today.

    For everyone not interested in technicalities, we once again have some footage linked below.

    • We implemented proper handling for time dilation events on both world and individual entity level
      Dilation is not processed unless it is applied by low level engine systems as a fix for world streaming.

    • We improved debug console UX and added support for optional parameters for natively registered commands
      Usually all parameters specified in the native callback are strictly checked for presence and type when a ConCmd invocation is executed from the command buffer.
      Commands can now wrap parameters in their callbacks in std::optional and check for their presence inside the callback at invocation time.
      Nested type compatiblity inside optionals is still enforced.

    • We implemented proper mounting synchronization with server validation.
      A demonstration of that can be seen in the attached video.

    • We did a lot of major and minor networking fixes
      -- Reducing network traffic
      -- Even more integrity checks
      -- Load testing
      -- Congestion testing
      -- Adjustments to "raw" networking layer settings like MTU size to reduce transmission errors in "weird" networks

    • We improved our netgraph visualization with more detailed metrics and some UX improvements for easier interpretation
      We added an extended netgraph mode that acts similar to a "message heatmap", to visualize which areas of networking produce the most traffic and need further improvements.

    • We added a "component filtering" stage to our entity creation logic to dynamically remove unecessary entity components from remotely simulated entities
      This is used both for bug fixes and a general performance increase due to the avoided unecessary computations.

    • We improved our third person perspective representation logic to deal with more edge cases

    Video:

    Youtube Video

    Screenshots:

    Netgraph
    netgraph.PNG

    ConCmd optional parameters (this is a screenshot of our test suite)
    con_commands2.PNG

    Development Updates

  • 2025-03-30
    redR red

    This weeks developer update is a bit thin in the visual department, but we've been working hard on our network layer, animations, static and dynamic object states and reversing several key components for upcoming tasks. Unfortunately it's hard to display in a video/picture, so we thought we'd just share some git statistics for the developer crowd in here.

    25bdd436-6e1a-4bae-8076-be56ae5ab7c0-image.png

    Development Updates

  • 2025-03-23
    purpleP purple

    As promised, today's update is a more visual one.

    • We implemented state synchronization for world entities.
      Currently only for entities inheriting from gameDeviceBase, which covers the majority of gameplay relevant entities.
      A demonstration of that sync can be seen in the attached video.

    • We made quite a lot of progress in our animation sync re-write effort. Still too early to showcase fully, but all of the door / window opening animations seen in the video (yes, those are animation driven) are created client local from shared state.
      While that state is currently sent from a client, we designed the system to support server enforced state in the future (This will be relevant for all servers choosing to limit the amount of state changes clients can author)

    • We made various improvements regarding data locality on server and client to support synchronization and processing of thousands of entities at any given time.

    Youtube Video

    That's it for today, we'll keep you updated.

    Development Updates

  • 2025-03-15
    purpleP purple

    This update is going to be rather technical, no good looking screenshots today.

    • We upgraded our toolchain to llvm 20, which took some time as we compile with maximum strictness against clang and msvc. We also run an aggressive clang-tidy config which always takes a bit of work after major toolchain upgrades.

    • We made some other miscellaneous upgrades to our build system. Some for speed, mostly to improve compatibility and stability for the future open source release.

    • We fixed a bug causing delayed crashes related to improper refcounting when dealing with game objects which plagued us for quite some time.

    • We successfully merged a PR upstream relating to our scripting system (more on that soon hopefully).

    Currently we are re-working large parts of our animation sync, as the current way is unsustainable when it comes to bandwidth usage.
    We are moving towards a more direct integration within the games AI and Workspot systems to synchronize more state and author animations locally from that shared state.

    We will keep you updated, but for now that's it.

    Development Updates

  • 2025-03-09
    purpleP purple

    Today's update is a little bit less flashy than the previous one.
    Its a short demonstration of some of the features in our console implementation.

    Specifically demonstrating config file execution, ConVar replication, quake like vstr groups and probably the most useful feature for most people: UI integrated and re-bindable ConCommands

    Youtube Video

    Development Updates

  • 2025-03-08
    purpleP purple

    Today's development preview showcases some more vehicle related sync.
    Vehicle appearance sync is disabled, interpolation was set at fixed 100ms and post sample extrapolation was disabled.

    Youtube Video

    Development Updates

  • 2025-03-07
    purpleP purple

    Today's first post is gonna be a screenshot and a small video clip of two players on the same server.
    Please excuse the slight stutter in the video, both clients are running on the same machine.

    Youtube Video

    2025-03-07_devpost1.PNG

    Development Updates

Member List

redR red
greenG green
blueB blue
purpleP purple
  • Login

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Groups