Sight Asset Reference
The sight asset is the data definition for every optic and iron sight attachment in Unturned™ modding. Sights occupy the Sight attachment slot on a compatible weapon, replacing the weapon's default aim-down-sights alignment with the sight's own zoom level, reticle rendering path, optional distance markers calibrated to the weapon's ballistic trajectory, and optional night-vision post-processing. A well-authored sight attachment is the single most impactful quality-of-life mod for a custom gun -- it determines how the player experiences the weapon at range.
This article is the 57 Studios™ canonical field reference for the ItemSightAsset class. It covers every .dat field specific to sight attachments, the zoom and third-person zoom system, the holographic versus scope rendering path, the Vision enumeration and night-vision color override system, the distance marker dictionary that provides calibrated ranging marks on the scope overlay, the AimAlignment system that controls camera-to-sight positioning, the Offset_Scope_Overlay_By_One_Texel pixel-centering flag, the Zoom_Using_Eyes field-of-view-only mode, the Spread field for ADS accuracy bonuses, the shared identity and inventory fields that follow the ItemAsset convention, and the caliber compatibility system that restricts which weapons can mount each sight. A complete field reference table, worked .dat examples from shipped vanilla sight files, an FAQ section with more than ten entries, diagnostic and compatibility appendices, and a best-practices authoring checklist close the article.

