No announcement yet.

What needs improvement in Civ IV?

  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Duplicate post


    • #32
      Originally posted by nbarclay
      How hard would it be (if it's practical at all) to do a loop that calculates the total value of all of the techs that each civ has? That would keep players' skipping some of the early techs from skewing the comparison.

      I'm skeptical of how well calculations based on differences in era would work. If I remember correctly, a CS slingshot puts a player in the third era even though he may still be missing several first-era techs. And single-era differences can very easily be a result of a civ's having researched "deep" rather than "wide," not a result of a genuine difference in overall technology.
      Yes if you were going to calculate tech level this would definately be the way you'd do it.

      It shouldnt be too hard to do it with a loop at all I would think. The alternative would simply be to have a counter set up that has the beaker cost of any tech the player aquires (wether from trade, huts or research) added to it.


      • #33
        Just remember that a counter-based approach requires initializing the counters before they are used, whether at the beginning of the game or when a save is loaded. Still, that wouldn't be very hard. One approach would be to have a boolean counters_intitialized variable initialized to false and only access the counters through functions that check counters_initialized and run an initialization loop to initialize all the counters if it's false. (Obviously, the initialization function would change counters_initialized to true.)

        Now we just have to figure out a good formula for calculating the discounts. Unfortunately, every time I start to come up with an idea I like, I start running into potential side effects that I'm not happy with.


        • #34
          Okay, here's something pretty complicated, but I think it might work. For each civilization, keep track of the following:
          • total_tech_cost: total cost of the techs the civ has researched
          • the cost of the five most expensive techs the civ has researched
          • backward_threshold: the cost of total techs researched minus the five most expensive

          When calculating whether current_civ is backward, loop through the other civs and check whether current_civ's total tech cost is less than each other civ's backward_threshold, i.e. whether the civ is the equivalent of five techs or more behind. If it is, the civ is considered backward relative to the other civ and receives a bonus. If a civ is backward relative to multiple other civs, sort the other civs in descending order of their backward_thresholds.

          Then run through a loop calculating a discount factor consisting of
          ((1 - (current_civ.total_tech_cost/other_civ.backward_threshold)) * weight_factor)

          The weight factor would be larger for the most advanced civ than for subsequent civs. A weight factor of 1.5 would result in a discount of about 30% (if my data entry and calculations are correct) for a civ that is behind by five modern techs plus five average-cost industrial techs, or about 40 percent for a civ that's behind by five renaissance techs and five average-cost medieval techs. Note that these bonuses reflect a total deficit of about ten techs.

          For civs after the leader, I can't come up with any approach that would keep exactly the same feel without regard to how many or few civs are in a game. One possibility that I hope can at least come reasonably close would be to divide the weight by (1.5 + N/38), where N is the number of civs, for each move down the list of civs. (That is, the division would apply once for the second place civ, twice for the third, and so on.) Under that formula, with three civs, the second civ would count about sixty-three percent as much as the first, while with eighteen civs, the second would count only half as much as the first. On the other hand, the more civs are in a game, the more civs are likely to be in close enough contention with the leader to factor into the bonus calculations for backward civs.

          Once the total backwardness bonus is calculated, a check would be needed to make sure the bonus doesn't push the cost reduction below a minimum threshold - say 10 percent (i.e. a ninety percent bonus). Then the resulting bonus wouild be applied to the cost after all other factors are applied. For example, if a civ gets a 30% bonus due to other civs' knowing a tech (and any other factors that might enter into the existing bonus calculations), and the backwardness bonus is 40%, the final cost would be 0.7 * 0.6, or 0.42, times the full research cost.

          Note that within this basic structure, there would be room for tinkering with the weight_factor, the number of techs that count toward the backwardness_threshold, or both, if the initial attempt doesn't produce the desired feel.


          • #35
            One more thing: it would probably be best not to give backward civs (or at least backward human civs) a bonus until they enter the renaissance era. Otherwise, players might be able to exploit the system by over-REXing and then using the backwardness bonus to help climb back out of the hole faster once the over-REXed cities have plenty of cottages.


            • #36
              My reasoning for using a counter is simply that to use a system where it runs through the techs they own and calculates the value on the fly you'd have to recalculate every turn... which inevitably is going to eat up some processor power and while for most people such a small function wouldnt make any noticable difference, those that are running bare minimum specs probably dont want any more slow down.

              The way I was thinking about it, the player would never get a discount himself, the bonus would only ever apply to AI. Along the same lines all comparisons of tech level should be against the player rather than just against the #1 civ imho.

              On high difficulty levels the AI is going to outpace you early on in 99% of games and this is as it should be, I dont think the aim of the balancing should be to counteract that (although as I said earlier, initial bonus might be reduced to balance the lengthened time the AI challenges you).

              Instead, in my opinion, what the discount should do is make it so that after you've built yourself up to be able to exceed the AI there is still some challenge there.

              I like your formula for calculating wether a civ is backwards, it certainly has potential. If it proves too difficult to implement the alternative is simply a comparison of total beakers, but hopefully we can stick with your system because its certainly smarter. (e.g. if computer A has only 80% the total beakers of the player they get a discount) perhaps with the percentage thresholds changing as time progresses (its more reasonable to have a 10% advantage on turn 200 than it is 100 for example).

              I also think there should be a global discount percentage given to all AI regardless of individual size. We are trying to balance the AI vs the player, not the AI against each other and if we did otherwise it could reduce the difference between different AI personalities (for example this system would give more benifit to tokagawa than it would ghandi and thus nulifies a strength of one AI while fixing the weakness of another). This way we keep the top 1-3 civs challenging but still reward the player by allowing them to push ahead of the rest.

              Another reason for a global discount percentage is to prevent abuse. Otherwise the player can conquer 2 civs down to one city each, force them to become vassals. With that done he can beeline through the tech tree for the rest of the game safe in the knowledge that he cant fall far behind the general tech level thanks to the amazingly huge % boost his vassals get to research.


              • #37
                One thing that could be worked in, would be to check the status of being a Vassel. If your vasseled, you lost all or part of the backwards bonus. Remember, the same could be applied to an AI-to-AI Vassel situation.

                Another thing could be a scaling percentage that is based on the game turn (not just the era bonus). As the AI gets a bonus on Inflation, that could be reduced somewhat, to better facilitate the AI's economy (helping to prevent their Crashes).

                Also, maybe an extra comerce bonus, depending on number of AI cities. It would be nil to small at the start, but as the AI expands, then it will add in an additional overall bonus, economocally. Possibly also tying in pop levels.

                Come and see me at WePlayCiv
                Worship the Comic here!
                Term IV DFM for Trade, Term V CP & Term VI DM, Term VII SMC of Apolytonia - SPDGI, Minister of the Interior of the PTW InterSite Demo Game


                • #38
                  What needs improvement in Civ IV

                  Improving the game: Id like to see city improvements be un-hard-coded so that they could be modified and added through rules.txt. I have no idea if this would be practical to do I cant code my way across a chessboard but I have always wanted to be change the effects of some of the buildings.

                  As for 2k Games, they would get the goodwill of gamers. Good PR is always good for the bottom line; can you say Brand Loyalty? As the actions of certain companies EA, Infogrames make me less inclined to buy their games or boycott them outright, positive actions would lead me to be more inclined in buying their games or at least being more aware of their games Stardock. As my gaming budget is even smaller than usual, EA and Infogrames wont get a dime no matter what, but Stardock might. For me, Civ2 code release, particularly free release, would certainly buy 2K Games quite a bit of my loyalty. Pay to release would taste a lot like chiseling the consumer, in my mind which is why I dislike EA and Infogrames, uncoincidentally.