Mods in progress

The Great Apple

Big Cheese
Joined
Mar 24, 2002
Messages
3,361
Location
Oxford, England
If you are planning to alter something please post on this thread saying what you are currently working on. It would be great if this thread could be kept up to date with whatever everybody is working on at any one time. This should help to prevent conflicts where two people are altering the same piece of code for the same reasons.

Please only post once and edit your posts with any alterations!

If you plan to do some work on the project, it would be great if you could post this info:

1. Your skills
2. What you are currently working on
3. Your to-do list
4. Preferred method of communication (PM, email, etc)

Also, it would be good if you could keep a slighty more detailed "current projects" section on this thread with detials such as ETA's for mod completion.


TGA:
1) Python, XML, C++ (in that order). C++ isn't my strongest point, but I can do it
2) Specifically at the moment I'm working on more complicated algorithms to decide how the AI assigns emphasises in cities.
3) See spoiler:
Spoiler To-do list :

  • Attempt to build an AI testing rig so that multiple AI vs AI games can take place with no user interaction, and their performance logged.
  • Work on the City AI, both altering the way the governor works, and improving the AI city calculations.
  • Tweak CvMap::plot(...) to take X and Y wrapping into account
  • Improve CvCityAI::AI_neededDefenders() - reducing the number if the city is well within your borders. Also increasing the number of needed defenders based on a function to determine how likely an attack will be. It is currently based mainly on the city size.
  • Implement some rudementary "rush spotting" code to make the AI perform better against early attacks.
  • Make the diplomacy screen editable through python
  • Add new AIs for overland transport.

4) PM

Current project details:
Working on the AI testing rig. I am currently able to regenerate maps from any point in the game, with players being able to be changed, however I'm having troubles with changing the world sizes.
 
Right now I am working on turning the AI into a pluggable system, so you can write different AI's as different C++ classes, and have different players in the game use different AI's. This should help testing AI improvements, since you will be able to pit different versions of the AI against each other.

Once I have that somewhat done I will work on making the AI smarter. Various game designers have said that a good strategy game involves meaningful/interesting/difficult decisions for the player. I want the AI to be able to evaluate the advantages and disadvantages of the various decisions it can make, and make a decision based off what it thinks is most important. Basically, I want the AI to understand the various strategic tradeoffs of decisions it might make.

I don't know how far I'll get on my AI ideas, but I think I will be able to get the plugin architecture done so that it can be included in the community project.

Daniel
 
Skills: c, blender
working on: AI: Slightly enhancing promotion selection (Currently Playtesting)
To-Do-List: Promotions: Promotions that work against other promotions, AI: Minor focussing on Victory conditions, AI: Understanding Building-Prerequisites for Units
Communication: PM, Forum, eMail

I'll start with a small thing in the AI section.

The AI chooses their counter Promotions (Cover, Shock usw.) now on random Basis. I want to change this that it chooses them based on the units their enemys are using. Furthermore i want to increase the weight on hillsdefense for CityDefenders in cities on hills.

The code in question is in CvUnitAI.cpp, Line 3510
int CvUnitAI::AI_promotionValue(PromotionTypes ePromotion)
 
skills : Python (learned with Civ4), C++ (but its long ago that I did something useful with it)
comm : PM, forum email
timezone : CEST [=GMT+02]
to do list : whatever comes to my mind

current project/work :
ready for the first release.

closed projects/works :
###################################################
Bugfix :
------------------------------------
Bug :
when a loaded production order queue contains civ specific units which can't be produced by the current civ, they will be produced.

Solution :
CvPlayer::canTrain() enhanced so that it also checks for civilization specific unit dependencies.

###################################################
Bugfix :
------------------------------------
Bug :
prevent that ships are put into lakes when they get moved to the next valid plot

Solution :
- if destination plot is a lake and source plot is no lake, the probability that this plot is taken is very very low.
- if source plot is ocean and destination plot is a city, than it is checked if the city has a direct connection to the ocean. If not, the probability that this city is taken as destination plot is very very low.

To do so I added two new methods :

bool CvPlot::isOcean()
bool CvCity::isConnectedToOcean()

Both are exposed to Python, for further use in the API.

###################################################
Bugfix :
------------------------------------
Bug :
when you upgrade a triere to a frigate it keeps its cargo, is fixed.

Solution :
As soon as you upgrades a unit with cargo to a unit with no or less cargo space than the old one, the exceeding cargo is put to the next valid plot. This is a general solution and not restricted to the above mentioned units.


