Documentation Index Fetch the complete documentation index at: https://civ7community.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide provides a step-by-step approach to creating new civilizations for Civilization VII. It covers the entire process from initial planning to implementation and testing, with practical examples from both official DLC and community mods.
Prerequisites
Before creating a new civilization, ensure you have:
A basic understanding of the Civilization VII modding architecture (see Modding Architecture )
Familiarity with the game’s database schema (see Database Schemas )
Knowledge of the Age system (see Age Modules )
The game’s base files for reference
Planning Your Civilization
Choosing an Age
Every civilization in Civilization VII is tied to a specific Age:
Antiquity Age (earliest period)
Exploration Age (middle period)
Modern Age (latest period)
Choose the Age that best fits your civilization’s historical prominence and the gameplay experience you want to create.
Core Design Elements
Define these essential elements for your civilization:
Civilization Name : The primary identifier
Historical Context : The civilization’s historical significance
Core Ability : The unique gameplay advantage
Unique Units : Special military and/or civilian units
Unique Infrastructure : Buildings, improvements, or quarters
Traditions : Policies unlocked through your civilization’s unique Civic tree
Associated Wonder : The wonder that your civilization receives bonuses for building
Designing for Balance
Consider these factors when balancing your civilization:
Gameplay Niche : Define a clear strength without making the civilization overpowered
Age-Appropriate Power : Ensure abilities are appropriate for the assigned Age
Synergy : Design components that work well together
Counterplay : Ensure there are strategic counters to your civilization’s strengths
Folder Structure Setup
Create a well-organized folder structure for your mod:
< GAME_DATA > /Mods/your-civilization-mod/
├── civilizations/ # Civilization definitions
├── traditions/ # Tradition definitions
├── units/ # Unit definitions
├── constructibles/ # Buildings, improvements, and quarters
├── progression-trees/ # Civic and tech tree modifications
├── imports/ # External assets and dependencies
└── your-mod-name.modinfo # Mod metadata file
Implementation Process
1. Creating the Modinfo File
The .modinfo file defines your mod’s metadata and structure:
<? xml version = "1.0" encoding = "utf-8" ?>
< Mod id = "your-civilization-mod" version = "1" xmlns = "ModInfo" >
< Properties >
< n > Your Civilization Name </ n >
< Description > Description of your civilization mod </ Description >
< Authors > Your Name </ Authors >
< Version > 1.0.0 </ Version >
< AffectsSavedGames > 1 </ AffectsSavedGames >
</ Properties >
< Dependencies >
< Mod id = "base-standard" title = "LOC_MODULE_BASE_STANDARD_NAME" />
</ Dependencies >
< ActionCriteria >
< Criteria id = "age-antiquity-current" >
< AgeInUse > AGE_ANTIQUITY </ AgeInUse >
</ Criteria >
< Criteria id = "always" >
< AlwaysMet />
</ Criteria >
</ ActionCriteria >
< ActionGroups >
< ActionGroup id = "main-group" scope = "game" criteria = "age-antiquity-current" >
< Actions >
< UpdateDatabase >
< Item > civilizations/your_civilization.xml </ Item >
{/*Add more files as needed*/}
</ UpdateDatabase >
</ Actions >
</ ActionGroup >
</ ActionGroups >
</ Mod >
2. Defining Your Civilization
Create a file like civilizations/your_civilization.xml:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
< Civilizations >
< Row CivilizationType = "CIVILIZATION_YOUR_CIV" Name = "LOC_CIVILIZATION_YOUR_CIV_NAME"
Description = "LOC_CIVILIZATION_YOUR_CIV_DESCRIPTION"
Adjective = "LOC_CIVILIZATION_YOUR_CIV_ADJECTIVE"
StartingCivilizationLevelType = "CIVILIZATION_LEVEL_FULL_CIV" />
</ Civilizations >
< CivilizationTraits >
< Row TraitType = "TRAIT_YOUR_CIV_ABILITY" CivilizationType = "CIVILIZATION_YOUR_CIV" />
< Row TraitType = "TRAIT_ANTIQUITY_CIV" CivilizationType = "CIVILIZATION_YOUR_CIV" />
</ CivilizationTraits >
{/*Add city names*/}
< CityNames >
< Row CivilizationType = "CIVILIZATION_YOUR_CIV" CityName = "LOC_CIVILIZATION_YOUR_CIV_CITY_NAMES_1" />
< Row CivilizationType = "CIVILIZATION_YOUR_CIV" CityName = "LOC_CIVILIZATION_YOUR_CIV_CITY_NAMES_2" />
</ CityNames >
{/*Add start bias*/}
< StartBiasBiomes >
< Row CivilizationType = "CIVILIZATION_YOUR_CIV" BiomeType = "BIOME_PLAINS" Score = "30" />
</ StartBiasBiomes >
< StartBiasResources >
< Row CivilizationType = "CIVILIZATION_YOUR_CIV" ResourceType = "RESOURCE_HORSES" Score = "80" />
</ StartBiasResources >
</ Database >
3. Creating Unique Abilities
Define your civilization’s unique abilities:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
< Types >
< Row Type = "TRAIT_YOUR_CIV_ABILITY" Kind = "KIND_TRAIT" />
</ Types >
< Traits >
< Row TraitType = "TRAIT_YOUR_CIV_ABILITY" Name = "LOC_TRAIT_YOUR_CIV_ABILITY_NAME"
Description = "LOC_TRAIT_YOUR_CIV_ABILITY_DESCRIPTION" InternalOnly = "true" />
</ Traits >
{/*Define modifiers that implement the ability effects*/}
< Modifiers >
< Row ModifierId = "MODIFIER_YOUR_CIV_ABILITY_EFFECT"
ModifierType = "MODIFIER_PLAYER_ADJUST_YIELD_CHANGE" />
</ Modifiers >
< ModifierArguments >
< Row ModifierId = "MODIFIER_YOUR_CIV_ABILITY_EFFECT"
Name = "YieldType" Value = "YIELD_PRODUCTION" />
< Row ModifierId = "MODIFIER_YOUR_CIV_ABILITY_EFFECT"
Name = "Amount" Value = "1" />
</ ModifierArguments >
{/*Link trait to modifiers*/}
< TraitModifiers >
< Row TraitType = "TRAIT_YOUR_CIV_ABILITY"
ModifierId = "MODIFIER_YOUR_CIV_ABILITY_EFFECT" />
</ TraitModifiers >
</ Database >
4. Creating Unique Units
Define a unique unit for your civilization:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
< Types >
< Row Type = "UNIT_YOUR_CIV_UNIQUE" Kind = "KIND_UNIT" />
</ Types >
< Units >
< Row UnitType = "UNIT_YOUR_CIV_UNIQUE"
Name = "LOC_UNIT_YOUR_CIV_UNIQUE_NAME"
Description = "LOC_UNIT_YOUR_CIV_UNIQUE_DESCRIPTION"
BaseMoves = "2"
BaseSightRange = "2"
Maintenance = "3"
CoreClass = "CORE_CLASS_MILITARY"
Domain = "DOMAIN_LAND"
FormationClass = "FORMATION_CLASS_LAND_COMBAT"
TraitType = "TRAIT_YOUR_CIV" />
</ Units >
< Unit_Costs >
< Row UnitType = "UNIT_YOUR_CIV_UNIQUE" YieldType = "YIELD_PRODUCTION" Cost = "150" />
</ Unit_Costs >
< Unit_Stats >
< Row UnitType = "UNIT_YOUR_CIV_UNIQUE" Combat = "35" />
</ Unit_Stats >
< UnitReplaces >
< Row CivUniqueUnitType = "UNIT_YOUR_CIV_UNIQUE" ReplacesUnitType = "UNIT_WARRIOR" />
</ UnitReplaces >
{/*Type tags for classification*/}
< TypeTags >
< Row Type = "UNIT_YOUR_CIV_UNIQUE" Tag = "UNIT_CLASS_COMBAT" />
</ TypeTags >
</ Database >
5. Creating Unique Infrastructure
Define unique buildings, improvements, or quarters:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
{/*For a unique building*/}
< Types >
< Row Type = "BUILDING_YOUR_CIV_UNIQUE" Kind = "KIND_BUILDING" />
</ Types >
< Buildings >
< Row BuildingType = "BUILDING_YOUR_CIV_UNIQUE"
Name = "LOC_BUILDING_YOUR_CIV_UNIQUE_NAME"
Description = "LOC_BUILDING_YOUR_CIV_UNIQUE_DESCRIPTION"
TraitType = "TRAIT_YOUR_CIV"
QuarterType = "QUARTER_CITY_CENTER"
IsAgeless = "true"
PurchaseYield = "YIELD_GOLD" />
</ Buildings >
< Building_YieldChanges >
< Row BuildingType = "BUILDING_YOUR_CIV_UNIQUE" YieldType = "YIELD_FOOD" YieldChange = "2" />
</ Building_YieldChanges >
< Building_Costs >
< Row BuildingType = "BUILDING_YOUR_CIV_UNIQUE" YieldType = "YIELD_PRODUCTION" Cost = "120" />
</ Building_Costs >
< BuildingReplaces >
< Row CivUniqueBuildingType = "BUILDING_YOUR_CIV_UNIQUE" ReplacesBuildingType = "BUILDING_GRANARY" />
</ BuildingReplaces >
</ Database >
6. Creating Traditions
Define traditions that persist across Ages:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
< Types >
< Row Type = "TRADITION_YOUR_CIV_UNIQUE" Kind = "KIND_TRADITION" />
</ Types >
< Traditions >
< Row TraditionType = "TRADITION_YOUR_CIV_UNIQUE"
Name = "LOC_TRADITION_YOUR_CIV_UNIQUE_NAME"
Description = "LOC_TRADITION_YOUR_CIV_UNIQUE_DESCRIPTION" />
</ Traditions >
{/*Define tradition effects through modifiers*/}
< Modifiers >
< Row ModifierId = "MODIFIER_YOUR_TRADITION_EFFECT"
ModifierType = "MODIFIER_PLAYER_CITIES_ADJUST_BUILDING_YIELD_CHANGE" />
</ Modifiers >
< ModifierArguments >
< Row ModifierId = "MODIFIER_YOUR_TRADITION_EFFECT"
Name = "BuildingType" Value = "BUILDING_MARKET" />
< Row ModifierId = "MODIFIER_YOUR_TRADITION_EFFECT"
Name = "YieldType" Value = "YIELD_GOLD" />
< Row ModifierId = "MODIFIER_YOUR_TRADITION_EFFECT"
Name = "Amount" Value = "2" />
</ ModifierArguments >
{/*Link tradition to modifiers*/}
< TraditionModifiers >
< Row TraditionType = "TRADITION_YOUR_CIV_UNIQUE"
ModifierId = "MODIFIER_YOUR_TRADITION_EFFECT" />
</ TraditionModifiers >
</ Database >
7. Modifying the Civic Tree
Create a unique Civic Tree branch for your civilization:
<? xml version = "1.0" encoding = "utf-8" ?>
< Database >
< ProgressionTreeNodes >
< Row Type = "NODE_YOUR_CIV_CIVIC_1"
ProgressionTreeType = "TREE_CIVICS_ANTIQUITY"
NodeType = "CIVIC_YOUR_CIV_UNIQUE"
Cost = "85"
Column = "3"
Row = "4"
IsUnlockForCivilizationTypes = "1" />
</ ProgressionTreeNodes >
< ProgressionNodeUnlockTraits >
< Row ProgressionNodeType = "NODE_YOUR_CIV_CIVIC_1"
TraitType = "TRADITION_YOUR_CIV_UNIQUE" />
</ ProgressionNodeUnlockTraits >
< ProgressionTreeNodeUnlockCivilizations >
< Row ProgressionTreeNodeType = "NODE_YOUR_CIV_CIVIC_1"
CivilizationType = "CIVILIZATION_YOUR_CIV" />
</ ProgressionTreeNodeUnlockCivilizations >
</ Database >
8. Adding Localization
Create localization files for your civilization:
<? xml version = "1.0" encoding = "utf-8" ?>
< GameData >
< LocalizedText >
{/*Civilization*/}
< Row Tag = "LOC_CIVILIZATION_YOUR_CIV_NAME" Language = "en_US" >
< Text > Your Civilization </ Text >
</ Row >
< Row Tag = "LOC_CIVILIZATION_YOUR_CIV_DESCRIPTION" Language = "en_US" >
< Text > Description of your civilization's history and characteristics. </ Text >
</ Row >
< Row Tag = "LOC_CIVILIZATION_YOUR_CIV_ADJECTIVE" Language = "en_US" >
< Text > Your Civilization Adjective </ Text >
</ Row >
{/*City Names*/}
< Row Tag = "LOC_CIVILIZATION_YOUR_CIV_CITY_NAMES_1" Language = "en_US" >
< Text > Capital City </ Text >
</ Row >
< Row Tag = "LOC_CIVILIZATION_YOUR_CIV_CITY_NAMES_2" Language = "en_US" >
< Text > Second City </ Text >
</ Row >
{/*Ability*/}
< Row Tag = "LOC_TRAIT_YOUR_CIV_ABILITY_NAME" Language = "en_US" >
< Text > Your Unique Ability Name </ Text >
</ Row >
< Row Tag = "LOC_TRAIT_YOUR_CIV_ABILITY_DESCRIPTION" Language = "en_US" >
< Text > Description of what the ability does in gameplay terms. </ Text >
</ Row >
{/*Unit*/}
< Row Tag = "LOC_UNIT_YOUR_CIV_UNIQUE_NAME" Language = "en_US" >
< Text > Your Unique Unit </ Text >
</ Row >
< Row Tag = "LOC_UNIT_YOUR_CIV_UNIQUE_DESCRIPTION" Language = "en_US" >
< Text > Description of your unique unit and its special abilities. </ Text >
</ Row >
{/*Building*/}
< Row Tag = "LOC_BUILDING_YOUR_CIV_UNIQUE_NAME" Language = "en_US" >
< Text > Your Unique Building </ Text >
</ Row >
< Row Tag = "LOC_BUILDING_YOUR_CIV_UNIQUE_DESCRIPTION" Language = "en_US" >
< Text > Description of your unique building and its benefits. </ Text >
</ Row >
{/*Tradition*/}
< Row Tag = "LOC_TRADITION_YOUR_CIV_UNIQUE_NAME" Language = "en_US" >
< Text > Your Unique Tradition </ Text >
</ Row >
< Row Tag = "LOC_TRADITION_YOUR_CIV_UNIQUE_DESCRIPTION" Language = "en_US" >
< Text > Description of your unique tradition and its effects. </ Text >
</ Row >
</ LocalizedText >
</ GameData >
See all 55 lines
Testing Your Civilization
Install the Mod:
Place your mod folder in the Civilization VII mods directory (<GAME_DATA>/Mods/)
Enable the mod in the game’s mod menu
Initial Testing:
Start a new game with your civilization
Verify all components appear correctly
Test unique abilities, units, and buildings
Age Transition Testing:
Play through an Age transition
Verify traditions persist correctly
Check for any unexpected behavior
Troubleshooting Common Issues:
Missing icons: Check atlas references and file paths
Non-functioning abilities: Verify modifier connections
Game crashes: Check XML syntax and required fields
Unlocalized text: Ensure all text keys are properly defined
Real-World Example: Scythia Civilization
The community-created Scythia civilization mod demonstrates these principles in action:
Folder Structure
< GAME_DATA > /Mods/civmods-izica-civilization-scythia-38056/
├── civilizations/ # Civilization definition
├── traditions/ # Scythia-specific traditions
├── units/ # Unique units like Saka Rider
├── constructibles/ # Buildings and improvements
├── progression-trees/ # Civic tree modifications
├── imports/ # External assets
└── izica-civilization-scythia.modinfo
Key Implementation Features
Age Assignment : Positioned in the Antiquity Age
Unique Units : Includes the Saka Rider with increased mobility
Civilization Ability : Features bonuses related to horseback warfare and plains biomes
Localization : Complete text definitions in multiple languages
Progression Tree Integration : Custom civic nodes for unlocking traditions
Conclusion
Creating a new civilization for Civilization VII involves careful planning, understanding of the Age system, and implementation of multiple interconnected components. By following this guide and studying examples like the Scythia mod, you can create balanced, engaging civilizations that seamlessly integrate with the game’s architecture.
For additional guidance, refer to: