Skip to content

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.

Sight attachments mounted on a rifle rail in Unturned inventory view

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 .dat field set for ItemSightAsset, including fields inherited from CaliberAsset and ItemAsset.
  • The zoom system: Zoom magnification multiplier, ThirdPerson_Zoom third-person factor, and Zoom_Using_Eyes field-of-view-only mode.
  • The Vision enumeration and night-vision configuration: Vision Military, Nightvision_Color, Nightvision_Fog_Intensity.
  • The Holographic flag and its effect on the rendering path versus standard scope overlay rendering.
  • The DistanceMarkers dictionary: Distance, LineOffset, LineWidth, Side, HasLabel, and Color sub-fields.
  • The Offset_Scope_Overlay_By_One_Texel flag and its pixel-centering behavior on even-resolution scope textures.
  • The AimAlignment system: AimAlignment_LocalOffset, AimAlignment_Owner, and AimAlignment_Path.
  • The Spread field for ADS accuracy modification and how it stacks with gun-side spread fields.
  • Caliber compatibility: how the Caliber field controls which weapons accept each sight.
  • Worked .dat examples 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 picture

The 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.

SubtypeExamplesKey fieldsRendering path
Iron sightsEaglefire Iron Sights, Maplestrike Iron SightsZoom 1.5 or absent, no Holographic, no VisionStandard scope overlay (or no overlay at all)
Reflex and holographicRed Dot Sight, Red Kobra Sight, Red Halo SightHolographic flag, Zoom 1.75 or absentHolographic reticle
Magnified scope8x Scope, 16x Scope, 7x Scope, Augewehr Scope, Shadowstalker ScopeZoom 4+, DistanceMarkers configured, Offset_Scope_Overlay_By_One_Texel trueStandard scope overlay
Night-vision opticNightvision Military ScopeVision Military, Zoom 6, optional Nightvision_ColorStandard scope overlay with NV post-processing
Makeshift or improvisedMakeshift ScopeZoom 6, Offset_Scope_Overlay_By_One_Texel true, no RarityStandard 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.

FieldTypeExampleNotes
IDuint164001Unique item ID. Use 50000+ range for custom sights.
GUIDuint128 hexec62d401a5a94d87a04564cc5705c026128-bit globally unique identifier. Generate fresh for every sight.
TypeenumSightMust be Sight for this asset type.
NamestringMyCustomScopeInternal name; also the prefab lookup key in the master bundle.
RarityenumUncommonRarity tier. Vanilla sights range from unset (common-equivalent) through Rare, Epic, Legendary, and Mythical.
SlotenumNoneSights use None; they attach to the weapon's Sight slot, not to a player equipment slot.
Size_Xuint82Inventory grid width. Vanilla sights are typically 2 wide.
Size_Yuint81Inventory grid height. Vanilla sights are typically 1 tall.
Size_Zfloat0.2Depth in inventory grid. Typically 0.1 for iron sights and 0.2 for scopes.
Paintableflagpresent or absentWhen present, the sight supports color-customizable variants through the paintable item system.

Caliber field

FieldTypeRequiredDefaultExamplePurpose
Caliberuint16No00Caliber 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

FieldTypeRequiredDefaultExamplePurpose
ZoomfloatNo1.08Multiplicative 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_ZoomfloatNo1.251.75Zoom 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_EyesboolNofalsetrueWhen 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 classFirst-person ZoomRecommended ThirdPerson_Zoom
Iron sight (vanilla)not set (1.0)not set (1.25)
Red dot / reflex1.751.35
Holographic sight1.751.35
4x mid-range scope4.01.5
6x precision scope6.01.5
7x precision scope7.01.5
8x long-range scope8.01.75
16x extreme-range scope16.02.0
20x extreme-range scope20.02.0

Spread field

FieldTypeRequiredDefaultExamplePurpose
SpreadfloatNo1.00.7Multiplier 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

FieldTypeDefaultPurpose
HolographicflagabsentWhen 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

FieldTypeRequiredDefaultExamplePurpose
VisionenumNoNoneMilitarySets 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_ColorcolorNodepends on Vision00ff00Overrides 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_Intensityfloat32Nodepends on Vision0.5Configures 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.

FieldTypeDefaultExamplePurpose
Distancefloat320100The distance in meters between the player and the target for which this marker is calibrated.
LineOffsetfloat320-0.01The 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.
LineWidthfloat320.050.04The 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.
SideenumRightRightThe direction in which the horizontal line and text label extend from the center. Valid values: Left, Right.
HasLabelbooltruetrueWhen 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.
Colorcolorblackffff00Override 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):

DistanceLineOffsetLineWidthHasLabel
100-0.010.04true
150-0.0050.01false
200-0.010.0375true
250-0.0050.01false
300-0.010.035true
350-0.0050.01false

16x Scope (vanilla ID 296):

DistanceLineOffsetLineWidthHasLabel
50-0.0050.01false
100-0.010.04true
150-0.0050.01false
200-0.010.0375true
250-0.0050.01false
300-0.010.035true
350-0.0050.01false
400-0.010.0325true
450-0.0050.01false
500-0.010.03true

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

FieldTypeDefaultPurpose
Offset_Scope_Overlay_By_One_TexelboolfalseWhen 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.