###################################################
API improvements :
------------------------------------
Mainly the so called pre-events. I added some C++ to PythonAPI loopback calls which allows modders to get some more control about the game flow. The pre-events I added so far are :

Status : development finished and tested. Readly to be merged with the project.

from CvCity.cpp :
------------------
canWork : is called when SDK checks if a city plot is workable
canHurry : is called when SDK checks if a city can hurry production
canConscript : is called when SDK checks if a city can conscript
calculateDistanceMaintenance : is called when SDK calculates the distance maintenance of a city
calculateNumCitiesMaintenance : is called when SDK calculates the num-city maintenance of a city
doReligion2 : is called just before a religion is spread to a city


from CvUnit.cpp :
-----------------
doCommand : is called when SDK starts a to perform a unti command
canSpread : is called when SDK checks if a missionary can spread a religion to a city
canMoveInto : is called when SDK starts to check if a unit can move into a plot
canMoveInto2 : is called when the SDK has decided that a unit can move into a plot, just before the final return.
canFortify : is called when SDK checks of a unit can go into a fortify mode
canHeal : is called when SDK checks of a unit can go into a heal mode
canNukeAt : is called when SDK checks if a certain plot can be nuked. (retrun TRUE to nuke your own capital)
upgradePrice : is called when SDK calcualtes a units upgrade price
isInvisible : is called when SDK starts to check if a unit is invisible or not (for TheLopez' sniper mod)
isInvisible2 : is called after SDK checked if a unit is invisible or not (for TheLopez' sniper mod)
canJoinGroup : is called when SDK checks if a unit can join a certain group


from CvPlayer.cpp :
--------------------
raze : is called just before a city gets razed
canConvert : is called when the SDK checks if a player can convert to a religion
foundReligion : is called just before a religion is founded by a player
canContact : is called when SDK starts to checks if a player can contact onother player.
canContact2 : is called after SDK checked if a player can contact onother player.
canTradeItem : is called when SDK checks if an item can be traded or not (this includes treaties, ressources and gold)
canTradeNetworkWith : is called when the SDK checks if a player has a trade network connection to another player.
canRaze : is called when the SDK checks if a city can be razed
canFound : is called when SDK checks if a city can be found on a certain plot


from CvSelectionGroup.cpp :
-----------------------------
canStartMission : is called when SDK chekes what mission is allowed or not
startMission : is called just before the mission is started.


In general those pre-events are neutral to the gameflow. The yonly effect when a modder uses them. All are used from the AI as well.
 
1) XML, C++(some game design), Python (also have 3ds max 6 if anyone wants some moddeling done, can't draw worth a darn though)
2) Get the FTP and CVS server working
3) Work on optimizations and adding new and improved python/C++ interface calls as well as improving the interface
4) PM

FTP Server is up and running
 
Name: Impaler[WrG] (or just Imp for short)
Skills: little Python from fooling around with Civ4, C++ from schooling, proficient in XML
MODS Completed:

Trait Happiness: XML controled mod that alows Leader traits to give Happiness or Unhappiness in all Cities.
Trait Diplomacy: XML controled mod that alows Leader traits to give a + or - Diplomacy Modifier.
Trait FreeSpecialists: XML controled mod that allows Leader traits to give FreeSpecialists in all Cities

GreatPeople Point Pooling:
A boolean controled mod that redirects all GPP generated in the Empire to a Player pool. GreatPeople spawn based on this global pool and the probability of each GP is based on the cumulative Empire wide point types produced. The spawn City is determined semi-randomly as cities are processed each turn (this might be changed in the future). Cityview GP bars now show global pool and global rate of change. I have now set this up to use the games Option Menu, thanks SimCutie, (bug in City view detected atempting to squash)

Specialist Tech Yield Changes:
An XML controled mod that gives Technologies the ability to alter the Yield Rate of specialists types just like the Angkor Wat Wonder dose. Basicaly I just copied and pasted the Code for that from Buildings into Tech. Civlopedia displays the change under the Tech window. Exports to Python
int CvTechInfo::getSpecialistYieldChange(int specialist, int yield)
void CvPlayer::changeSpecialistExtraYield(int specialist, int yield)

