Getting set up for modding in Civ 4

The Civilization series has been one of my favorites for a long time.  I played more of Civ 3 than Civ 4, but still the basics are pretty much the same.  I got Civ 4 a couple of years ago when it came out, then got the latest expansion “Beyond the Sword” when it came out about a year ago.  Fun game!  Anyhow, it seems that Civ 4 is quite modder-friendly!

There are a lot of areas for customization in Civ 4.  Depending on how deep a modder wants to go, they can change how units look or adjust their stats, add game events, even change the game AI.  A lot of Civ 4 code is in Python, and a good chunk of the C++ source code has even been released!  I was kind of confused at the breakdown between what you can do in the different pieces of game code.  A good resource that breaks it down is at

  • World Builder – Map editor, point and click.  Saves all map data as a text file, so you could create script to modify something in the map files or even create your own map generation script (in fact, the game’s stock custom map creation scripts are all in Python.)
  • XML files – unit and building stats, graphic and sound file paths, keyboard and mouse mappings, hooks to Python
  • Python – add events, change game rules, user interface
  • SDK – game functionality, AI code

It seems like this could be a good development platform, because it’s already a working system — I won’t have to do everything from scratch.  This could also be a downside, though, if understanding the system is difficult!  I think I will explore the code a little and see if I can figure out how it fits together, then maybe try out a simple mod.

What do you think?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: