# Is it possible to customize world settings for each map?

**URL:** <https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089>\
**Category:** Editor Scripting\
**Tags:** data, World-Settings, ustruct, settings, customization, unreal-engine, question\
**Created:** [July 13, 2014, 8:31am UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089 "2014-07-13T08:31:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lordink](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Lordink](https://forums.unrealengine.com/u/Lordink)\
**Post date:** [July 13, 2014, 8:31am UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/1 "2014-07-13T08:31:19Z")

</div>

Hi guys,

I am currently working on a large cpp-based in-game item generating system, and as I use minimum amount of UObjects in my system, it is not exposed to Blueprints. Though, instead of recompiling each time after I change the parameter or two in code (or stupidly exposing each of these parameters to some Actors), I would like to have a kind of centralized settings object, that I could edit on per-map basis, and the items which I spawn on this map will be taking different values from it. First off, is it possible to utilize in some way the World Settings for that purpose? I did not find any way to extend the settings list in it, outside of just editing the engine source code for it.

If not, what would be the best solution for such settings container? The only way that I can make it work for now, is using custom actor with my settings inside being set as public USTRUCT, placing this actor on the map, in code of each spawned item searching through all the actors on the map, finding that custom settings actor and taking parameters from it. I am pretty sure there are better solutions out there, right? 🙂

---

<div class="post-metadata">

**Author:** ![Shadowriver](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Shadowriver](https://forums.unrealengine.com/u/Shadowriver)\
**Post date:** [July 13, 2014, 12:56pm UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/2 "2014-07-13T12:56:00Z")

</div>

You not searched enouth, you extend UWorldSettings and then you set class in project settings in default classes

---

<div class="post-metadata">

**Author:** ![Lordink](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Lordink](https://forums.unrealengine.com/u/Lordink)\
**Post date:** [July 13, 2014, 1:45pm UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/3 "2014-07-13T13:45:04Z")

</div>

Ok, but it does not seem to be per-map setting. I can edit it for my project, but how do I set it for each map individually?

---

<div class="post-metadata">

**Author:** ![Shadowriver](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Shadowriver](https://forums.unrealengine.com/u/Shadowriver)\
**Post date:** [July 13, 2014, 2:13pm UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/4 "2014-07-13T14:13:41Z")

</div>

World Settings state is saved to umap, so it is per map invidually. I using it myself so i know 😛

---

<div class="post-metadata">

**Author:** ![Lordink](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Lordink](https://forums.unrealengine.com/u/Lordink)\
**Post date:** [July 13, 2014, 2:24pm UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/5 "2014-07-13T14:24:47Z")

</div>

Yeah, now I figured that out. I still have to cast the world settings to my own settings class, but it’s still a solution. Thanks.

---

<div class="post-metadata">

**Author:** ![Commander\_Shepard](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Commander\_Shepard](https://forums.unrealengine.com/u/Commander_Shepard)\
**Post date:** [January 31, 2015, 7:56am UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/6 "2015-01-31T07:56:18Z")

</div>

All hail the shadow river

---

<div class="post-metadata">

**Author:** ![Mewster](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Mewster](https://forums.unrealengine.com/u/Mewster)\
**Post date:** [January 12, 2016, 8:49pm UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/7 "2016-01-12T20:49:24Z")

</div>

I couldn’t understand this passage; how can a custom world setting be set for each map?

---

<div class="post-metadata">

**Author:** ![plojnitza](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@plojnitza](https://forums.unrealengine.com/u/plojnitza)\
**Post date:** [December 8, 2016, 9:35am UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/8 "2016-12-08T09:35:04Z")

</div>

If I want different WorldSettings classes, is that possible?  
For example custom World Settings in levels and default WorldSetting from UE4 for Main Menu

---

<div class="post-metadata">

**Author:** ![Dwarfmine](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Dwarfmine](https://forums.unrealengine.com/u/Dwarfmine)\
**Post date:** [July 26, 2019, 6:09am UTC](https://forums.unrealengine.com/t/is-it-possible-to-customize-world-settings-for-each-map/288089/9 "2019-07-26T06:09:58Z")

</div>

Don’t know if it is relevant for you, but for the others new projects.

**Yes, you can have indirectly custom WorldSettings.**

If you know the concept of instanced UObjects you can extend the UWorldSettings with your game specific one.  
On an instanced uproperty you select the UClass you want to instantiate, and get properties to fill that specific one.

Below is a quick code, haven’t tested it. But should work.

```
UCLASS(EditInlineNew)
class UMyBaseSettingsForIndividualLevelSettings : public UObject
...

UClass()
class AMyCustomWorldSettings : public AWorldSettings
{
...
    template<typename T>
    T* GetLevelSettings()
    {
        return Cast<T>(LevelSpecificSettings);
    }
...
    UPROPERTY(Instanced, ...)
    UMyBaseSettingsForIndividualLevelSettings* LevelSpecificSettings;
...
}
```
