First release

The Great Apple

Big Cheese
Joined
Mar 24, 2002
Messages
3,361
Location
Oxford, England
This thread is for the first release, a download for which should be available sometime soon. If you come up against any problems with it, please post them here, and we'll see about fixing them.

Changelog for v1.61.0001a:
NOTE: This is getting out of date. Please check release thread for actual changelog. It is similar to this, but all of SimCutie's changes are yet to be included.

For details of the following, please look at the changelog included with the file.

All options labled '(configurable)' will be have no effect on the default game unless enabled in the options menu.

1) AI:
Nothing

2) UI:
- Civ 4 CCP custom options screen added. Here you can cofigure which options you want enabled/disabled. (SimCutie)
- (configurable) Names of units can now be changed to display the unit type before the name instead of after the name. (SimCutie)
- (configurable) Added Great People Type and Civs name in Great People born announcement. (SimCutie)
- (configurable) Added Unit Type name in press-AltKey Combat Odd display. (SimCutie)
- Button states (show tiles/resources etc.) are now saved as user info, and will always be restored to their previous position on starting a game. (SimCutie)

3) Performance:
Nothing

4) Modding:
Note: None of these will have any impact on the normal game experience, however hopefully they will aid modders in improving the game.

a) Bugs:
- Fixed a crash when an incorrect model path was specified. (SimCutie)
- Fixed a bug where increasing the number of commerce type would cause bad things to happen. (Impaler[WrG])
- CvUnit::getNameKey() now correctly returns TXT_KEY_ entries for great people (SimCutie)

b) Changes/additions:
- New generic event manager interface to handle new events. Locates any function which returns a dictionary of events, and proccess them. Very pluggable. (SimCutie)
- All units have a unique unitID which is static throughout the unit's life. It will stay constant during upgrades/gifts. CvUnit::getUID() (c++), or CyUnit.getUID() (python) to get the unique ID. (SimCutie)
- Added CvUnit::getOldX() and CvUnit::getOldY() (c++), and CyUnit.getOldX() and CvUnit.getOldY() (python), to find the plot the unit was on before the current plot. (SimCutie)
- City name colour text can now be changed in CIV4ColorVals.xml (SimCutie)
- Scriptdata is now preserved across upgrades/gifts (SimCutie)
- Various initialization routines added (SimCutie)
Spoiler :
extern void CvExt_preinit();
void CyExtGC::onInit(python::object args);
extern void CvExt_postinit();
void CvExt_GameBegin()
void CyExtGC::onLoad(python::object args);
void CyExtGC::onGameStart(python::object args);
void CvExt_GameEnd();
void CyExtGC::onUnInit(python::object args);

- Fiddled with the save/load framework including backward compatibility.(SimCutie)
Spoiler :
Use following for global save data read/write:

extern void CvExt_read(FDataStreamBase* pStream);
extern void CvExt_write(FDataStreamBase* pStream);

- Enhanced game utils. The following checks have been incorperated into python to better control the game (12monkeys):
Spoiler New methods :

1.a.) called from CvCity.cpp
----------------------------
canCityWorkOnPlot -> if you want to prevent a certain plot to be workable
canCityHurry -> to prevent hurry production in a city
canCityConscript() -> to prevent conscripting in a city
calculateCityDistanceMaintenance() -> to change the distance maintenance for a certain city. Eg. by a special building.
calculateCityNumCitiesMaintenance() -> to change the num cities maintenance for a certain city. Eg. by a special building.
spreadReligionToCity -> to take action if a new religion is spread to y city


1.b.) called from CvUnit.cpp
----------------------------
doUnitCommand() -> be informed about all unit commands and take action if necessary
canUnitMoveInto() -> do restrict/allow a plot for unit movement
canUnitFortify -> Eg. for fantasy mods a "restless" cast
canUnitHeal -> to prevent a unit from healing (eg. for fantasy mods)
canUnitNukeAt -> to allow to nuke a friend or yourself (return TRUE to be able to nuke yourself!)
canUnitSpread() -> eg. to decide if a missionary can spread a religion
unitUpgradePrice -> to change upgrade price for certain units (due to a special building in a city?)
isUnitInvisible -> changes a units invisiblity (maybe for TheLopez' sniper mod)
canUnitJoinGroup -> to define if a unit can join a group. Eg. for limited group sizes.


1.c.) called from CvPlayer.cpp
----------------------------
canPlayerContact -> influence diplomatic abilities of a civ
canPlayerTradeItem -> influence in what players can trade.
canPlayerTradeNetworkWith -> to temporarily interrupt trade networks
canPlayerRazeCity -> have influence if a city can be razed or not
razeCity -> be informed/take action when a city is razed
canPlayerFoundCity -> influence where a city can be found
canPlayerConvert -> have influence on the religion conversion of a certain player
playerFoundReligion -> to prevent a religion being founded


