Modder's Documentation

Spoiler Are any of these optional modules needed or recommended for general c++ programming :
Perhaps some of the individual components instead?
None of these. Install it bare bones and add required component only when asked when you open the project file. In my case, I grabbed MSVC v141 compiler (oops, said v171) as required by the VS2017 project. This way, the IDE sets up environment variables to let you use nmake.exe to build from the makefile.

I have also figured out to set up a standalone tool set, VC for python-2.7 (https://www.microsoft.com/en-us/download/details.aspx?id=44266 ), which is essentially the VC 2008 tool set, in my Netbeans environment. (So that I can uninstall Visual Studio and save disk space.:D) So it is nmake.exe and some other things (most importantly, a heck lot of environment variables! ) that's needed to build our project. That VC 2003 Toolkit doesn't provide a full set of tools (incl. nmake) although a Visual Studio 2003 installation does, but it's non-redistributable.

Oh, and, don't use Netbeans (pre-Apache, that has a C/++ IDE, version 8.2, released in 2017), unless you'd like to go through much trouble like I did configuring it to work!
 
Last edited:
Spoiler Are any of these optional modules needed or recommended for general c++ programming :
Perhaps some of the individual components instead?
I took all the windows ones and the python one. Haven't had trouble or had to add more yet. Might have been more efficient to do what Anq said but I was just as lost with this question and didn't want to wait for an answer. I think there are some extra things you need but they're all still located right wherever my file systems are looking for them it seems. So I feel lucky this didn't require trying to understand any individual components.
 
  1. Don't know how boost thread functions are dllexport'ed (although we can ignore this). We have #define BOOST_THREAD_USE_LIB wherever we include <boost/thread/thread.hpp>, which should not export the class boost::thread according to <boost/thread/detail/config.hpp>. This exists in original BtS dll too.
  2. The original setAIAutoPlay(int iNewValue) function assumes the active player, so I wrap up the internal setAIAutoPlay(PlayerTypes iPlayer, int iNewValue, bool bForced = false) function accordingly, sending in the active player as the parameter iPlayer. This along with removing excess dllexport's will be my first ever svn commit.
 
Last edited:
which file stores the C2C options?

If you mean Game Set up Options then here:
\Assets\XML\GameInfo\Civ4GameOptionInfos
 
@Dancing Hoskuld Perhaps you could update the original post for DLL building to indicate that NO additional downloads are required now. The required files are all included in SVN. There are also batch files (under Tools directory) to build the DLL using these included dependencies, as well as the VS 2019 solution.
 
@biullw2015,
I assume we need in our working copies the .vscode Folder, Tools Folder, and .gitignore file?
 
@biullw2015,
I assume we need in our working copies the .vscode Folder, Tools Folder, and .gitignore file?
Mostly if you are going to code, yes. You might not need it all as an xml modder but having it there won't hurt either.
 
Mostly if you are going to code, yes. You might not need it all as an xml modder but having it there won't hurt either.
Thanks for the info.
 
@Dancing Hoskuld Perhaps you could update the original post for DLL building to indicate that NO additional downloads are required now. The required files are all included in SVN. There are also batch files (under Tools directory) to build the DLL using these included dependencies, as well as the VS 2019 solution.
If you can tell me exactly what you want me to change that would be good. I really don't have much time available at the moment. Or PM me with some pointers. I am still coming to grips with the alert system, or to be more correct I only discovered it was a thing this week!
 
Updated the first few rows of this base pricing table for techs:
https://forums.civfanatics.com/threads/modders-documentation.441325/page-10#post-14723067

Some changes to the default and early civics values have enforced the need for a change in ramp up costs on techs to help return some balance between production and tech progress in those first rounds of the game. Beyond that point, it should be stable enough as designed I'm thinking (so far.)
 
Hi, I've committed a debugging tool. Please review SCvDebug.h. There is an example. It can improve debugging in cases when you couldn't inject debugging code, because it would be called too often. E.g., it would be run after each unit move, when you want to run it only when you move some particular unit and only in some cases that that are obvious for you, but hard to code.

With this you can turn on the mode in the python console before the move, do the move and turn it off after. Check the example in the file. It shows a different scenario, but I think you should get the idea.
 
Hi, I've committed a debugging tool. Please review SCvDebug.h. There is an example. It can improve debugging in cases when you couldn't inject debugging code, because it would be called too often. E.g., it would be run after each unit move, when you want to run it only when you move some particular unit and only in some cases that that are obvious for you, but hard to code.

With this you can turn on the mode in the python console before the move, do the move and turn it off after. Check the example in the file. It shows a different scenario, but I think you should get the idea.
@n47, Hey great to see you post again. :)
 
Hi, I've committed a debugging tool. Please review SCvDebug.h. There is an example. It can improve debugging in cases when you couldn't inject debugging code, because it would be called too often. E.g., it would be run after each unit move, when you want to run it only when you move some particular unit and only in some cases that that are obvious for you, but hard to code.

With this you can turn on the mode in the python console before the move, do the move and turn it off after. Check the example in the file. It shows a different scenario, but I think you should get the idea.
Welcome back :D

We are on Github now.
https://forums.civfanatics.com/threads/git-is-ready.649070/
 
You can terraform any land terrain to Lush:
Grassland/Muddy -> Lush
Marsh -> Muddy
Plains/Rocky -> Grassland
Scrub/Taiga -> Plains
Tundra -> Taiga
Permafrost -> Tundra
Ice -> Permafrost
Barren/Jagged -> Rocky
Badland/Desert -> Scrub
Dunes -> Desert
Salt Flats -> Dunes

Salt Flats -> Dunes -> Desert -> Scrub -> Plains -> Grassland -> Lush
---Ice -> Permafrost -> Tundra -> Taiga -> Plains -> Grassland -> Lush
-------------------Barren/Jagged -> Rocky -> Plains -> Grassland -> Lush
----------------------------Badland -> Scrub -> Plains -> Grassland -> Lush
------------------------------------------------------------Marsh -> Muddy -> Lush

You can also do some terraforming in space too.
Lunar Dome/Mare/Highland/Regolith/Rile -> Green Moon
Martian Ice/Permafrost/Desert/Dunes/Barren/Plains/Rocky -> Green Mars
Red Giant/Star Cluster/Blue Supergiant (feature) -> Neutron Star
Observable Universe/Intergalactic Void/Unobservable Universe -> Hyperspace
Hyperspace/Distant Future/Branespace -> Distant Past
Hyperspace/Distant Past/Branespace -> Distant Future
Hyperspace/Distant Past/Distant Future -> Branespace
Any existing improvement is destroyed since those terraforming build actions place temporary improvement.

Some build actions can place some Features on following terrains:
Jungle: Grassland, Marsh, Scrub, Rocky, Lush, Muddy
Young Forest: Grassland, Plains, Taiga, Scrub, Rocky, Lush, Muddy, Marsh
Savanna: Grassland, Plains, Scrub, Rocky, Lush, Muddy, Marsh
Bamboo: Grassland, Plains, Scrub, Rocky, Lush, Muddy, Marsh

Asteroids: Cislunar Space, Inner Solar System, Outer Solar System, Transeptunian Space
Galaxy: Local Group, Virgo Supercluster
Those create temporary improvement.

Great Farmer can place land plants and animals.
This creates temporary improvement too.
 
Last edited:
Top Bottom