Jump to content

Recommended Posts

Posted

Hello everyone,

 

We've recently shared some exciting news in our Discord community, and now we’d like to provide more details and ensure it aligns with our forum announcements. Let's dive in!

 

RAGE Multiplayer 1.2 Early Tease

 

 

Earlier this week, we teased the upcoming RAGE Multiplayer 1.2 update in our Discord community. This very early sneak peek featured a short clip highlighting the new GTA Experience Mode, which introduces synchronized city pedestrians, car traffic, and other dynamic features of the live GTA V world that you’ve previously missed.

 

But that's just the beginning. The update also brings object synchronization, including parachutes, scripted objects, and more. We’ve also enhanced the base player, vehicle and pedestrian synchronization. And yes, even more features are on the way! The update is still under active development, so expect more teasers as we continue the polishing. No expected release date is currently available.

 

Retrospective: Performance Update Insights

This summer, we rolled out a major performance update, following a public test involving up to 20% of our player base, who voluntarily opted in. We’re continually optimizing performance across all fronts—whether it's client-side, server-side, or even the base game itself. One area of focus has been the performance of the game's scripting commands (commonly referred to as "natives") API, a crucial foundation for client-side API functionality.

 

We’ve reworked the JS-to-Native integration and applied various optimizations to V8, the JavaScript engine, ensuring the smoothest possible performance with minimal overhead. As a result of these improvements, we’ve observed up to a 2x performance boost in our benchmarks compared to our previous implementation.

 

Micro-Benchmark Results

Benchmark Notes:

  • RAGE Multiplayer API uses vanilla script commands in these tests. Hand-optimized APIs (e.g., player.handle for PLAYER_PED_ID, player.vehicle for GET_VEHICLE_PED_IS_IN, or batch HUD/control management APIs) are not used.
  • Only deterministic natives were included (e.g., excluding raycast natives which depend on several variables like location or loaded map parts).
  • Other JS implementations, not listed in the results but tested by community members, generally perform similarly to the R* Creator Services Platform, likely due to their codebase similarities.
  • Script Command APIs not listed in the results follow the same implementation pattern and must provide generally the same results.
  • These micro-benchmarks only involve game's script commands APIs. These micro-benchmarks are no way meant to represent broader performance, especially in the case of ScriptHookV comparison. Script command performance might vary depending on its return value and arguments types and it's actual game's implementation under the hood.
  • Results are provided in milliseconds: lower is better.

 

R* Creator Services Platform (JS/Lua)

System: Ryzen 7 3800X

 

Benchmark Lua Performance (ms) JS Performance (ms) RAGE Multiplayer JS Performance (ms) Relative Performance (Lua/JS (JS/JS))
IS_PED_SHOOTING: 10.000.000 Calls 3155 7202 250 12.6x (28.8x) faster
GET_ENTITY_COORDS: 10.000.000 Calls 6686 18145 1172 5.7x (15.4x) faster
IS_ENTITY_ATTACHED: 10.000.000 Calls N/A 8467 252 N/A (33.6x) faster
GET_ENTITY_HEALTH: 10.000.000 Calls 2954 7866 237 12.5x (33.1x) faster

Mixed: 1.000.000 Calls:

IS_PED_SHOOTING, IS_PED_AIMING_FROM_COVER, IS_PED_RELOADING, SET_PED_ARMOUR, GET_PED_ARMOUR

3349 5429 126 26.5x (43.1x) faster

 

System: Ryzen 7 7700X

 

Benchmark Lua Performance (ms) JS Performance (ms) RAGE Multiplayer JS Performance (ms) Relative Performance (Lua/JS (JS/JS))
IS_PED_SHOOTING: 10.000.000 Calls 1441 3577 168 8.5x (21.2x) faster
GET_ENTITY_COORDS: 10.000.000 Calls 3486 9287 617 5.6x (15.0x) faster
IS_ENTITY_ATTACHED: 10.000.000 Calls 1928 4273 163 11.8x (26.2x) faster
GET_ENTITY_HEALTH: 10.000.000 Calls 1477 3915 146 10.1x (26.8x) faster

Mixed: 1.000.000 Calls:

IS_PED_SHOOTING, IS_PED_AIMING_FROM_COVER, IS_PED_RELOADING, SET_PED_ARMOUR, GET_PED_ARMOUR

1553 2535 90 17.2x (28.1x) faster

 

ScriptHookV – C++

System: Ryzen 7 7700X

 

While comparing a C++ (low-level language) API with JavaScript (a higher-level scripting language) isn’t ideal due to their differing natures, we believe sharing these micro-benchmark results will still be of interest to many in our community, especially those curious about performance optimization and the technical intricacies behind game scripting. Despite the inherent differences in how these languages manage memory, execution, and performance, the comparison provides valuable insights into how our scripting JS integration holds up against native C++ implementations.

 

Benchmark C++ Performance (ms) RAGE Multiplayer JS Performance (ms) Relative Performance (C++/JS)

Mixed: 1.000.000 Calls:

PLAYER_PED_ID, GET_VEHICLE_PED_IS_IN, GET_ENTITY_COORDS

233 101 2.3x faster

 

Micro-benchmarks source code is available here. Micro-benchmarks results were taken 15 Sep 2024 by our community members using the latest available public builds. We welcome you re-execute these benchmarks and share your results in our Discord.

 

 

As always, thank you for your active support and feedback. We can't wait to share more announcements regarding the next major update with you later - stay tuned!

  • Like 15
  • Mask 1
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...