1.c.) called from CvSelectionGroup.cpp
----------------------------
canGroupStartMission -> decide what group mission is allowed or not
groupStartMission -> be infromed when a group starts a mission

- New XML tags. Won't cause errors if not included. Full interface & 'pedia support (Impaler[WRG])
Spoiler New tags :

Civ4TraitInfos.xml
----------------------------
<iHappiness> - Adds set happiness in all cites. Negative values supported.
<iDiplomacy> - Any leader with Diplomacy altering traits experiences a bonus/penalty to all Diplomatic relations
<iSpecialists> - Any leader with the trait will get the perscribed number of free specialists in all cities
<iVoteModifier> - The number of Votes a player recives in the UN is multiplied by the modifer. No 'pedia support

Civ4BuildingInfo.xml
----------------------------
No AI support on these
<LocalSpecialistYieldChange> - Increases the yield of the set specialist for this city only
<LocalSpecialistCommerceChange> - As above but for commerce

Python Exports:
int CyCity::getExtraSpecialistCommerceOfType(int Commerce, int Specialist)
void CyCity::changeExtraSpecialistCommerceOfType(int Commerce, int Specialist, int Change)
void CyCity::changeExtraSpecialistYieldOfType(int Yield, int Specialist, int Change)

Pyton Alterations:
behavior of CyCity::getExtraSpecilistYieldOfType(int Yield, int Specialist)
changed to reflect local bonuses rather then just piping up to the player, and getting an all cities
modifier, to get a Bonus attactched to the player as the result of a wonder or Tech use the
new CyPlayer::getSpecilistExtraYield call described below


Civ4TechInfos.xml
----------------------------
No AI support on these
<SpecialistYieldChange> - Allows specialists of a certain type to increase their yield by the set amount on discovering the tech
<SpecialistCommerceChange> - As above but for commerce

Python Exports:
int CvTechInfo::getSpecialistYieldChange(int specialist, int yield)
int CvTechInfo::getSpecialistCommerceChange(int specialist, int Commerce)
int CvPlayer::getSpecialistTypeExtraYield(int specialist, int yield)
int CvPlayer::getSpecialistTypeExtraCommerce(int specialist, int Commerce)
void CvPlayer::changeSpecialistExtraYield(int specialist, int yield)
void CvPlayer::changeSpecialistExtraCommerce(int Specialist, int Commerce)

- 3 new forms of commerce added. Happiness, health, and experience (Impaler[WRG])
Spoiler details :

The mod will have no effect unless a modified Civ4CommerceInfos.xml is included and Civ4TechInfos is altered to give one or more Techs the <CommerceFlexable> ability to allow the user to direct funds towards the new Commerce types. Alternativly any thing in the game that adds commerce with tripple <iCommerce> tags can create the new Commerce types.

- Two new python methods: bool CyPlot.isOcean(), and bool CyCity.isConnectedToOcean() (12monkeys)
- (configurable) "combatLogCalc" event replaced with "combatBegin" event triggered at the beginning of every battle. Contains both unit pointers, and the combat odds. (SimCutie)
Spoiler args :
pAttackerUnit Attacking unit
pDefenderUnit Defending unit
combat_odd (probability of attacker win in per thousand (0-1000))

- "combatHit" event added. Called before the damage is done in a combat phase. (SimCutie)
Spoiler args :
pUnitInflictor damage-inflicting unit
pUnitSufferer damage-suffering unit
bIsAttacking inflictor is attacking(true) or defending(false)
iDamage damage percent (int)
fDamageEffective actual damage value (float)
- "initEnd" event added - it is triggered when Civ4 application/Python initilization is finished, loading XML data before main menu is finished, font symbol is inited, and just before displaying first main game menu. (SimCutie)
- New CvCity method. CvCity::getNameLong() (SimCutie)
Spoiler :

