ID Conflict Resolution
ID conflicts occur when two or more items in a modded Unturned™ installation share the same numeric ID value. The engine uses the ID field (a uint16 value from 0 to 65535) as a category-specific identifier for items, vehicles, animals, and other asset types. Unlike GUIDs, which are designed to be globally unique, IDs are a limited resource that must be managed carefully to avoid conflicts. When two items share the same ID within the same category, the engine silently overwrites one item with the other, leading to items that are invisible, have incorrect behavior, or fail to appear in spawn tables entirely.
57 Studios™ has documented and validated the complete ID conflict resolution surface. This reference covers the silent overwrite behavior that occurs during ID conflicts, the relationship between IDs and GUIDs as separate identifier systems, the protective namespacing conventions that the modding community uses to avoid conflicts, detection methods for finding ID conflicts in a modded installation, and resolution strategies for fixing conflicts when they are discovered.

Documentation source: This article references the official Smartly Dressed Games modding documentation for the Asset Definitions chapter (ID field documentation), combined with empirical analysis of item ID usage across official and modded content. Community-validated conflict resolution patterns from the 57 Studios cohort are marked where the official documentation is silent on a detail.
Who this article is for
This reference is written for Unturned™ mod authors and server operators who are troubleshooting items that do not appear correctly in-game, particularly when multiple mods are installed on the same server.
What you will learn
- How ID conflicts cause silent overwrite behavior
- The difference between ID conflicts and GUID conflicts
- How the engine handles conflicting IDs within each asset category
- How to detect ID conflicts in a modded installation
- How to resolve ID conflicts by reassigning IDs
- How to avoid ID conflicts through protective namespacing
- The relationship between the ID system and GUID system
How ID conflicts work
The engine maintains a lookup table for each asset category (items, vehicles, animals, objects, effects, etc.) that maps numeric IDs to asset instances. When an asset is loaded, the engine checks the category-specific lookup table for the asset's ID. If the ID is not already in use, the asset is registered. If the ID is already in use, the engine silently overwrites the earlier entry with the later one.
As shown above, the silent overwrite is the core problem. There is no warning, no error log, and no notification to the player or server operator that a conflict occurred. The only symptom is that one of the two items does not behave as expected.
ID vs GUID
The ID system and the GUID system serve different purposes in the Unturned™ asset architecture.
| Aspect | ID | GUID |
|---|---|---|
| Type | uint16 (0-65535) | uint128 (32 hex chars) |
| Scope | Category-specific (items share an ID space) | Global (unique across all assets) |
| Uniqueness requirement | Must be unique within each category | Must be unique across all loaded assets |
| Collision behavior | Silent overwrite (last loaded wins) | Error logged; one asset skipped |
| Modifiable after publication | Never change | Never change |
| Used for | Spawn table references, save game references | Cross-file asset references, GUID-based spawns |
| Range limit | 65535 values per category | 2^128 possible values |
The key distinction is that ID conflicts are silent while GUID conflicts are logged. This makes ID conflicts harder to detect and more insidious.
How the engine handles ID conflicts by asset category
Different asset categories have different ID pools. An ID conflict only matters within the same category.
| Category | ID range used by official content | Recommended mod range | Notes |
|---|---|---|---|
| Items | 1-2000 | 50000-65535 | Largest category; most conflicts occur here |
| Vehicles | 1-500 | 50000-65535 | Smaller pool; conflicts are rarer |
| Animals | 1-100 | 50000-65535 | Very small pool |
| Objects | GUID-only (no ID needed) | N/A | Objects upgraded to GUID-only |
| Effects | 1-1000 | 50000-65535 | Used for visual and audio effects |
| Spawn tables | 1-1000 | 5000-65535 | Separate ID pool from items |
The Bypass_ID_Limit flag must be set on an item .dat file to use IDs in the 1-2000 range that is reserved for official content.
Detecting ID conflicts
ID conflicts do not produce any log entries. They must be detected through indirect methods.
Method 1: Manual inventory scan
Load all mods on a server. Spawn every item from every mod using @give. If some items cannot be spawned or spawn a different item than expected, an ID conflict may be present.
Method 2: Automated ID scan
Use a script to extract the ID field from every .dat file in the mod folder and check for duplicates within each category.
GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Type Item
ID 5000A PowerShell script can extract all IDs and report duplicates across the mod folder.
Method 3: Spawn table observation
If an item is configured in a spawn table but never appears in-game, it may have been overwritten by another item with the same ID. Check the spawn table's GUID reference (not its ID reference) to confirm that the correct item is being targeted.
Resolving ID conflicts
When an ID conflict is detected, the resolution depends on which asset should keep its ID and which should receive a new one.
Resolution workflow
- Identify both conflicting assets. Open their
.datfiles and note their names, IDs, and categories. - Determine which asset was loaded first and which was loaded second (the silent overwrite affects the first).
- Choose which asset should keep its ID. The asset that was loaded first (the one that was overwritten) should typically keep its ID if it was in use before the other mod was added.
- Assign a new ID to the asset that should change. Choose an ID that is not used by any other asset in the same category.
- If the asset uses
Bypass_ID_Limit, ensure the flag is present on the updated file. - Verify the fix by loading both mods and spawning both items.
Example resolution
Two item mods both use ID 5000. Mod A's "Survival Rifle" was loaded first. Mod B's "Hunting Rifle" was loaded second and overwrote the Survival Rifle.
| Step | Action |
|---|---|
| 1 | Open Mod A's Survival Rifle .dat (ID 5000) and Mod B's Hunting Rifle .dat (ID 5000) |
| 2 | Survival Rifle was loaded first and was overwritten |
| 3 | Keep Survival Rifle at ID 5000 (it was deployed first) |
| 4 | Change Hunting Rifle's ID to 5010 (not used by any other item) |
| 5 | Verify Bypass_ID_Limit True is set on the Hunting Rifle .dat |
| 6 | Restart the server; both items now function correctly |
Protective namespacing
The standard approach to avoiding ID conflicts is to assign each mod a reserved ID range within the 50000-65535 mod space.
ID range allocation
| Mod size | Recommended range | Example |
|---|---|---|
| Single item | One ID | 50000 |
| Small mod (2-10 items) | 10 IDs | 50000-50009 |
| Medium mod (11-50 items) | 50 IDs | 50000-50049 |
| Large mod (51-100 items) | 100 IDs | 50000-50099 |
| Content pack (100+ items) | 500 IDs | 50000-50499 |
The 57 Studios cohort recommendation is to register the mod's starting ID with a community ID registry (if one exists for the modding community) or to document the mod's ID range in the Workshop description so that other mod authors can avoid conflicts.
ID allocation within a mod
Within a mod, items should use sequential IDs from the reserved range.
SurvivalRifle.dat: ID 50000
SurvivalPistol.dat: ID 50001
SurvivalKnife.dat: ID 50002
SurvivalMagazine.dat: ID 50003Leaving gaps between IDs allows for future additions without renumbering.
The Bypass_ID_Limit flag
The Bypass_ID_Limit flag allows an item to use an ID in the range reserved for official content (1-2000). Without this flag, items with IDs in that range are rejected by the engine.
The 57 Studios cohort recommendation is to always use the 50000+ range for mod content and to reserve the Bypass_ID_Limit flag for special cases where a mod must intentionally override a specific official item's ID. Using Bypass_ID_Limit increases the risk of conflicts with official content.
IDs in NPC equipment
NPCs that carry equipment (such as military NPCs with weapons) use numeric IDs to reference items in their loadout configuration. If an NPC's loadout references an item ID that is later reassigned to a different item, the NPC may appear with the wrong equipment. The 57 Studios cohort recommendation is to use GUID-based references for NPC equipment wherever possible and to reserve ID-based references for backward compatibility with existing configurations.
FAQ
Can two items with different categories share the same ID?
Yes. The ID space is category-specific. An item with ID 5000 and a vehicle with ID 5000 do not conflict because they belong to different type categories. The engine maintains separate lookup tables per category.
What is the maximum ID value?
The ID field is a uint16, meaning the maximum value is 65535. IDs in the 50000-65535 range are recommended for mod content.
What happens if I do not set Bypass_ID_Limit on a mod item?
Items with IDs in the 1-2000 range are rejected by the engine if Bypass_ID_Limit is not set. The item does not load, and no error is logged. This is a common cause of "item not found" bugs in mods that use low IDs.
Does the engine warn about ID conflicts?
No. ID conflicts are silent. The engine overwrites the earlier entry without logging any warning or error. This is the most dangerous aspect of ID conflicts: they can exist for months without being detected.
How do IDs relate to GUIDs in spawn tables?
Spawn tables can reference items by ID (using LegacyAssetId or Table_N_Asset_ID) or by GUID (using Guid). GUID-based references are immune to ID conflicts because they use the globally unique identifier rather than the category-specific ID. The 57 Studios cohort recommendation is to use GUID-based references in all spawn tables to eliminate ID conflict risk at the spawn table level.
Can I reuse an ID from a removed item?
Yes, but only if the removed item is no longer present in any loaded mod or save file. Reusing an ID that was previously used by an item that still exists in some save files will cause those save files to reference the wrong item when loaded. The 57 Studios cohort recommendation is to never reuse IDs from removed items.
Worked examples of ID conflict resolution
Example 1: Two item mods conflict on ID 5000
Mod A (SurvivalRifle) uses ID 5000. Mod B (HuntingRifle) also uses ID 5000. Both are loaded on the same server. The server loads Mod A first, then Mod B. Mod A's SurvivalRifle is silently overwritten by Mod B's HuntingRifle.
Detection: A player reports that the SurvivalRifle cannot be spawned with @give 5000. The command spawns the HuntingRifle instead.
Resolution: Change Mod B's ID from 5000 to 5005. Verify that 5005 is not used by any other item in the category. Update the HuntingRifle's .dat file. Restart the server. Both items now function correctly.
Example 2: Spawn table references the wrong item after ID reassignment
A spawn table uses LegacyAssetId 5000 to reference the SurvivalRifle. After Mod B moved from ID 5000 to 5005, the spawn table still references ID 5000, which now points to whatever item has that ID (if any).
Detection: The SurvivalRifle no longer appears in loot spawns.
Resolution: Update the spawn table to use GUID-based references instead of ID-based references. Replace LegacyAssetId 5000 with Guid <SurvivalRifle_GUID>. This eliminates the dependency on the numeric ID.
Example 3: Vehicle and item share ID 5000 without conflict
A vehicle mod and an item mod both use ID 5000. Because they belong to different categories (vehicles vs. items), there is no conflict. Both assets load and function correctly.
Verification: Spawn the vehicle with @give 5000 and the item with @give 5000. Both appear and function correctly because the engine maintains separate ID lookup tables per category.
ID allocation strategy for multi-mod servers
Server operators who run multiple mods face the highest risk of ID conflicts because each mod independently selects its IDs. The following strategy minimizes conflict risk.
- Create an ID registry document that lists every mod on the server and its reserved ID range.
- Assign each mod a non-overlapping ID range within the 50000-65535 space.
- Verify that no two mods have overlapping ranges before adding a new mod.
- Document the registry in the server's administration notes.
- Re-check the registry when any mod is updated (updates may add new items with new IDs).
Example ID registry
| Mod name | Reserved ID range | Notes |
|---|---|---|
| Survival Weapons Pack | 50000-50099 | 100 item IDs reserved |
| Vehicle Pack | 50100-50149 | 50 vehicle IDs reserved |
| Food Expansion | 50150-50199 | 50 item IDs reserved |
| Military Gear | 50200-50249 | 50 item IDs reserved |
Best practices
- Always use IDs in the 50000-65535 range for mod content
- Reserve a contiguous ID range for each mod project
- Document the mod's ID range in the Workshop description
- Use GUID-based references in spawn tables instead of ID-based references
- Never reuse IDs from removed items
- Set
Bypass_ID_Limit Trueon any mod item that uses an ID below 2000 - Check for ID conflicts when adding a new mod to an existing modded server
- Perform an automated ID scan after adding multiple mods
Appendix A: ID range conflict detection script
The following PowerShell script scans a folder of .dat files and reports duplicate IDs within each asset category.
powershell
$folder = "."
$items = @{}
Get-ChildItem $folder -Recurse -Include "*.dat" | ForEach-Object {
$content = Get-Content $_.FullName -Encoding UTF8
$id = ($content | Select-String "^ID (\d+)$").Matches.Groups[1].Value
$type = ($content | Select-String "^Type (\w+)$").Matches.Groups[1].Value
if ($id -and $type) {
$key = "$type`:$id"
if ($items.ContainsKey($key)) {
Write-Output "CONFLICT: $key in $($_.Name) and $($items[$key])"
} else {
$items[$key] = $_.Name
}
}
}Appendix B: ID conflict diagnostic log patterns
Since ID conflicts produce no log entries, the following indirect log patterns can indicate an ID conflict.
| Log pattern | What it suggests | Next step |
|---|---|---|
| No error but item cannot be spawned | Another item may have overwritten this item's ID | Check for duplicate IDs in the 50000+ range |
Two items share the same name in the @give list | One item may have been overwritten | Spawn both and compare behavior |
| Item appears in the file system but not in-game | The item's ID may be overwritten | Check Bypass_ID_Limit and ID uniqueness |
| Spawn table references item but item never spawns | The spawn table may reference a conflicting ID | Convert spawn table to GUID-based references |
Appendix C: ID range documentation template
The following template can be used to document a mod project's ID usage for reference by other mod authors and server operators.
Mod Name: [Name]
Mod ID Range: [Start]-[End]
Item IDs: [Range for items]
Vehicle IDs: [Range for vehicles]
Animal IDs: [Range for animals]
Spawn Table IDs: [Range for spawn tables]
Last Updated: [Date]
Notes: [Any special notes about ID usage]Appendix D: Reserved ID ranges reference
The following table documents the ID ranges used by official Unturned content and the recommended ranges for mod content.
| Category | Official range | Mod recommended range |
|---|---|---|
| Items | 1-2000 | 50000-65535 |
| Vehicles | 1-500 | 50000-65535 |
| Animals | 1-100 | 50000-65535 |
| Spawn tables | 1-1000 | 5000-65535 |
| Effects | 1-1000 | 50000-65535 |
| NPCs | 1-500 (legacy clothing IDs) | 50000-65535 |
Appendix E: Complete ID field reference for all asset categories
The following table documents the ID field usage across all asset categories in Unturned.
| Asset category | ID field used? | ID range (official) | ID range (mod) | Notes |
|---|---|---|---|---|
| Items | Yes | 1-2000 | 50000-65535 | Most common conflict category |
| Vehicles | Yes | 1-500 | 50000-65535 | Smaller pool, less conflict |
| Animals | Yes | 1-100 | 50000-65535 | Very small pool |
| Spawn tables | Yes | 1-1000 | 5000-65535 | Separate from item IDs |
| Effects | Yes | 1-1000 | 50000-65535 | Visual and audio effects |
| Objects | No | N/A | N/A | GUID-only since upgrade |
| NPCs | Yes (clothing IDs) | 1-500 | 50000-65535 | Legacy clothing references |
| Resources | Yes | 1-500 | 50000-65535 | Resource node definitions |
| Level Assets | Yes | 1-100 | 50000-65535 | Map-level configurations |
Appendix F: Quick-reference ID conflict resolution card
| Step | Action | Command / tool |
|---|---|---|
| 1 | Detect conflicting IDs | PowerShell script or manual scan |
| 2 | Identify source of conflict | Open both conflicting .dat files |
| 3 | Decide which ID to keep | Earlier deployed mod keeps its ID |
| 4 | Assign new ID to changed asset | Choose unused ID in 50000+ range |
| 5 | Update .dat file | Edit ID field in text editor |
| 6 | Verify Bypass_ID_Limit | Ensure flag is set if ID is below 2000 |
| 7 | Update spawn tables | Convert to GUID references |
| 8 | Test in-game | Spawn both items with @give |
Appendix G: Complete ID usage tracking table
Maintain the following table for each mod project to track ID usage and prevent internal conflicts.
| Asset name | Category | ID | GUID | Status |
|---|---|---|---|---|
| SurvivalRifle | Item | 50000 | a1b2... | Active |
| SurvivalPistol | Item | 50001 | c3d4... | Active |
| SurvivalKnife | Item | 50002 | e5f6... | Active |
| SurvivalRifleMagazine | Item | 50003 | g7h8... | Active |
| MilitarySUV | Vehicle | 50000 | i9j0... | Active |
| MilitaryJeep | Vehicle | 50001 | k1l2... | Active |
| ItemSpawnTable | Spawn | 5000 | m3n4... | Active |
| VehicleSpawnTable | Spawn | 5001 | o5p6... | Active |
Appendix H: 57 Studios mod ID allocation registry
The following table shows the ID ranges allocated to 57 Studios mod projects. This registry prevents internal ID conflicts across the studio's mod portfolio.
| Mod project | Category | Start ID | End ID | Total slots | Status |
|---|---|---|---|---|---|
| SHQ Weapons Pack | Items | 50000 | 50049 | 50 | Active |
| Horizon Life RP Core | Items | 50050 | 50099 | 50 | Active |
| Horizon Life RP Vehicles | Vehicles | 50000 | 50024 | 25 | Active |
| Survival Knife Pack | Items | 50100 | 50109 | 10 | Active |
| AK Series Weapon Pack | Items | 50110 | 50129 | 20 | Active |
| AR Series Weapon Pack | Items | 50130 | 50149 | 20 | Active |
| Pistol Collection | Items | 50150 | 50169 | 20 | Active |
| SMG Collection | Items | 50170 | 50189 | 20 | Active |
| Shotgun Collection | Items | 50190 | 50209 | 20 | Active |
| Sniper Collection | Items | 50210 | 50229 | 20 | Active |
| Melee Collection | Items | 50230 | 50249 | 20 | Active |
| Explosives Pack | Items | 50250 | 50259 | 10 | Active |
| Medical Items Pack | Items | 50260 | 50269 | 10 | Active |
| Food Items Pack | Items | 50270 | 50279 | 10 | Active |
| Tool Items Pack | Items | 50280 | 50289 | 10 | Active |
| Backpack Collection | Items | 50290 | 50299 | 10 | Active |
| Magazine Collection | Items | 50300 | 50349 | 50 | Active |
| Attachment Collection | Items | 50350 | 50379 | 30 | Active |
| Spawn Table Core | Spawns | 5000 | 5049 | 50 | Active |
| Spawn Table Expansion | Spawns | 5050 | 5099 | 50 | Active |
| Vehicle Spawn Tables | Spawns | 5100 | 5119 | 20 | Active |
Appendix I: ID conflict prevention policy template
Mod teams and server operators should adopt an ID conflict prevention policy. The following template covers the essential elements.
ID Conflict Prevention Policy
Version 1.0
1. All mod items must use IDs in the 50000-65535 range.
2. Each mod project must reserve a contiguous ID range.
3. The reserved range must be documented in the mod's Workshop description.
4. IDs from removed items must never be reused.
5. Spawn tables must use GUID references instead of ID references.
6. Before adding a new mod to a server, the server operator must check for ID conflicts.
7. ID conflicts must be resolved within 7 days of discovery.
8. The ID registry document must be updated whenever a mod's ID range changes.Appendix J: Complete ID field value range reference
| Field type | C# type | Min value | Max value | Valid range | Used by |
|---|---|---|---|---|---|
| Item ID | uint16 | 1 | 65535 | 1-2000 (official), 50000-65535 (mod) | Item .dat files |
| Vehicle ID | uint16 | 1 | 65535 | 1-500 (official), 50000-65535 (mod) | Vehicle .dat files |
| Animal ID | uint16 | 1 | 65535 | 1-100 (official), 50000-65535 (mod) | Animal .dat files |
| Spawn table ID | uint16 | 1 | 65535 | 1-1000 (official), 5000-65535 (mod) | Spawn table .dat files |
| Effect ID | uint16 | 1 | 65535 | 1-1000 (official), 50000-65535 (mod) | Effect .dat files |
| NPC clothing ID | uint16 | 1 | 65535 | 1-500 (official), 50000-65535 (mod) | NPC equipment .dat files |
Appendix K: ID conflict scenario reference table
| Scenario | Conflict type | Detection method | Resolution |
|---|---|---|---|
| Two item mods use same ID | Item-item | Manual @give test | Change one mod's ID |
| Item ID conflicts with deprecated mod | Item-deprecated | Spawn table observation | Remove deprecated mod or change ID |
| Vehicle ID conflicts with item | Vehicle-item | None (different categories) | No action needed |
| Spawn table ID conflicts with item | Spawn-item | None (different categories) | No action needed |
| NPC clothing ID conflicts | NPC-Item | NPC appears with wrong equipment | Change NPC clothing ID |
| Same mod, two versions | Internal | Version mismatch error | Update to latest version |
Appendix L: ID conflict resolution tools reference
| Tool | Purpose | Command |
|---|---|---|
| PowerShell ID scanner | Scan all .dat files for duplicate IDs | Custom script (see Appendix A) |
| Manual grep | Search for ID field values | Select-String -Path *.dat -Pattern "^ID \d+$" |
| Text editor search | Find all ID fields in open files | Use Find in Files with regex |
| Spawn table audit | Check spawn tables use GUIDs | Manual review of spawn table files |
Appendix M: Mod ID registry template for server operators
Server operators can use the following template to track ID usage across all mods on their server.
| Mod name | Workshop ID | Category | Start ID | End ID | Contact |
|---|---|---|---|---|---|
| Survival Weapons | 123456789 | Items | 50000 | 50099 | author@example.com |
| Vehicle Expansion | 234567890 | Vehicles | 50000 | 50049 | author@example.com |
| Food Expansion | 345678901 | Items | 50100 | 50149 | author@example.com |
| Military Gear | 456789012 | Items | 50150 | 50199 | author@example.com |
| Backpack Collection | 567890123 | Items | 50200 | 50209 | author@example.com |
| Magazine Pack | 678901234 | Items | 50210 | 50259 | author@example.com |
| Attachment Pack | 789012345 | Items | 50260 | 50289 | author@example.com |
| Melee Weapons | 890123456 | Items | 50290 | 50309 | author@example.com |
| Explosives Pack | 901234567 | Items | 50310 | 50319 | author@example.com |
| Medical Items | 123456780 | Items | 50320 | 50329 | author@example.com |
| Animal Reskin | 234567891 | Animals | 50000 | 50009 | author@example.com |
| Vehicle Skins | 345678902 | Vehicles | 50050 | 50059 | author@example.com |
Appendix N: ID conflict resolution FAQ for server operators
What should I do if a mod author does not respond to conflict reports?
If the mod author does not respond within a reasonable timeframe, change the conflicting ID in the local server files. Document the change in the server configuration notes. The next update from the mod author will overwrite the local change, so the server operator must re-apply the change after each update.
Can I automate ID conflict detection?
Yes. The PowerShell script in Appendix A can be run as a scheduled task on the server to check for ID conflicts after each mod update. The script outputs a report that the server operator can review.
How do I handle ID conflicts with deprecated mods?
Deprecated mods that are no longer supported by their authors should be replaced with alternatives or removed from the server. If the deprecated mod's ID range is the only conflict, the remaining mod can be reassigned to a different ID.
Appendix O: External references
- Smartly Dressed Games official modding documentation - the authoritative reference for asset definitions and the ID field.
- Data File Troubleshooting - the previous article; covers
.datfile syntax errors that can cause ID field parsing failures. - Finding and Reading Game Logs - the next article; covers log file analysis for related issues.
- Project Folder Structure and GUIDs - covers GUID generation and management, which complements ID management.
Authoring checklist
Before publishing a mod, confirm the following ID-related items:
- [ ] All item IDs are in the 50000-65535 range
- [ ] IDs are contiguous within the mod's reserved range
- [ ]
Bypass_ID_Limit Trueis set on any item with ID below 2000 - [ ] No two assets in the mod share the same ID within the same category
- [ ] The mod's ID range is documented in the Workshop description
- [ ] Spawn tables use GUID references instead of ID references
- [ ] No IDs from removed items are reused
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete ID conflict resolution reference with detection methods, resolution workflow, protective namespacing, and FAQ. |
Cross-references
- Data File Troubleshooting - the previous article in the troubleshooting section.
- Finding and Reading Game Logs - the next article; covers log file analysis for asset loading issues.
- GUID Conflicts Between Mods - the dedicated article for GUID conflicts, which have different symptoms and resolution.
- Project Folder Structure and GUIDs - covers GUID generation and management.
- Smartly Dressed Games modding documentation - official reference.
- Unturned on Steam - game page and community hub.
