In a prior Developer Blog (https://forums.galciv3.com/461709/page/1/ ) I talked about all the cool stuff you can do in the Custom Race tool. We give you a bunch of images, traits, abilities and settings to create whatever race you want.
But, if you really want to make something unique you can go so much further. In this post I’ll talk about how modding works in Galactic Civilizations III and show you how I used it to make a new faction for the game, the Ghosts of Abbadon.
How does modding work?
Mods are files placed in your My Games/GalCiv3/Mods/ directory. They can include graphic and XML files. You can have as many mods in here as you want, but keep them in their own directories (so if you want to remove one it’s easy to do). The plan is to get some Steam Workshop integration in here to help manage this at some point. But first we are getting the system working.
NOTE: We use a file structure to help with organization, but the game actually just searches all subdirectories when looking for files. So your files must have unique names (even if they aren' in the same directory).
At a high level there are three things you want to do when modding. You either want to add something, modify something or delete something.
Now let’s use this power to create a new faction, the Ghosts of Abbadon. The Ghosts are unlike any other faction in GC3, and we want to be able to do more with them than the Custom Race tool normally allows. In this case they have ruined their homeworld and used the last of their resources to prepare 3 colony ships to go out and attempt to find a new home.
How do we do this?
1: Copy the FactionDefs.xml file into my new mods \My Games\GalCiv3\Ghost\Game\ directory.
2: Rename it from FactionDefs.xml to FactionDefs_Ghost.xml. (I don’t want to overwrite the existing factiondefs, I just want to add a new one).
3: Open up the file (I use Notepad++ for this) delete the other entries, except maybe one I am about to use as a template, and add the XML for my faction.
There are lots of things set here. But the important things here are that <HomeStarSystem> is set to “DeadSystem” where normal factions have a Colony, Scout and Survey ship in <StartingShips> they have 3 Colony ships instead. We could put anything we want in here, 12 Colony ships, a Battleship, a fleet of flying toasters, etc.
I played with a bunch of options with their starting ships. At first I gave them the extra colony ships in addition to the normal Survey and Scout. But when it was just Colony ships it made them feel a more desperate. They don’t have the luxury of having a scout out finding planets for them, or time spent collecting anomalies. When they choose to set out for a star it becomes a dramatic step, and when there is nothing there it is a tragedy of the time of a very valuable resource wasted. And when they find a worthwhile planet it is a huge joy. The hardest part is finding a mediocre planet, do they keep going, looking for something better, or settle?
I used the Terran definition for most of their art aspects, and I’m using one of the extra faction foregrounds and backgrounds that come with the game (“Devilgirl”) for the leader art. We could create our own versions of any of this. If you had a custom image you wanted to use for your faction you would just reference it here, I think Paul has one for his dog Maggie.
The only custom art I created for them is that I created a new material in <Material1>, Ghost_Ship_Material_01.
To do that I added a new file for my mod, this time in the \Mods\Ghost\Core\ directory. I’ve used it to define a new material that I can use to create ships. Materials aren’t colors (you will want to add appearances to modify ship colors). They define the way that light interacts with the surface of the object and I wanted to try some things out to make the ghost ships look unusual.
I really don’t know what I’m doing here. But I love having lots of levers available to tweak and play with. So I’m not asking any modder to understand what all these options mean. Instead do what I did, make a bunch of new materials with all sorts of values then load up the game and check them out. I’ve created new color schemes and materials, and I will add them to the base game to make it easy for non-modders to play with. But modders can go wild.
For this new material I bumped the Reflectivity to a crazy 10.2. That’s going to make my ship look like it is made from mirrors. It’s hard to appreciate in a still picture, but it looks pretty cool in motion.
So I have some cool looking ships and a fun faction to play as. I’m going to go play some Galactic Civilizations III.
And one last thing, I just noticed Brad (Frogboy) mentioned the following in the GalCiv III: Making your own custom race thread.
Post-release.
So this is a feature I think we'll be seeing (thank goodness).
Thx ever so much trumpeter87 !
How do I change the name of my custom faction's home system and its planets? For example, I created my own human faction. Their home planet is named Earth, but so is the star (which would be the Sun), and the other planets like Mars or Jupiter are Earth III or Earth IV, for example.
Also, how do I change the image that shows up in the screen when you start a new game? I mean the screen where it is written the faction's description, strengths and weaknesses, whose image usually is a large portrait of your faction leader. Yeah, I want to change that image.
did you use the editor or did you edit the factiondefs.xml file ????
1. Don't have a <HomePlanetName> in FactionDefs
2. Add your planets to PlanetDefs (with DisplayName being the name you want it)
3. Add those planets to your StarSystem in StarSystemDefs
Eg, I have
In FactionDefs
<HomeStarSystem>StarSystem</HomeStarSystem>
and in StarSystemDefs (in StarSystem)
<OrbitLane> <LaneType>HabitableZone</LaneType> <Body> <BodyType>Planet</BodyType> <BodyDef>Planet1</BodyDef> <IsHomeworld>true</IsHomeworld> </Body> <Body> <BodyType>Planet</BodyType> <BodyDef>Planet2</BodyDef> </Body> </OrbitLane>
and in PlanetDefs
<Planet> <InternalName>Planet1</InternalName> <DisplayName>Planet 1</DisplayName> <PlanetType>Habitable</PlanetType> <PlanetClass>20</PlanetClass> <PlanetTrait>Planet2World</PlanetTrait> <ArtDefine>Planet1Art</ArtDefine> </Planet> <Planet> <InternalName>Planet2</InternalName> <DisplayName>Planet 2</DisplayName> <PlanetType>Habitable</PlanetType> <PlanetClass>20</PlanetClass> <PlanetTrait>Planet2World</PlanetTrait> <ArtDefine>Planet2Art</ArtDefine> </Planet>
I used the ingame editor.
1. Don't have a <HomePlanetName> in FactionDefs2. Add your planets to PlanetDefs (with DisplayName being the name you want it)3. Add those planets to your StarSystem in StarSystemDefs Eg, I haveIn FactionDefs<HomeStarSystem>StarSystem</HomeStarSystem>and in StarSystemDefs (in StarSystem) <OrbitLane> <LaneType>HabitableZone</LaneType> <Body> <BodyType>Planet</BodyType> <BodyDef>Planet1</BodyDef> <IsHomeworld>true</IsHomeworld> </Body> <Body> <BodyType>Planet</BodyType> <BodyDef>Planet2</BodyDef> </Body> </OrbitLane>and in PlanetDefs<Planet> <InternalName>Planet1</InternalName> <DisplayName>Planet 1</DisplayName> <PlanetType>Habitable</PlanetType> <PlanetClass>20</PlanetClass> <PlanetTrait>Planet2World</PlanetTrait> <ArtDefine>Planet1Art</ArtDefine> </Planet> <Planet> <InternalName>Planet2</InternalName> <DisplayName>Planet 2</DisplayName> <PlanetType>Habitable</PlanetType> <PlanetClass>20</PlanetClass> <PlanetTrait>Planet2World</PlanetTrait> <ArtDefine>Planet2Art</ArtDefine> </Planet>
Thanks for the info. But how do I apply that to a faction that I created with the ingame editor?
I don't believe you can at this time. Not without modding the xml.
You can change the name of your home world for an in game custom race first choose the home star system from the available list it will then take you back to the screen you entered the home system picker from. Their is a field labeled homework I believe that will rename the home world what ever you put.
you`ll need to copy the games factiondefs.xml to your mod folder and the planetdefs.xml too then make those changes.
by putting them in the mod folder it does not change the main game planets and allows you to change your homeworld name
^Don't forget to change the name of the xml. files put in your mod folder or it will overwrite the game xml's. if they have the same names.
I tried this but my race wont show.
https://www.dropbox.com/sh/ikxfp76e7u5f9np/AACIWXHvl4f_TXxcDvmpyLMAa?dl=0
In case someone wants to help debug....
Few errors I notice right off the bat.
1. Your FactionDefs is missing some important code - add </FactionList> to end of file.
2. You have <StartingShips>FrigateStaticBlueprint</StartingShips> set, and I'm pretty sure one cant start with that ship?
3. You have <MapColorDef>Teal</MapColorDef>. This is not a defined map colour. e.g, if I wanted green, then I would use the defined Thalan set - <MapColorDef>ThalanMapColors</MapColorDef>.
I assume the frigate would be usable since its the same with the campaign level 00 (Tutorial)
Just to be clear the file setup is correct right? mygames/GalCiv3/Mods/LCFactionMod01TerranRemnant?
I think 1 & 3 on that list are the big issues, particularly 1. Not sure 2 is an issue.
Replace content in FactionDefs with this, tested and works:
Adding back the <StartingShips>FrigateStaticBlueprint</StartingShips> causes the game to hang, so I removed it. Set the UI/Map colours to Altarian, not quite teal, but near enough. Your logo is not required, as it is the same as default, so no need to reference it, so removed reference. Added in finishing code.
<?xml version="1.0" encoding="utf-8" standalone="yes" ?><FactionListxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="../Schema/FactionDefs.xsd"><!-- Created with the Gal Civ 3 Editor --><!-- FactionDefs.xml --> <Faction> <InternalName>FACTION_REMNANT</InternalName> <DisplayName>Terran Remnant</DisplayName> <DisplayNameShort>Remnant</DisplayNameShort> <LeaderName>Marcus Cory</LeaderName> <Description>The Terran Remnant is a fleet that managed to escape from the Dread Lords and is now on the fringes of the galaxy. They must rebuild the Terran Alliance and save Earth.</Description> <LeaderDescription>Commander of the T.A.S. Revenge Marcus Cory believes his fleet to be the only hope for humanity.</LeaderDescription> <RaceType>Major</RaceType> <PersonalityTraits>Opportunistic</PersonalityTraits> <PersonalityTraits>Expansionist</PersonalityTraits> <RaceTraits>StarfaringAbility</RaceTraits> <RaceTraits>ColonizersAbility</RaceTraits> <RaceTraits>Productive2</RaceTraits> <RaceTraits>Influential3</RaceTraits> <RaceTraits>Economical2</RaceTraits> <RaceTraits>Content3</RaceTraits> <RaceTraits>Fertile1</RaceTraits> <RaceTraits>Handy1</RaceTraits> <RaceTraits>Traders3</RaceTraits> <RaceTraits>Brutal2</RaceTraits> <RaceTraits>Resilient3</RaceTraits> <RaceTraits>Adventuresome1</RaceTraits> <RequiresHomeworld>true</RequiresHomeworld> <HomeStarSystem>DeadSystem</HomeStarSystem> <StartingShips>ColonyStaticBlueprint</StartingShips> <StartingShips>SurveyStaticBlueprint</StartingShips> <StartingShips>ScoutStaticBlueprint</StartingShips> <TechTree>Terran_Tree</TechTree> <ShipCallsign>T.R.S.</ShipCallsign> <LogoImage>RaceLogo00.png</LogoImage> <LeaderThumbnail>Remnant_Small.png</LeaderThumbnail> <NewsRobotMovie_Approach>Terran_ResearchAdviser_Approach.bk2</NewsRobotMovie_Approach> <NewsRobotMovie_Idle>Terran_ResearchAdviser_Idle.bk2</NewsRobotMovie_Idle> <StartupImage>StartGameTerran.png</StartupImage> <StartupTitle>To rebuild the Alliance...</StartupTitle> <StartupDescription>Escaping the Dread Lords through a wormhole the T.A.S. Last Hope and it's escorts now roam the outskirts of the galaxy. They will need to find somewhere to call home or they will be doomed.</StartupDescription> <StartupTraitsDescription>With only a colony ship and several warships the Remnant will need to find a habitable planet before supplies runs out.</StartupTraitsDescription> <MapColorDef>AltarianMapColors</MapColorDef> <UIColorDef>AltarianUIColors</UIColorDef> <FactionMoviesFGDef>TerranMoviesFG</FactionMoviesFGDef> <FactionMoviesBGDef>TerranMoviesBG</FactionMoviesBGDef> <FactionMusicDef>TerranMusic</FactionMusicDef> <Material1>GC3_Ship_Material_01</Material1> <Material2>GC3_Ship_Material_02</Material2> <Surface1>GC3_Default_Surface_01</Surface1> <Surface2>GC3_Default_Surface_02</Surface2> <Appearance>GC3_Terran_Appearance</Appearance> <ShipStyleSet>TerranShipStyleSet</ShipStyleSet> <CreditsInit>5000</CreditsInit> <WarEnduranceInit>90</WarEnduranceInit> <DefaultResistance>0.4</DefaultResistance> <InfluenceTallyInit>10</InfluenceTallyInit> <StartingColonyPopulation>10</StartingColonyPopulation> <AICategoryWeight> <Military>15</Military> <Growth>10</Growth> <Tech>20</Tech> <Diplomacy>15</Diplomacy> <Expansion>20</Expansion> <Wealth>10</Wealth> <Influence>5</Influence> <Fortification>15</Fortification> </AICategoryWeight> </Faction> </FactionList>
Well the whole point of me using xml instead of the in game editor was to get the frigate...
Shame
^^ And here was me thinking it was because your race wouldn't show? ^^
Anyway, your most welcome.
Even after using the XML you provided my race does not appear in the choose a race screen
What version of the game do you have?
ok I played with this race here a few pics
Here it teal you wanted it is in the ColorDefAlts.xml file it is called AltTeal.
and here the screen just before you go to your Planet! with what you gave us this is what i did.
Sorry On the ship I had no luck with It. I wonder if it is restricted because of tech or hull size or if there another file we have yet to learn about.
I had to rebuilded the factiondefs.xml file to get this to work.
Do you think it would it be possible to define new colours within this file?
Also, how does the planet positioning work? I take it (5) is the centre, but can't figure out the rest?
You can certainly define new colors I've seen others produce color mods.
You need to extend 3 files:
ColorDefs.XML, FactionMapColorDefs.xml, UIColorDef.xml
In ColorDefs.xml you can define new colours with their RGB values
This example will give you a really blue map and UI:
[code]
<!-- Blues Colors --> <Color> <InternalName>BluesRaceBlue</InternalName> <Red>0</Red> <Green>0</Green> <Blue>255</Blue> </Color> <Color> <InternalName>BluesMapBlue</InternalName> <Red>0</Red> <Green>0</Green> <Blue>255</Blue> </Color> <Color> <InternalName>BluesUIBlue</InternalName> <Red>0</Red> <Green>0</Green> <Blue>255</Blue> </Color> <Color> <InternalName>BluesUIDefault</InternalName> <Red>100</Red> <Green>135</Green> <Blue>160</Blue> </Color> <Color> <InternalName>BluesUIDefaultHot</InternalName> <Red>100</Red> <Green>170</Green> <Blue>235</Blue> </Color> <Color> <InternalName>BluesUIDefaultHighlight</InternalName> <Red>255</Red> <Green>204</Green> <Blue>0</Blue> </Color> <Color> <InternalName>BluesFOWUnexplored</InternalName> <Red>20</Red> <Green>20</Green> <Blue>90</Blue> </Color>[/code]
The colours that you defined can then be used to create colour themes for the map and UI:
FactionMapColorDefs.xml
<MapColorDef> <InternalName>BluesMapColors</InternalName> <DisplayName>UI_Color_Blues</DisplayName> <FactionColor>BluesUIBlue</FactionColor> <GridColor>BluesRaceBlue</GridColor> <InfluenceColor>BluesMapBlue</InfluenceColor> <InfluenceLine> <MinAlpha>200</MinAlpha> <MaxAlpha>200</MaxAlpha> </InfluenceLine> <InfluenceBlur> <MinAlpha>0</MinAlpha> <MaxAlpha>80</MaxAlpha> </InfluenceBlur> <ResourcePathLineColor>UIDefaultHighlight</ResourcePathLineColor> <TradePathLineColor>BluesMapBlue</TradePathLineColor> <ShipyardPathLineColor>UIDefault</ShipyardPathLineColor> <StrategicIconColor>BluesUIBlue</StrategicIconColor> <RallyPointColor>BluesUIBlue</RallyPointColor> <CampaignWaypointColor>BluesUIBlue</CampaignWaypointColor> </MapColorDef>
[/code]
UIColorDef.xml
<UIColorDef> <InternalName>BluesUIColors</InternalName> <DisplayName>UI_Color_Blues</DisplayName> <Color> <OriginalColor>UIDefault</OriginalColor> <OverrideColor>BluesUIDefault</OverrideColor> </Color> <Color> <OriginalColor>UIDefaultHot</OriginalColor> <OverrideColor>BluesUIDefaultHot</OverrideColor> </Color> <Color> <OriginalColor>UIDefaultHighlight</OriginalColor> <OverrideColor>BluesUIDefaultHighlight</OverrideColor> </Color> <Color> <OriginalColor>FOWUnexplored</OriginalColor> <OverrideColor>BluesFOWUnexplored</OverrideColor> </Color> </UIColorDef>
Last but not least you should activate these colours for your faction in FactionDefs.xml :
<MapColorDef>BluesMapColors</MapColorDef>
<UIColorDef>BluesUIColors</UIColorDef>
Edit: Hmm, it messed up the XML format - sorry for that.
Thx very much Ronnar!! +1
Interesting problem now though, unrelated.
I've created a few mods, but the latest one, for some reason, will not display the startup image? Every other mod does, and I've poured over the code till my eyes bleed, lol, and cannot find a reason for it? Changed bit depth's on image etc, but it makes no difference?
Stumped on this one.
There are many great features available to you once you register, including:
Sign in or Create Account