RFC Epic/Marathon

embryodead

Caliph
Joined
Jan 1, 2003
Messages
5,179
Location
basement
RFC Epic/Marathon

This modmod enables longer games in RFC - Epic (750 turns) and Marathon (1500) - in addition to Normal speed. The CAR mod and BTS on Speed are included for extra speed.

Download: RFC Epic/Marathon 1.22 (31.7 MB)

Scaling
Apart from things that normally scale in BTS, RFC Epic/Marathon also scales all events (so that birth dates, UHV dates etc. are correct) and many durations and frequency of events so that Plague, Barbs, Rise and Fall, Stability, Congresses etc. are in line with game speed.

Unique Victory Conditions
Scaling also applies to some UHV conditions - you'll need more gold/culture on Epic/Marathon to accomplish the UHV. Check the victory screen in-game to see the actual values.

Changelog:
Spoiler :
1.22
- Lowered the research modifers on Epic/Marathon (faster research, but see below)
- Added a progressive balancing system that gradually increases research costs by up to 20% in the mid- to late-game (only affects Epic/Marathon)
- Merged in speed tweaks from BTS on Speed 2.0 by Sephi
- Merged in Uncut Dragon's speed tweak from Better BTS AI
- SDK update (modders only):
- CyPlayer.setCivilizationType now updates the civ color, flag, art style and other graphical stuff
- CyPlayer.setRevolutionTimer and CyPlayer.changeRevolutionTimer - exposed functions to manipulate revolution timer

1.21
- Fixed the embassy-related Python exceptions that popped up for early civs (thanks Leoreth)

1.2
- Fixed the scaling of Congresses and Communications for Epic/Marathon speed
- Enabled modular loading so that installing RFC VD for this mod is one step easier
- Disabled the unit cost mod python callback (faster) and moved the worker/settler penalty code to CvPlayer::getProductionNeeded
- Added suppression of autosaving during AI Autoplay (faster); if for some odd reason you want to disable it, you can do so in GlobalDefinesAlt.XML
- Exposed a number of SDK functions to Python, may be useful to modders (see Readme for details)

1.1
- Fixed the >1905 AD research bonus that was wrongly applied from 400 AD onwards, on all speeds
- Fixed the 1000 BC - 600 AD research penalty that did not get applied properly to Epic & Marathon games
- Fixed the new born civ research bonus (was too high)
- Lowered research cost back to 165% and 330%
- Fixed the three buggy mercenary names from RFC (Zulu:Zulu, Korean:Koreans...)
- Fixed RFC Python bug with iFish in 1852 AD
- Reduced pickling to load/save (approx. 10% faster turns)

1.0
- Increased research cost to 185% on Epic and 370% on Marathon
- Permanent stability penalty from Anarchy now scales down with game speed
- Fixed Mediolanum spawn date
- Adjusted Judaism and Christianity founding date on Epic and Marathon to match research rate
- Added Installer

0.4
- Updated the modmod to RFC 1.187
- Increased unit training and research cost by 5% on Epic and 10% on Marathon
- Increased Settler and Worker training cost on Marathon by 1/3
- Fixed Roman UHV descriptions in Victory Screen

0.3
- Changed Babylon's leader switch date from 1600AD to the proper 1600BC
- Fixed the bug that caused Aztecs (and probably a few other civs) start with a catapult and 1 turn early on Marathon
- Research rate on Marathon should be more balanced now (changed Research modifier from 285% to 320%)
- Time limit is now properly 2020 instead of 1975 on Marathon
- Mercenary hire cost is now scales with game speed

0.2
- Fixed the inflation rate to scale properly
- Fixed the leader change mechanism
- Khmer, Viking, Mali and Incan UHVs now scale with game speed (1.5x and 3.0x for their Gold and Culture amounts)
- Victory screen now displays UHVs with scaled values
- Few more checks in RiseAndFall.py are performed less frequently on Epic/Marathon (resurrection, fall of civs, fragmentation, minor techs, etc.)
- Stability normalization now scales with game speed

0.1
- Initial release

Changes to DLL:
- integrated CAR MOD 0.3
- added getTurnForYear() and related functions (CvGameCoreUtils)
- changed startingTurn[] to getTurnForYear(startingTurnYear[]) and 181 to getTurnForYear(600) everywhere
- if starting turn is 181 it is converted so that the late start is always 600 AD, no matter what speed/calendar is used (CvGame::init)
- research bonus duration adjusts with game speed (CvTeam::getResearchCost)
- other speed adjustments (CvTeam::AI_defensivePactTrade)

Changes to XML:
- Added Epic & Marathon game speed types (CIV4GameSpeedInfo.xml, CIV4CultureLevelInfo.xml)

Changes to Python:
- getTurns(int) added to RFCUtils
- all turn consts, tBirth references, some intervals and durations changed to the new system (pretty much all py files), e.g. instead of con.i1800AD you'd now use getTurnForYear(1800), and instead of "iGameTurn % 10" you'd use "iGameTurn % utils.getTurns(10)"
 
RFC Epic/Marathon (WIP)
Download: http://atomicgamer.com/files/83981/rfc-epicmarathon-0-1
(Unzip into Beyond the Sword/Mods/RFCMarathon folder)

I ended up doing the Python part, so here it is, untested but playable. On autoplay it looks OK up to American spawn; and I'm playing an Incan game on Epic atm.

The mod enables longer games in RFC - Epic (750 turns) and Marathon (1500) - in addition to Normal speed. The CAR mod 0.3 is included for some extra speed.

Detailed info:
- Apart from birth dates, UHV dates etc. many durations and frequency of events are adjusted for different speeds, so that plague, barbs, Rise and Fall, Stability etc. scale in line with game speed.
- Some UHVs may be easier on Epic/Marathon, though pretty much all factors are scaled already. I made Egypt's UHV change dynamically in line with game speed's culture levels (750 and 7500 for Epic; 1500 and 15000 for Marathon) but didn't touch anything else.
- I initially used caching of values in Python but it was only causing trouble. I may re-add caching within the DLL later, but so far it seems unnecessary in terms of speed.
- You can add more speed types (e.g. Quick, I thought it'd be pointless) in the XML, given that you update the simple getTurns() function in RFCUtils.py

Changes to DLL:
- integrated CAR MOD 0.3
- added getTurnForYear() and related functions (CvGameCoreUtils)
- changed startingTurn[] to getTurnForYear(startingTurnYear[]) and 181 to getTurnForYear(600) everywhere
- if starting turn is 181 it is converted so that the late start is always 600 AD, no matter what speed/calendar is used (CvGame::init)
- research bonus duration adjusts with game speed (CvTeam::getResearchCost)
- other speed adjustments (CvTeam::AI_defensivePactTrade)

Changes to XML:
- Added Epic & Marathon game speed types (CIV4GameSpeedInfo.xml, CIV4CultureLevelInfo.xml)

Changes to Python:
- getTurns(int) added to RFCUtils
- all turn consts, tBirth references, some intervals and durations changed to the new system (pretty much all py files), e.g. instead of con.i1800AD you'd now use getTurnForYear(1800), and instead of "iGameTurn % 10" you'd use "iGameTurn % utils.getTurns(10)"

Wonderful!!:goodjob: Just one question on the bold part (to be honest, without playing the game so far): did you touch the generation of Great Persons? If so, it might be that 7500 and 15000 are too much. The same thing could apply for Mali although it is less GP-dependent.
 
Wonderful!!:goodjob: Just one question on the bold part (to be honest, without playing the game so far): did you touch the generation of Great Persons? If so, it might be that 7500 and 15000 are too much. The same thing could apply for Mali although it is less GP-dependent.

That's a good point. I didn't touch it myself, so to speak, but it scales along with growth, research etc. by default as in BTS Epic/Marathon, so technically you should get the same amount of GPs. The Egyptian UHV scales like normal culture levels do in BTS, frankly I'm not sure why seeing that everything from culture to GP rate is slower. EDIT: err, not slower. There should be no problem, you get same amount of GPs, but Great Work culture scales as well, IIRC. Just Khmer's UHV needs scaling as well.
 
Well, as I see it, the player can generate the samen amount of Great Artists, which means 1 or perhaps 2. Of course, wonders give much more cumulative culture, but in the end they don't nearly generate as much culture as Great Artists do (though the balance might have shifted). I think the best way is to just try it out. I'll try a Marathon game soon.
 
I'm sure whatever is out of balance can be easily reported and fixed by you though, no? :)
I'll probably play a game as Greece in a few hours if I have some free time, will let you know if anything odd happened.
 
Well, as I see it, the player can generate the samen amount of Great Artists, which means 1 or perhaps 2. Of course, wonders give much more cumulative culture, but in the end they don't nearly generate as much culture as Great Artists do (though the balance might have shifted). I think the best way is to just try it out. I'll try a Marathon game soon.

No, this is not a problem - you get the same amount of Great Artists, but the amount of culture their give is scaled - +6000 on Epic and +12000 on Marathon, so in the end both culture and GPs work the same way as in Normal speed.
 
I tryed a game as Rome...I think that there is something wrong with inflation because I have to pay 41 per turn only for that...(I pay only 19 for city maintenance and 9 for civics)
Oh and Greece founded christianity way before the ethiopian spawn.
Anyway great work! ;)
 
I just started a game as Carthage on Marathon, and it seems there's a problem with the changing AI leaders: at Carthage's spawn, Gilgamesh still leads Babylon, and Alexander and Darius have already taken over their countries. Also when Rome spawns Augustus leads them.
 
This is good news indeed, and long overdue! :goodjob:

As expected there will be an endless amount of adjustments to be made, but once done I will probably be using this version instead of the default mod...
 
