LambdaMod 0.3.0 Release
20th June 2021
Version 0.3.0 of LambdaMod is now out, adding (rudimentary, we're going to talk about that) support for client-side prediction. This allows the client to react immediately to user inputs and provide a smooth experience even in the presence of significant latency (i.e. like on the Internet). Also in this update are a number of bug fixes and quality of life improvements. Here's what was worked on in the last 21 daily patches:
- Fixed some shaders not applying gamma adjustment.
- Fixed numerical inputs to transforms applying incorrectly. They were being multiplied by the distance from the camera to the entity (as non-numerical transforms are) with undesirable results.
- Added the ability to copy from line edits.
- Fixed excessive VRAM usage caused by the size and anti-aliasing of the UI panel textures. Overall VRAM usage has dropped about 2.2 GB.
- Fixed a bug where entity bodies would fail to reappear if all parts were removed and then a new one added.
- Fixed mass, restitution and friction changes not updating the physics engine.
- Unified all forms of hiding under the F10 key.
- Fixed the client not displaying usage information when incorrect command line arguments were supplied.
- Fixed non-numerical scaling displaying an incorrect value in the status line.
- Fixed non-square scaled planes appearing to be rotated.
- Fixed control points from being inverted when viewed in orthographic mode.
- Fixed windows opening too large on high resolution displays.
- Added a latency simulator for network testing.
- Added client-side prediction system.
- Fixed a bug where selecting and transforming on high latency connections could cause a crash.
- Fixed vector arithmetic functions not using the first argument passed to them.
- Added ping measurement to support client-side prediction.
- Fixed editing-focused UI elements (like the status line) displaying when in attached mode.
Now, this update has achieved less than I would like for one primary reason. This wasn't exactly unforeseen but seeing the problem up close has made me reconsider the roadmap slightly. The four usual things one wants to predict on the client are: velocities, collision, animations and sound. Velocities and collision are important for making the player feel like their character starts walking the second they press the button, while the other two are important for making them feel like their weapons, vehicles, etc. react immediately too. At current the client-side prediction system is equipped to handle none of these, because the client knows nothing about animation or physics and doesn't have the capacity to play user-created sounds without being explicitly instructed to by the server. All this brings us to...
Version 0.4.0 is going to be a bit different than I originally intended. The four big ticket issues standing between LambdaMod and a Minimum Viable Product state are: VR support, animation, sound and (as discussed above) client-side prediction. All of these features have one thing in common: they all require the client to know and do more than it currently does. Animations need to be manipulated with zero delay by both VR inputs and client-side prediction, and played back locally by the animation editor itself. Sounds need to be played by client-side prediction and played back locally by the sound editor. Client-side physics needs to provide immediate feedback on collisions to the VR and client-side prediction systems. Version 0.4.0 is now going to be the "Headset and Platform" update, which will involve a large platform restructuring to make the client more capable. Also it'll fix VR because I think VR recordings will do a much better job of capturing the idea of the game for promotional videos and screenshots than anything else.