- Official Post
Introduction
It has been a significant while since our last official announcement, and we want to provide a transparent overview of recent developments and, critically, what comes next for YAMP.
As some of you may have noticed, we have been very busy lately with an important restructuring of our codebase and netcode, which had been severely limiting the platform due to poor design choices.
However, before we get to the Christmas Update 2025, we would like to announce that the team has also received an upgrade:
Effective immediately, Lucas and ByAlexius are officially part of the Core Dev Team.
> The term “alternative multiplayers” refer as unofficial multiplayer modifications.
What went wrong, why is it taking so long?
Perfectionism. In the past, we tried too hard to make everything perfect instead of just releasing something first.
From now on, we will take a more pragmatic approach so that we can offer you a platform that we can then continuously improve!
But hey, at least we worked out some really cool unnecessary features during the wasted time.
Movement Synchronization
Movement synchronization has been completely reworked to fix the familiar “slippery” movement feel and teleportation.
It is also much more accurate than in other alternative multiplayers.
Weapon Damage Synchronization
What sets us apart is that real PvP players work on weapon synchronization and enjoy the competitive aspect of the game.
We really know what the competitive scene wants and what's wrong with the usual sync characteristics.
For now, we're just introducing you to weapon damage synchronization (although there's still a lot more to show), as we've planned a whole separate post for the entire PvP system: stay tuned!
Projectiles, Explosions & Fire synchronization
It has always worked well in alternative multiplayers, so it works for us too:
Aiming & Shooting Synchronization
In other alternative multiplayers, this is inaccurate. The shots land completely elsewhere, and the position of the aim is completely different. We managed to make it 1:1 accurate.
Swimming & Diving Synchronization
We found why previously our swimming synchronization was... unique in its own way, despite it being fun we had to fix it, here are the results.
Ladder Synchronization
Here, too, we discovered some flaws in other platforms that should not normally be there.
Normally, climbing a ladder is very delayed and inaccurate, but we have also addressed this problem.
Fist Fighting / Melee Synchronization
Since the Christmas update, fist fighting and the use of melee weapons are now also synchronized. Compared to other platforms, relatively little has changed here, as we believe that this has worked well so far.
Advanced Asset Streaming
You can easily add and/or replace any vanilla gta stuff you want, with ease of just adding the stuff to the resource.toml.
e.g.:
type = "dlc"
[data_files]
'VEHICLE_VARIATION_FILE' = 'data/carvariations.meta'
[replacements]
'platform:/data/cdimages/scaleform_platform_pc.rpf' = 'data/scaleform_platform_pc.rpf'
'x64/audio/sfx/WEAPONS_PLAYER.rpf' = 'data/weapons_player.rpf'
'x64/audio/sfx/RESIDENT.rpf' = 'data/resident.rpf'
Globbing also works:
[data_files]
'HANDLING_FILE' = 'data/handling/**/*.meta'
'AUDIO_WAVEPACK' = 'audio/sfx/*/dlc_*'
You can see some stuff to test we added/replaced:
- Added a christmas legion square
- Added VisualV
- Replaced minimap
- Added Addon Ped (Santa Claus)
- Replaced the hydra model with the sled
Because you can replace any file, you can also replace shaders etc. making it possible to add server side graphics mods!
(not recommended, your users will hate you, just used to showcase file replacements)
Nothing showcased, was a clientside mod, everything is streamable uppon joining a server
Weather customization
With our weather system you can easily add, replace and remove any weather you want and have it seamlessly synchronised to all your players.
All of this is possible via a simple but powerful API service, that is the same in all official runtimes.
-- ! Consider this a pseudocode and subject to change !
local customWeather = CWeatherDataBase:new("A_VERY_COOL_WEATHER")
customWeather.m_Sun = 0.3
customWeather.m_Cloud = 0.7
customWeather.m_Fog = 0.9
customWeather.m_Wind(0.1, 0.4)
customWeather:SetOcean(1.0, 0.3, 0.6, 0.4)
customWeather:SetShore(0.4, 0.5, 0.6 )
customWeather.m_Clouds = "fog_clouds"
customWeather.m_Droplets = "VFX_SNOW"
-- play in next cycle
yamp.weather.next(customWeather)
-- play instantly
yamp.weather.force(customWeather)
-- freeze weather cycle
yamp.weather.frozen = true
Display More
Just to name a few possible options
- Lightning
- Sandstorm
- Snow
- 19 Options regarding water
The system follows the approach of "do what ever you want".
Want to have snow droplets and mist, but also rain, go for it.
Or just snow play the snow effect with generic weather?
Death System Overhaul
We have revised the game's death system: normally, after dying, you are in an irrevocable state where you have to cancel all your tasks, and various hacks are applied internally.
From now on, death animations and respawns are no longer necessary; instead, players can simply be revived via API, where they then naturally get up from the death state.
Performance improvements
We profiled the game’s per-frame execution and identified several high-cost calls eating into the frame budget. By blocking unnecessary calls and rewriting the critical ones to be more lightweight, we significantly reduced overhead.
On a mid-range system rendering 255 peds, this resulted in performance gains ranging from +40 FPS to over +100 FPS.
Entity Streaming
The Entity Streamer is the system that decides who sees what in the game world, and when. Instead of sending everything to everyone, it constantly evaluates what’s actually relevant to each player and only streams what matters. It’s built to scale, having been benchmarked with around 500,000 entities and 5,000 players while updating 60 times per second.
As you move through the world, entities are streamed in when you get close and streamed out when you leave, keeping the game world feeling alive without overwhelming your system. The streamer also decides who owns an entity, for example, when you drive a car, you become its network owner so controls feel immediate and responsive. At the same time, it prevents players and entities from interacting with things they shouldn’t, ensuring consistency and fairness across the world.
To keep performance high, the world is split into zones, allowing the server to quickly find and manage nearby entities. Each player has an “interest bubble” that follows them, and only entities inside that bubble are considered for updates. Entities farther away still exist, but they receive fewer and lighter updates, while nearby or important entities update more frequently. The server also applies distance-based sync LOD, meaning you’ll get less detailed data for things you can barely see and full detail only where it actually matters.
The result is a system that never sends useless data. If an entity is far away but still visible, you’ll receive minimal updates. If another player is on the other side of the map, you’ll never receive their data at all. Everything is designed to make the world feel seamless and responsive.
Because of this, the server can handle more players without network congestion and players experience fewer lag spikes. These optimizations aren’t just about performance, they’re what make massive, living multiplayer worlds possible in the first place.
That's it for now.
This is the biggest update we’ve released so far, and we couldn’t have done it without the support of the community. Thank you for sticking with us, following the project, and believing in what we’re building. More is coming very soon, stay tuned!