Author: DukeofSerbia
Original Thread: Adding New Faction from Nothing – Step by Step

Adding New Faction from Nothing – Step by Step
Hello.

I write new tutorial for adding new faction from nothing. I call this operation cloning as basically it is.

I needed 4 hours to write whole tutorial and additional 5 minutes to solve files which crashed game in campaign – custom battles worked without problems .

WARNING:
Use my_mod to add new faction, not vanilla folders!

IN THEORY

First I will examine and show all files necessary for adding new faction.

- Unpack all files with Unpacker.
- Open Start/Search/For Files or Folders…
- Look at screenshot how to find files what you need. Type in field Containing text France, England or some other state. Manually set folder data for searching.
- After search you will see a lot of files. Bad? Not bad as you maybe think.



I will first eliminate all files which you don’t need. Those are:
- .textures
- .dds
- .tga
- .tga.dds
- .cas

Those files are important for faction, but initially you don’t need them. They are not needed as you can clone those files from other factions and simple rename it.

What .xml and .txt files are needed?
descr_banners_new.xml
descr_character.txt
descr_lbc_db.txt
descr_model_strat.txt
descr_movies_tracks.xml (NOT necessary from what I researched)
descr_names.txt
descr_offmap_models.txt
descr_sm_factions.txt
export_descr_advice.txt (NOT necessary from what I researched)
export_descr_advice_enums.txt (NOT necessary from what I researched)
export_descr_advice_timing.txt (NOT necessary from what I researched)
export_descr_buildings.txt
export_descr_unit.txt
factionintrosubtitles_lookup.txt (NOT necessary from what I researched)
campaign_descriptions.txt
expanded.txt
export_advice.txt (NOT necessary from what I researched)
export_units.txt (NOT necessary from what I researched)
menu_english.txt (NOT necessary from what I researched)
names.txt
prebattle_speeches_subtitles.txt (NOT necessary from what I researched)
campaign_script.txt (not sure is that necessary)
descr_win_conditions.txt
descr_strat.txt

Basically, there are 14 files with which work is needed. For units you can use mercs as they can be attached to every faction. Plus you can use symbols from other factions.

Just copy one faction in .xml and .txt files and change name from france (or something else) to norway, aragon, austria and etc – it is irrelevant for research.


IN PRACTICE

I will clone France to add new faction – Bulgaria (this is irrelevant – you can put whatever you want).

Step 1

Open descr_banners_new.xml with Notepad. Hit Ctrl+F and type France.
In this file you define banners for faction. I will clone France to new faction Bulgaria. Copy/paste lines for France and rename France into Bulgaria.

Code:
      </Banner>
      <Banner Name="main_spear" MainMesh="data\banners\main_spear.mesh" MiniMesh="data\banners\mini_spear.mesh" GeneralMesh="data\banners\main_general.mesh" BuildingMesh="data\banners\main_spear.mesh" EffectOffsetX="0.0" EffectOffsetY="8.1" EffectOffsetZ="-0.1">
         <Textures>
<Texture Faction="Bulgaria" DiffuseMap="banners\textures\Faction_banner_france.texture" TranslucencyMap="banners\textures\Faction_banner_france_trans.texture"/>
Code:
</Banner>
      <Banner Name="main_infantry" MainMesh="data\banners\main_infantry.mesh" MiniMesh="data\banners\mini_infantry.mesh" GeneralMesh="data\banners\main_general.mesh" BuildingMesh="data\banners\main_spear.mesh" EffectOffsetX="0.0" EffectOffsetY="8.9" EffectOffsetZ="-0.1">
         <Textures>
            <Texture Faction="Bulgaria" DiffuseMap="banners\textures\Faction_banner_france.texture" TranslucencyMap="banners\textures\Faction_banner_france_trans.texture"/>
Code:
</Banner>
      <Banner Name="main_cavalry" MainMesh="data\banners\main_cavalry.mesh" MiniMesh="data\banners\mini_cavalry.mesh" GeneralMesh="data\banners\main_general.mesh" BuildingMesh="data\banners\main_spear.mesh" EffectOffsetX="0.0" EffectOffsetY="8.1" EffectOffsetZ="0.0">
         <Textures>
            <Texture Faction="Bulgaria" DiffuseMap="banners\textures\Faction_banner_france.texture" TranslucencyMap="banners\textures\Faction_banner_france_trans.texture"/>
Code:
</Banner>
      <Banner Name="main_missile" MainMesh="data\banners\main_missile.mesh" MiniMesh="data\banners\mini_missile.mesh" GeneralMesh="data\banners\main_general.mesh" BuildingMesh="data\banners\main_spear.mesh" EffectOffsetX="0.0" EffectOffsetY="8.1" EffectOffsetZ="0.0">
         <Textures>
            <Texture Faction="Bulgaria" DiffuseMap="banners\textures\Faction_banner_france.texture" TranslucencyMap="banners\textures\Faction_banner_france_trans.texture"/>
We added banners for spearmen, infantry, cavalry and missile infantry. Because new faction will not have special Crusader units I will not add their banners. The last on is royal banner used by faction leader:

Code:
<RoyalBanner Name="royal">
      <!--Only single royal banner is supported-->
      <MeshesAndTextures>
	 <MeshAndTexture Faction="Bulgaria" Mesh="data\banners\main_royal.mesh" DiffuseMap="banners\textures\royal_banner_france.texture" TranslucencyMap="banners\textures\royal_banner_trans.texture"/>
In battle banners won’t be French (see screenshot) – just white transparent banners and I don’t know why. Anyway, you will have to work new banners.
-------------------------

Update I

RTR Fan wrote this:


NOTICE AGAIN:
Put descr_banners_new.XML in your main MTWII folder!


Step 2

Open descr_character.txt with Notepad. Now I will use Byzantium for cloning characters.

