Member since 24/11/17
Hey everyone !
Here we meet again for the 16th Devblog extremely rich in both content and information, covering many long-awaited topics like the synchronization and the beta !
1° DirectX injection
We have been reverse engineering RAGE for over a year now, a big part of our research has been on "How does the game display this ?" or "How is it rendered by the game ?", as testified by our wireframe video and our on-the-fly game texture replacement feature.
We are proud to present you the ultimate step of our journey : the injection and the utilization of DirectX render targets :
"What is it ?"
Those are 3D elements injected directly in the game's RAGE rendering process, 3D structures more or less complex that can be loaded / unloaded on-the-fly.
"What purpose does it serve ?"
As opposed to the render created by native functions, LS:MP's DirectX render injections are extremely fluid and are impact-less on the performances. With this technique, no lags or fps drops will be seen during its use. In addition, its uses are not limited to the game's resources, you can display whatever you want !
It is also possible to make them "3D", which means that you can display content with a depth dimension. A concrete example of this is how the nametag is displayed : the player is hidden behind a wall, its nametag will also be hidden behind the wall.
Here is a short video presenting that in the context of a race between two players :
This is obviously not limited to nametags, you can do whatever you want with it, here is for example, a use in GTA:Z :
For devs ( or the curious ones ! ), here is Transmet's technical explications on the realization of this functionality :
In order to succeed this customized render injection, I needed to modify RAGE's render process and take control of many elements permitting the game's render ( many depth buffers / z-buffer, render targets, objects of rasterization states, blending etc... ).
I also needed to deeply understand every RAGE rendering procedures : "How does the game work with dynamic vertex buffers ?" for example. This passed by the reverse engineering of the shaders, thus starting from the lowest of RAGE's rendering thread's call stack up to the highest ( DirectX calls ).
I needed to patch certain shaders of the game in GPU Assembly to add some instructions as well, the goal being to permit new highly sophisticated features for LS:MP.
With that in mind, I also needed to rewrite a part of RAGE's rendering engine so the injections work correctly.
This work allows us to push RAGE's limits as never done before, thus opening the door to many functionalities previously impossible.
This work was very delicate and complex while being a great challenge. It required days of reverse engineering, of graphical analyses as well as many cups of coffee.[/b]
Those injections can take any shape you want, and you can, of course, display anything you want on it : images ( PNG, JPG, GIF ), text ( UTF-8 compatible ), a CEF instance...
Here is concretely the type of functionalities possible, especially interesting for an RP server :
As you may have seen in the first part, we will start to show you our synchronization soon.
This [/i]"new sync" is completely different from the one we presented in 2016 : faster, more complete and global.
Still in its early stage, the sync will quickly evolve. Compared to the rest of our works, it is something relatively simple to realize.
We will, therefore, meet again in the next devblog to speak about it in more details
3° Collaborateurs LS:MP
We informed you in the last Devblog that we were recruiting, it is now done !
Many members of the community, Dragoon, Boost and Zerradar now assist us in some tasks of the development of LS:MP, like interfaces and scripts for gamemodes. Thanks to them !
If you feel in a generous mood, you can now use Patreon to make a donation and automatically receive your Discord rank !
If you prefer Paypal, the option is available on the site. However, the Tipeee is now obsolete.
For the older donators, we have updated your role according to your donation. If you suspect an error do not hesitate to contact Antasurris in PMs
Concerning the LS:MP beta : we still don't have any date to communicate
The beta will be used to test the performance of the mod with several dozen players, on the program will be : synchronization tests, in-runtime resources replacement tests, client-side bandwidth tests.
It will be open to each and every beta-tester and will be time-limited. Once the date passed, accessing LS:MP will no longer be possible.
Another time, we will propose a gamemode-oriented beta. Like GTA Battleship and possibly GTA Zombies. This beta will also be reserved for beta-tester.
That concludes this Devblog 16. We hope you enjoyed it !
We will meet again very soon for more exciting announcements
Posted on 25/03/2019 22:09
Member since 05/05/20
Hello LSMP devs,
I see a good job here, where the "Nametags" seem to be very well synchronized, not flickers. I'm really enjoying your progress! Keep it up, guys.
Posted on 05/05/2020 10:16
Member since 14/05/20
Posted on 14/05/2020 05:56
Member since 01/10/19
Posted on 07/09/2020 10:02