Local Specialist Yield Change:
An XML controled mod that gives a building the ability to grant a localized bonus to a specific Specialists Yield, Pedia displays the changes for each building, City view reports the change after a building is built. Python Export
int CvBuildingInfo::getLocalSpecialistYieldChange(int specialist, int yield)
void CvCity::changeLocalSpecialistYieldChange(int specialist, int Yield, int Change)

Local Specialist Commerce Change:
Same as Above for Commerce, Python Export
int CvBuildingInfo::getLocalSpecialistCommerceChange(int specialist, int Commerce)
void CvCity::changeLocalSpecialistCommerceChange(int specialist, int Commerce, int Change)

Specialist Tech Commerce Change:
This mod is outwardly the Commerce equivilent of the Yield Change but internaly its much more complex and proved rather tricky. The game already had a readily avalible system for Specialist specific Yield changes that I used in the first mod but the game stored Commerce changes like that from the Sistiene Chapal as a single all-specialist affecting array. I have bypassed this array and and all its functions, though it and the Python calls to it still exist the array should never hold anything and the calls too it will return zero. Wonders that previously used it (the Chapal) now just loop over my new Specialist/Commerce Matrix so the effect is identical.
int CvTechInfo::getSpecialistCommerceChange(int specialist, int yield)
void CvPlayer::changeSpecialistTypeExtraCommerce(int specialist, int Commerce, int change)
OBSOLETE int CvPlayer::getSpecialistExtraCommerce(int Commerce)
OBSOLETE void CvPlayer::changeSpecialistExtraCommerce(int Commerce, int change)

Specialist Pedia Improvment:
With all the changes being made to specialists I needed a consolidated place to view the Boni in the Pedia, the once rather sparce window that showed the specialists output now also lists all the Building and Tech bonuses that a Specialist can recive. I also have the little mouse over specialist help on the City view accuratly reporting the specialist output with local buildings taken into account.

ImprovementUpgrading:
Adds <ImprovementsMakeValids> tag to Improvment alowing one improvment to require another improvment just as it would for a Terrain or Feature, thus to make an improvment act ONLY as an upgrade all the improvments past the first must have no Terrain or Feature makes valids to prevent them from being built anyware but on the designated Improvment. This mod can be used to create a linear or branching tree of upgradable improvments which unlike current turntimer system need to be activly built by workers. This mod dose not prevent or brake use of the old style timer system, both can be combined.

ImprovmentPediaImprovment:
Changes to Pedia, the Pedia now shows the buildtime of an improvment, taken directly from XML so it will be in hundreds (was going to divide but though this could result in wrong times being displayed if someone moded in buildtimes that were not in even values of 100). Also displays the new Upgrades for both "Upgrades from" and "Upgrade to".

TechFreeBuildings:
Adds a <FreeWithTech> tag to buildings, the building will be given to you for free just like a Wonder can when the player discovers that Tech. Pedia displays the effect under the Tech and Building pages.


Mods in Progress:


Silk Road: an XML controled mod that will alow buildings to generate a "Free Connections" status for the City. Such a City will get a Trade Network Connection to every other City on the Continent both forign and domestic. This will alow the player to Trade with all other players on their continent and connect all of their own Cities to their network without the need of roads or rivers. The effect is ofcorse going to be attatched to a Wonder called the Silk Road.

Trait Votes: an XML controled mod that will alow Leader Traits to modify the Votes a Civ gets in the UN, will work just like Lal's special ability from SMAC (but the modification can be a specific %) making Diplomatic victory easier. Also could serve as a basis for Buildings to have the same effect.

More Forms of Commerce: Adds 3 new forms of Commerce Happines, Health and Experience. The first 2 are already functional, the later will have no function at the C layer but will be exposed to Python to alow Moding of various experience gaining systems. This mod just needs a slight change on the City View UI to correct some text spilling over the commerce list box.

Missle Improvments: A mod to add an XML tag that identifies a unit as being a suicide attack missle/kamikaki unit and some work with the AI to make it use such Kamakai units in an inteligent way (a kamikaki effect is easy to do in Python but the AI will never learn how to use it properly thus the use of C)

Unique Units for Leaders: Alow the Leaderhead to have Unique Units atatched to it

Universal Building Modifier: Will alow XML based modification of any Building Atribute with Civis/Wonders/Tech by the creation and processing of virtual buildings which piggyback on normal building processing.

Contact: PM or E-mail
 