We’ll first add Named character:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_general
battle_model	Northern_General
battle_equip	gladius, chainmail shirt helmet and rectangular shield
General:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_captain
battle_model	Northern_Captain
battle_equip	gladius, chainmail shirt helmet and rectangular shield
Spy:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_spy
Assassin:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_assassin
Diplomat:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_ambassador
Admiral:

Code:
faction			bulgaria
dictionary		2
strat_model		greek_cities_admiral
Princess:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_princess
Merchant:

Code:
faction			bulgaria
dictionary		2
strat_model		southern_merchant
And finally Religious agents:

Code:
faction			bulgaria
dictionary		2
strat_model		orthodox_priest						; default model
strat_model		orthodox_bishop						; medium level priest
strat_model		orthodox_patriarch					; advanced priest

Step 3

Open descr_lbc_db.txt with Notepad. I am not sure what that file means but it seems that you here define civilians. I will use Russia for that.

Code:
faction bulgaria
model barb_male_peasant			 40
model barb_female_peasant   60

Step 4

Open descr_model_strat.txt with Notepad. In this file you define textures for characters. Because I used Byzantium for pattern I will again use it. I admit that’s the weirdest file I saw so far.

Add following line in under Ambassador for Byzantium:

Code:
texture				bulgaria, models_strat/textures/southern_ambasador_byzantium.tga
Add following line in under Spy for Byzantium:

Code:
texture				bulgaria, models_strat/textures/southern_spy_byzantium.tga
Add following line in under Assassin for Byzantium:

Code:
texture				bulgaria, models_strat/textures/assassin_southern_byzantium.tga
Add following line in under Princess for Byzantium:

Code:
texture				bulgaria, models_strat/textures/SouthernPrincess_byzantium.tga
Add following line in under Merchant for Byzantium:

Code:
texture				bulgaria, models_strat/textures/southern_european_merchant_byzantium.tga
Add following line under Orthodox priest for Byzantium:

Code:
texture				bulgaria, models_strat/textures/orthodox_priest_byzantium.tga
Add following line under Orthodox bishop for Byzantium:

Code:
texture				bulgaria, models_strat/textures/orthodox_bishop_byzantium.tga
Add following line under Orthodox patriarch for Byzantium:

Code:
texture				bulgaria, models_strat/textures/orthodox_patriarch_byzantium.tga
Add following line under General for Byzantium:

Code:
texture				bulgaria, models_strat/textures/late_general_byzantium_strat.tga
Add following line under Captain for Byzantium:

Code:
texture				bulgaria, models_strat/textures/late_northern_captain_byzantium_strat.tga
After that you will see bunch of code lines which were used in Rome Total War. Yes, weird. Somebody left them.
Firstly I ignored all those files and game crashed. :wall: So, it is obligation and has to be used.

I copied parts of files and bolded what I added. I used greek for Bulgaria (same as Byzantium):

Code:
type				princess
skeleton			strat_diplomat
scale				0.6
indiv_range			40
texture				venice, models_strat/textures/princess_julii.tga
texture				sicily, models_strat/textures/princess_brutii.tga
texture				milan, models_strat/textures/princess_scipii.tga
texture				papal_states, models_strat/textures/princess_senate.tga
texture				denmark, models_strat/textures/princess_macedon.tga
texture				egypt, models_strat/textures/princess_egypt.tga
texture				scotland, models_strat/textures/princess_seleucid.tga
texture				aztecs, models_strat/textures/princess_carthage.tga
texture				mongols, models_strat/textures/princess_parthia.tga
texture				turks, models_strat/textures/princess_pontus.tga
texture				france, models_strat/textures/princess_gaul.tga
texture				hre, models_strat/textures/princess_german.tga
texture				england, models_strat/textures/princess_briton.tga
texture				saxons, models_strat/textures/princess_german.tga
texture				normans, models_strat/textures/princess_briton.tga
texture				portugal, models_strat/textures/princess_armenia.tga
texture				poland, models_strat/textures/princess_dacia.tga
texture				byzantium, models_strat/textures/princess_greek.tga
texture			bulgaria, models_strat/textures/princess_greek.tga
texture				moors, models_strat/textures/princess_numidia.tga
texture				russia, models_strat/textures/princess_scythia.tga
texture				spain, models_strat/textures/princess_spain.tga
texture				hungary, models_strat/textures/princess_thrace.tga
texture				timurids, models_strat/textures/princess_parthia.tga
;texture				slave, models_strat/textures/princess_slave.tga
model_flexi_m			models_strat/princess.cas, max
shadow_model_flexi		models_strat/shadow_model_princess.cas, max


type				merchant
skeleton			strat_named_with_army
scale				0.8
indiv_range			40
texture				venice, models_strat/textures/merchant_julii.tga
texture				sicily, models_strat/textures/merchant_brutii.tga
texture				milan, models_strat/textures/merchant_scipii.tga
texture				papal_states, models_strat/textures/merchant_senate.tga
texture				denmark, models_strat/textures/merchant_macedon.tga
texture				egypt, models_strat/textures/merchant_egypt.tga
texture				scotland, models_strat/textures/merchant_seleucid.tga
texture				aztecs, models_strat/textures/merchant_carthage.tga
texture				mongols, models_strat/textures/merchant_parthia.tga
texture				turks, models_strat/textures/merchant_pontus.tga
texture				france, models_strat/textures/merchant_gaul.tga
texture				hre, models_strat/textures/merchant_german.tga
texture				england, models_strat/textures/merchant_briton.tga
texture				saxons, models_strat/textures/merchant_german.tga
texture				normans, models_strat/textures/merchant_briton.tga
texture				portugal, models_strat/textures/merchant_armenia.tga
texture				poland, models_strat/textures/merchant_dacia.tga
texture				byzantium, models_strat/textures/merchant_greek.tga
texture			bulgaria, models_strat/textures/merchant_greek.tga
texture				moors, models_strat/textures/merchant_numidia.tga
texture				russia, models_strat/textures/merchant_scythia.tga
texture				spain, models_strat/textures/merchant_spain.tga
texture				hungary, models_strat/textures/merchant_thrace.tga
texture				timurids, models_strat/textures/merchant_parthia.tga
texture				slave, models_strat/textures/merchant_slave.tga
model_flexi_m			models_strat/merchant.cas, max
shadow_model_flexi		models_strat/shadow_model_merchant.cas, max


type				priest
skeleton			strat_diplomat
scale				0.8
indiv_range			40
texture				venice, models_strat/textures/priest_julii.tga
texture				sicily, models_strat/textures/priest_brutii.tga
texture				milan, models_strat/textures/priest_scipii.tga
texture				papal_states, models_strat/textures/priest_senate.tga
texture				denmark, models_strat/textures/priest_macedon.tga
texture				egypt, models_strat/textures/priest_egypt.tga
texture				scotland, models_strat/textures/priest_seleucid.tga
texture				aztecs, models_strat/textures/priest_carthage.tga
texture				mongols, models_strat/textures/priest_parthia.tga
texture				turks, models_strat/textures/priest_pontus.tga
texture				france, models_strat/textures/priest_gaul.tga
texture				hre, models_strat/textures/priest_german.tga
texture				england, models_strat/textures/priest_briton.tga
texture				saxons, models_strat/textures/priest_german.tga
texture				normans, models_strat/textures/priest_briton.tga
texture				portugal, models_strat/textures/priest_armenia.tga
texture				poland, models_strat/textures/priest_dacia.tga
texture				byzantium, models_strat/textures/priest_greek.tga
texture			bulgaria, models_strat/textures/priest_greek.tga
texture				moors, models_strat/textures/priest_numidia.tga
texture				russia, models_strat/textures/priest_scythia.tga
texture				spain, models_strat/textures/priest_spain.tga
texture				hungary, models_strat/textures/priest_thrace.tga
texture				timurids, models_strat/textures/priest_parthia.tga
texture				slave, models_strat/textures/priest_slave.tga
model_flexi_m			models_strat/priest.cas, max
shadow_model_flexi		models_strat/priest.cas, max


type				bishop
skeleton			strat_assassin
scale				1.2
indiv_range			40
texture				venice, models_strat/textures/bishop_julii.tga
texture				sicily, models_strat/textures/bishop_brutii.tga
texture				milan, models_strat/textures/bishop_scipii.tga
texture				papal_states, models_strat/textures/bishop_senate.tga
texture				denmark, models_strat/textures/bishop_macedon.tga
texture				egypt, models_strat/textures/bishop_egypt.tga
texture				scotland, models_strat/textures/bishop_seleucid.tga
texture				aztecs, models_strat/textures/bishop_carthage.tga
texture				mongols, models_strat/textures/bishop_parthia.tga
texture				turks, models_strat/textures/bishop_pontus.tga
texture				france, models_strat/textures/bishop_gaul.tga
texture				hre, models_strat/textures/bishop_german.tga
texture				england, models_strat/textures/bishop_briton.tga
texture				saxons, models_strat/textures/bishop_german.tga
texture				normans, models_strat/textures/bishop_briton.tga
texture				portugal, models_strat/textures/bishop_armenia.tga
texture				poland, models_strat/textures/bishop_dacia.tga
texture				byzantium, models_strat/textures/bishop_greek.tga
texture			bulgaria, models_strat/textures/bishop_greek.tga
texture				moors, models_strat/textures/bishop_numidia.tga
texture				russia, models_strat/textures/bishop_scythia.tga
texture				spain, models_strat/textures/bishop_spain.tga
texture				hungary, models_strat/textures/bishop_thrace.tga
texture				timurids, models_strat/textures/bishop_parthia.tga
texture				slave, models_strat/textures/bishop_slave.tga
model_flexi_m			models_strat/bishop.cas, max
shadow_model_flexi		models_strat/bishop.cas, max


type				cardinal
skeleton			strat_spy
scale				1.6
indiv_range			40
texture				venice, models_strat/textures/cardinal_julii.tga
texture				sicily, models_strat/textures/cardinal_brutii.tga
texture				milan, models_strat/textures/cardinal_scipii.tga
texture				papal_states, models_strat/textures/cardinal_senate.tga
texture				denmark, models_strat/textures/cardinal_macedon.tga
texture				egypt, models_strat/textures/cardinal_egypt.tga
texture				scotland, models_strat/textures/cardinal_seleucid.tga
texture				aztecs, models_strat/textures/cardinal_carthage.tga
texture				mongols, models_strat/textures/cardinal_parthia.tga
texture				turks, models_strat/textures/cardinal_pontus.tga
texture				france, models_strat/textures/cardinal_gaul.tga
texture				hre, models_strat/textures/cardinal_german.tga
texture				england, models_strat/textures/cardinal_briton.tga
texture				saxons, models_strat/textures/cardinal_german.tga
texture				normans, models_strat/textures/cardinal_briton.tga
texture				portugal, models_strat/textures/cardinal_armenia.tga
texture				poland, models_strat/textures/cardinal_dacia.tga
texture				byzantium, models_strat/textures/cardinal_greek.tga
texture			bulgaria, models_strat/textures/cardinal_greek.tga
texture				moors, models_strat/textures/cardinal_numidia.tga
texture				russia, models_strat/textures/cardinal_scythia.tga
texture				spain, models_strat/textures/cardinal_spain.tga
texture				hungary, models_strat/textures/cardinal_thrace.tga
texture				timurids, models_strat/textures/cardinal_parthia.tga
texture				slave, models_strat/textures/cardinal_slave.tga
model_flexi_m			models_strat/cardinal.cas, max
shadow_model_flexi		models_strat/cardinal.cas, max
Long file indeed. But, not the end.

