The Elemental series is, by far, the most expansive that Stardock has ever made; most of it was barely exposed to the player base in our quest to reduce memory. This time, not only can we expose it all, we can enhance it and integrate into Steam Workshop.
The dated visuals of Elemental: Reforged do have one major advantage: It makes modding a lot more approachable and easier. Let’s take a look at what we have and what we want to do.
The Tile Editor
Every cup, every barrel, every table in this game is placed onto an area which then gets saved out as a tile. Quests, Goodie Huts, City Improvements, etc. all reference a tile. Under the covers, these are just XML files that reference the little 3D assets (now FBX files).
Here’s me making a backyard BBQ…poorly.

I have a huge palette of things I can choose from to put in there, including little people, particle effects, furniture, buildings, you name it.

Here I’ve made a little keep. You can see the pieces at the top.
When I’m done, I will have two options:
Save it to disk.
Upload it to Steam Workshop. (We do plan to support other modding platforms later.)
Using Tiles for Quests, Improvements and Lairs
A tile design on its own doesn’t do much. It needs to be hooked to something:
A quest location.
A City Improvement.
A Goodie Hut / Monster Lair.
etc.
Let’s start with City Improvements.
Right now, it’s quicker for us to just make an improvement in XML. Here’s what the Merchant looks like:
<ImprovementType InternalName="Merchant">
<DisplayName>TXT_IMPROVEMENTS_MERCHANT_DISPLAYNAME</DisplayName>
<Description>TXT_IMPROVEMENTS_MERCHANT_DESCRIPTION</Description>
<RequiresCity>1</RequiresCity>
<BarredTerrain>River</BarredTerrain>
<BarredTerrain>SwampTerrain</BarredTerrain>
<PreferredTerrain>City</PreferredTerrain>
<PreferredTerrain>Category:Land</PreferredTerrain>
<PreferredTerrain>Forest</PreferredTerrain>
<LaborToBuild>110</LaborToBuild>
<GameModifier>
<ModType>Resource</ModType>
<Attribute>Gold</Attribute>
<Value>2</Value>
<PerTurn>1</PerTurn>
<Provides>TXT_PROVIDES_GILDAR_PER_SEASON_2</Provides>
<UpgradeComparisonID>1</UpgradeComparisonID>
</GameModifier>
<AIData AIPersonality="AI_General">
<AIPriority>12</AIPriority>
<AITag>Merchant</AITag>
</AIData>
<ArtDef>Art_Merchant</ArtDef>
</ImprovementType>
Now, we understand some people might find this intimidating, so either we or someone else (here’s a good “Vibe Coder” thing) will crank out a little front end to make this even easier.
The ArtDef
at the bottom is where the tile design comes in:
<ImprovementTypeArtSubPack InternalName="Art_Merchant_Kingdom">
<SupportedBuildingStyle>KingdomStyle</SupportedBuildingStyle>
<TileDesign>K_Merchant_01</TileDesign>
<ConstructionTileDesign>K_Construction1x1_01</ConstructionTileDesign>
<DrawnIcon>Improvement_Merchant.png</DrawnIcon>
<DrawnIconConstruction>Improvement_Merchant_C.png</DrawnIconConstruction>
<Thumbnail>K_Merchant_02_Thumb.png</Thumbnail>
<Medallions>
<All>K_Merchant_02_Thumb.png</All>
</Medallions>
</ImprovementTypeArtSubPack>
The Tile Design is the file name of the thing you saved, plus you can have some icons and such for it that are just PNGs.
Making Maps
The map editor was a labor of love for us. We loved maps of Middle Earth, whether it be the Third Age or Beleriand, and you can tell on this map editor that we designed it to make fantasy maps.