name : SimCutie
skills : little Python (learned to mod Civ4), C++ (learned in school, but not on programming job)
working on : Update python mod of mine to v1.61. Add new custom widget handler in SDK.
(file: CvDLLWidgetData.cpp, ) and building up general base utility library and beep up modding arsenal.
to do list : Study and learn general SDK structure. Learn boost.python. Refresh old and rusting C++ knowledge.
comm : PM, e-mail
 
name : TheLopez
skills : Python (learned to mod Civ4), XML, C++, etc. (let me know if you want a full list of development skills)
working on : Wrapping up the Sniper Mod, updating the Mercenaries Mod, Immigration Mod, etc.
to do list : Well... to much to list here. I'll add a general todo list in my sig so everyone is aware of what is on my plate :D
comm : PM, e-mail
 
Name: Jorgen_CAB
Skills: Normaly program in .NET (C# or VB mostly VB), XML through work, fiddled with Python but not much yet, programmed in C++ ages ago.
Working on: Adding values for modder to use such as different attack and defense values in terrain. Som minor feature changes.
To do: Add more and more values and incorpoprate them appropriatley, mabe do som AI behaviour done to use these values properly. May need som help with that. Will soon start on different withdrawlrates in different terrain.
I've incorporated a feature called Marching, will expand on this idea in comming versions based on some more feedback.
Comm: PM, e-mail
 
Name: Shin (aka. Belizan)
Skills: C/C++, Python, XML, etc.
Working On: Projects unrelated to Civ4 8).
To Do List:
  • [.Net].Net-based validating XML edittor (to validate interfile links)
  • [SDK]Pre-Combat SDK hook to allow modders from Python to modify a unit's strength
  • [SDK]Pre-Movement SDK hook to allow modders to allow/disallow a particular move
  • [SDK]Bonus health, production, food and commerceXxX calls for cities
  • [SDK]GetXMLElement() extension to CvEntities. Allow from Python to grab an arbitrary XML element for a particular entity, allowing modders to add arbitrary additional xml elements to buildings, units, etc.
  • [SDK]Dynamic Religion Names
  • [PyModComp]Repackage my markers, city placement/planners, etc. from Moon Mod into a standalone mod component.
  • Moderator Action: The Moon Mod (SotM)
    [*]Moderator Action: Rise of Fantastic Civilizations

    Please read the forum rules: http://forums.civfanatics.com/showthread.php?t=422889

    Please read the forum rules: http://forums.civfanatics.com/showthread.php?t=422889
Moderator Action: Moderator Action:
Communication: PM or Email.

Please read the forum rules: http://forums.civfanatics.com/showthread.php?t=422889

Please read the forum rules: http://forums.civfanatics.com/showthread.php?t=422889
 
Skills : C++ (my specialty), Python (2 years), XML
Comm : PM, aim (Gerikes101)
To-Do List : Will figure this out.

current project/work :
Related to Civ4 CCP: None
Unrelated to Civ4 CCP: CivCraft

closed projects/works : None
 
Skills: C++, XML, XML Schema
Unrelated: Flash Actionscript, Javascript, Java

working on:
AI Improvements

Sub-Map that builds a map "zoom in" of a world map tile. Analyzing the SDK to find the safest, most efficient way to do this using as much existing functionality as possible.

To-Do-List:
Design & architect AI improvements. Split task into bite sized chunks. For each chunk, implement, test, tweak, and release.

Analyze the SDK for Sub-Map, inherit from needed classes, put mod in with modder configurable switch to turn on and off, make player Options switch to turn on and off

Communication: PM, Forum, eMail

Sub-Map is designed to have no effect if left unused even in a game where it is turned on. The modder will be able to change this as much as the mod requires.

My long term goal is to use this functionality for a RPG world that is driven and changed by the strategy AI.

I have seen other mods that could use this for tactical battles.
I can see simcity style city management with this mod.
 
Skills: I'm self-taught, starting with Applesoft Basic, then jumping a decade to ActionScript, JavaScript, C, and AuroraScript (Neverwinter Nights). I'm feeling my way through Python and C++ now.
Working on: Just installed CodeBlocks + SDK so nothing yet. Am hoping to investigate and work on (1) Diplomacy, and (2) some form of international market.
To-do list: Read every post in here to learn the common coding rules and see if I can be of help.
Preferred method of communication: PM.
 
Hi all,

Skills: C++, python, WBS (world builder saves)
Working on: combat modifications
To do: multi-party diplomatic agreements
Comms: PM

