I modded Civ4 and Civ5, but mostly editing world maps and changing rules via xml but no intensive programming in Lua or Python so far ...
- The map editor of Civ5 was nice but lacked support for large number of civs. It would be nice to place the 43 civs and CS inside the editor instead of using Ynaemp mod to process a file with coordinates of TSLs.
- When new resources cocoa and bison were added to Civ5, the editor was not updated ... I hope for a better support of the Civ6 editor ...
- Inside the map editor it would be helpful to have small statistics about number of tiles of each terrain type and placed resources. (Probably can be done quickly with a script.)
- When placing a limited number of resources, it would be helpful to pick them up from kind of inventory and drag/drop them on the map, but also use drag/drop to move them on the map or move them back into the inventory without manually deleting/creating them.
- Changing game rules via xml in Civ5 is sometimes easy and sometimes difficult and sometimes impossible. There are civs, leaders, techs, social policies, religious beliefs, wonders, buildings and units and all may have the same kind of special attributes but they are usually not interchangeable.
Example 1 :
# A leader may provide free promotions via a trait using the functionality "Trait_FreePromotions"
# A building/wonder may use the attribute "FreePromotion"
# A policy may use the functionality "Policy_FreePromotions"
# A belief cannot give a free promotion
As far as I understand object oriented programming (e.g. C++), it is no problem to define civs, leaders, techs, social policies, religious beliefs, wonders, buildings and units in a way that they can all use the same method/attribute "FreePromotion" (using classes, inheritance, interface)
Example 2 :
Typical yields in Civ5BNW are Food, Production, Gold, Science, Culture, Faith, Happiness, Tourism ...
A policy has to use the correct one of 3 different methods
# Policy_BuildingClassYieldChanges
# Policy_BuildingClassCultureChanges
# Policy_BuildingClassHappiness
to modify output (yield) of a buildingclass via policy.
Example 3 :
A policy can add yields to a specialist via
# Policy_SpecialistExtraYields
but it does not work for Culture, Faith, Tourism and probably Happiness (as far as I know) ...
If all the yields would inherit from a class "Yield" with an interface "SpecialistExtraYields", it could be so easy ...
Example 4:
There are Caravans and CargoShips but most parameters determing revenue from internal/external Trade Routes are hardcoded, so it is not possible to adjust the revenue when modding the economy system. Science via TradeRoutes is a great idea but when a mod upscales Science by 500%, the Science from TradeRoutes cannot be adjusted and becomes meaningless.
So I do hope that Civ6 will be well structured, more flexible and more modable compared with Civ5.
Please do not use hardcoded values!!!
(However if they did not focus on this so far, they are unlikely to change Civ6 code now and we will have to wait for Civ7.)