const CvWString CVCity::getNameLong();
Returns City name followed by Civ. name. ex) "Paris, France"
- C++ : const CvWString CvCity::getNameLong();
- Python : string CyCity.getNameLong()

- CV***Info search routines: CyExtGC::findInfoTypeForString(LPCTSTR infoKey ) - similar to GC.getInfoTypeForString(LPCTSTR infoKey ) but it will not cause Assert failure when info does not exist. See readme for details (SimCutie)
- Action routine - Executes a widget action as if the widget is clicked by mouse. See readme for details (SimCutie)
- Misc. routine - Adds text entry to Game text manager. See readme for details (SimCutie)
- 1.13 Something to do with logging - I have to go now, will update this later. Can you give me a brief description to put here SimCutie?
- Custom widget action facility. This is used to attach any python function to your widget. See readme for details (SimCutie)
- Action Button facility. This is an application of the Custom Widget Action facility described above allowing addition of action buttons. See readme for details (SimCutie)
- Debug function added for SDK. Check out mod readme for details (12monkeys)

5) Bug fixes:
- Fixed a bug where units being transported by units which get upgraded, and lose transport capacity because of being upgraded (caravels --> frigates), were still transported. Now transported units will jump to the nearest valid plot, like when you are pushed by culture. (12monkeys)
- Fixed relocation due to culture/end war for ships. They will no longer get stuck in lakes when they were originally on the ocean. (12monkeys)
- Fixed an issue where production queues could be loaded in new games allowing construction of other Civ's UUs. Production queues can still be loaded, but you can no longer build other Civ's UUs. (12monkeys)

6) Optional Gameplay Tweaks:
- (configurable) GreatPeoplePointPooling by Impaler[WRG]. Re-directs all GreatPeople Points generated in an Empire to a central Pool attached to the player.
- (configurable) RogerBacons Flying mod, AirCombat, and Defensive zoom
- (configurable) Chalids Slow Cultural Borders
NOTE: Should get some links for the above, rather busy doing other things right now
 
I am OK to release on May 17 though it has not much thing to show...
We should have time to integrate and adjust conflict /duplication /inconsistancy among our own codes.. So I had released a preliminary version few days ago, but I did not get much feedback regarding such confict with modder's own work.
No one except me has released or commited code in CVS, it seems.
Am I missing something or drumming wrong drum?

Integrating codes of multiple author ( especially who never met in persopn or worked togather) would be not so easy and potentially troublesome process. It will take quite a time and many discussion. I suggest you all to commit your code into CVS as soon as possible and begin to look into each others codes closely to see if any problem may arise.
 
Well, my code is more or less ready as well. I don't expect much problems with it, because the changes I did are very less and very simple. I would have done more, but due to this unlucky CVS issues I spent most of my time with CVS than coding :( . [BTW : I can't reach the CVS this evening, it seems to be down, so I can't upload anything.]
As TGA already said, we should have at least one ore two bugfixes in, which may increase the acceptance of the project. I will try to take care of some the next days, but I can't promise.
Maybe we have to postpone the release for a week or two, to solve the remaining CVS issues and to gain some time for testing.
Also : I'm not sure who of the enroled team members is doing actively what for the project? There are only 5 members registered at SF for this project (TGA, SimCutie, SpoiledFruit, Impaler and me). So the chance to get something from the others is quite less. TGA, maybe you should contact them directly by PM to get a status. Infos we need are what has been changed and when it is ready.
Another topic is documentation. The changes must have a documentation and (in some cases) examples how to use it.
Still a lot to do and to organize.
 
For the version number, we probably could use v 1.61.0001 to show that it is compatable with the 1.61 patch and is version 0001 of our revision. I used four digits but we probably could just use three.

For alpha builds we can use the letter a (v1.61.0001a)
For betas we can use the letter b (v1.61.0001b)
And final builds have no letter (v1.61.0001)

This is the convention I use at work when I am updating only DLLs of existing programs.
 
SimCutie said:
I am OK to release on May 17 though it has not much thing to show...
We should have time to integrate and adjust conflict /duplication /inconsistancy among our own codes.. So I had released a preliminary version few days ago, but I did not get much feedback regarding such confict with modder's own work.
No one except me has released or commited code in CVS, it seems.
Am I missing something or drumming wrong drum?
The SDK is rather large, and it'll probably be a while before we get any really big conflicts. From what I can tell the only thing in your changes that may cause conflict is the unitID switch - but I don't it's likely to. From what I can tell everybody is working in slightly different areas. This is, in part, why I made the "mods in progress" thread - so that we can avoid two people doing the same thing in different/conflicting ways.