Mods:
- GameOptions: found only two can be added to CvEnums.h or Launch button becomes inactive. Confirmed from Firaxis that the screen is in the code. Suggest we wait till Warlords SDK is released to add GameOptions. ;)
- Combat Mod: combined arms stack attack 95% complete.
- Missiles: code complete with one XML flag required on units (including nuke missiles). 100% complete
- Field bombardment: code complete with one XML flag required on units. 100% complete.
- Ranged bombardment: code complete with one extra XML flag required in units (over field bombard). 100% complete.
- MAD: code complete, including GUI elements and AI deterent. 100% complete

Checkout my code factory thread for all code I've completed: http://forums.civfanatics.com/showthread.php?goto=newpost&t=174134

BTW, I was on the dev team working on scenarios and developing the WBS file format. So anything you need to know about the world builder or WBS files, just ask me. :)

Oh, and I have Firaxis' ear for any question we can't find an answer to. ;)

Dale
 
skills: Python, XML, C++ (in that order)
Working on: The Warhammer Mod, Napoleonic Wars, Civ4Reformed.
To do: Anything that might improve the game. Next thing is too make shrines produce commerce instead of gold.
Communication: I prefer pm but have nothing against email.

I have just finnished this mod. I do not know how to put a switch to allow the player to choose if this component is on or off.
 
Skills: C++ (well, kinda. Self-taught but getting better all the time), XML and now slowly getting the hang of Python (thanks largely to Kael's fantastic examples!)
Working on: Ideology Mod is taking the bulk of my time, but am also doing a revamp of TrueProphets, and also have a LeaderTrait mod on the back burner for now.
To do: I have been asked to do a mod introducing a TileYieldChange tag to CivicInfos-hope to do this soon. Basically what I enjoy doing most is anything which increases the flexibility of existing Infos XML (like BuildingInfos, CivicInfos and TechInfos).
Communication: PM is probably the best means, as I am always on here at least once a day. Failing that try e-mailing me at mhicks49@hotmail.com

Aussie_Lurker.
 
Skills: HMMM is ripping apart XML and putting it together in a different way a skill? Turbo Pascal 6, Fortran were the only languages I learned other then Basic for the Vic-20 and the Commodore 64 (yes I am Old :( )

Working On: Ripping apart the Warlords original Civ's to fit into a plug and playable system. Creating a Basic XML building block which is completely stripped of all unecessary code such as Mod's created by Firaxis. Modularizing all Builgings, Units, Leaderheads, and Civ's in Whole from the Warlords and Vanilla Civ 4.

To DO 6 Civ's 100&#37; complete. 15 Civ's 90% complete
units 0% completed
Building 0% completed
Wonders 0% completed
Leaderheads 90% completed
Basic Building Blocks....???? Completed

MUST HAVE!@ A Solitary Forum for Modularized plug-ins

Communication: ICQ: 472-250-646, E-mail purplexus70@hotmail.com
 
Name: Fanatic Demon

Skills: C++, XML

working on: BTS SDK Ultimate Ranged Combat Mod.

I'm currently working on my new Ultimate Ranged Combat Mod which will revolutionise combat in Civilisation Civ4

You can download a Preview version from: http://forums.civfanatics.com/uploads/49944/Ultimate_Ranged_Combat_Mod_0.1.rar

This mod is inspired by Dales Field Bombardment mod, and brings it up to a whole new level. It adds several new XML elements which allows modders to make combat in Civilisation a lot more realistic. It uses Solvers AI SDK fix as a base and adds additional AI combat ranged combat graphics improvements.

This mod builds is inspired by Dales Field Bombardment mod, and brings it up to a whole new level.
The Mod adds several new XML element which allows modders to make tactical combat a lot more realistic.
It used Solvers AI SDK fix as a base and add additional AI combat and grpahic improvements.

To do:
- 5 different target types (Soft, Hard, Ship, Sub, Air): 50%
- AI ranged combat improvemnts: 50%
- Range, Damage, ArmorPiercing, Lethality: 50%
- ArmorDefence, Missle Defense, Survivability, Damage Resistance: 25%
- Offensive Movement Shots: 60%
- Automatic shots when moving : 50%
- Defencive Movement Shots, Defencive Free Shots: 50%
- Zone of Control Range, Zone of Control Strike change : 40%
- Terrain Defensive Modifiers : 10%
- Entreshment Modifeirs : 10%
- Movement Modifiers: 0%
- Unit Healing Modiers: 0%

Communication: Forum, Private Message
 
Top Bottom