# Garry's Mod

Garry’s Mod (GMod en abrégé) est dans un premier temps un mod de construction Half-Life 2, créé par Garry Newman en décembre 2004. Il s'agit d'un jeu de type « sandbox » (« bac à sable » en français), sans but particulier, où le joueur est libre de créer et de manipuler n'importe quel objet, et de faire de nombreuses expériences, exploitant entièrement le moteur Source.

## Historique
### Garry’s Mod 9 et antérieur

Garry’s Mod a commencé comme un simple mod de test créé par Garry Newman en 2006, dont le but principal était de « lier les choses ensemble avec des cordes ». Les premières versions permettaient déjà de créer toutes sortes d'objets, et de manipuler des ragdolls afin de concevoir des mises en scène (« ragdoll posing »). Le Mod a peu à peu évolué, jusqu'à la version 9 (9.0.4b plus précisément), dernière version gratuite du jeu, permettant à la fois de créer des machines et des structures, et de faire des mises en scène à partir de corps inanimés. Il existe encore actuellement de nombreux serveurs actifs, où les joueurs ne souhaitant pas, ou n'ayant pas les moyens de se procurer la version payante peuvent tout de même apprécier le mode multijoueur. À noter que la version 9 et les versions antérieures nécessitent à la fois Half-Life 2, Half-Life 2: Deathmatch et Counter-Strike: Source pour fonctionner.

### Garry’s Mod 10

Garry finit par annoncer la version 9.1, qui était censée apporter beaucoup d'améliorations au niveau de la gestion des différents jeux, des entités scriptées. Cette version, plus ou moins expérimentale, ne fut mise à disposition que pour certaines personnes privilégiées, et était censée être la dernière version. Cependant, à la suite d'un contrat passé avec Valve, Garry Newman ne mit jamais Garry’s Mod 9.1 à disposition du public, et travailla sur une nouvelle version basée sur les améliorations apportées à 9.1 qui sera la version 10.
La version 10 (ou ultérieure) peut fonctionner avec seulement un jeu utilisant le moteur Source. Cependant, seul le contenu de ce jeu (modèles 3D, textures, maps, sons) sera disponible dans Garry’s Mod. Le contenu de Half-Life 2 (à l'exception des niveaux) étant contenu dans le moteur Source, il sera cependant toujours présent, même si le joueur ne possède pas ce jeu.
Cette version, payante cette fois, apporta de nombreux ajouts et améliorations, tels que de nouveaux outils aidant à la construction, et la possibilité de créer ses propres armes et outils. Elle fut d'abord appelée Garry’s Mod 10 durant la période de bêta-test, puis perdit son numéro, et sortit finalement sous le nom de Garry’s Mod (mais la notion de Garry’s Mod 10 persiste toujours parmi la plupart des joueurs).

### Garry’s Mod 11

Après la sortie de l'Orange Box, Garry Newman mit à disposition une mise à jour majeure, adaptant Garry's Mod à la nouvelle version du moteur Source, certains jeux comme des jeux de Valve, permettant ainsi d'utiliser le contenu des nouveaux jeux utilisant ce moteur, et d'exploiter toutes les nouvelles fonctions graphiques, telles que les ombres dynamiques qui permettent de projeter l'ombre portée d'un objet à l'aide d'une lampe mobile. Cette mise à jour, distribuée fin 2007, est par conséquent appelée « Garry’s Mod » 2007 ou « Garry’s Mod 11 » pour la distinguer de Garry’s Mod 10. Il ne s'agit bien sûr que d'une indication de version, Garry’s Mod 10 et Garry’s Mod 11 étant le même jeu, à une mise à jour près. Avec les récentes mises à jour, le jeu offre également la possibilité de jouer en multijoueur avec un maximum de 128 joueurs.

### Garry’s Mod 12

La mise à jour vers la version 12 a eu lieu en 2009. Elle comprend (entre autres) :
* ajout d'une Toybox (pour pouvoir télécharger du contenu « Ingame ») ;
* nouvel écran de chargement ;
* correction de bugs, support de certains paradoxes (liés à la physique et aux contraintes) ;
* chargements plus rapides ;
* nouveau support Lua ;
* support de Left 4 Dead 1 & 2 ainsi que des mods de Half Life 2 ;
* support de Portal ;
* support de certains jeux goldsources ;
* nouvelle version de gm_construct ;

## Garry’s Mod 13

Garry Newman avait annoncé le 10 janvier 2012 que la prochaine mise à jour serait Garry's Mod 13. Cette mise à jour majeure comprend l'amélioration de la qualité graphique, le support de quelques jeux supplémentaires, un meilleur support d'alt-tab qui autrefois faisait souvent planter le jeu, de nouveaux effets du « Physgun », un nouveau système de classement et une amélioration de la toybox. Garry Newman a distribué sur son site des codes de séries permettant de jouer à une version bêta de Garry's Mod 13. Il est toujours possible d'aller sur garrysmod.com (site de Garry Newman) pour plus d'informations. Cette mise à jour sortit le 24 octobre 2012 (repoussée d'un mois à la suite de nombreux problèmes). Cette mise à jour fut critiquée car elle amena avec elle de nombreux bugs et un changement radical des spawnlists (ce qui eut pour conséquence d'enlever des models).
Depuis mi-2013 le développement de Garry's Mod semble ralenti, en effet, Garry Newman et l'équipe de Facepunch Studios se consacre sur leur 2e jeu.
Néanmoins, le développement et les mises à jour seront assurés par certains membres de la communauté triés sur le volet.

## Sandbox

Le mode de jeu standard de Garry's Mod est le mode Sandbox (dû à la grande diversité de Garry's Mod).
Il est destiné à la construction principalement et peut être couplé à différents modes de jeu qui l'incluent (si elle est nécessaire).

### Outils

Le joueur a accès, en plus des armes standard de Half-Life 2, à trois outils supplémentaires :
* Le Physics Gun, un des outils les plus importants, émet un rayon permettant de déplacer n'importe quel objet à n'importe quelle distance, de le tourner dans n'importe quelle direction, ainsi que de le figer (« freeze ») lui interdisant tout mouvement. La couleur du rayon est personnalisable.
* Le Tool Gun, second outil majeur, est un pistolet à fonctions multiples permettant de créer des liaisons mécaniques entre deux objets (pivots, rotules, glissières, soudures…), copier/coller ou supprimer des objets, ou créer des objets spéciaux tels que des réacteurs pour pousser un objet, ou des explosifs permettant de créer une explosion à tout moment sur l'appui d'une touche. La version 10 de Garry’s Mod offre de nouvelles fonctions à ce pistolet, telles que la possibilité de créer des « hoverballs », petites balles pouvant être attachées à un objet pour le faire flotter en l'air à une certaine hauteur, ou des vérins hydrauliques, permettant notamment de faire des portes et des ascenseurs. La communauté de Garry’s Mod peut créer de nouveaux outils utilisables avec le Tool Gun codables en Lua. Le pistolet en lui-même bénéficie aussi d'un modèle 3D qui lui est propre, un Colt bourré d'électronique et muni d'un écran indiquant le nom de l'outil utilisé. Dans les versions antérieures, l'arbalète d'Half-Life 2 était utilisée comme Tool Gun.
* La Camera, un simple appareil photo, permet simplement de prendre des captures d'écran, tout en retirant l'interface et les indicateurs de l'écran. La possibilité de modifier l'inclinaison de l'écran et le champ de vision permet de prendre des angles de vue plus diversifiés.

### Interface

