Final Frontier Plus

Hmmm... interesting, perhaps I'll end up finishing a game of FF with this - the lag always turned me off playing it (I can tolerate slow games if they have lot of stuff to keep me engaged, but FF is rather bare for the long turn times).

Anyway, what's the scope of the mod in the long run? Is FF+ only making it faster or are you planning to add in other features? Another problem with FF for me was that even vanilla BtS is usually much more engaging, due to things like events, UUs and UBs, more civs etc. - things that are sorely missing from FF.

Cheers, LT.
 
Cool. I'll definatly be using this as my mod base. Much less fiddling with with python. Out of curiosity, for civics, would there be anyway for you to set it up so civics reduce the cost of ships based on unitclass or unittype?

Already did this, since it's part of regular Final Frontier (Light Ship Doctrine, Capital Ship Doctrine, Carrier Doctrine). In CIV4CivicInfos, I added the UnitCombatCostMods array (see the modders' notes spoiler in the first post, or look at the actual file).

Hmmm... interesting, perhaps I'll end up finishing a game of FF with this - the lag always turned me off playing it (I can tolerate slow games if they have lot of stuff to keep me engaged, but FF is rather bare for the long turn times).

Anyway, what's the scope of the mod in the long run? Is FF+ only making it faster or are you planning to add in other features? Another problem with FF for me was that even vanilla BtS is usually much more engaging, due to things like events, UUs and UBs, more civs etc. - things that are sorely missing from FF.

Cheers, LT.

Hopefully, I'll add some of that stuff in the future. That is part of the plan- but finishing optimizing the code comes first. (Even with the current speed improvements, things aren't as fast as I would like them to be on the larger maps).

I seem to remember someone was working on random events for Final Frontier... but I don't know if anything came of it.

Great job. :goodjob: Glad to see someone take FF to the next level.

Jon

:blush: Thanks!

(Silly Christmas emoticons...)
 
Okay, so unitclass cost of ships can still be modified from civics with python, while what you did with XML tags makes it a general thing. This will be useful.
 
Already did this, since it's part of regular Final Frontier (Light Ship Doctrine, Capital Ship Doctrine, Carrier Doctrine). In CIV4CivicInfos, I added the UnitCombatCostMods array (see the modders' notes spoiler in the first post, or look at the actual file).

Have you added anything to the AI to make it give some value to the cost reductions when choosing the civics?

If not, it still won't pick those civics since it will still only give value to the 15% bonus to :hammers: it gets from the pacifism civic. In regular FF it almost never picks anything but pacifism once it can. Giving the the 3 doctrine military civics iAIWeight values of 6 makes it occasionally switch to one, typically in the late game when the total military unit cost penalty from pacifism finally becomes way too high (almost always Light Ship Doctrine, probably because it is first in the list). Higher iAIWeight values might make it switch a bit earlier, but there is still no way for it to pick the "right" one based on what types of ships it is building. It does, however, always build a lot of everything except squadrons (which it builds a few of) and carriers (which it almost never builds, which is a good thing since it can't use them) so anything but Squadron Doctrine does provide it some significant benefit.
 
Have you added anything to the AI to make it give some value to the cost reductions when choosing the civics?

If not, it still won't pick those civics since it will still only give value to the 15% bonus to :hammers: it gets from the pacifism civic. In regular FF it almost never picks anything but pacifism once it can. Giving the the 3 doctrine military civics iAIWeight values of 6 makes it occasionally switch to one, typically in the late game when the total military unit cost penalty from pacifism finally becomes way too high (almost always Light Ship Doctrine, probably because it is first in the list). Higher iAIWeight values might make it switch a bit earlier, but there is still no way for it to pick the "right" one based on what types of ships it is building. It does, however, always build a lot of everything except squadrons (which it builds a few of) and carriers (which it almost never builds, which is a good thing since it can't use them) so anything but Squadron Doctrine does provide it some significant benefit.

No... but I will for the next version. I'll make the AI check what unitcombat costs are reduced by the civic. Then check all the current builds of all cities, and get which ones are units. Then, if 50% of the units being built are cost reduced by the civic, I'll make the AI have an increased chance to switch to that civic.

Or should it be less? More like 40% or 30%?
 
Or should it be less? More like 40% or 30%?

It's difficult to some up with a general rule. I expect that there is a weighting system for the various factors and that it calculates the weights for each civic and compares them. This value of this factor should be comparable, in general, to how the AI decides to switch civics for other factors - this is the most like the military production modifier. I have no idea how this is determined. It may take the civ's unitprob into account. Odds are good that the first guess will be too little or too much, so you can probably just pick something in the realm of "sounds reasonable" and adjust it later - although switching a bit too infrequently is likely to be better than switching too much due to the anarchy. If my guess about the weighting system is correct, then the no-anarchy characteristic (which Hallis has) is presumably already in there and you won't need to do anything about that particular factor (so Hallis will switch more often that the other civs).

In general, the various civics need some work. In particular, you may notice that after sometime around the early mid-game time frame almost every AI civ will be using Democracy. The +3 happy in your X largest cities is significantly better than the other options in most cases - the exception is for players that get at least one of the happy resources (which appears to delay the inevitable switch for the AI), preferably both (which can allow it to not switch at all), and for a player that gets Religion (either founding it or getting it spread to him, either by natural spread once trade routes are up, via an advocate, or by capturing a system with it) and spreads it around; the extra happy point from a relatively cheap building is a large benefit that can allow you (or, sometimes, even the AI) to run some other civic for the entire game.

I think that any time one specific civic ends up being used for the about the entire game (after it becomes available) by probably well over 80% of the AI civs in every game, there is probably something wrong with the balance.