Code:
type				diplomat
skeleton			strat_diplomat
scale				0.7
indiv_range			40
texture				venice, models_strat/textures/diplomat_julii.tga
texture				sicily, models_strat/textures/diplomat_brutii.tga
texture				milan, models_strat/textures/diplomat_scipii.tga
texture				papal_states, models_strat/textures/diplomat_senate.tga
texture				denmark, models_strat/textures/diplomat_macedon.tga
texture				egypt, models_strat/textures/diplomat_egypt.tga
texture				scotland, models_strat/textures/diplomat_seleucid.tga
texture				aztecs, models_strat/textures/diplomat_carthage.tga
texture				mongols, models_strat/textures/diplomat_parthia.tga
texture				turks, models_strat/textures/diplomat_pontus.tga
texture				france, models_strat/textures/diplomat_gaul.tga
texture				hre, models_strat/textures/diplomat_german.tga
texture				england, models_strat/textures/diplomat_briton.tga
texture				saxons, models_strat/textures/diplomat_german.tga
texture				normans, models_strat/textures/diplomat_briton.tga
texture				portugal, models_strat/textures/diplomat_armenia.tga
texture				poland, models_strat/textures/diplomat_dacia.tga
texture				byzantium, models_strat/textures/diplomat_greek.tga
texture			bulgaria, models_strat/textures/diplomat_greek.tga
texture				moors, models_strat/textures/diplomat_numidia.tga
texture				russia, models_strat/textures/diplomat_scythia.tga
texture				spain, models_strat/textures/diplomat_spain.tga
texture				hungary, models_strat/textures/diplomat_thrace.tga
texture				timurids, models_strat/textures/diplomat_parthia.tga
;texture				slave, models_strat/textures/diplomat_slave.tga
model_flexi_m		models_strat/diplomat.cas, max
shadow_model_flexi	models_strat/diplomat.cas, max


type				spy
skeleton			strat_spy
scale				0.7
indiv_range			40
texture				venice, models_strat/textures/spy_julii.tga
texture				sicily, models_strat/textures/spy_brutii.tga
texture				milan, models_strat/textures/spy_scipii.tga
texture				papal_states, models_strat/textures/spy_senate.tga
texture				denmark, models_strat/textures/spy_macedon.tga
texture				egypt, models_strat/textures/spy_egypt.tga
texture				scotland, models_strat/textures/spy_seleucid.tga
texture				aztecs, models_strat/textures/spy_carthage.tga
texture				mongols, models_strat/textures/spy_parthia.tga
texture				turks, models_strat/textures/spy_pontus.tga
texture				france, models_strat/textures/spy_gaul.tga
texture				hre, models_strat/textures/spy_german.tga
texture				england, models_strat/textures/spy_briton.tga
texture				saxons, models_strat/textures/spy_german.tga
texture				normans, models_strat/textures/spy_briton.tga
texture				portugal, models_strat/textures/spy_armenia.tga
texture				poland, models_strat/textures/spy_dacia.tga
texture				byzantium, models_strat/textures/spy_greek.tga
texture			bulgaria, models_strat/textures/spy_greek.tga
texture				moors, models_strat/textures/spy_numidia.tga
texture				russia, models_strat/textures/spy_scythia.tga
texture				spain, models_strat/textures/spy_spain.tga
texture				hungary, models_strat/textures/spy_thrace.tga
texture				timurids, models_strat/textures/spy_parthia.tga
;texture				slave, models_strat/textures/spy_slave.tga
model_flexi_m		models_strat/spy.cas, max
shadow_model_flexi	models_strat/spy.cas, max


;;TEMPORARY;;

type				assassin
skeleton			strat_assassin
scale				0.7
indiv_range			40
texture				venice, models_strat/textures/assassin_julii.tga
texture				sicily, models_strat/textures/assassin_brutii.tga
texture				milan, models_strat/textures/assassin_scipii.tga
texture				papal_states, models_strat/textures/assassin_senate.tga
texture				denmark, models_strat/textures/assassin_macedon.tga
texture				egypt, models_strat/textures/assassin_egypt.tga
texture				scotland, models_strat/textures/assassin_seleucid.tga
texture				aztecs, models_strat/textures/assassin_carthage.tga
texture				mongols, models_strat/textures/assassin_parthia.tga
texture				turks, models_strat/textures/assassin_pontus.tga
texture				france, models_strat/textures/assassin_gaul.tga
texture				hre, models_strat/textures/assassin_german.tga
texture				england, models_strat/textures/assassin_briton.tga
texture				saxons, models_strat/textures/assassin_german.tga
texture				normans, models_strat/textures/assassin_briton.tga
texture				portugal, models_strat/textures/assassin_armenia.tga
texture				poland, models_strat/textures/assassin_dacia.tga
texture				byzantium, models_strat/textures/assassin_greek.tga
texture			bulgaria, models_strat/textures/assassin_greek.tga
texture				moors, models_strat/textures/assassin_numidia.tga
texture				russia, models_strat/textures/assassin_scythia.tga
texture				spain, models_strat/textures/assassin_spain.tga
texture				hungary, models_strat/textures/assassin_thrace.tga
texture				timurids, models_strat/textures/assassin_parthia.tga
;texture				slave, models_strat/textures/assassin_slave.tga

model_flexi			models_strat/assassin.cas, max
shadow_model_flexi	models_strat/assassin.cas, max
Now to add General:

Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;GREEK GENERALS

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

type				sm_greek_general
skeleton			strat_named_with_army
scale				0.7
indiv_range			40
texture				denmark, models_strat/textures/officer_greek_general_macedon.tga
texture				scotland, models_strat/textures/officer_greek_general_seleucid.tga
texture				byzantium, models_strat/textures/officer_greek_general_greece.tga
texture			bulgaria, models_strat/textures/officer_greek_general_greece.tga
texture				hungary, models_strat/textures/officer_greek_general_thrace.tga
model_flexi_m		models_strat/officer_greek_general_high.cas, max
shadow_model_flexi	models_strat/shadow_model_sword.cas, max