Like with the Tile Editor, players will be able to save a map to disk or share it on Steam Workshop.
You can create full-on stories with this by putting quest locations and such.
Quests
Speaking of quests… They are super easy to make.
When you see our quest format, we think you’re going to love it if you’ve ever had to…deal with other systems:
<QuestDef InternalName="Quest_Fearful_Merchant">
<DisplayName>TXT_QUESTS_QUEST_FEARFUL_MERCHANT_DISPLAYNAME</DisplayName>
<Description>TXT_QUESTS_QUEST_FEARFUL_MERCHANT_DESCRIPTION</Description>
<IsStartingPointQuest>1</IsStartingPointQuest>
<RewardText>TXT_QUESTS_FEARFUL_MERCHANT_REWARDTEXT</RewardText>
<RewardImage>Armor_WardingKiteShield.png</RewardImage>
<QuestClass>Minor</QuestClass>
<Repeatable>1</Repeatable>
<TriggerType>QuestLocation</TriggerType>
<TriggerOrigin>EventLocation</TriggerOrigin>
<SpawnRating>1</SpawnRating>
<Image>Rank_MorriganTheMad.png</Image>
<PrefQuestLoc>QuestLoc_Inn1</PrefQuestLoc>
<Treasure>
<GameModifier InternalName="Reward3">
<ModType>Unit</ModType>
<Attribute>GiveExperience</Attribute>
<Value>6</Value>
</GameModifier>
</Treasure>
<Treasure>
<GameModifier InternalName="Reward4">
<ModType>Resource</ModType>
<Attribute>Fame</Attribute>
<Value>10</Value>
</GameModifier>
</Treasure>
<QuestObjectiveDef>
<ObjectiveID>0</ObjectiveID>
<NextObjectiveID>1</NextObjectiveID>
<Description>TXT_QUESTS_FEARFUL_MERCHANT_OBJECTIVE0_DESC</Description>
<Treasure>
<GameModifier>
<ModType>Map</ModType>
<Attribute>CreateGoodieHut</Attribute>
<StrVal>Terrorized Workshop</StrVal>
<Unitclass>GH_Quest_Workshop</Unitclass>
<Radius>6</Radius>
</GameModifier>
</Treasure>
<QuestConditionDef>
<Objective>
<Icon>Mana_32.png</Icon>
<Text>TXT_QUESTS_FEARFUL_MERCHANT_OBJECTIVE0_TEXT</Text>
<IsOptional>0</IsOptional>
</Objective>
<Class>Success</Class>
<Type>ClearGoodieHut</Type>
<TextData>GH_Quest_Workshop</TextData>
<Flag>RevealTarget</Flag>
</QuestConditionDef>
<ChoiceText>TXT_QUESTS_FEARFUL_MERCHANT_OBJECTIVE0_CHOICETEXT</ChoiceText>
<ChoiceMedallion>M_Darkling_Shaman_Card.png</ChoiceMedallion>
<ChoiceMedallionFrame>Gfx\\Medallions\\Medallion_Frame_01.png</ChoiceMedallionFrame>
<QuestChoiceDef>
<Description>TXT_QUESTS_FEARFUL_MERCHANT_CHOICE0_DESC</Description>
<NextObjectiveID>1</NextObjectiveID>
<Encounter>
<Liklihood>100</Liklihood>
<BattleIdentifier>DarklingShaman</BattleIdentifier>
<WillRespawn>0</WillRespawn>
<WanderingRadius>0</WanderingRadius>
<UnitInstance>
<UnitType>DarklingShaman</UnitType>
<UnitName>Brunthus the Tenebrous</UnitName>
<Level>5</Level>
</UnitInstance>
<UnitInstance>
<UnitType>Darkling</UnitType>
<UnitGroupingType>UnitGroupingType_Party</UnitGroupingType>
<Level>1</Level>
</UnitInstance>
<UnitInstance>
<UnitType>Darkling</UnitType>
<UnitGroupingType>UnitGroupingType_Party</UnitGroupingType>
<Level>1</Level>
</UnitInstance>
</Encounter>
</QuestChoiceDef>
<QuestChoiceDef>
<Description>TXT_QUESTS_FEARFUL_MERCHANT_CHOICE1_DESC</Description>
<NextObjectiveID>0</NextObjectiveID>
<PopupMessage>TXT_QUESTS_FEARFUL_MERCHANT_CHOICE1_POPUP</PopupMessage>
</QuestChoiceDef>
</QuestObjectiveDef>
<QuestObjectiveDef>
<ObjectiveID>1</ObjectiveID>
<NextObjectiveID>2</NextObjectiveID>
<PopupObjectiveMsg>0</PopupObjectiveMsg>
<QuestConditionDef>
<Objective>
<Icon>Mana_32.png</Icon>
<Text>TXT_QUESTS_FEARFUL_MERCHANT_OBJECTIVE0_TEXT</Text>
<IsOptional>0</IsOptional>
</Objective>
<Class>Success</Class>
<Type>BattleFinished</Type>
<TextData>DarklingShaman</TextData>
<MoreTextData>Victory</MoreTextData>
</QuestConditionDef>
<ChoiceText>TXT_QUESTS_FEARFUL_MERCHANT_OBJECTIVE1_CHOICETEXT</ChoiceText>
<ChoiceMedallion>Crates.png</ChoiceMedallion>
<ChoiceMedallionFrame>Medallion_Frame_01.png</ChoiceMedallionFrame>
<QuestChoiceDef>
<Description>TXT_QUESTS_FEARFUL_MERCHANT_CHOICE2_DESC</Description>
<NextObjectiveID>2</NextObjectiveID>
<Treasure>
<GameModifier>
<ModType>Resource</ModType>
<Attribute>Metal</Attribute>
<Value>50</Value>
</GameModifier>
</Treasure>
</QuestChoiceDef>
<QuestChoiceDef>
<Description>TXT_QUESTS_FEARFUL_MERCHANT_CHOICE3_DESC</Description>
<NextObjectiveID>2</NextObjectiveID>
<Treasure>
<GameModifier>
<ModType>GiveItem</ModType>
<Attribute>KiteShield_Warding</Attribute>
</GameModifier>
</Treasure>
</QuestChoiceDef>
</QuestObjectiveDef>
<QuestObjectiveDef>
<ObjectiveID>2</ObjectiveID>
<QuestEnd>1</QuestEnd>
</QuestObjectiveDef>
</QuestDef>
Like with the Improvements, someone, or us, will make some simple friendly front end for this, but making quests is ridiculously simple. BTW, you can hard code your text here…not that we did…cough.
It may look long until you realize it’s just a recipe for what happens when and where. All the assets involved are either XML or PNGs.
So, want to just make an RPG story to share with your friends or the general public? Here you go.
Particle Editor
How about particles? For spells, or ambient effects? Yep you can do that here.