FieldTypeDefaultExamplePurpose
AimAlignment_LocalOffsetVector3(0, 0, 0)(0, 0.02, 0)Position offset relative to the Aim transform or the transform specified by AimAlignment_Path.
AimAlignment_OwnerenumSightSightControls 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_PathstringModel_0/AimModel_0/AimWhile 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:

ValueDescription
SightLook for the aim alignment transform relative to the sight model. Defaults to Model_0/Aim.
GunLook 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

Paintable

The 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

Paintable

The 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

Paintable

The 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

Paintable

The 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

FieldTypeRequiredDefaultApplies to
IDuint16Yes--All sights
GUIDuint128Yes--All sights
TypeenumYes--Must be Sight
NamestringYes--All sights
RarityenumNounsetAll sights
SlotenumNoNoneAll sights
Size_Xuint8No2All sights
Size_Yuint8No1All sights
Size_ZfloatNo0.2All sights
Caliberuint16No0All sights
PaintableflagNoabsentAll sights
ZoomfloatNo1.0All sights
ThirdPerson_ZoomfloatNo1.25All sights
Zoom_Using_EyesboolNofalseAll sights
SpreadfloatNo1.0All sights
HolographicflagNoabsentReflex/holographic sights
VisionenumNoNoneNight-vision sights
Nightvision_ColorcolorNodepends on VisionNight-vision sights
Nightvision_Fog_Intensityfloat32Nodepends on VisionNight-vision sights
Offset_Scope_Overlay_By_One_TexelboolNofalseScope-overlay sights
DistanceMarkerslistNoemptyScope-overlay sights
AimAlignment_LocalOffsetVector3No(0, 0, 0)All sights
AimAlignment_OwnerenumNoSightAll sights
AimAlignment_PathstringNoModel_0/AimAll sights

DistanceMarker sub-field reference

FieldTypeDefaultPurpose
Distancefloat320Distance in meters for which this marker is calibrated.
LineOffsetfloat320Vertical offset from center line as a percentage (0.0-1.0). Negative values shift upward.
LineWidthfloat320.05Horizontal length of the marker line as a percentage (0.0-1.0).
SideenumRightDirection the line extends: Left or Right.
HasLabelbooltrueWhether a distance text label appears next to the marker.
ColorcolorblackOverride color for the marker line and label text.

Diagnostic table

SymptomMost likely causeResolution
Scope overlay appears off-centerOffset_Scope_Overlay_By_One_Texel not set on even-resolution scope textureAdd Offset_Scope_Overlay_By_One_Texel true
No zoom when aimingZoom field absent or set to 1.0Set Zoom to desired magnification (e.g., 8)
Third-person shows no zoomThirdPerson_Zoom absent or set to default 1.25Add ThirdPerson_Zoom with appropriate value
Distance markers not visibleDistanceMarkers empty or markers have no Distance valuesAdd DistanceMarkers with at least one entry
Night vision not activatingVision field absent or set to NoneSet Vision Military
Night vision color wrongNightvision_Color set when Vision is not MilitaryConfirm Vision Military is present
Holographic sight shows scope overlayHolographic flag missing from .datAdd Holographic flag
Sight not equippable on weaponCaliber mismatch or weapon lacks Sight slotSet Caliber 0 or confirm weapon has Sight slot
Sight equips but camera position is wrongAimAlignment transform missing from prefab or path incorrectConfirm Model_0/Aim exists in prefab hierarchy
Sight cannot be paintedPaintable flag missingAdd Paintable flag
Scope texture looks pixelatedTexture resolution too low for zoom levelUse 512x512 or higher scope overlay texture
Distance marker labels overlapToo many markers or LineOffset values too close togetherReduce marker count or spread LineOffset values
Sight appears in wrong inventory slotSlot field not set to NoneSet Slot None
Sight model invisible when equippedPrefab name mismatch in master bundleConfirm 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 Holographic flag 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 true on all scope-overlay sights to avoid the off-center pixel issue on even-resolution textures.
  • Author ThirdPerson_Zoom approximately one-quarter of the first-person Zoom value, clamped to a minimum of 1.25.
  • Use Zoom_Using_Eyes true only 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 Spread with higher Rarity values 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 -->

Paintable

Appendix 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

MistakeConsequenceCorrection
Forgetting Holographic flag on a reflex sightShows scope overlay instead of holographic reticleAdd Holographic flag
Forgetting ThirdPerson_ZoomThird-person camera shows no zoomAdd ThirdPerson_Zoom
Setting Zoom below 1.0Value clamped to 1.0 (no zoom)Set Zoom to desired value >= 1.0
Forgetting Offset_Scope_Overlay_By_One_TexelScope overlay appears slightly off-centerAdd Offset_Scope_Overlay_By_One_Texel true
Configuring distance markers without testing against weapon ballisticsMarkers do not match actual bullet dropTest fire at each marker distance and adjust LineOffset
Setting Nightvision_Color without Vision MilitaryColor has no effectSet Vision Military
Using Headlamp as Vision valueField not supportedUse None or Military
Not generating a unique GUIDAsset conflicts with other mods at load timeGenerate fresh GUID for every sight
Using a vanilla sight IDID collision prevents mod from loadingUse IDs in the 50000+ range
Not matching sight caliber to weapon caliberSight cannot be equippedSet Caliber 0 for universal compatibility

Appendix D: External references

Cross-references

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial 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.