On the inflation issue: Inflation is controlled by two values in GameSpeedInfo: iInflationPercent and iInflationOffset.
iInflationPercent is (approximately?) the inflation rate per 100 turns, compounded multiplicatively; if it's 50, for example, inflation will be at 50% after 100 turns, 125% after 200 turns, and 237% after 300 turns. Stock RFC has it at 45 for normal speed, which is noticeably higher than the 30 for normal speed in the standard game.
iInflationOffset is the negative of the number of turns before inflation starts at all. Stock RFC has this at -120 for normal speed, compared to -90 for normal speed in the standard game; this means it takes longer to get inflation started.
In the long run, the greater inflation rate wins. Some comparisons:
Turn 150: RFC 12%, standard 17%.
Turn 250: RFC 62%, standard 52%.
Turn 350: RFC 135%, standard 98%.
That last number is just brutal for the Americans, and is why I drastically cut inflation for my games (along with the generally slow tech rate).

So, that's how inflation works. What adjustments should you make for your new game speeds? Scale iInflationOffset with the construct/create/growth/etc. modifiers; 1.5x for Epic, 3x for Marathon. Scale iInflationPercent with it's reciprocal; 2/3x for Epic, 1/3x for Marathon (all compared to normal, of course).
 
Ledear change
Thanks apenpaap, it's fixed for the new version. For a local fix, it's RiseAndFall.py line 920, there are three iGameTurn checks that I missed.

Inflation
Oops, I scaled both RFC values by 1.5 and 3.0, so inflation percent is waaaay too high indeed.

The last issue is pretty critical, I'll up a patch tonight/tomorrow.
 
Version 0.2 is available, also as a patch:

- Fixed the inflation rate to scale properly
- Fixed the leader change mechanism
- Khmer, Viking, Mali and Incan UHVs now scale with game speed (1.5x and 3.0x for their Gold and Culture amounts)
- Victory screen now displays UHVs with scaled values
- Few more checks in RiseAndFall.py are performed less frequently on Epic/Marathon (resurrection, fall of civs, fragmentation, minor techs, etc.)
- Stability normalization now scales with game speed
 
Would there be any potential conflicts if I tried to combine this with the RFC Varietas Delectat?
 
Would there be any potential conflicts if I tried to combine this with the RFC Varietas Delectat?

Nope, no conflicts whatsoever.
 
I have a question regarding which files are absoulutely required for this modcomp to work. Especially the XMLs. A problem with European languages on Korean OS requires me to patch every XML file in CIV IV with 'fixed' versions - It seems that this Modcomp overwrites some of the problemetic XML items in the original RFC, as I keep getting XML parsing errors when I run the game with it, and since fixing the problem line-by-line is extremely painful and timeconsuming, if you can inform me of which files can be excluded from the fixing process, it will be greatly helpful.


EDIT: I'm trying all XML fixing methods I know but so far none of them has succesfuly loaded the modcomp. Perhaps it is actually incompatible with VD? I'll try running the modcomp without VD to see if that works.

EDIT2: OK, I've given up trying to fix the problem myself; I am simply not qualified for this kind of meddling.
A few new things I've noted in the process:
-Whenever the Epic/Marathon modcomp is applied, RFC disappears completely from the Scenario list. This has been preventing me from playing the modcomp all the time.
-If I load the mod anyway, an xml parser error occurs telling me that the XML cannot be read, with the notification that the line stopped on a line ending with 'python callback'.
-If I load only the files mentioned in the changelogs the game crashes upon loading RFC.
 
This is a very good mod. I'm playing as the Babylonians and I managed to hold off both Persia and Greece in simultaneous warfare after refusing to give up my cities. We'll see how I handle the Arabs and the Turks. The slower pace really helps with building a sizable army.
 
EDIT: I'm trying all XML fixing methods I know but so far none of them has succesfuly loaded the modcomp. Perhaps it is actually incompatible with VD? I'll try running the modcomp without VD to see if that works.

EDIT2: OK, I've given up trying to fix the problem myself; I am simply not qualified for this kind of meddling.
A few new things I've noted in the process:
-Whenever the Epic/Marathon modcomp is applied, RFC disappears completely from the Scenario list. This has been preventing me from playing the modcomp all the time.
-If I load the mod anyway, an xml parser error occurs telling me that the XML cannot be read, with the notification that the line stopped on a line ending with 'python callback'.
-If I load only the files mentioned in the changelogs the game crashes upon loading RFC.

I think you're doing it wrong. First of all, this modmod is not applied to RFC, it has its own folder RFCMarathon (the 0.2 version at least). It's installed just like RFC, into the Mods folder, and should appear as RFCMarathon on the list, so you can play both. It's not a modular XML like VD, trying to install it into the original RFC folder will overwrite a lot of files and break both mods.

Launching the maps themselves from a wrongly installed mod will never work.

Also note, that this mod uses modified CvGameCoreDLL and will not work on Macs for this reason.

VD is modular XML that does not conflict with either RFC or RFCMarathon, and can be applied to both.

For adding Korean text, the only new XML file is Assets/XML/Text/CIV4GameText_VictoryRFCMarathon.xml , although it comes with all the files that are originally in RFC (you can safely replace them with all the Text/ files from your Korean version of RFC)

That's all I can think of for now, but so far it seems you were overwriting RFC files, which is what caused the problems (and you need to add Korean tags, I guess, just like with basic RFC)
 
Top Bottom