type				sm_greek_lesser_general
skeleton			strat_named_with_army
scale				0.7
indiv_range			40
texture				denmark, models_strat/textures/unit_greek_militia_hoplite_macedon.tga
texture				scotland, models_strat/textures/unit_greek_militia_hoplite_seleucid.tga
texture				byzantium, models_strat/textures/unit_greek_militia_hoplite_greek.tga
texture				bulgaria, models_strat/textures/unit_greek_militia_hoplite_greek.tga
texture				hungary, models_strat/textures/unit_greek_militia_hoplite_thrace.tga
model_flexi_m		models_strat/strat_greek_lesser_general.CAS, max
shadow_model_flexi	models_strat/shadow_model_sword.cas, max
I admit that I don’t know what is meaning of those lines, but again, it has to be like that.

Add following line under Admiral for Byzantium:

Code:
type				greek_cities_admiral
skeleton			strat_navy
indiv_range			40
texture				byzantium, models_strat/textures/navy_galley.tga
texture			bulgaria, models_strat/textures/navy_galley.tga
model_flexi			models_strat/navy_galley.cas, max
shadow_model_flexi	models_strat/navy_roman_shadow.cas, max
Weird, but it has to be like that. DON’T add as separate because game will crash when campaign starts to load (happened to me)!
-------------------------

Update I

Adding new general and captain in campaign map with new texture

I added new Bulgarian general (in my case for my mod):
Code:
texture				bulgaria, models_strat/textures/late_general_bulgaria_strat.tga
And captain:
Code:
texture				bulgaria, models_strat/textures/late_northern_captain_bulgaria_strat.tga
If you want to have new looking general and/or captain (not using textures from other faction), you need to create new textures for them. And how to do that is really easy if you know to work in Photoshop. Texture file is in tga.dds format.


Step 5

Open descr_names.txt with Notepad. Here we’ll define names, surnames and female names for our faction. Those names are in close relation with names.txt and names you add here must be added in names.txt (later about that file).

Add following line (I will add just few names):

Code:
faction: bulgaria

	characters
		Alexander
		Iwan
		Michael
	
	surnames
		Aseniden
		Shishman
	
	women
	 	Elena
		Marija
This is end of step 5.


Step 6

Open descr_offmap_models.txt with Notepad. In this file you define models (.cas) used by faction in campaign map.

We’ll add navy for our faction. This is same for the all factions. Add following line:

Code:
faction bulgaria
	{
		large 	data/models_off_map/bireme_OFF_MAP.CAS	100 0
		medium	data/models_off_map/bireme_OFF_MAP.CAS	100 0
		small	data/models_off_map/bireme_OFF_MAP.CAS	100 0
	}
And this is it.


Step 7

Open descr_sm_factions.txt with Notepad. This file is one of the most important. In that file we set up our faction. Because I used France for symbols of our new faction I will use them because of that but I will change all lines which has nothing with symbols.

Code:
faction						bulgaria
culture						eastern_european
religion					orthodox
symbol						models_strat/symbol_france.CAS
rebel_symbol				models_strat/symbol_rebels.CAS
primary_colour				red 85, green 187, blue 80
secondary_colour			red 255, green 10, blue 10
loading_logo				loading_screen/symbols/symbol128_france.tga
standard_index				10
logo_index					FACTION_LOGO_FRANCE
small_logo_index			SMALL_FACTION_LOGO_FRANCE
triumph_value				5
intro_movie					faction/major_intro.bik
victory_movie				faction/france_win.bik
defeat_movie				faction/france_lose.bik
death_movie					faction/france_lose.bik
custom_battle_availability	no
can_sap						no
prefers_naval_invasions		no
can_have_princess			yes
has_family_tree					yes
I changed culture, religion, primary color (into green), secondary color (into red) and set up no for custom battles.

WARNING!!!

Don’t disable movies under any circumstances because game will crash when campaign loads. I do that and, thanks God, found quickly what caused problem (after problem with descr_model_strat.txt). This was my last problem.
Use following line in .cfg file to disable video:

Code:
[video]
movies = 0
-------------------------

Update I

In data\menu\symbols you can find all coats of arms for factions.

Folder fe_buttons_24

If you want to add new symbols for faction (in my case Bulgaria) you have to create the new ones in .tga file format. So, it has to be:
symbol24_ bulgaria.tga
symbol24_ bulgaria_grey.tga
symbol24_ bulgaria_roll.tga
symbol24_ bulgaria_select.tga

Folder fe_buttons_48

The same as previous folder, just coats of arms are bigger.

symbol48_ bulgaria.tga
symbol48_ bulgaria_grey.tga
symbol48_ bulgaria_roll.tga
symbol48_ bulgaria_select.tga

Folder fe_faction_units

Here you add your special unit for faction. In my case it is bulgaria.tga. That special unit is shown when you choose faction in Campaign.

Folder fe_symbols_80

Here are coats of arms, but different from folders fe_buttons_24 and fe_buttons_48 (they are round here). To add brand new you need to create bulgaria.tga (in my case).

Now, to enable those new coats of arms for your new faction, open descr_sm_factions.txt. The following lines:
Code:
logo_index					FACTION_LOGO_FRANCE
small_logo_index			SMALL_FACTION_LOGO_FRANCE
Change into:

Code:
logo_index					FACTION_LOGO_BULGARIA
small_logo_index			SMALL_FACTION_LOGO_ BULGARIA
Special thanks to DarkKnight who provided solution for that.

Also he wrote how to make proper standard in strategic (campaign) map:



I will add that symbol.tga files for standards are in data\banners folder.

NOTICE:
In Custom battle you can have ONLY 21 faction, which I think is obvious. If you want to see your new faction in Custom battle, put yes, but change to no for some other faction. Otherwise game will crash.


Step 8

Open export_descr_buildings.txt with Notepad. Here we’ll define what building can have and build our new faction plus what units can be recruited.