Le joueur a trois menus à sa disposition :
* L'un nommé Spawn Menu qui n'est autre qu'une interface pour faire apparaître des props, des créatures (PNJ), des véhicules, des sièges, ou encore des entités spéciales, ouvert avec la touche A.
* L'autre nommé Tool Menu permettant de sélectionner l'outil utilisé pour le Tool Gun, aussi avec A.
* Et le dernier, le Context Menu permet de régler les paramètres du Tool Gun, lui ouvert avec C.
Voici la liste complète des fonctionnalités incluses de base dans Garry's Mod pour le Tool Gun. Certaines entités créées par ces fonctionnalités peuvent se voir attribuer une ou plusieurs touches du pavé numérique permettant ainsi de les contrôler à l'aide du clavier.

### Constraints

Les outils de la catégorie Constraints permettent, comme leur nom l'indique, de contraindre un ou plusieurs objets ensemble en utilisant une liaison mécanique.
| Outil | Fonction |
| Axis | Crée un pivot entre deux objets, leur permettant de tourner librement l'un par rapport à l'autre suivant un axe. |
| Ball Socket | Crée une rotule entre deux objets, leur permettant de tourner librement l'un par rapport à l'autre dans n'importe quelle direction. |
| Advanced Ball Socket | Version avancée du Ball Socket, permettant de spécifier des limites d'angles pour la rotule. |
| Easy Ball Socket | Déplace le premier objet vers le second de telle sorte qu'ils se touchent, puis crée une rotule au point de contact. |
| Elastic | Permet de créer une liaison élastique pouvant s'étirer ou se comprimer, puis revenir à sa longueur initiale quand elle est au repos. |
| Hydraulic | Crée un vérin hydraulique qui peut s'étirer et se rétracter sur l'appui d'une touche du pavé numérique. |
| Keep Upright | Modifie l'objet visé de telle sorte qu'il tente de rester toujours parfaitement droit. |
| Motor | Une liaison pivot contrôlée avec le pavé numérique permettant de faire tourner un objet par rapport à l'autre à une vitesse donnée. |
| Muscle | Un vérin hydraulique qui se rétracte et s'étire périodiquement. |
| Nail | Une forme simple de soudure, qui ne peut se créer qu'entre deux objets proches l'un de l'autre. (voir « Weld ») |
| Pulley | Permet de créer un système simple à deux poulies. |
| Rope | Lie deux objets ensemble avec une corde. La corde peut aussi être configurée pour être rigide, et donc se comporter comme une tige. |
| Slider | Lie deux objets ensemble avec une glissière, permettant de déplacer un objet par rapport à l'autre seulement le long d'un axe. |
| Weld | Soude deux objets ensemble de telle sorte qu'ils ne puissent plus bouger l'un par rapport à l'autre. |
| Easy Weld (Inclus dans l'outil Weld depuis la version 13) | Déplace le premier objet vers le second de telle sorte qu'ils se touchent, puis crée une soudure entre les deux. |
| Winch | Crée une corde dont la longueur peut être modifiée en utilisant les touches du pavé numérique. |

### Construction

La catégorie Construction regroupe des objets spéciaux, ainsi que des outils simples et utiles pour la construction.
| Outil | Fonction |
| Balloon | Crée un ballon gonflé à l'hélium pouvant être relié ou non à une corde, permettant d'appliquer une force verticale à un objet. |
| Button | Crée un bouton pouvant émuler une touche du pavé numérique. Utile en multijoueur lorsque l'on veut permettre aux autres joueurs de tester ses créations. |
| Duplicator | Copie un objet ou un groupe d'objets. |
| Dynamite | Une dynamite permettant de créer une explosion sur l'appui d'une touche du pavé numérique. |
| Hoverball | Une balle qui flotte à une altitude donnée pouvant varier en utilisant le pavé numérique. Très pratique pour créer des véhicules aériens rapidement. |
| Ignite | Enflamme un objet pendant une durée définie. |
| Lamp | Une lampe pouvant éclairer une surface et projeter une image dessus. |
| Light | Une lampe qui projette de la lumière dans toutes les directions, avec une couleur et une puissance réglable. |
| Emitter | Un objet contrôlé au pavé numérique qui émet des effets spéciaux (étincelles, etc.). |
| Magnetize | Permet de transformer un objet en aimant. Il ne s'agit que d'un simple objet qui colle temporairement à lui-même tout objet qui rentre en contact avec lui, et non d'un véritable aimant qui applique une force d'attraction sur les objets qui l'entourent. Cet outil sert également à supprimer les contraintes s'appliquant à un objet (weld, rope…). |
| No Collide | Permet de retirer les collisions entre deux objets, et donc de permettre le chevauchement de ces deux objets sans aucun problème physique. |
| Physical Properties | Permet de modifier le matériau constituant un objet (plastique, métal, bois, etc.) et d'activer ou de désactiver sa gravité. |
| Remover | Supprime définitivement un objet ou un groupe d'objets. |
| Thruster | Un réacteur contrôlé au pavé numérique qui permet d'appliquer une poussée ou une traction sur un objet dans n'importe quelle direction. |
| Wheel | Une roue contrôlée avec une touche du clavier, dont la vitesse angulaire et la friction peuvent être définies. |

### Posing

La catégorie Posing est destinée au Ragdoll Posing, et contient des outils pratiques pour faire une mise en scène efficace.
| Outil | Fonction |
| Eye Poser | Permet de régler l'endroit vers lequel les yeux d'un ragdoll sont dirigés. |
| Face Poser | Permet de modifier l'expression faciale d'un ragdoll. |
| Finger Poser | Permet de modifier la position des doigts d'un ragdoll. |
| Statue | Permet de rendre un ragdoll complètement rigide, et donc de le déplacer librement sans détruire sa pose. |
| Inflator | Permet de gonfler ou de dégonfler les membres d'un ragdoll. |

### Render

La catégorie Render met à disposition des outils permettant de modifier l'apparence d'un objet, de créer des caméras, et d'ajouter des effets spéciaux.
| Outil | Fonction |
| Colour | Permet de changer la couleur d'un objet. |
| Material | Permet de changer la texture d'un objet. |
| Paint | Permet d'imprimer des images sur une surface. |
| Camera | Crée une caméra. Il est possible de passer à la vue d'une caméra simplement en appuyant sur la touche du pavé numérique qui lui est associée. |
| RT Camera (Absent depuis la version 13 du jeu) | Crée une caméra spéciale dont la vue peut être transférée vers un objet faisant office d'écran. Une texture spéciale doit être utilisée pour l'écran sur lequel la vue sera affichée. |
| Trails | Ajoute une traînée colorée à un objet qui est visible lorsque l'objet bouge, et qui disparaît lentement ou rapidement selon le choix. |

### Effets graphiques

Garry’s Mod dispose aussi d'une fonction Post Processing permettant d'appliquer des effets spéciaux à l'écran.
| Option | Effet |
| Bloom | Ajoute un flou lumineux, c'est-à-dire un effet d'éblouissement dû à la lumière qui se réfléchit sur les surfaces claires. |
| Depth of Field | Donne un effet de profondeur de champ. Cet effet est souvent utilisé dans les captures d'écran pour faire ressortir un élément central sur un arrière-plan flou. |
| Motion blur | Un effet de flou cinétique primitif qui permet de faire ressortir le mouvement des objets. |
| Material overlay | Superpose une texture transparente sur l'écran. |
| Color mod | Modifie le mélange des couleurs, la luminosité et le contraste de l'écran. |
| Morph | Permet de manipuler et de déformer l'écran. |
| Sharpen | Ajoute un effet qui accentue les arêtes des objets sur l'écran. |
| Sobel | Crée un effet d'ombrage de celluloïd (cel-shading). |
| Sun beams | Ajoute un effet de diffraction à la lumière du Soleil. |
| Super DoF | Permet d'effectuer un rendu de haute qualité avec un effet plus réaliste de profondeur de champ. Cette fonction ne peut être utilisée que pour prendre des captures d'écran. |