Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/15/24 in all areas

  1. table { width: 100%; border-collapse: collapse; margin-bottom: 20px; } table, th, td { border: 1px solid #ddd; } th, td { padding: 8px; text-align: left; } th { background-color: #f4f4f4; } 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 GTA5.mp4 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!
    14 points
  2. 1 point
  3. Hello everyone, As we’re implementing more of the most anticipated platform feature requests on our list, we’re excited to share our last development progress here with our entire community to keep you updated. Let's dive into the latest improvements! Voice Chat We understand the essential role voice chat plays in your daily gameplay in RAGE Multiplayer. Whether you're role-playing as a cop, a criminal, or engaging in PvP with friends, clear and reliable communication is crucial. Since introducing built-in voice chat with the 0.3.6 release years ago, we have continuously enhanced its performance. Today, we are excited to announce another iteration of voice chat improvements: New, advanced noise suppression mode was introduced: please set mp.voiceChat.advancedNoiseSuppression to true to enable it. Otherwise, the previous noise suppressor is used. We've implemented new measures to optimize voice chat against different network conditions. Please set the new mp.voiceChat.networkOptimisations to true to enable it. All clients must have the same value. Voice chat bitrate is now customizable through the new client-side property mp.voiceChat.bitrate. Various optimizations have been made to reduce CPU usage and improve the overall quality of voice chat. These new features, including advanced noise suppression and voice chat network optimizations, are disabled by default. Server developers need to activate them through their scripts. Game Audio Output In addition to the general voice chat improvements mentioned above, we have also introduced an alternative voice chat audio output interface that seamlessly integrates with the game’s audio engine. This feature enhances the auditory experience by allowing voice chat audio to be processed through the game’s own audio environment, providing a more immersive and realistic experience, especially in indoor settings and various outdoor scenarios like tunnels. API Integration: Added client-side mp.voiceChat.gameOutputEnabled (get/set) (false by default) Added client-side mp.voiceChat.gameOutputCategory (get/set) (defaults to mp.game.joaat("SPEECH_SCRIPTED")) Added client-side player.voiceGameOutputEnabled (get/set) (true by default, only works with mp.voiceChat.gameOutputEnabled set on) Added client-side player.voiceGameOutputCategory (get/set) Added client-side player.closeVoiceStream() Added client-side mp.game.audio.getCategoryVariable(categoryHash, fieldNameHash) Added client-side mp.game.audio.setCategoryVariable(categoryHash, fieldNameHash, value) Added client-side mp.game.audio.copyCategoryVariables(categoryTo, categoryFrom) Added client-side mp.game.audio.restoreCategoryVariables(categoryHash) Game audio categories are a base game feature to customize different sounds per playback category with various parameters. Please check the /platform/audio/config/categories.dat22.rel game file for more information. Voice chat audio FX API, such as player.setVoiceFxBQF` and more, are supported by the new voice chat game output. Note: The Game Audio Output feature is currently experimental. GTA5_htilvS8wf7.mp4 Entity Overlay API We're introducing a new entity overlay API set featuring the ability to draw overlays on game entities: outline, fill, noise, and wireframe. It works in batches so that you can draw entities either in a single batch or individually. You can draw overlays with depth test enabled or not. Added client-side mp.game.graphics.createEntityOverlayBatch(overlayParams) Added client-side entityOverlayBatch.update(overlayParams) Added client-side entityOverlayBatch.destroy() Added client-side entityOverlayBatch.valid (get) Added client-side entityOverlayBatch.add(entity) Added client-side entityOverlayBatch.remove(entity) Added client-side entityOverlayBatch.addThisFrame(entity) Added client-side entityOverlayBatch.removeThisFrame(entity) Added client-side mp.game.graphics.setEntityOverlayPassEnabled(enable) (off by default) let overlayParams = { enableDepth: true, deleteWhenUnused: false, keepNonBlurred: true, processAttachments: true, fill: { enable: false, color: 0xFFFFFFFF }, noise: { enable: false, size: 0.0, speed: 0.0, intensity: 0.0 }, outline: { enable: true, color: 0xFF9000FF, width: 5.0, blurRadius: 1.0, blurIntensity: 1.0 }, wireframe: { enable: false } }; mp.game.graphics.setEntityOverlayPassEnabled(true); let batch = mp.game.graphics.createEntityOverlayBatch(overlayParams); mp.events.add('render', () => { batch.addThisFrame(mp.players.local); }); Blip API Updates We have implemented a new blip API to streamline your map navigation in the pause menu, with the ability to group blips and sort them by priority of your choice: Added: clients-side mp.game.ui.setBlipCategoryGrouped(category, doGroup) Added: clients-side mp.game.ui.setBlipCategoryPriority(category, priority) Removed game's map legend limit We hope you enjoy these updates. Your feedback is crucial to our progress, and we can’t wait to share insights on the next major platform iteration we’ve been designing, architecting, and prototyping since 2023. While it's still a way off, we are committed to making it worth the wait. Stay tuned!
    1 point
  4. 1 point
×
×
  • Create New...