We don’t have to add any new building as they are mostly associated with culture (there are exceptions, of course). What we’ll add are units. Because every faction can have mercenary units I will add unit of Bulgarian Brigands Mercs to mustering_hall just for our tutorial.

Code:
recruit_pool "Bulgarian Brigands Mercs"  1   0.5   4  0  requires factions { bulgaria, }

Step 9

Open export_descr_unit.txt with Notepad. Here we define units what our faction can have. First, we need general unit. Because our faction doesn’t have textures for general (he will invisible) we’ll use mercenary unit for it.

I will use for general unit Kwarizmian Cavalry. I bolded what has been added:

Code:
type             Kwarizmian Cavalry
dictionary       Kwarizmian_Cavalry      ; Kwarizmian Cavalry
category         cavalry
class            heavy
voice_type       Heavy
accent         Arabic
banner faction   main_cavalry
banner holy      crusade_cavalry
soldier          Kwarizmian_Cavalry, 32, 0, 1
mount            eastern armoured horse
mount_effect     elephant -4, camel -4
attributes       sea_faring, hide_forest, hardy, can_withdraw, can_formed_charge, mercenary_unit, general_unit
formation        2, 4.4, 3, 6, 3, square, wedge
stat_health      1, 0
stat_pri         10, 3, no, 0, 0, melee, melee_blade, piercing, spear, 25, 1
;stat_pri_ex      0, 0, 0
stat_pri_attr    no
stat_sec         11, 0, no, 0, 0, melee, melee_blade, piercing, sword, 25, 1
;stat_sec_ex      0, 0, 0
stat_sec_attr    no
stat_pri_armour  8, 5, 0, metal
;stat_armour_ex   8, 0, 0, 0, 5, 0, 0, metal
stat_sec_armour  0, 0, flesh
stat_heat        3
stat_ground      0, 1, -6, -1
stat_mental      9, normal, trained
stat_charge_dist 45
stat_fire_delay  0
stat_food        60, 300
stat_cost        1, 1150, 370, 120, 95, 1150, 4, 180
armour_ug_levels 4
armour_ug_models Kwarizmian_Cavalry
ownership        slave, egypt, timurids, mongols, bulgaria
era 1            egypt, timurids, mongols
;unit_info        10, 0, 13
Unit Bulgarian Brigands Mercs will be our only unit in campaign (because we just test). Add Bulgaria as owner:




Step 10

Open campaign_descriptions.txt with Notepad in text folder (you need to convert that file with alpaca’s strings.bin converter).
In this file you describe campaign of your faction. I will use France and change only string which defines your faction:

Code:
{IMPERIAL_CAMPAIGN_BULGARIA_TITLE}Tzardom of Bulgaria
{IMPERIAL_CAMPAIGN_BULGARIA_DESCR}DIFFICULTY Factor: Estimated MODERATE\n\nFrance is a shining example of feudalism in its rawest, and arguably, most delicate form. The French lords eagerly embrace the system that splits the country up into smaller provinces, duchies and fiefdoms, actively building up their forces to ensure their own security and power. About the only thing the French lack at this point is a sense of unity...\n\nThe Ile de France may be where the monarchy resides, but the royal family rarely leave Paris. This is not because of a great love for the city, but rather because the surrounding lands are under the shadow of bastions owned by "Robber Barons" that serve their own interests. Frankly, the way things are now, the King isn't truly safe to wander a kingdom that is supposedly his.\n\nThe Normans are clearly serving their own best interests, having recently taken England for themselves, it's hard to believe that they will be content to stop there. Other provinces such as Aquitaine, Burgundy, Brittany and Flanders aren't quite so dangerously ambitious... exercising a little authority over these lands looks like an essential move for the French if they're to have any hope of creating a power base that can stave off the might of the Holy Roman Empire to the east. Even less pressing concerns like Spanish and Milanese expansion will soon become a royal headache for the monarchy if France does not establish solid fronts to the south.

Step 11

Open expanded.txt with Notepad in text folder (you need to convert that file with alpaca’s strings.bin converter). Here you define what you see in game (texts). I will copy Russia and just proper rename to Bulgaria.

I won’t write here how to do that because it is very easy and a bit boring.

Just example:

Code:
{EMT_BULGARIA_SPY}Bulgarian Spy
{EMT_BULGARIA_ASSASSIN}Bulgarian Assassin
{EMT_BULGARIA_DIPLOMAT}Bulgarian Diplomat
{EMT_BULGARIA_ADMIRAL}Bulgariand Navy
{EMT_BULGARIA_GENERAL}Bulgarian Army
{EMT_BULGARIA_NAMED_CHARACTER}Bulgarian Family Member
{EMT_BULGARIA_NAMED_GENERAL}Bulgarian General
{EMT_BULGARIA_PRINCESS}Bulgarian Princess
{EMT_BULGARIA_MERCHANT}Bulgarian Merchant
{EMT_BULGARIA_PRIEST}Bulgarian Priest
{EMT_BULGARIA_PRIEST_1}Bulgarian Bishop
{EMT_BULGARIA_PRIEST_2}Bulgarian Cardinal
And etc.
-------------------------

Update I

