RFC Epic/Marathon

How is the game speed with this on marathon mode? In normal RFC things tend to start to slow down in the late 1600s and get progressively slower into the late game. Playing RFC in Marathon, does start getting slower around the same date or would it happen around those turn numbers (which if playing marathon would be much sooner)?
 
I though North Africa changed from Africa to Asia when the Arabs spawn
There's something to it. I remember in one of my Persia games (not sure about the patch version, though) my Great Wall didn't extend to my Egyptian borders.
 
How is the game speed with this on marathon mode? In normal RFC things tend to start to slow down in the late 1600s and get progressively slower into the late game. Playing RFC in Marathon, does start getting slower around the same date or would it happen around those turn numbers (which if playing marathon would be much sooner)?

Not sure what are you referring to, but the calendars on Epic and Marathon were done in such a way as to mirror RFC calendar on Normal speed, with prolonged Ancient times etc. If you mean turn times - they should be getting slower at the same time, or earlier, due to larger number of units. There are speed improvements in this modmod, however, that make mid- to late-game turn times roughly 20% faster compared to RFC.

Nothing happens on explicit turns, however. On Epic and Marathon, all things are scaled to match years from Normal game, not turn numbers (e.g. the research slow down you may know from RFC).
 
Regarding continents, for someone (like me) with no programming knowledge at all, it's really interesting to find out a bit about things behind the scenes such as continent border changes. What continent would Siberia fall under? Fact that AIs can't wage war period aside, it seems like wars between AI controlled Russia and Mongolia have always been particularly lackluster. Would this be more of a result of continent borders or settler&stability maps?
 
I believe that Siberia is supposed part of Europe once Russia steps into the arena, but I haven't seen the actual code myself... Also, map areas is a subject I'm not very familiar with myself.
 
I think its because the Russians hardly ever colonize Siberia. If its part of another continent they would be eve less inclined to do so.

Personally I'm just gonna script Russian colonization of Siberia. :rolleyes:
 
Checked the code and:
- Siberia and part of Central Asia counts as Europe
- North Africa counts as Europe
- Constantinople becomes Asian on Viking's birth
- North Africa changes from Europe to Africa on England's birth

North Africa is never Asian, but Arabs flip a city there so they consider it their secondary continent, though it still cripples them, same as Turkey. From my tests with SoI (where I abandoned fake continents in the end) the main problem is that the AI does not move units between continents by land, it won't even build roads between them, though in RFC cities are close enough for the city-roads to form a network.
 
Just a note on the anti-pickling - it increases speed by 10%+ but there's one side-effect relevant to modders only: if you edit py files and get back in-game to reload the modules, all stored data will be reset. So if you want to continue playing, simply save your game before editing python, then reload after you're done.

Like I said, this has no effect on players, it's just something for python coders to remember.
I've been having a similar issue with my own project and I think I finally cracked it. This is what you wanna add to CvRFCEventHandler.py:
Code:
gc = CyGlobalContext() 
[B]if gc.getMap().getMapScriptName():
        sd.load()[/B]
What it does is that it identifies whether or not the module is being initialized before or after the game has started. In the latter case there would already be stored scriptData available in the CyGame instance, so that should be then loaded. You have to save the game (ctrl + s) before altering any .py files though, but its not necessary to reload the actual game.

(The conditional statement can of course be anything that returns a empty string or a None type before the game starts.)
 
It actually returns the full path to the current map script/WBS - the actual file. You could as well check for game speed, difficulty level, calendar, starting year or anything really that would return None before there is a game instance.
 
Then it should be "if not", shouldn't it?
No, but you could just test it yourself.
or are you reloading every turn?
Hmm... I don't know what you mean by "reload".

What this does is that it doesn't fire the sd.load() invocation then the game (initially) initialized - pre-game. Then the scriptDict is setup via the regular call from onBeginGame() as intended.

But when Python is reloaded during game play (whenever any previously loaded .py file is changed/saved) then there will be a map name path (or whatever you wanna call it) returned making the conditional statement pass - and sd.load() is executed without having to be called via any of the game event calls (like onLoadGame() or whatever).

I really don't know how to explain this... :crazyeye:
 
Yes, if you use all the appriopriate tools: setCivName, setFlag and setCivilizationType, and setLeader if needed. This way you can have full dynamic civs, not just dynamic civ names. Icons, UUs, UBs etc. will change, but since civ index stays the same, anything that relies on it e.g. UPs and UHVs, won't change without extra work.
What about player/team color? (I can't seem to find anything in the API for this.) I have the dynamic Byzantium thing working sans the color - Byzantium in the 3000 BC has the Celtic green color... :p
 
What about player/team color? (I can't seem to find anything in the API for this.) I have the dynamic Byzantium thing working sans the color - Byzantium in the 3000 BC has the Celtic green color... :p

Color is in the CivilizationType (XML). Never changed it but if it doesn't work, then well, I don't know!

EDIT: If the above doesn't work, there's a way to force another color but not without another DLL update.
 
I think the problem with Celtia becoming Byzantium dynamically is that Byzantium's XML is never loaded on initialization. This is also why I couldn't get the civilization type with CivilizationTypes.CIVILIZATION_BYZANTIUM - I had to essentially get it with getInfoTypeForString().

The same thing should be true about Celtia in the AD 600 scenario.

So my conclusion is that the team retains the color that was specified when the CivilizationTypes were set by loading the specified XML from the entries in the WBS. And the team color doesn't change dynamically.
 
The XML is loaded, it's just the color that seems to be the problem. I transform Ghorids into Delhi Sultanate, and the latter is never loaded in the WBS either. I just used XML index to refer to it. It all works, icons, UUs, UBs etc. come from XML after all, but my civs have the same color so I never looked at it. Color can be set with GC.getInitCore().setColor(PlayerTypes eID, PlayerColorTypes eColor), seperately from CivilizationType, but that's not exposed yet.
 
Oh, any updates coming up? :D
 
setCivName is Rhye's method used for dynamic civ names, already exposed, in CyPlayer class:
CyPlayer::setCivName (std::wstring szNewDesc, std::wstring szNewShort, std::wstring szNewAdj)

Only problem is that Rhye's dynamic civ names mechanism in the DLL will override this, so it is necessary to override them in turn (every time the civics change I guess, or maybe even more often?). EDIT: at least for the major civs, Celtia/Byzantium aren't changed ofc.
I finally got around to testing setCivName() but nothing happens. :confused: I've tried both a script and in the console. There are no exceptions either, for that matter. All names just stay the same whatever I do...

edit: I have also confirmed with getCivilizationDescription() and the other methods that none of the forms have changed.
 
Back
Top Bottom