I think we should try to upload to the CVS whenever we feel we have a stable version of our current changes, so that any edits can be based on them, or at least the ideas behind them.

12monkeys said:
Well, my code is more or less ready as well. I don't expect much problems with it, because the changes I did are very less and very simple. I would have done more, but due to this unlucky CVS issues I spent most of my time with CVS than coding . [BTW : I can't reach the CVS this evening, it seems to be down, so I can't upload anything.]
As TGA already said, we should have at least one ore two bugfixes in, which may increase the acceptance of the project. I will try to take care of some the next days, but I can't promise.
Maybe we have to postpone the release for a week or two, to solve the remaining CVS issues and to gain some time for testing.
Sounds like we might have to. Maybe shift the provisional date back to Monday 22nd so that we have the weekend for testing? We'll see how it goes.

12monkeys said:
Also : I'm not sure who of the enroled team members is doing actively what for the project? There are only 5 members registered at SF for this project (TGA, SimCutie, SpoiledFruit, Impaler and me). So the chance to get something from the others is quite less. TGA, maybe you should contact them directly by PM to get a status. Infos we need are what has been changed and when it is ready.
So far we have 15 people, however, it would seem that alot of people are lurking behind the scenes. I'll probably do as you suggest and send out a bulk PM tomorrow sometime.

12monkeys said:
Another topic is documentation. The changes must have a documentation and (in some cases) examples how to use it.
Still a lot to do and to organize.
For most people it would be simply "install into mod directory". Other changes I would expect to be documented within the code, and if we include files changed in the changelog then people shouldn't have too much difficulty in finding it.

Spoiled Fruit said:
For the version number, we probably could use v 1.61.0001 to show that it is compatable with the 1.61 patch and is version 0001 of our revision. I used four digits but we probably could just use three.
Good idea. Maybe we should include something to show which game it is compatable with - a .dll file for Warlords may not be compatable with one for regular Civ. Maybe:

c 1.61.001a (Civ, patch 1.61, 1st version, alpha)
w 1.00.162b (warlords, patch 1.00, 162nd version, beta)
e 1.32.125 (expansion 3 patch 1.32, 125th version, stable)

Although this could have troubles if they call the 2nd expansion pack something beginning with 'c' or 'w'...

On a different note - have you managed to get the options screen working yet? Not that crucial for this release as we don't have much in here - just curious

Chalid said:
I have some minor changes but until now was not able to debug with that CodeBlocks. I'll try to look again into it this weekend so we'll see.
Okies, looks like you will need a few more days as well.


If you missed the date I had hidden in there, I am suggesting we move the date back to Monday 22nd so that we can sort out CVS/server issues, as well as give a tiny bit more time for people to finish things off.

EDIT: Also, is what we are doing a mod component or a mod pack. I'm thinking component, though it has some aspects of a pack. Hmmm.
 
The Great Apple said:
EDIT: Also, is what we are doing a mod component or a mod pack. I'm thinking component, though it has some aspects of a pack. Hmmm.

IMO its clearly a mod component. Most of the changes are for modders only. If you just install it, the effects on the game are very low.
 
The Great Apple said:
On a different note - have you managed to get the options screen working yet? Not that crucial for this release as we don't have much in here - just curious.
I finished custom option screen for SDK DLL runtime confiuration. Complete with Option Screen, Python API, SDK API, Ini file Config read/write, in-SDK user configuration access. I will update it in next CVS upload.
 
SimCutie said:
I finished custom option screen for SDK DLL runtime confiuration. Complete with Option Screen, Python API, SDK API, Ini file Config read/write, in-SDK user configuration access. I will update it in next CVS upload.


Hey! That sounds really good :D. I'm curious to see it. But CVS is still down :(.
 
I am eager to see it as well, I want to use it for controling by GreatPeoplePointPooling mod (pools all GPP from across your empire rather then in each city individualy), I have it all set up too switch between original behavior and my new behavior with a boolean call. Most of my other mods are run off XML flags and will be silent without the required flags thus they dont require any run time configuring.

SimCutie could you zip and upload the files so we can start plugging in our mods, and thus get things ready asap.
 