This is full code which you need:
Code:
{BULGARIA}Carstvo Bălgarija
{EMT_BULGARIA_SPY}Bulgarian Spy
{EMT_BULGARIA_ASSASSIN}Bulgarian Assassin
{EMT_BULGARIA_DIPLOMAT}Bulgarian Diplomat
{EMT_BULGARIA_ADMIRAL}Bulgarian Navy
{EMT_BULGARIA_GENERAL}Bulgarian Army
{EMT_BULGARIA_NAMED_CHARACTER}Bulgarian Family Member
{EMT_BULGARIA_NAMED_GENERAL}Bulgarian General
{EMT_BULGARIA_PRINCESS}Bulgarian Princess
{EMT_BULGARIA_MERCHANT}Bulgarian Merchant
{EMT_BULGARIA_PRIEST}Bulgarian Priest
{EMT_BULGARIA_PRIEST_1}Bulgarian Bishop
{EMT_BULGARIA_PRIEST_2}Bulgarian Cardinal
{EMT_BULGARIA_VILLAGE}Bulgarian Village
{EMT_BULGARIA_TOWN}Bulgarian Town
{EMT_BULGARIA_LARGE_TOWN}Bulgarian Large Town
{EMT_BULGARIA_CITY}Bulgarian City
{EMT_BULGARIA_LARGE_CITY}Bulgarian Large City
{EMT_BULGARIA_HUGE_CITY}Bulgarian Huge City
{EMT_BULGARIA_WOODEN_CASTLE}Bulgarian Motte and Bailey
{EMT_BULGARIA_STONE_KEEP}Bulgarian Wooden Castle
{EMT_BULGARIA_CASTLE}Bulgarian Castle
{EMT_BULGARIA_LARGE_CASTLE}Bulgarian Fortress
{EMT_BULGARIA_FORTRESS}Bulgarian Citadel
{EMT_BULGARIA_STAR_FORT}Bulgarian Star Fort
{EMT_BULGARIA_CAPITAL}Bulgarian Capital
{EMT_BULGARIA_FORT}Bulgarian Fort
{EMT_BULGARIA_PORT}Bulgarian Port
{EMT_BULGARIA_DOCK}Bulgarian Docks
{EMT_BULGARIA_FISHING_VILLAGE}Bulgarian Fishing Village
{EMT_BULGARIA_WATCHTOWER}Bulgarian Watchtower
{EMT_BULGARIA_FACTION_LEADER}Bulgarian Faction Leader
{EMT_BULGARIA_FACTION_HEIR}Bulgarian Faction Heir
{EMT_BULGARIA_FACTION_LEADER_TITLE}Faction Leader
{EMT_BULGARIA_FACTION_HEIR_TITLE}Faction Heir
{EMT_BULGARIA_FACTION_LEADER_NAME}Tzar %S
{EMT_BULGARIA_FACTION_HEIR_NAME}Prince %S
{EMT_BULGARIA_FORMER_FACTION_LEADER_TITLE}Tzar
{EMT_YOUR_FORCES_ATTACK_ARMY_BULGARIA}Your forces attack an army of Bulgaria
{EMT_YOUR_FORCES_ATTACK_NAVY_BULGARIA}Your forces attack a navy of Bulgaria
{EMT_YOUR_FORCES_AMBUSH_ARMY_BULGARIA}Your forces ambush an army of Bulgaria
{EMT_YOUR_FORCES_ATTACKED_ARMY_BULGARIA}Your forces are attacked by an army of Bulgaria
{EMT_YOUR_FORCES_ATTACKED_NAVY_BULGARIA}Your forces are attacked by a navy of Bulgaria
{EMT_YOUR_FORCES_AMBUSHED_ARMY_BULGARIA}Your forces are ambushed by an army of Bulgaria
{EMT_VICTORY_BULGARIA}The Bulgaria is Victorious
{BULGARIA_STRENGTH}Good cavalry and medium infantry troops. 
{BULGARIA_WEAKNESS}Lacking in gunpowder units.
{BULGARIA_UNIT}Bălgarski Strelci
Unicode support in game is a bit weird. In some cases Unicode support is perfect, and in some game just don’t see letter. The most special letters game sees properly.


Step 12

Open names.txt with Notepad in text folder (you need to convert that file with alpaca’s strings.bin converter). Here you define all names, surnames and women names in game.
Because I already added names in descr_names.txt in my case I added in the end of lines the following:

Code:
{Alexander}Alexander
{Iwan}Iwan
{Michael}Michael
{Aseniden}Aseniden
{Shishman}Shishman
{Elena}Elena
{Marija}Marija
Name in {brackets} must be identical with names in descr_names.txt. What will be written after it is absolutely irrelevant. Name after brackets will be shown in game and has full Unicode support.


Step 13

Open descr_win_conditions.txt with Notepad in data\world\maps\campaign\imperial_campaign. Here you define what your faction needs to win.

I put this:

Code:
bulgaria
hold_regions Constantinople_Province
take_regions 35
short_campaign hold_regions ;Roman_Province Jerusalem_Province
take_regions 15
outlive Byzantium

Step 14

Open descr_strat.txt in data\world\maps\campaign\imperial_campaign. Here we’ll define Bulgaria as starting faction and place it on campaign map.

First add Bulgaria as playable faction:

Code:
campaign		imperial_campaign
playable
	england
	france
	hre
	spain
	venice
	sicily
	milan
	scotland
	byzantium
	russia
	moors
	turks
	egypt
	denmark
	portugal
	poland
	hungary
	bulgaria
end
unlockable
end
nonplayable
	papal_states
	aztecs
	mongols
	timurids
	slave
end
Now we’ll add Bulgaria in campaign map.

Code:
faction bulgaria, fortified smith
ai_label	default 
denari	6000
denari_kings_purse	1000
settlement castle
{
	level town
	region Sofia_Province

	year_founded 0
	population 2200
	plan_set default_set
	faction_creator russia
	building
	{
		type core_castle_building wooden_castle
	}
	building
	{
		type castle_barracks mustering_hall
	}
}

character	Iwan, named character, male, leader, age 36, x 200, y 103 
traits Factionleader 1 , GoodCommander 1 , Intelligent 2 , VictorVirtue 3 , PublicFaith 2 , BattleDread 2 , StrategyDread 2 , ReligionStarter 1 
army
unit		Kwarizmian Cavalry				exp 1 armour 0 weapon_lvl 0
unit		Bulgarian Brigands Mercs				exp 0 armour 0 weapon_lvl 0
unit		Bulgarian Brigands Mercs				exp 0 armour 0 weapon_lvl 0
unit		Bulgarian Brigands Mercs				exp 0 armour 0 weapon_lvl 0
unit		Bulgarian Brigands Mercs				exp 0 armour 0 weapon_lvl 0
If you want more characters, settlements and building add them. I copied English faction leader .
First unit after character must be general unit. In our case it is Kwarizmian Cavalry.