Documentation source: This article references the official Smartly Dressed Games modding documentation for field definitions and the shipped vanilla sight files at
Bundles/Items/Sights/for validation of field usage patterns and default values.
Who this article is for
This article is written for Unturned™ mod authors who have already completed at least one gun mod or attachment mod of another type and who understand the master bundle pipeline, the Unity prefab workflow, and the shared item .dat conventions documented in Item Asset Anatomy. If you are new to Unturned™ modding, start with Project Folder Structure and GUIDs and Attachment Slots: Sight, Grip, Tactical, Barrel before returning here.
What you will learn
- The complete
.datfield set forItemSightAsset, including fields inherited fromCaliberAssetandItemAsset. - The zoom system:
Zoommagnification multiplier,ThirdPerson_Zoomthird-person factor, andZoom_Using_Eyesfield-of-view-only mode. - The
Visionenumeration and night-vision configuration:Vision Military,Nightvision_Color,Nightvision_Fog_Intensity. - The
Holographicflag and its effect on the rendering path versus standard scope overlay rendering. - The
DistanceMarkersdictionary:Distance,LineOffset,LineWidth,Side,HasLabel, andColorsub-fields. - The
Offset_Scope_Overlay_By_One_Texelflag and its pixel-centering behavior on even-resolution scope textures. - The
AimAlignmentsystem:AimAlignment_LocalOffset,AimAlignment_Owner, andAimAlignment_Path. - The
Spreadfield for ADS accuracy modification and how it stacks with gun-side spread fields. - Caliber compatibility: how the
Caliberfield controls which weapons accept each sight. - Worked
.datexamples from vanilla sight files covering every sight subtype (iron sights, red dot, holographic, 4x scope, 8x scope, 16x scope, night-vision scope). - A diagnostic table for the most common sight authoring errors.
How the sight system works
The sight system in Unturned™ operates as a camera-transformation pipeline layered on top of the weapon's aim-down-sights state. When a player equips a gun with a sight attachment and aims down sights, the game engine reads the sight's .dat configuration and applies it in the following sequence:
Player equips sight on weapon
|
▼
Game reads sight .dat at load time
|
▼
Camera position transforms to AimAlignment target
(Finds AimAlignment_Path relative to AimAlignment_Owner,
applies AimAlignment_LocalOffset)
|
▼
If Zoom_Using_Eyes is false:
Apply scope overlay texture (if scope rendering path)
Apply Zoom magnification multiplier
Apply ThirdPerson_Zoom for third-person camera
|
▼
If Zoom_Using_Eyes is true:
Zoom camera FoV without scope overlay
|
▼
If Vision is Military:
Apply night-vision post-processing
Override night-vision color if Nightvision_Color is set
Override night-vision fog intensity if Nightvision_Fog_Intensity is set
|
▼
If Holographic flag is present:
Use holographic reticle rendering instead of scope overlay
|
▼
If DistanceMarkers are configured:
Render calibrated distance marks on the scope overlay
Each marker positioned at the correct vertical offset for
the weapon's ballistic drop at that distance
|
▼
Player sees the configured sight pictureThe sequence makes clear that multiple sight systems stack: a single sight can have zoom magnification, a scope overlay with distance markers, night-vision post-processing, a custom aim alignment offset, and an accuracy bonus through the Spread field. The fields are independent and combinable in any configuration.
As shown in the flowchart, the sight pipeline applies the aim alignment first, then the rendering path selection, then zoom, then distance markers, then optional night-vision effects, then the spread modifier.
Sight subtypes
Before examining individual fields, it is useful to understand the three functional subtypes of sight attachment that the asset system supports. Each subtype uses the same .dat field set but with different fields enabled and different field values.
| Subtype | Examples | Key fields | Rendering path |
|---|---|---|---|
| Iron sights | Eaglefire Iron Sights, Maplestrike Iron Sights | Zoom 1.5 or absent, no Holographic, no Vision | Standard scope overlay (or no overlay at all) |
| Reflex and holographic | Red Dot Sight, Red Kobra Sight, Red Halo Sight | Holographic flag, Zoom 1.75 or absent | Holographic reticle |
| Magnified scope | 8x Scope, 16x Scope, 7x Scope, Augewehr Scope, Shadowstalker Scope | Zoom 4+, DistanceMarkers configured, Offset_Scope_Overlay_By_One_Texel true | Standard scope overlay |
| Night-vision optic | Nightvision Military Scope | Vision Military, Zoom 6, optional Nightvision_Color | Standard scope overlay with NV post-processing |
| Makeshift or improvised | Makeshift Scope | Zoom 6, Offset_Scope_Overlay_By_One_Texel true, no Rarity | Standard scope overlay |
All subtypes use the same core .dat field set. The difference is in which fields are present and what values they carry.
Complete .dat field reference
Identity and shared fields
The following shared fields are required on every item asset, including sight attachments. See Item Asset Anatomy for full documentation of these fields.
| Field | Type | Example | Notes |
|---|---|---|---|
ID | uint16 | 4001 | Unique item ID. Use 50000+ range for custom sights. |
GUID | uint128 hex | ec62d401a5a94d87a04564cc5705c026 | 128-bit globally unique identifier. Generate fresh for every sight. |
Type | enum | Sight | Must be Sight for this asset type. |
Name | string | MyCustomScope | Internal name; also the prefab lookup key in the master bundle. |
Rarity | enum | Uncommon | Rarity tier. Vanilla sights range from unset (common-equivalent) through Rare, Epic, Legendary, and Mythical. |
Slot | enum | None | Sights use None; they attach to the weapon's Sight slot, not to a player equipment slot. |
Size_X | uint8 | 2 | Inventory grid width. Vanilla sights are typically 2 wide. |
Size_Y | uint8 | 1 | Inventory grid height. Vanilla sights are typically 1 tall. |
Size_Z | float | 0.2 | Depth in inventory grid. Typically 0.1 for iron sights and 0.2 for scopes. |
Paintable | flag | present or absent | When present, the sight supports color-customizable variants through the paintable item system. |
Caliber field
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Caliber | uint16 | No | 0 | 0 | Caliber compatibility ID. 0 means universal. When set to a non-zero value, only weapons with a matching Caliber field can mount this sight. |
The caliber system for attachments is documented in full in Attachment Slots: Sight, Grip, Tactical, Barrel. The sight's Caliber field must match the weapon's Caliber field for the sight to be equippable, unless either value is 0 (universal).
Zoom fields
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Zoom | float | No | 1.0 | 8 | Multiplicative zoom factor applied when aiming down sights. Must be equal to or greater than 1.0. A value of 1.0 means no magnification. Values above 1.0 magnify the view by that factor, so Zoom 8 produces 8x magnification. Vanilla values range from 1.5 (iron sights, not typically set) to 20 (Shadowstalker Mk II scope). |
ThirdPerson_Zoom | float | No | 1.25 | 1.75 | Zoom factor while in the third-person perspective. Must be equal to or greater than 1.0. Controls how the third-person camera zooms in when the player aims. Vanilla values range from 1.5 to 2.0. When not configured, defaults to 1.25. |
Zoom_Using_Eyes | bool | No | false | true | When true, the main camera field of view zooms without displaying a scope overlay. The player sees a zoomed view, not a scope-ring overlay. When false (the default), the scope overlay texture is rendered, providing the visual ring-and-reticle scope picture. |
The Zoom field is the primary gameplay lever for sight attachments. A red dot sight with Zoom 1.75 provides a mild magnification advantage over iron sights. An 8x scope provides enough magnification for long-range engagement. A 16x or 20x scope is appropriate for extreme-range sniping.
The ThirdPerson_Zoom field is often forgotten by new sight authors. A sight with Zoom 8 but ThirdPerson_Zoom 1.0 (the default) will appear to have no zoom when another player observes the aiming player in third person. The cohort recommendation is to set ThirdPerson_Zoom to approximately one-quarter of the first-person Zoom value, clamped to a minimum of 1.25.
| Optic class | First-person Zoom | Recommended ThirdPerson_Zoom |
|---|---|---|
| Iron sight (vanilla) | not set (1.0) | not set (1.25) |
| Red dot / reflex | 1.75 | 1.35 |
| Holographic sight | 1.75 | 1.35 |
| 4x mid-range scope | 4.0 | 1.5 |
| 6x precision scope | 6.0 | 1.5 |
| 7x precision scope | 7.0 | 1.5 |
| 8x long-range scope | 8.0 | 1.75 |
| 16x extreme-range scope | 16.0 | 2.0 |
| 20x extreme-range scope | 20.0 | 2.0 |
Spread field
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Spread | float | No | 1.0 | 0.7 | Multiplier on the weapon's ADS spread (Spread_Aim) when this sight is equipped. Values below 1.0 tighten the bullet spread, increasing effective accuracy. Values above 1.0 widen the spread. Vanilla magnified scopes use 0.7 or 0.8. Holographic and red dot sights typically omit this field (no accuracy change). |
The Spread field is one of the few sight fields that directly affects weapon statistics rather than the visual experience. A scope with Spread 0.7 makes the weapon 30% more accurate when aiming. The cohort recommendation is to pair accuracy bonuses with higher rarity values so that gameplay-advantageous scopes are correspondingly harder to find in the loot economy.
Holographic flag
| Field | Type | Default | Purpose |
|---|---|---|---|
Holographic | flag | absent | When present (no value needed), the sight uses the holographic reticle rendering path instead of the standard scope overlay. The holographic path renders a transparent reticle in the center of the screen without the scope-ring overlay that magnified scopes use. This is the rendering path for red dot sights, reflex sights, and holographic weapon sights. |
The Holographic flag only changes the rendering path. It does not change the zoom behavior, the distance marker behavior, the accuracy behavior, or any other field. A sight with both Holographic and Zoom 8 is technically valid (an 8x holographic sight) but is visually unconventional -- the cohort recommendation is to use the standard scope overlay for magnified optics and the holographic path only for unmagnified or lightly magnified reflex-style optics.
Vision and night-vision system
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Vision | enum | No | None | Military | Sets a unique lighting vision effect for this sight. The Headlamp enumerator is not supported by this property. The two relevant values are None (no night-vision effect) and Military (green-tinted night-vision post-processing). When Vision is set to Military, the sight activates night-vision visual effects when the player aims down sights. |
Nightvision_Color | color | No | depends on Vision | 00ff00 | Overrides the default night-vision color. To configure this property, Vision must be set to Military. Supports legacy color parsing (hex RGB without leading #). When not overridden, the default night-vision color depends on the Vision value. |
Nightvision_Fog_Intensity | float32 | No | depends on Vision | 0.5 | Configures the intensity of fog while night-vision is active. When not configured, the default fog intensity depends on the Vision value. |
The night-vision system is one of the most visually impactful sight features but is rarely used in community sight mods. The vanilla Nightvision Military Scope uses Vision Military with default colors, producing the green-tinted night vision effect familiar from vanilla gameplay.
As shown in the flowchart, the night-vision system has two optional overrides on top of the base Vision Military activation. Using the defaults (omitting both Nightvision_Color and Nightvision_Fog_Intensity) produces the standard vanilla night-vision look. Overriding the color allows for custom night-vision aesthetics (red-tinted, blue-tinted, or any custom hex color).
DistanceMarkers dictionary
The DistanceMarkers property is a list of DistanceMarker dictionaries. Each dictionary defines one horizontal ranging mark on the scope overlay, positioned to account for the weapon's ballistic drop at that distance. Distance markers transform a generic scope into a calibrated ballistic scope tailored to the weapon's ammunition and barrel.
| Field | Type | Default | Example | Purpose |
|---|---|---|---|---|
Distance | float32 | 0 | 100 | The distance in meters between the player and the target for which this marker is calibrated. |
LineOffset | float32 | 0 | -0.01 | The distance between the center line and the start of the horizontal line marker. Display-related properties like LineOffset are a percentage (represented as a decimal value from 0 to 1). A value of 0.25 would be 25% of the scope viewport height. Negative values shift the marker upward from center. |
LineWidth | float32 | 0.05 | 0.04 | The length of the horizontal line marker. Display-related properties like LineWidth are a percentage (represented as a decimal value from 0 to 1). A value of 0.25 would be 25% of the scope viewport width. |
Side | enum | Right | Right | The direction in which the horizontal line and text label extend from the center. Valid values: Left, Right. |
HasLabel | bool | true | true | When true, a text label showing the distance value is rendered next to the horizontal line marker. When false, the marker line is present but no distance text is displayed. |
Color | color | black | ffff00 | Override color for the horizontal line marker and the distance label text. Supports legacy color parsing (hex RGB without leading #). Default is black. |
The DistanceMarkers array is what separates a generic scope from a purpose-built ballistic scope. Vanilla scopes use complex distance marker configurations with alternating labeled and unlabeled markers. The vanilla 8x scope, for example, uses markers at 100, 150, 200, 250, 300, and 350 meters, with labeled markers at even hundreds (100, 200, 300) and unlabeled intermediate markers at the half-hundreds (150, 250, 350).
Vanilla DistanceMarkers examples
8x Scope (vanilla ID 21):
| Distance | LineOffset | LineWidth | HasLabel |
|---|---|---|---|
| 100 | -0.01 | 0.04 | true |
| 150 | -0.005 | 0.01 | false |
| 200 | -0.01 | 0.0375 | true |
| 250 | -0.005 | 0.01 | false |
| 300 | -0.01 | 0.035 | true |
| 350 | -0.005 | 0.01 | false |
16x Scope (vanilla ID 296):
| Distance | LineOffset | LineWidth | HasLabel |
|---|---|---|---|
| 50 | -0.005 | 0.01 | false |
| 100 | -0.01 | 0.04 | true |
| 150 | -0.005 | 0.01 | false |
| 200 | -0.01 | 0.0375 | true |
| 250 | -0.005 | 0.01 | false |
| 300 | -0.01 | 0.035 | true |
| 350 | -0.005 | 0.01 | false |
| 400 | -0.01 | 0.0325 | true |
| 450 | -0.005 | 0.01 | false |
| 500 | -0.01 | 0.03 | true |
The pattern of alternating labeled and unlabeled markers is the vanilla convention. The labeled markers at round hundreds provide the primary ranging reference; the unlabeled intermediate markers provide finer-grained aiming points without cluttering the scope view.
Offset_Scope_Overlay_By_One_Texel
| Field | Type | Default | Purpose |
|---|---|---|---|
Offset_Scope_Overlay_By_One_Texel | bool | false | When true, the 2D scope texture is scaled up slightly to center the pixel that would otherwise be left of center. For example, when enabled with a 512x512 texture, the pixel at coordinates 255x255 is centered on the display. This flag fixes a visual alignment issue that occurs on even-resolution scope textures where the center of the texture falls between two pixels. |
This field is relevant only for the standard scope overlay rendering path (not for holographic sights). Vanilla magnified scopes that use distance markers typically set this to true. Holographic and reflex sights omit it.
AimAlignment system
The AimAlignment system controls the camera position when the player aims down sights. The camera aligns with a transform in the weapon prefab, allowing each sight to have a unique eye position relative to the sight model.
| Field | Type | Default | Example | Purpose |
|---|---|---|---|---|
AimAlignment_LocalOffset | Vector3 | (0, 0, 0) | (0, 0.02, 0) | Position offset relative to the Aim transform or the transform specified by AimAlignment_Path. |
AimAlignment_Owner | enum | Sight | Sight | Controls where to find AimAlignment_Path. Sight looks for the aim alignment transform relative to the sight model. Gun looks for the aim alignment transform relative to the equippable prefab and requires setting AimAlignment_Path. |
AimAlignment_Path | string | Model_0/Aim | Model_0/Aim | While aiming down sights, the camera's position is aligned with this transform. The path is relative to the AimAlignment_Owner. The default of Model_0/Aim assumes the sight model's hierarchy contains a child named Model_0 with a child named Aim. |
The AimAlignment_Owner enum has two values:
| Value | Description |
|---|---|
Sight | Look for the aim alignment transform relative to the sight model. Defaults to Model_0/Aim. |
Gun | Look for the aim alignment transform relative to the equippable prefab. Requires setting AimAlignment_Path. |
Most mod authors can leave the AimAlignment fields at their defaults. Customizing AimAlignment_LocalOffset is the most common adjustment: a small vertical offset (e.g., (0, 0.02, 0)) can fine-tune the camera position to match the physical sight model's eye relief. The AimAlignment_Owner Gun configuration is used for sights that are embedded in the weapon model itself (e.g., integrated scope mounts) rather than attached as a separate rail-mounted optic.
Additional inherited fields
Sight attachments inherit from the CaliberAsset class, which inherits from ItemAsset. Fields inherited from these parent classes that are not specific to sights but are required or commonly used include the standard item identity fields already documented above. The full ItemAsset field set is documented in Item Asset Anatomy.
Worked .dat examples
Vanilla iron sight: Eaglefire Iron Sights
GUID ec62d401a5a94d87a04564cc5705c026
Type Sight
ID 5
Size_X 1
Size_Y 1
Size_Z 0.1
PaintableThe Eaglefire Iron Sights .dat is minimal -- no Zoom, no Spread, no Holographic, no Vision. The absence of these fields means the sight uses defaults: zoom of 1.0 (no magnification), standard scope rendering path, no accuracy bonus. This is typical of vanilla iron sights, which exist primarily as a cosmetic attachment.
Vanilla red dot: Red Dot Sight
GUID 19c02b2e36c345a59b3875d82224ed8e
Type Sight
Rarity Uncommon
ID 146
Size_X 2
Size_Y 1
Size_Z 0.1
Holographic
PaintableThe Red Dot Sight adds the Holographic flag, switching to the holographic reticle rendering path. No Zoom field means no magnification (1.0). No Spread field means no accuracy bonus. This is the standard pattern for unmagnified reflex-style optics.
Vanilla holographic: Red Kobra Sight
GUID 4265422a6ec84667b3bee3e3ebdd2cb6
Type Sight
Rarity Uncommon
ID 1004
Size_X 2
Size_Y 1
Size_Z 0.1
Holographic
PaintableThe Red Kobra Sight uses the same field pattern as the Red Dot Sight. The only difference between these two sights is the in-game prefab model and the reticle visual (the Kobra-style reticle is a chevron rather than a dot).
Vanilla scope: 8x Scope
GUID 98f79d346731401ca9bb33746479d728
Type Sight
Rarity Rare
ID 21
Size_X 2
Size_Y 1
Size_Z 0.2
Spread 0.7
Zoom 8
ThirdPerson_Zoom 1.75
Paintable
Offset_Scope_Overlay_By_One_Texel true
DistanceMarkers
[
{
Distance 100
LineOffset -0.01
LineWidth 0.04
}
{
Distance 150
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 200
LineOffset -0.01
LineWidth 0.0375
}
{
Distance 250
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 300
LineOffset -0.01
LineWidth 0.035
}
{
Distance 350
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
]The 8x Scope demonstrates the full field set for a magnified optic: Zoom 8, ThirdPerson_Zoom 1.75, Spread 0.7 for an accuracy bonus, Offset_Scope_Overlay_By_One_Texel true, and a full set of distance markers calibrated in 50-meter increments from 100 to 350 meters.
Vanilla scope: 16x Scope
GUID bfd6aab8b55f4c17bf16aa3e78a99151
Type Sight
Rarity Epic
ID 296
Size_X 2
Size_Y 1
Size_Z 0.2
Spread 0.6
Zoom 16
ThirdPerson_Zoom 2
Paintable
Offset_Scope_Overlay_By_One_Texel true
DistanceMarkers
[
{
Distance 50
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 100
LineOffset -0.01
LineWidth 0.04
}
{
Distance 150
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 200
LineOffset -0.01
LineWidth 0.0375
}
{
Distance 250
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 300
LineOffset -0.01
LineWidth 0.035
}
{
Distance 350
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 400
LineOffset -0.01
LineWidth 0.0325
}
{
Distance 450
LineOffset -0.005
LineWidth 0.01
HasLabel false
}
{
Distance 500
LineOffset -0.01
LineWidth 0.03
}
]The 16x Scope extends the distance marker pattern out to 500 meters with Spread 0.6 (the tightest accuracy bonus in the vanilla sight set), Zoom 16, and ThirdPerson_Zoom 2.
Vanilla scope: 7x Scope with Side-Left markers
GUID f4ea0132ca2246f885d359579df0356e
Type Sight
Rarity Rare
ID 153
Size_X 2
Size_Y 1
Size_Z 0.2
Spread 0.7
Zoom 7
ThirdPerson_Zoom 1.5
Paintable
DistanceMarkers
[
{
Distance 100
LineOffset -0.005
LineWidth 0.04
Side Left
}
{
Distance 150
LineOffset -0.005
LineWidth 0.01
HasLabel false
Side Left
}
{
Distance 200
LineOffset -0.005
LineWidth 0.03
Side Left
}
{
Distance 250
LineOffset -0.005
LineWidth 0.01
HasLabel false
Side Left
}
{
Distance 300
LineOffset -0.005
LineWidth 0.02
Side Left
}
{
Distance 350
LineOffset -0.005
LineWidth 0.01
HasLabel false
Side Left
}
{
Distance 400
LineOffset -0.005
LineWidth 0.01
HasLabel false
Side Left
}
]The 7x Scope demonstrates the Side Left configuration, where distance markers extend to the left of center rather than the default right. Note that all markers share the same LineOffset of -0.005, producing a more vertically compact arrangement than the alternating offset pattern used by the 8x and 16x scopes.
Vanilla night-vision scope: Nightvision Military Scope
GUID b8abc7c292144e8eaaf744815c3108ae
Type Sight
Rarity Legendary
ID 1201
Size_X 2
Size_Y 1
Size_Z 0.2
Spread 0.8
Zoom 6
Vision Military
Paintable
Offset_Scope_Overlay_By_One_Texel true
DistanceMarkers
[
{
Distance 100
LineOffset -0.01
LineWidth 0.02
Color ffff00
}
{
Distance 150
LineOffset -0.005
LineWidth 0.01
Color ffff00
HasLabel false
}
{
Distance 200
LineOffset -0.01
LineWidth 0.02
Color ffff00
}
{
Distance 250
LineOffset -0.005
LineWidth 0.01
Color ffff00
HasLabel false
}
{
Distance 300
LineOffset -0.01
LineWidth 0.02
Color ffff00
}
]The Nightvision Military Scope demonstrates Vision Military with yellow Color ffff00 distance markers, Zoom 6, Spread 0.8, and Offset_Scope_Overlay_By_One_Texel true. The Color field on each distance marker overrides the default black marker color to yellow, ensuring visibility against the green-tinted night-vision background.
Vanilla makeshift scope: Makeshift Scope
GUID 806bc882292247b78bd730ba073eb45a
Type Sight
ID 476
Size_X 2
Size_Y 1
Size_Z 0.2
Spread 0.8
Zoom 6
Offset_Scope_Overlay_By_One_Texel true
DistanceMarkers
[
{
Distance 100
LineWidth 0.04
HasLabel false
}
{
Distance 200
LineWidth 0.03
HasLabel false
}
{
Distance 300
LineWidth 0.02
HasLabel false
}
{
Distance 400
LineWidth 0.01
HasLabel false
}
]The Makeshift Scope demonstrates a craftable sight with no Rarity field and all distance markers having HasLabel false (no text labels). The LineOffset field is omitted from all markers, defaulting to 0. This scope has a more primitive feel than the military-grade scopes, reflected in the sparser marker configuration.
Vanilla special: Shadowstalker Mk II Scope
GUID 5b2f26a78cee4a02a92261e37562d9e4
Type Sight
Rarity Mythical
ID 1442
Size_X 1
Size_Y 1
Size_Z 0.2
Spread 0.7
Zoom 20
ThirdPerson_Zoom 2
PaintableThe Shadowstalker Mk II Scope is the highest-magnification sight in the vanilla game at Zoom 20. It uses a compact Size_X 1 and Size_Y 1 inventory footprint despite its extreme magnification, and it has no distance markers (the scope overlay reticle handles ranging through its own design). The Rarity Mythical tier makes it the rarest sight class.
Sight authoring workflow
Field reference table
| Field | Type | Required | Default | Applies to |
|---|---|---|---|---|
ID | uint16 | Yes | -- | All sights |
GUID | uint128 | Yes | -- | All sights |
Type | enum | Yes | -- | Must be Sight |
Name | string | Yes | -- | All sights |
Rarity | enum | No | unset | All sights |
Slot | enum | No | None | All sights |
Size_X | uint8 | No | 2 | All sights |
Size_Y | uint8 | No | 1 | All sights |
Size_Z | float | No | 0.2 | All sights |
Caliber | uint16 | No | 0 | All sights |
Paintable | flag | No | absent | All sights |
Zoom | float | No | 1.0 | All sights |
ThirdPerson_Zoom | float | No | 1.25 | All sights |
Zoom_Using_Eyes | bool | No | false | All sights |
Spread | float | No | 1.0 | All sights |
Holographic | flag | No | absent | Reflex/holographic sights |
Vision | enum | No | None | Night-vision sights |
Nightvision_Color | color | No | depends on Vision | Night-vision sights |
Nightvision_Fog_Intensity | float32 | No | depends on Vision | Night-vision sights |
Offset_Scope_Overlay_By_One_Texel | bool | No | false | Scope-overlay sights |
DistanceMarkers | list | No | empty | Scope-overlay sights |
AimAlignment_LocalOffset | Vector3 | No | (0, 0, 0) | All sights |
AimAlignment_Owner | enum | No | Sight | All sights |
AimAlignment_Path | string | No | Model_0/Aim | All sights |
DistanceMarker sub-field reference
| Field | Type | Default | Purpose |
|---|---|---|---|
Distance | float32 | 0 | Distance in meters for which this marker is calibrated. |
LineOffset | float32 | 0 | Vertical offset from center line as a percentage (0.0-1.0). Negative values shift upward. |
LineWidth | float32 | 0.05 | Horizontal length of the marker line as a percentage (0.0-1.0). |
Side | enum | Right | Direction the line extends: Left or Right. |
HasLabel | bool | true | Whether a distance text label appears next to the marker. |
Color | color | black | Override color for the marker line and label text. |
Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Scope overlay appears off-center | Offset_Scope_Overlay_By_One_Texel not set on even-resolution scope texture | Add Offset_Scope_Overlay_By_One_Texel true |
| No zoom when aiming | Zoom field absent or set to 1.0 | Set Zoom to desired magnification (e.g., 8) |
| Third-person shows no zoom | ThirdPerson_Zoom absent or set to default 1.25 | Add ThirdPerson_Zoom with appropriate value |
| Distance markers not visible | DistanceMarkers empty or markers have no Distance values | Add DistanceMarkers with at least one entry |
| Night vision not activating | Vision field absent or set to None | Set Vision Military |
| Night vision color wrong | Nightvision_Color set when Vision is not Military | Confirm Vision Military is present |
| Holographic sight shows scope overlay | Holographic flag missing from .dat | Add Holographic flag |
| Sight not equippable on weapon | Caliber mismatch or weapon lacks Sight slot | Set Caliber 0 or confirm weapon has Sight slot |
| Sight equips but camera position is wrong | AimAlignment transform missing from prefab or path incorrect | Confirm Model_0/Aim exists in prefab hierarchy |
| Sight cannot be painted | Paintable flag missing | Add Paintable flag |
| Scope texture looks pixelated | Texture resolution too low for zoom level | Use 512x512 or higher scope overlay texture |
| Distance marker labels overlap | Too many markers or LineOffset values too close together | Reduce marker count or spread LineOffset values |
| Sight appears in wrong inventory slot | Slot field not set to None | Set Slot None |
| Sight model invisible when equipped | Prefab name mismatch in master bundle | Confirm prefab name matches Name or Item field |
Best practices
- Generate a fresh GUID for every sight asset. Never reuse GUIDs from other items.
- Choose IDs in the 50000+ range to avoid collision with vanilla and established community mods.
- Set
Caliber 0(universal) for sights that should work on any weapon. Use a custom caliber ID only when a sight is specifically designed for a particular weapon family. - Use the
Holographicflag for unmagnified or low-magnification reflex-style optics. Use the standard scope overlay path for magnified scopes. - Configure distance markers in a pattern that matches the weapon's ballistic trajectory. Distance markers that do not match the weapon's drop profile are misleading.
- Set
Offset_Scope_Overlay_By_One_Texel trueon all scope-overlay sights to avoid the off-center pixel issue on even-resolution textures. - Author
ThirdPerson_Zoomapproximately one-quarter of the first-personZoomvalue, clamped to a minimum of1.25. - Use
Zoom_Using_Eyes trueonly for special-purpose optics where the scope overlay is not desired (e.g., integrated scope-less zoom for roleplay or scenario items). - Pair accuracy bonuses from
Spreadwith higherRarityvalues to maintain loot economy balance. - Test the sight in single-player with both first-person and third-person views before publishing.
Frequently asked questions
What is the difference between the Holographic flag and the standard scope overlay?
The Holographic flag selects the holographic reticle rendering path, which renders a transparent reticle in the center of the screen without the scope-ring overlay that magnified scopes use. The standard scope overlay path renders the full scope texture including the ring, the reticle, and any distance markers. The Holographic path is appropriate for red dot sights, reflex sights, and holographic weapon sights. The standard path is appropriate for magnified scopes and any optic that benefits from a scope-ring visual frame.
Can a sight have both Holographic and distance markers?
Technically yes, but the DistanceMarkers dictionary only renders markers on the standard scope overlay path, not on the holographic path. Adding distance markers to a holographic sight is a no-op -- the markers are ignored. If distance markers are desired, use the standard scope overlay path and omit the Holographic flag.
What happens if Zoom is set to a value below 1.0?
The engine enforces a minimum of 1.0. Values below 1.0 are clamped to 1.0 at load time. Setting Zoom 0.5 does not produce a "zoom out" effect; it produces the same result as Zoom 1.0.
How do I configure distance markers for my weapon's specific ballistic drop?
Distance markers are calibrated to the weapon's Ballistic_Steps and Ballistic_Drop fields. To calculate the correct LineOffset for each distance, the cohort recommendation is to test-fire the weapon at known distances in-game, observe where the projectile lands relative to the crosshair, and adjust the marker positions iteratively. The vanilla marker positions in the 8x and 16x scope files provide useful starting reference points for a generic assault-rifle ballistic profile.
Can I make a sight with zoom but no scope overlay?
Yes. Set Zoom_Using_Eyes true on the sight. The first-person camera will zoom to the Zoom magnification level without displaying any scope overlay texture, reticle, or distance markers. This is the appropriate configuration for optics that should provide magnification without a scope-ring visual frame.
What is the maximum Zoom value?
There is no hard engine-enforced maximum. The vanilla game includes sights with Zoom 20 (Shadowstalker Mk II Scope). Practical values beyond 20 produce extreme magnification that may cause visual artifacts or disorienting camera behavior. The cohort recommendation is to cap custom sights at Zoom 20 unless a specific design requirement calls for higher values.
Why does my scope look like it has a slight offset when I ADS?
The Offset_Scope_Overlay_By_One_Texel field controls this behavior. If your scope overlay texture has even resolution (e.g., 512x512), the center pixel falls between two pixels, and the texture appears slightly misaligned. Set Offset_Scope_Overlay_By_One_Texel true to fix this.
Can I override the night-vision color without enabling night vision?
No. The Nightvision_Color field has no effect unless Vision is set to Military. The Nightvision_Color and Nightvision_Fog_Intensity fields are sub-parameters of the night-vision system and are gated by the Vision value.
How do I make a sight that provides accuracy bonus only when aiming?
Set the Spread field to a value below 1.0 (e.g., 0.8 for a 20% accuracy improvement). The Spread field on the sight multiplies the weapon's Spread_Aim value while this sight is equipped. The hip-fire spread (Spread_Hip) is unaffected by the sight's Spread field.
What inventory size should I use for a sight?
Vanilla sights use Size_X 2 and Size_Y 1 for all magnified scopes and most reflex sights. Iron sights use Size_X 1 and Size_Y 1. The Shadowstalker Mk II Scope uses Size_X 1 and Size_Y 1 despite being a high-magnification optic. The cohort recommendation is to use Size_X 2, Size_Y 1 for magnified scopes and Size_X 1, Size_Y 1 for iron sights.
Can a sight modify the weapon's recoil or spread?
The sight's Spread field modifies the weapon's ADS spread. The sight does not have any field that directly modifies recoil. Recoil modification is accomplished through grip and barrel attachments. If a sight that also reduces recoil is the design goal, the cohort recommendation is to author a custom attachment that occupies a different slot and achieve the recoil reduction through that slot.
What is the Scope_Overlay texture size recommendation?
The scope overlay texture is a 2D texture rendered on top of the zoomed view. The vanilla overlay textures are 512x512 pixels. The cohort recommendation is to use 512x512 for standard scopes and 1024x1024 for scopes with fine reticle detail. Textures larger than 1024x1024 increase bundle size without perceptible visual improvement because the overlay is rendered at screen resolution.
Can I make a sight that has NO zoom but still uses the scope rendering path?
Yes. If Zoom is omitted or set to 1.0, the scope overlay texture is rendered without magnification. This is an unusual configuration but technically valid. It produces a scope-ring visual frame with the reticle and any distance markers, but the view behind the scope overlay is at 1x magnification. This is sometimes used for unmagnified optics that use a scope-style reticle (e.g., some types of prismatic sight).
How does the Side field on distance markers affect the scope layout?
The Side field controls whether each distance marker line extends to the Left or Right of the vertical center line. The default is Right, meaning the marker line extends to the right side of the reticle. The vanilla 7x Scope uses Side Left for all its markers, producing a scope where the ranging marks are on the left side of the reticle. The choice between left and right is a visual design decision; there is no functional difference.
Can I set Nightvision_Color to a non-hex value?
The Nightvision_Color field supports legacy color parsing, which means it accepts named colors and hex values in the same format that Unity's Color class supports. The vanilla convention is hex RGB without a leading # (e.g., ffff00 for yellow). The cohort recommendation is to use hex RGB values for consistency with the vanilla convention.
Why is the Vision Nightvision_Color field bound to the Military value?
The Vision enum has values including None and Military, and the documentation specifies that Headlamp is not supported. The Military value activates the night-vision post-processing pipeline. The color and fog intensity overrides are only meaningful within the night-vision pipeline. If a future game update adds additional Vision enum values, those values may also support color overrides, but as of the current stable build, Military is the only relevant non-default value.
Appendix A: Sight .dat quick-reference template
Copy this template for a new sight asset. Delete fields that do not apply to the specific sight type.
ID <50000+>
GUID <generated-uuid-no-hyphens>
Type Sight
Name <InternalSightName>
Rarity <Common|Uncommon|Rare|Epic|Legendary|Mythical>
Slot None
Size_X <2>
Size_Y <1>
Size_Z <0.2>
Caliber 0
<!-- Zoom configuration -->
Zoom <1.0>
ThirdPerson_Zoom <1.25>
<!-- Zoom_Using_Eyes true -->
<!-- Holographic or scope overlay -->
<!-- Holographic -->
<!-- Accuracy -->
Spread <1.0>
<!-- Night vision -->
<!-- Vision Military -->
<!-- Nightvision_Color ffff00 -->
<!-- Nightvision_Fog_Intensity 0.5 -->
<!-- Scope overlay settings -->
<!-- Offset_Scope_Overlay_By_One_Texel true -->
<!-- Distance markers -->
<!-- DistanceMarkers
[
{
Distance 100
LineOffset -0.01
LineWidth 0.04
}
{
Distance 200
LineOffset -0.01
LineWidth 0.0375
HasLabel false
}
] -->
<!-- Aim alignment -->
<!-- AimAlignment_LocalOffset (0, 0, 0) -->
<!-- AimAlignment_Owner Sight -->
<!-- AimAlignment_Path Model_0/Aim -->
PaintableAppendix B: Sight classification by vanilla field profile
| Sight name | ID | Zoom | Spread | Holographic | Vision | DM distance range | Rarity | |---|---|---|---|---|---|---| | 8x Scope | 21 | 8 | 0.7 | No | None | 100-350 | Rare | | 7x Scope | 153 | 7 | 0.7 | No | None | 100-400 (Left) | Rare | | 16x Scope | 296 | 16 | 0.6 | No | None | 50-500 | Epic | | Augewehr Scope | 1363 | 4 | 0.8 | No | None | 100-400 | Epic | | Shadowstalker Scope | 302 | 6 | 0.7 | No | None | none | Legendary | | Nightvision Military Scope | 1201 | 6 | 0.8 | No | Military | 100-300 (yellow) | Legendary | | Shadowstalker Mk II Scope | 1442 | 20 | 0.7 | No | None | none | Mythical | | Makeshift Scope | 476 | 6 | 0.8 | No | None | 100-400 (no labels) | unset | | Red Dot Sight | 146 | unset | unset | Yes | None | none | Uncommon | | Red Kobra Sight | 1004 | unset | unset | Yes | None | none | Uncommon | | Red Halo Sight | 147 | unset | unset | Yes | None | none | Uncommon | | Red Chevron Scope | 148 | unset | unset | Yes | None | none | Uncommon | | Red Cross Scope | 149 | unset | unset | Yes | None | none | Uncommon | | Tank Scope | 1301 | 2 | unset | No | None | none | unset |
Appendix C: Common sight authoring mistakes
| Mistake | Consequence | Correction |
|---|---|---|
Forgetting Holographic flag on a reflex sight | Shows scope overlay instead of holographic reticle | Add Holographic flag |
Forgetting ThirdPerson_Zoom | Third-person camera shows no zoom | Add ThirdPerson_Zoom |
Setting Zoom below 1.0 | Value clamped to 1.0 (no zoom) | Set Zoom to desired value >= 1.0 |
Forgetting Offset_Scope_Overlay_By_One_Texel | Scope overlay appears slightly off-center | Add Offset_Scope_Overlay_By_One_Texel true |
| Configuring distance markers without testing against weapon ballistics | Markers do not match actual bullet drop | Test fire at each marker distance and adjust LineOffset |
Setting Nightvision_Color without Vision Military | Color has no effect | Set Vision Military |
Using Headlamp as Vision value | Field not supported | Use None or Military |
| Not generating a unique GUID | Asset conflicts with other mods at load time | Generate fresh GUID for every sight |
| Using a vanilla sight ID | ID collision prevents mod from loading | Use IDs in the 50000+ range |
| Not matching sight caliber to weapon caliber | Sight cannot be equipped | Set Caliber 0 for universal compatibility |
Appendix D: External references
- Smartly Dressed Games modding documentation -- Item assets -- the authoritative field reference for all item types including sights.
- Unturned on Steam -- the official game page and community hub.
- Attachment Slots: Sight, Grip, Tactical, Barrel -- the prerequisite article covering the attachment slot system and caliber compatibility.
- Optic Asset Reference -- the previous article in this series; covers the optic-specific fields that complement the sight attachment system.
- Item Asset Anatomy -- the shared field reference for all item types.
- Master Bundle Export -- the Unity bundling workflow used to package sight prefabs.
- Project Folder Structure and GUIDs -- folder layout and GUID generation for all item mods.
Cross-references
- Tactical Asset Reference -- the next article; covers the
ItemTacticalAssetclass and its laser, light, rangefinder, and melee fields. - Gun Asset Reference -- the gun-side reference that documents how
Caliberlinkage works for attachment compatibility. - Attachment Slots: Sight, Grip, Tactical, Barrel -- the four-slot attachment system that sight assets plug into.
- Gun Mod Tutorial -- the end-to-end gun mod authoring pipeline; covers prefab hook placement and animation.
- Magazine Asset Reference -- the caliber linkage companion article for the magazine side.
- Smartly Dessed Games modding documentation -- official field reference for all sight-specific properties.
- Unturned on Steam -- game store page and changelog.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete sight asset .dat field reference, DistanceMarkers dictionary, Vision system, AimAlignment system, worked vanilla examples, FAQ, appendices. |
Advanced considerations
Sight prefab geometry requirements
The sight prefab in Unity must contain a child GameObject at the eye-position reference point for the AimAlignment system. The default path is Model_0/Aim. If the prefab hierarchy differs from this default, set AimAlignment_Path to the correct path. The AimAlignment_LocalOffset can be used to fine-tune the camera position without restructuring the prefab hierarchy.
Custom scope overlay textures
Scope overlay textures are PNG images rendered in front of the zoomed camera view. The overlay texture must include the scope-ring border, the reticle markings, and any distance marker lines that are part of the static texture (distance markers configured in .dat are rendered dynamically on top of the overlay). The overlay texture is imported into Unity as a Sprite (2D and UI) texture type and assigned to the sight prefab's scope overlay material slot.
The cohort recommendation for overlay texture dimensions is 512x512 pixels for standard scopes and 1024x1024 for scopes with fine reticle detail. The overlay texture should use a transparent background outside the scope ring so the zoomed game view is visible through the scope. The scope ring should be opaque or semi-opaque, and the reticle markings should be fully opaque.
Sight-and-suppressor interaction
The sight attachment does not interact with barrel attachments at the .dat level. A scope and a suppressor on the same weapon function independently. However, the physical model of a long scope mounted on a short barrel can produce visual clipping where the scope's rear objective extends beyond the weapon's receiver. The cohort recommendation is to position Hook_Sight on the weapon prefab at a location that accommodates the largest scope the weapon is designed to accept.
Per-weapon sight zeroing
Unturned does not support a per-weapon zeroing system at the .dat level. The AimAlignment_LocalOffset field provides a per-sight zeroing mechanism by adjusting the camera position relative to the sight model. A sight that is designed for a specific weapon should have its AimAlignment_LocalOffset tuned for that weapon's iron sight alignment. A sight that is intended for universal use should leave AimAlignment_LocalOffset at the default (0, 0, 0).
Sight authoring for RP servers
On roleplay (RP) servers, sight attachments often represent faction-specific equipment or skill-gated items. The RP server's plugin layer handles access restrictions; the .dat file should be authored with standard values reflecting the sight's in-universe specifications. The Rarity field can be used to signal the sight's relative value but does not directly control spawn weight -- that is configured through the map's spawn tables.