I have been busy at work lately but I will try to get the CVS server fully accessable today or tommorow. I will not have password protection on the FTP server right now b/c I haven't had a chance to send out all the User IDs and Passwords and the forum is still private.

The FTP server link is here (Link Removed) if you want to get to it. If it doesn't work, its b/c the server isn't up yet. Read and write access is enabled at this point for existing files only. This is just a temporary IP, the permanent one I will PM everyone allong with there user ID and passwords.

Also I saw SimCutie was already ahead of me on the options menu so I let Sim handel it. I will add extra options as needed though (if thats alright with you Sim).

On the prefix for game versions (original, Warlords, Etc.) I thing we can just separate them into there own groups instead of worrying about prefixes
 
I need some help..
I need unmodified Firaxis version of \Assets\XML\Interface\CIV4ColorVals.xml of update 1.61.
I inadvertantly overwritten a XML file in my Game installation directory instead of CustomAssets. :sad:
I have some backup but it was that of update 1.52, not 1.61.
Please, upload the file CIV4ColorVals.xml in ZIP as a attachment for me.... :p
 
I don't have a copy of the 1.61 file here, only the 1.52. I didn't know that this file was changed in the update.

SpoiledFruit said:
On the prefix for game versions (original, Warlords, Etc.) I thing we can just separate them into there own groups instead of worrying about prefixes
You're probably right.

EDIT: Oh, and I'll send out a bulk PM to anybody not already posted on this thread to check status when the server is up.
 
SimCutie said:
I need some help..
I need unmodified Firaxis version of \Assets\XML\Interface\CIV4ColorVals.xml of update 1.61.
I inadvertantly overwritten a XML file in my Game installation directory instead of CustomAssets. :sad:
I have some backup but it was that of update 1.52, not 1.61.
Please, upload the file CIV4ColorVals.xml in ZIP as a attachment for me.... :p

Here's what you need.
 

Attachments

  • CIV4ColorVals.zip
    1.5 KB · Views: 378
Is anyone able to access the CVS, I was initialy able to access it make checkouts and perform commits but havent been able to get anything the last 2 days. Is SF locking us out or doing some kind of repair? 12monkeys says he's having problems as well so I dont think its me. Also has anyone yet commited a mod to the CVS, SimCutie sounds ready to do so are you able too? I continue to work on new Mods as I wait but I need to get a hold of that Options menu to plug in to it. And we need a solution to savegame compatability (see new thread) have we desided if backward compatability is a must for first release or is it a goal for next release?
 
Impaler[WrG] said:
Is anyone able to access the CVS, I was initialy able to access it make checkouts and perform commits but havent been able to get anything the last 2 days. Is SF locking us out or doing some kind of repair? 12monkeys says he's having problems as well so I dont think its me. Also has anyone yet commited a mod to the CVS, SimCutie sounds ready to do so are you able too? I continue to work on new Mods as I wait but I need to get a hold of that Options menu to plug in to it. And we need a solution to savegame compatability (see new thread) have we desided if backward compatability is a must for first release or is it a goal for next release?

CVS ist down since the last 3 days. Nobody can connect to it, though you can ping the server. It seems to be global SF problem, because a LOT of projects have such problems. If you look into the SF Support Requests there are tons of requests reporting CVS connect problems since days.
Right now, I haven't found any info from SF what happens there and what they are plan to do. Its simply frustrating, that they are not able to inform the users about the source of the problems.
 
How about to have some chatting on our project before we release first result?
I suggest it to be May 13, 23:00 GMT (Saturday, Today) at #civfanatics channel of IRC chatting.. It will be 19:00 in USA, NewYork Time (EDT)
 
SimCutie said:
How about to have some chatting on our project before we release first result?
I suggest it to be May 13, 23:00 GMT (Saturday, Today) at #civfanatics channel of IRC chatting.. It will be 19:00 in USA, NewYork Time (EDT)
Sounds like a good idea but...

I can't access the chat from the computers here. Always says "unable to connect to server" . I might try again later. I can't change any of the settings as they aren't my computers...
 
SimCutie said:
How about to have some chatting on our project before we release first result?
I suggest it to be May 13, 23:00 GMT (Saturday, Today) at #civfanatics channel of IRC chatting.. It will be 19:00 in USA, NewYork Time (EDT)

Mmmhh. This is 01:00 MES. I will try...
 
Top Bottom