This would also indicate problems with the two industrial civics as well - some of that is because the AI presumably knows nothing of the +1 food/planet from Utopia (which is actually usually not a better option than the industrial one) or the +1 to the population limit of each planet from Green Economy (which is almost certainly better than the industrial type civic in the same column, in the long term) and is therefore undervaluing them. Since both of these involve per-planet effects, the only adjustment you can do is probably to add an iAIWeight value for them.
 
Any ideas for what could be changed in the current civic system then?

I think that it would be possible to make the AI aware of the planet food, if I added an array to civic infos that changed yields on planets. Of course, this array wouldn't actually do anything in the SDK- but it would do something in the python (rather like script data). But if it was set up this way, the AI could factor it in when deciding whether to switch civics.
 
Just a suggestion to both you TC01 and God-Emperor, why don't you work together and do 1 mod rather than work independently on separate mods for FF?

That sounds like a good idea.

What do you think, God-Emperor?


I should have the next version out either today or tomorrow. It will break save games, but should make things faster (thanks to the inclusion of CAR, a smaller speed mod by Sephi, and a couple of other minor tweaks in the python).
 
I've released v1.1, which will break any save games started under v1.0. I was able to get the zip to upload this time. The file's bigger, but you no longer need 7-zip to open it.

Here is a full changelog- some speed improvements, some AI improvements, and some other minor changes (like the build feat stuff):

-Merged in stmartin's CAR Mod
-Merged in Sephi's Faster BTS 3.19 modcomp
-Made getBestPlanetInSystem take into account the size of planets
-Made the city screen display planet names
-Added Unit Build feats for Final Frontier unitcombats (like Light ships)
-Fixed bug with Unit Build feats and units with no unitcombats
-Made AI take into account the unitcombat cost mods for civics
-Made AI aware of civics which increase yields on planets
-Lowered number of default civs on Standard, Large, and Huge worldsizes


Unfortunately, I've realized why the speed increase isn't as fast as I would like. Since one of the other changes I made was to make the AI update its solar systems every turn, the AI is now playing better but the game is now slower. Which means more optimization work to do.
 
Question: why not base the DLL on Better AI? That one already includes an improved version of CAR.
 
Great stuff:goodjob:

I have also made some tweaks: moved doTerrainExtraCost() and checkForTerrainEffects() to dll. Also SystemYields will be added with custom function ( to enable yields from specialist, corp. etc)

Question: why not base the DLL on Better AI? That one already includes an improved version of CAR.

Would love to see Better AI in FF (if it gets any use)!
 
I probably should have used Better AI, but I didn't think to... which means that I'll have to merge it in in the future. But I question how much of an effect it would have on where Final Frontier's AI comes up short- which is when dealing with solar systems and planets and all the other AI code in the python.

Great stuff:goodjob:

I have also made some tweaks: moved doTerrainExtraCost() and checkForTerrainEffects() to dll. Also SystemYields will be added with custom function ( to enable yields from specialist, corp. etc)

I forgot about doTerrainExtraCost()- it would be really easy to add to the SDK. checkForTerrainEffects() would be simple too. I'll do those for the next version. I also plan to move pirate spawning in by the use of eras- which means I'm going to add eras, based roughly around the three generations of ships.


A question- when you say you merged them, did you hardcode the feature types into the DLL or did you add booleans (or global defines) for the different feature types?
 
A question- when you say you merged them, did you hardcode the feature types into the DLL or did you add booleans (or global defines) for the different feature types?

I added few tags: GravityFieldFeatureType, iGravityFieldForce, iBlackHoleInArea, TargetWormholeType (moved also your Wormhole code to dll for more flexibility but haven't tested it yet)
 
Would you mind posting your code, then, so I can add it to the next version? (You can just attach a zip of all the edited files).
 
Given that eras, as done in regular CIv4, are a per-player thing, how are you using them to control barbarian spawning?
Half the players could be in the second era and the other half still in the first. So which list is used for the barbarians in such a case?
 
Sure

I actually haven't add feature damage text tag (right now it uses the Description text, which is just the feature name)

If you have any problems or suggestion, let me know :)
 
Originally Posted by PsiCorps
Just a suggestion to both you TC01 and God-Emperor, why don't you work together and do 1 mod rather than work independently on separate mods for FF?
That sounds like a good idea.

What do you think, God-Emperor?

I have no particular objection, and it may be a good idea.

You should note that my changes are python and XML (I am currently using BBAI v0.80 as well) and consists of changes to the existing content, additional content, bug fixes, and a few tweaks to the parts of the AI done in python. In some sense, that makes it the "second half" of what you intend to do - but that assumes my changes are along the same lines as what you have in mind.
 
Thanks Kiwikaz!

Given that eras, as done in regular CIv4, are a per-player thing, how are you using them to control barbarian spawning?
Half the players could be in the second era and the other half still in the first. So which list is used for the barbarians in such a case?

There is already a function which does this. CvGame::getCurrentEra() essentially averages the current eras of players to get a "game era". I'm using that.

I have no particular objection, and it may be a good idea.

You should note that my changes are python and XML (I am currently using BBAI v0.80 as well) and consists of changes to the existing content, additional content, bug fixes, and a few tweaks to the parts of the AI done in python. In some sense, that makes it the "second half" of what you intend to do - but that assumes my changes are along the same lines as what you have in mind.

I guess I need to merge BBAI sooner rather than later...

Honestly, I don't have any ideas for the "second half" of this project yet- other than generally add new content to areas that Final Frontier is lacking in. So I don't think I would have any problem with your changes or ideas.
 
Top Bottom