NOUS SUIVRE

DONATIONS

Jnounito

Jnounito

Bon courage, l'équipe gamestreet vous soutiens !

Commandant

Commandant

Bonjour j'espère que vous allez bie... Ha pardon nan, rien à foutre !
ALLERRRR ! SORTEZ CE LS:MP !!!! MARRE DE GTANETWORK !
Cdlt
Commandant / Claude Cordias / Quentin.T

GiZz

GiZz

Une autre petite contribution, bon courage pour le dev :) GiZz

speedy

speedy

super projet

FRDevblog #16 : Injections DirectX

Antasurris
Antasurris
Équipe LS:MPModérateurCommunity Manager

Membre depuis le 21/11/17

2 posts

19 topics

Salut tout le monde !

On se retrouve aujourd'hui pour un Devblog 16 extrêmement riche en contenus et en informations, portant sur plusieurs sujets très attendu comme la synchronisation et la bêta !

 
1° Injection DirectX

Cela fait maintenant plus d'un an que nous travaillons sur la rétro-ingénierie de RAGE, une grande partie de ces recherches a porté sur "Comment le jeu affiche cela ?" ou "Comment cela est il rendu par jeu ?", en témoignent nos vidéos wireframe et notre fonctionnalité de remplacement à la volée des textures du jeu.

Nous sommes fiers de vous présenter l'ultime étape de notre cheminement : l'injection et l'utilisation de cibles de rendu DirectX :

"Qu'est-ce que c'est ?"
Il s'agit d'éléments 3D injectés directement dans le processus de rendu RAGE du jeu, des structures 3D plus ou moins complexes qu'il est possible de charger / décharger à la volée.

"À quoi ça sert ?"
Contrairement aux rendus créer à l'aide des fonctions natives, les injections de rendu DirectX d'LS:MP sont extrêmement fluides et sans impact sur les performances. De cette manière, il n'y a aucun décalage de frame ni perte de fps lors de leurs utilisations. De plus, elles ne sont pas limitées aux ressources proposées par le jeu, vous pouvez y afficher ce que vous souhaitez !

Il est également possible de les rendre "3D", c'est-à-dire avec une dimension de profondeur. L'exemple concret de cette utilisation est celle du nametag : le joueur est caché derrière un mur, son nametag sera également caché derrière le mur.

Voici une courte vidéo présentant cela dans le cadre d'une course entre deux joueurs :

Ce n'est évidemment pas limité aux nametags, vous pouvez faire ce que vous voulez avec, voici par exemple une utilisation dans GTA:Z :

Pour les dev' ( ou les curieux ! ), voici les explications techniques de Transmet sur la réalisation de cette fonctionnalité :

Afin de réussir cette injection de rendu personnalisé, il m'a fallu modifier les procédés de rendu RAGE et prendre le contrôle de beaucoup d'éléments permettant le rendu du jeu ( plusieurs tampons de profondeur / z-buffer, cibles de rendu, objets d'états de rastérisation, blending etc... ).

Il m'a également fallu comprendre tous les procédés de rendu RAGE en profondeur : "Comment le jeu travaille avec des tampons de sommets dynamiques ?" par exemple. Cela passe par la rétro-ingénierie des shaders, partant ainsi du plus bas de la pile d'appel du thread de rendu RAGE jusqu'au plus haut ( appel DirectX ).

J'ai également dû patcher certains des shaders du jeu en GPU Assembly pour y ajouter quelques instructions, l'objectif étant de permettre de nouvelles fonctionnalités très sophistiqué pour LS:MP.
Dans cet esprit j'ai également dû réécrire une partie du moteur de rendu RAGE pour que les injections fonctionnent correctement.

Ces travaux permettent à LS:MP de repousser comme jamais les limites de RAGE, ouvrant ainsi la porte à de nombreuses fonctionnalités jusqu'alors impossible.

Ce travail fut très délicat et complexe en plus d'être un très grand défi. Il a nécessité des journées de rétro-ingénierie, d'analyses graphiques ainsi que beaucoup de tasses de café.

Ces injections peuvent prendre la forme que vous souhaitez, et vous pouvez bien évidemment afficher ce que vous souhaitez dessus : images ( *PNG, JPG, GIF* ), texte ( *compatible UTF-8* ), une instance CEF...

Voilà concrètement le genre de fonctionnalité possible, particulièrement intéressante pour un serveur RP :

 
2° Synchronisation

Comme vous avez pu le voir dans la première partie, nous allons commencer à vous présenter notre synchronisation sous peu.
Cette "nouvelle sync" est complètement différente de celle que nous présentions en 2016 : plus performante, plus complète, globale.

Encore au stade primaire, elle va vite évoluer. Comparer au reste de nos travaux, il s'agit d'une chose relativement simple à réaliser.
On se retrouve donc dans le prochain devblog pour en parler plus en détai

 
3° Collaborateurs LS:MP

Nous vous informions dans le Devblog 15 que nous recrutions, c'est chose faite !
Plusieurs membres de la communauté, à savoir Dragoon, Boost et Zerradar nous assistent désormais dans certaines tâches du développement d'LS:MP, à savoir des interfaces et des scripts pour les gamemodes. Merci à eux !

 
4° Patreon

Si vous vous sentez d'humeur généreuse, vous pouvez désormais utiliser Patreon pour nous faire un don et recevoir automatiquement votre statut Discord !
https://www.patreon.com/lossantosmultiplayer

Si vous préférez utiliser Paypal, l'option est disponible sur le site. Cependant le Tipeee est désormais obsolète.

Pour les anciens donateurs, nous avons mis à jour votre rôle en fonction de votre don. Si vous suspectez une erreur n'hésitez pas à contacter Antasurris en MP

 
5° Bêta

Concernant la bêta d'LS:MP nous n'avons toujours pas de date à vous communiquer

Elle visera d'abord à tester les performances du mod avec plusieurs dizaines de joueurs, au programme : test sur la synchronisation, test sur le remplacement de ressources in-runtime, test sur la consommation de bande-bassante côté client.
Elle sera ouverte à tous les bêta-testeurs et sera limitée dans le temps. Une fois la date passé, il ne sera plus possible d'accéder à LS:MP.

Dans un second temps, nous proposerons une bêta plus centrée sur les gamemodes d'LS:MP. Notamment GTA Battleship et possiblement GTA Zombies. Elle sera également réservée aux bêta-testeurs.

 
Voilà qui conclut ce Devblog 16. Nous espérons que celui-ci vous a plu !
On se retrouve vraiment bientôt pour d'autres annonces tout aussi excitantes

Publié le 03/03/2019 22:12