Modding custom crosshairs into Resurgence is a very simple and straightforward process. This template can be used for most crosshairs, however more advanced setups can also be configured using the settings outlined below. Start by creating a transparent .png that is either512x512, 1024x1024, or 2048x2048. The example settings use a 512x512 canvas with a center placed dot and offset the animated layers so they don't overlap with the center layer:
Every layer will be scaled proportionally across all platforms so that the center layer takes up exactly 1/4 the height of the game resolution. If the crosshair is designed for a 1920x1080resolution, then the center layer should ideally have a height of 270px (1080/4=270).
This example uses a single 270x270 center layer for all 4 crosshairs allowing the texture to fit within a 512x512 canvas. The top, bottom, left, and right layers are offset 195px along the x-axis and y-axis such that they don't overlap with the center layer. These layers are aligned and centered automatically in the game when animating so each transparent piece must therefore have its own reserved area.
To use this texture in the game, it must first be converted into a .vtf file using a program calledVTFEdit v1.2.5 (which is very old but still widely used). The transparent .png can be imported by going to File > Import and using the BGRA8888 alpha format:
Once imported save the texture as a .vtf by going to File > Save As... and temporarily saving it to the desktop. Now this texture can be brought into Insurgency by either locating or creating the/custom folder in your game directory. If you don't know where to find your game directory then check out the controller setup.
In this /custom directory create a new folder with the name of your custom crosshairs. This name should be all lowercase and may only contain letters, numbers, and underscores. For example, if this name is something then these crosshairs would be enabled in the developer console (~) using the cl_thirdperson_reticle "something" command. Then create a/materials folder in the directory of your custom crosshairs followed by a /crosshairs folder inside of that:
In the /crosshairs directory create 5 folders for each weapon group. The possible types areprimary, secondary, grenade, launcher, or shotgun. Move the .vtf file into the appropriate weapon folder and rename it to the name of your custom crosshairs.
A corresponding .vmt file must also be created in the same folder using the same name. These example settings should be used when conforming to the dimensions of the template but can be customized in more advanced configurations. The .vmt file should be of the typeUnlitGeneric and must include the $translucent flag:
Before providing .vtf dimensions there are three optional settings which can alter the reticle behavior. The $reticleScaleFrac is used to dynamically adjust the size of a crosshair while$reticleExpandFrac will increase or decrease the animation distance of the top, bottom, left, and right layers. The $reticleDiagonal flag can also be set so that a crosshair animates the top, bottom, left, and right layers diagonally using a 45 degree counter-clockwise rotation:
Each layer is defined by the x-coordinate and y-coordinate of the top-left corner followed by the width and height. The only required layer is $reticleCenter, if it's missing or invalid the crosshairs will not render. All other layers are optional are only require a valid width and height to render. The $reticleObstruct layer can also be used for an optional obstruction indicator:
Alternate crosshairs can be provided for when a weapon is empty using the $reticleEmptysetting or when targeting an enemy or teammate using the $reticleEnemy and$reticleTeammate settings:
Once these .vtf and .vmt files are created they can be copy/pasted to the other folders for the remaining weapon groups. Otherwise these steps can be repeated to create a collection of crosshairs for each type of weapon. Don't forget to setup crosshairs for every weapon group or they will fallback to the defaults. And that's it! You can now run your game and typecl_thirdperson_reticle "something" in the console to set your custom crosshairs.