And you can attach these to pretty much anything you want.
Here’s how spells are done:
<SpellDef InternalName="Haste">
<DisplayName>TXT_SPELLS_HASTE_DISPLAYNAME</DisplayName>
<Description>TXT_SPELLS_HASTE_DESCRIPTION</Description>
<FormattedDescription>TXT_SPELLS_HASTE_FORMATTEDDESCRIPTION</FormattedDescription>
<Image>T_Haste_Painting.png</Image>
<IconFG>T_Haste_Icon.png</IconFG>
<AutoUnlock>1</AutoUnlock>
<CanStack>0</CanStack>
<SpellBookSortCategory>Unit</SpellBookSortCategory>
<SpellBookSortSubCategory>UnitEnchantment</SpellBookSortSubCategory>
<SpellType>Tactical</SpellType>
<SpellClass>Defensive</SpellClass>
<SpellSubClass>Buff</SpellSubClass>
<SpellTargetType>FriendlyUnit</SpellTargetType>
<PreventStackingWith>Haste_Adept</PreventStackingWith>
<Prereq>
<Type>AbilityBonusOption</Type>
<Attribute>Air1</Attribute>
</Prereq>
<SpellResourceCost>
<Resource>Mana</Resource>
<Amount>5</Amount>
</SpellResourceCost>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_CombatSpeed</StrVal>
<IsForFormattedDescription>1</IsForFormattedDescription>
<DisplayName>Hasted</DisplayName>
<Duration>-1</Duration>
<Effect>E_Celerity_Particle</Effect>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression>[UnitOwner_GetNumAirShards]</Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression>[Calc] + 5</Expression>
</Calculate>
<Calculate InternalName="ValueForFormattedDescription">
<Expression>[Calc] + 5</Expression>
</Calculate>
</GameModifier>
<AIData AIPersonality="AI_General">
<AIPriority>255</AIPriority>
<ValueCalcWrapper>
<ValueType>IsTargetWorthy</ValueType>
<Calculate InternalName="Calc" ValueOwner="TargetUnit">
<Expression>[Unit_GetHPCurrent]</Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression>[Calc] > 10</Expression>
</Calculate>
</ValueCalcWrapper>
</AIData>
<HitSoundFX>Spell_Haste_01</HitSoundFX>
<HitSoundFX>Spell_Haste_02</HitSoundFX>
</SpellDef>
This is the Haste Spell.
See the <Effect>E_Celerity_Particle</Effect>
?
That’s just the name of the saved file: i.e,. E_Celerity_Particle.xml
. I kid you not. You just make your effect, save it to disk (or download it from Steam) and refer to the file. As long as it’s in the “data” directory it’ll find it (have you noticed you don’t have to put in file paths?).
Making and Sharing Civilizations
This is an area of immense potential (now). Because Reforged supports FBX, there’s nothing stopping 3D artists from making their own unique races (and probably showing us up), but you can also make your own civilization.

So, while we don’t intend to have Elves, Dwarves, Orcs and so forth in, modders will be able to do some crazy things.
The Power Of 64-Bit
In the original War of Magic and Fallen Enchantress, we had these tools, but we didn’t dare look at them funny because we’d get out of memory errors if we added say too many chairs to a scene or made a map with one too many quests. It was extremely painful and frustrating. By today’s standards, this game has pretty small memory requirements, but in 2010, it was brushing up against the 2GB limit.
My friend and, back in 2010, competitor, Dan Baker was dealing with this as the lead graphics engineer on Civilization V, which shipped a month later. They were pulling every trick they could to make Civilization V run on 32-bit machines without crashing. The change to 64-bit was, no pun intended, game changing, and now, thanks to it, you will soon have the ability to build your own fantasy worlds.