Announcement

Collapse
No announcement yet.

Civ 4 "Final Frontier" mod

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Civ 4 "Final Frontier" mod

    Hey all,

    I have a few questions about "Final Frontier" mod. I've been trying to figure out a few things to enhance the gameplay somewhat. However, I can't seem to find what I need to change in the XML and Assets folder.

    1. I'm looking to expand the Starbase culture borders from a radius of 2 squares to the following:

    Starbase I: 2 square radius
    Starbase II: 3 square radius
    Starbase III: 4 square radius

    Where can I do this? I can't find "Culture generation" for the Starbase unit anywhere in the Unit XML file.

    2. How do I increase the population size the habitation domes give? As it stands, the habitation domes only give +1 population limit to each planet. I'm looking to increase that to +2 or even +3 population limit.

    3. How do I fix the scaled up population of each "city" or solar system? At size 1, its 1,000 people I believe. In other Civ mods and main Beyond The Sword games, a size 1 city has 10,000 people. How do I fix the Final Frontier population to match the Civ 4 city population or a bit higher?

    The reason I'm looking to fix the starbases is to fill in all these *annoying* gaps in my cultural borders in Final Frontier. In standard games on Earth (or your typical Civ 4 vanilla or Civ 4 Beyond the Sword games), I don't have any problem with these gaps in cultural borders. I just fill these gaps in with cities. But the problem in Final Frontier is that star systems sometimes are like 5+ squares away from each other, and it's annoying as hell to have many gaps in-between my systems. Nothing illustrates this well than space pirates popping up in the middle of my empire rather than the fringes, or enemy civ's slipping in a constructor unit to build a starbase or two in the middle of my empire *WITHOUT* open borders enabled.

    The reason why I'm looking to up the population stuff (habitation domes and city population levels) is to really have an epic space empire with billions of people, instead of like 30+ star systems with just 10 million people spread through them. A well developed 30+ star system empire should have like 50 billion people or more, not 10 million.

    Does anybody here know how I can fix Final Frontier assets to reflect all these issues I have? Other than these issues, Final Frontier is a wonderful mod that I can't just seem to stop playing. I've stayed up until like 1 or 2 AM playing it on days I'm supposed to wake up at like 6 AM for my daily commute. (grin)
    Geniuses are ordinary people bestowed with the gift to see beyond common everyday perceptions.

  • #2
    There's a very old post from the author of the mod here, as I recall it's intentional that there be large cultural gaps.

    I think the answer is to just move up infill Starbase construction on your priority list to reflect that opponents can reach them without open borders.

    (Kind of like archepello maps if there is just large enough gaps for there to be ocean tiles between landmasses as well.)
    1st C3DG Term 7 Science Advisor 1st C3DG Term 8 Domestic Minister
    Templar Science Minister
    AI: I sure wish Jon would hurry up and complete his turn, he's been at it for over 1,200,000 milliseconds now.

    Comment


    • #3
      In other words, am I stuck with building like 100 - 200 starbases to fill in every last little square within my empire? That's way overkill. Thats like 10k - 20k cash, plus another 50k - 100k cash to upgrade to Starbase III's. Not to mention that it would destroy all the challenge of the game, since AI units would go commit suicide at my starbases and get themselves killed en-masse. No mega threat of big unit stacks bearing down on solar systems anymore, which takes some fun out of the game.

      Also I'd have to delete bazillions of missiles that all these starbases would be producing. Each starbase produces a missile every 15 turns, so I'll end up getting 100 - 200 units every 15 turns. A lot of button mashing to "disband" or delete them all. Otherwise in like 100 turns or so, I'll have 1000 missiles, which is gonna take a huge chunk out of my economy, maintainence, and possibly even "end of turn" game speed itself.

      Thats why I want to have starbases give much bigger cultural borders so that I don't have to deal with these particular problems.
      Geniuses are ordinary people bestowed with the gift to see beyond common everyday perceptions.

      Comment


      • #4
        I'd sugest the Civ4-Creation forum if your trying to change your copy of the mod; that's where the experts on moding hang out.
        1st C3DG Term 7 Science Advisor 1st C3DG Term 8 Domestic Minister
        Templar Science Minister
        AI: I sure wish Jon would hurry up and complete his turn, he's been at it for over 1,200,000 milliseconds now.

        Comment


        • #5
          Re: Civ 4 "Final Frontier" mod

          Originally posted by Sovereign
          1. I'm looking to expand the Starbase culture borders from a radius of 2 squares to the following:

          Starbase I: 2 square radius
          Starbase II: 3 square radius
          Starbase III: 4 square radius

          Where can I do this? I can't find "Culture generation" for the Starbase unit anywhere in the Unit XML file.
          Look in the CvFinalFrontierEvents.py file and search for "def updateStarbaseCulture". Inside that function the two for loops determine how far away the borders spread. Right now the range is from -2 to 3 (which means 2 to the left UP TO 3 to the right, but not including the 3). Changing it to -4 and 5 would make a 4x4 grid.

          If you want to make the Starbases have different borders you'll have to do things a little differently. I don't know how familiar you are with programming, but you'll need to account for the identity of the Starbase in question everwhere that the "updateStarbaseCulture" function is called in that file.

          2. How do I increase the population size the habitation domes give? As it stands, the habitation domes only give +1 population limit to each planet. I'm looking to increase that to +2 or even +3 population limit.
          Open the "CvSolarSystem.py" file. Then search for "g_aiBuildingPopCapIncrease[5] = 1". The 5 refers to the Building ID. Change the 1 to whatever # you'd like.

          3. How do I fix the scaled up population of each "city" or solar system? At size 1, its 1,000 people I believe. In other Civ mods and main Beyond The Sword games, a size 1 city has 10,000 people. How do I fix the Final Frontier population to match the Civ 4 city population or a bit higher?
          I believe there's a function in the C++ SDK DLL which returns the population of a City... so to change this you'd have to recompile the DLL. Again, I don't know what your level of experience is with programming, but the change isn't terribly difficult if it's something you're used to doing.

          Jon

          Comment


          • #6
            Try this for the culture thing...

            Hi

            Funnily enough; I just decided to do the same thing; I wanted my starbases to increase in culture. Ive never touched Python before in my life; so perhaps my amendments could be better; but they work. (Does Python have a 'switch, case' statement?) :-P

            So; open up the CvFinalFrontierEvents.py file.
            Find the 'def updateAllStarbases(self):' function.

            This function loops through an array (aaiStarbaseList) of all the starbases on the map; assigning culture (currently static 2, 3) and other things to each one.

            First off we need to have some way of keeping track of the type of Starbase we are dealing with. Conveniently, we can add this info to the 'aaiStarbaseList' array. Within the myriad 'for' loops in that function; change this:

            Code:
            aaiStarbaseList.append([pUnitLoop.getGameTurnCreated(), iPlayerLoop, pUnitLoop.getX(), pUnitLoop.getY()])
            to this:

            Code:
            aaiStarbaseList.append([pUnitLoop.getGameTurnCreated(), iPlayerLoop, pUnitLoop.getX(), pUnitLoop.getY(), pUnitLoop.getUnitType()])
            You can now grab each starbase's type later on; and deal with it appropriately.

            Next, find this line a bit futher down:

            Code:
            self.updateStarbaseCulture(aaiStarbaseList[iStarbaseLoop][1], aaiStarbaseList[iStarbaseLoop][2], aaiStarbaseList[iStarbaseLoop][3])
            And delete it. In its place; put this:

            Code:
            if (aaiStarbaseList[iStarbaseLoop][4] == iUnitStarbaseID):
            	self.updateStarbaseCulture(aaiStarbaseList[iStarbaseLoop][1], aaiStarbaseList[iStarbaseLoop][2], aaiStarbaseList[iStarbaseLoop][3], 2, 3)
            
            if (aaiStarbaseList[iStarbaseLoop][4] == iUnitStarbaseIID):
            	self.updateStarbaseCulture(aaiStarbaseList[iStarbaseLoop][1], aaiStarbaseList[iStarbaseLoop][2], aaiStarbaseList[iStarbaseLoop][3], 3, 4)
            
            if (aaiStarbaseList[iStarbaseLoop][4] == iUnitStarbaseIIID):
            	self.updateStarbaseCulture(aaiStarbaseList[iStarbaseLoop][1], aaiStarbaseList[iStarbaseLoop][2], aaiStarbaseList[iStarbaseLoop][3], 4, 5)
            What this does is check what type of starbase we are currently dealing with; and sending the 'updateStarbaseCulture' function a couple of additional 'size' parameters accordingly.

            Almost done; but we need to adjust the 'updateStarbaseCulture' function to handle these additional parameters.

            Find the 'updateStarbaseCulture' function; the line looks like this:

            Code:
            def updateStarbaseCulture(self, iPlayer, iX, iY):
            change it to:

            Code:
            def updateStarbaseCulture(self, iPlayer, iX, iY, dx, dy):
            Then, in that function, change:

            Code:
            for iXLoop in range(iX-2, iX+3):
            	for iYLoop in range(iY-2, iY+3):
            to:

            Code:
            for iXLoop in range(iX-dx, iX+dy):
            	for iYLoop in range(iY-dx, iY+dy):
            Save the file, restart Civ4 FF, and open up World builder to test your new starbases. Personally, I think the Omega starbase now has a ridiculous border, but hey its certainly fills up those gaps.

            A circular border would be more difficult; I suspect it would require replacing the for loops with sine, tangent and other mathematical trickery. Now, if only we could get these starbases to have a minimal population and starship production; it'd be like Star Trek :-D

            Ive attached my CvFinalFrontierEvents.py file, with a .txt extension. Ive also modded the file so that the upgraded starbases ones put out missiles more quickly; every 15 turns for 1st, 12 turns for 2nd type, 8 turns for best.

            Hope your enjoying the mod as much as I am; Ive only been playing it for a week; its sat unregarded in my mods list for ages!

            Hope this helps
            Dave
            Attached Files

            Comment


            • #7
              Ok, I haven't played final frontier, but I have played Star Trek, which is a mod of this mod, and I had the same complaint.

              If you don't want to get into the heavy programming, I think there's a map option which gives a higher concentration of solar systems, and you actually can overlap them, which almost never happens under the default settings.

              anyway, with the more concentrated solar systems, you only need to build a few starbases to fill in the gaps, unless you are trying to rush to resources...


              Ah. I just looked at it, and found that final frontier has a setting for denser solar system packing. That should do the trick.
              Last edited by Father Beast; November 2, 2009, 23:56.
              Any man can be a Father, but it takes someone special to be a BEAST

              I was just about to point out that Horsie is simply making excuses in advance for why he will suck at Civ III...
              ...but Father Beast beat me to it! - Randomturn

              Comment

              Working...
              X