FINAL NOTICE:

Erase map.rwm in data\world\maps\base. I didn’t and it worked but if you work with descr_strat.txt again (and I think whole world folder) do it or you want see changes.


APPENDIX I

My advice is that you firstly add Normans and Saxons from tutorial as factions and convert them. You can read about it here. 21 factions from vanilla + rebels + 2 from tutorial and the rest (7) you need to add.

For adding Normans and Saxons read this tutorial by selenius4tsd:
How To Create a New Faction (using Normans/Saxons)
http://www.twcenter.net/forums/showthread.php?t=76202

NOTICE
You can add all new nine factions from nothing. Adding Normans and Saxons from tutorial as factions is not necessary, because game will work without problems (look Appendix II).

Speaker has German voice (Reich win again! and similar), and I didn’t find way to change it.


APPENDIX II

Vlad added nine factions from nothing. He posted that he modified the following files:

Code:
descr_strat.txt
descr_win_conditions.txt
------------
export_descr_unit.txt
descr_offmap_models.txt
descr_model_strat.txt
descr_lbc_db.txt
descr_cultures.txt
descr_character.txt
descr_sm_factions.txt
descr_names.txt
export_descr_buildings.txt
-----------------------------------------
menu_english.txt
campaign_descriptions.txt
expanded.txt
I found 100% that files descr_cultures.txt and menu_english.txt are completely irrelevant for adding new faction.

My tutorial has two more steps. The answer is easy – vlad said:


That’s why he didn’t write banner’s file.

Link:
http://www.twcenter.net/forums/showt...t=72270&page=3


APPENDIX III

This tutorial doesn’t cover work with units, but I will help with adding captain and general for new faction.

Before start, I highly recommended that you look this thread:
http://www.twcenter.net/forums/showthread.php?t=81896

Use formatted battle_models.modeldb by KnightErrant as your life will be much less frustrating.

Captain
Open battle_models.modeldb and hit Ctrl+F and type 16 northern_captain.

Add this line of code:

Code:
8 bulgaria 
99 unit_models/_Generals_and_Captains/Northern_Captain/textures/late_northern_captain_bulgaria.texture 
97 unit_models/_Generals_and_Captains/Northern_Captain/textures/late_northern_captain_normal.texture 0
Change 19 into 20 after this line:
Code:
78 unit_models/_Generals_and_Captains/Northern_Captain/northern_captain_lod3.mesh 6400
Otherwise game will crash in the start.

NOTICE
My friend for our mod made new texture for captain late_northern_captain_bulgaria.texture. If you don’t have new texture, you can use from other faction.

You added captain, but you need to add attachment to him, too.

Code:
8 bulgaria 
62 unit_models/AttachmentSets/Final General_portugal_diff.texture 
62 unit_models/AttachmentSets/Final General_portugal_norm.texture 0
Attachment is irrelevant, as all factions have the same, and that’s why I put Portugal.

Change 19 into 20 after this line:
Code:
6 saxons 
94 unit_models/_Generals_and_Captains/Northern_Captain/textures/late_northern_captain_hre.texture 
97 unit_models/_Generals_and_Captains/Northern_Captain/textures/late_northern_captain_normal.texture 0
General
General is after captain. Just scroll a bit down.

Add this line of code:

Code:
8 bulgaria 
90 unit_models/_Generals_and_Captains/Northern_General/textures/late_general_bulgaria.texture 
88 unit_models/_Generals_and_Captains/Northern_General/textures/late_general_normal.texture 0
Change 18 into 19 after this line:
Code:
78 unit_models/_Generals_and_Captains/Northern_General/northern_general_lod3.mesh 6400
Otherwise game will crash in the start.

You added general, but you need to add attachment to him, too.

Code:
8 bulgaria 
62 unit_models/AttachmentSets/Final General_portugal_diff.texture 
62 unit_models/AttachmentSets/Final General_portugal_norm.texture 0
Attachment is irrelevant, as all factions have the same, and that’s why I put Portugal.

Change 18 into 19 after this line:
Code:
6 saxons 
85 unit_models/_Generals_and_Captains/Northern_General/textures/late_general_hre.texture 
88 unit_models/_Generals_and_Captains/Northern_General/textures/late_general_normal.texture 0
Look Screenshots II – if you did well, your new captains and generals will show.


APPENDIX IV

Many useful tutorials can be found, so, proper question post there:

Musashi (from ORG) wrote this excellent tutorial:
Adding a unit to the game
http://forums.totalwar.org/vb/showthread.php?t=75706

M3rcury15 wrote excellent tutorial, too:
Add other faction units for new factions
http://www.twcenter.net/forums/showthread.php?t=74945

Zorgrath wrote this:
How to create a dismounted unit
http://www.twcenter.net/forums/showthread.php?t=78236

AliAS wrote nice tutorial, too (not in direct link with adding new faction, but useful):
New face of Faction Icon
http://www.twcenter.net/forums/showthread.php?t=84566

SCREENSHOTS I

This is campaign screenshot when you choose faction. Ugly, isn’t it? You don’t see coat of arms and map is default. That is expected as I didn’t work with graphics files.



This is out faction leader and his starting army in campaign map. Notice French flags and Byzantine look of faction leader .



In our castle we can recruit only Bulgarian Brigands.



Diplomacy section with French coat of arms.



Finally battle – I attacked so called “Byzantium” and you see transparent white banners and missing coat of arms. And missing general :laugh4:.




SCREENSHOTS II

Many things changed in the mean time.

My friend made new texture for captain and general in campaign map:


And we created new general’s unit for new faction, and this is how general looks in the battle.