1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Mods in progress

Discussion in 'Civ4 - Community Enchancement Project' started by The Great Apple, Apr 17, 2006.

  1. The Great Apple

    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.
     
  2. dsplaisted

    dsplaisted Chieftain

    Joined:
    Oct 4, 2005
    Messages:
    52
    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
     
  3. Chalid

    Chalid Black Dragon

    Joined:
    Nov 24, 2005
    Messages:
    1,742
    Location:
    Munich, Germany
    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)
     
  4. 12monkeys

    12monkeys Chieftain

    Joined:
    Nov 24, 2003
    Messages:
    440
    Location:
    Germany, Europe
    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.
     
  5. SpoiledFruit

    SpoiledFruit Chieftain

    Joined:
    Mar 11, 2006
    Messages:
    72
    Location:
    Boise, Idaho
    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
     
  6. Impaler[WrG]

    Impaler[WrG] Civ4:Col UI programmer

    Joined:
    Dec 5, 2005
    Messages:
    1,750
    Location:
    Vallejo, California
    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
     
  7. SimCutie

    SimCutie Chieftain

    Joined:
    Dec 10, 2005
    Messages:
    197
    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
     
  8. TheLopez

    TheLopez Chieftain

    Joined:
    Jan 16, 2006
    Messages:
    2,525
    Location:
    Oregon
    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
     
  9. Jorgen_CAB

    Jorgen_CAB Chieftain

    Joined:
    Feb 11, 2004
    Messages:
    132
    Location:
    Sweden
    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
     
  10. Belizan

    Belizan Chieftain

    Joined:
    Jan 11, 2006
    Messages:
    1,060
    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
     
  11. Gerikes

    Gerikes User of Run-on Sentences.

    Joined:
    Jul 26, 2005
    Messages:
    1,753
    Location:
    Massachusetts
    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
     
  12. chrusion

    chrusion Chieftain

    Joined:
    May 5, 2006
    Messages:
    36
    Location:
    Seattle, WA
    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.
     
  13. Padmewan

    Padmewan Chieftain

    Joined:
    Nov 26, 2003
    Messages:
    748
    Location:
    Planet
    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.
     
  14. Dale

    Dale Chieftain

    Joined:
    Mar 14, 2002
    Messages:
    6,986
    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
     
  15. Olleus

    Olleus Warlord

    Joined:
    Oct 30, 2005
    Messages:
    6,478
    Location:
    England
    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.
     
  16. Aussie_Lurker

    Aussie_Lurker Warlord

    Joined:
    Jul 21, 2003
    Messages:
    7,637
    Location:
    Adelaide, South Australia
    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.
     
  17. purplexus

    purplexus Chieftain

    Joined:
    Feb 13, 2002
    Messages:
    477
    Location:
    Calgary Alberta, Canada
    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
     
  18. Fanatic Demon

    Fanatic Demon Student in Wizardry

    Joined:
    Aug 6, 2004
    Messages:
    403
    Location:
    The Netherlands
    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
     

Share This Page