Announcement

Collapse
No announcement yet.

Final (5.3) Tech Dynamics

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Final (5.3) Tech Dynamics

    These are the final equations for technology change and the plans for coding a technology tree creation utility. If you see the need to make any changes, this is the last chance to do so before programming time is invested in the system and tech editor.

    I will not rederive any of the equations or discuss any of the math here. I will simply trace the path from RP to tech level change, show how tech level change affects things, and describe what the editor needs to do. The discussion of the tech tree is in the Technology System Version 5.1 thread.

    These equations are the same for all levels of technologies. The only real difference between Level 1, 2, and 3 technologies is the way the interface treats them.

    Constants and Variables for Tech Growth:

    Tn: The tech level on the turn before the calculations.

    Tn+1: The tech level after the calculations.

    m: This constant determines the effect that RP’s have on the growth and maintenance of a certain technology. It will probably be set to about 0.01, but can be changed for each tech.

    c: This constant determines the amount of upkeep that a certain technology requires. It will usually be around 0.02, but can be different for different techs.

    Ts: This is the level that a technology is at when it is first discovered.

    E: This variable influences the difficulty of maintaining a technology. It will be influenced by the social and government model, among other things. It will not be functional for Demo 5, but we should prepare a place for it. For now, it will be equal to one.

    H: This variable is the total influence of all helper technologies. It is determined by the following constants, variables, and equations:

    HT1 through HTx are the technology levels of the tech’s helper technologies. These would logically have to be the technology levels at the previous turn. A level of technology that was just calculated would not be able to impact something that is theoretically happening simultaneously. For this reason, Tn for every tech should be stored until all of the tech level calculations are finished.

    h1 through hx are constants that determine the influence of each helper technology. O1 through Ox are the tech level offsets applied to each helper technology. They give a bonus or penalty to the helper tech levels so that research is easier or harder.

    W determines the overall influence of the helper techs. After all of the playtesting is done, we might fix this at a single value, but for now we should keep the ability to alter it so we can test different values.

    RHL = (h1*(HT1n +O1-Tn) + . . . + hx*(HTxn +Ox-Tn))/(h1+ . . .hx)

    H = 2^(RHL/W)

    I: This variable influences the difficulty of raising technology levels. Like E, It will be influenced by the social and government model, among other things. Also like E, it will not be functional for Demo 5, but we should prepare for its inclusion and set it equal to one for now.

    DR: This determines what diminishing returns, if any, will be applied to excess RP generation. Like W, it is here for testing purposes and might be fixed in the final model.

    The steps from RP to tech change are as follows. V will describe some quantity based on RP’s that is carried over from one step to the next.

    1) V1 = RP*m - E*c*(2^((Tn-Ts)/10))

    2) If V1 < 0, then V2 = V1.
    Otherwise:

    V2 = H*I*V1^DR

    3) Tn+1 = 10/ln(2)*ln((2^((Tn-Ts)/10))+(V2))+Ts

    After this process is completed for every technology, the effects of the technology change must be calculated. Some technologies like Sanitation have direct effects on other models based on their level. These effects will probably not be in Demo 5, but we will have to prepare for that functionality in the tech model.

    It might seem like these changes should be calculated in the other models. For example, the disease model could simply import the level of some tech and use that number in calculations of the spread of a plague. This would be easier, but it would cause big customizability problems. A scenario designer would have to remember that slot #87 and no other will affect the spread of disease. Civ 2 had many problems like this.

    To ensure flexibility, each technology will have to have "Alter Variable" commands that can be defined in the tech editor. All of the variables in other models are defined independently of the technologies. Each individual technology would have the ability to affect those variables in some way. For example, the disease model might define some variable named CLEAN. The number of new people infected by a disease is divided by his variable. The Sanitation technology would then have an Alter Variable command like, "CLEAN=CLEAN*(.04T)" As the tech level increased, CLEAN would increase and disease spread would slow.

    Another effect of technology increase is to allow access to a new technology. If the requirements for some technology are met, then that technology is set to its starting tech level and the player is notified of its invention. On the next turn, the tech level of that technology is recalculated.

    The main effect of technology, and the one that will be included in Demo 5, will be applications and application factors. The application factors will be calculated for each application as follows:

    E is the application effectiveness factor. If the application is a unit, it changes the unit's power. If the application is an improvement, it changes the effect that the thing has.

    T1 through Tx are the levels of the technologies that are requirements for the application. R1 through Rx are the tech level requirements for the application. h1 through hx are constants that determine the influence of each required technology on the growth of the application. L is a constant defined for each application that determines the expected lifetime of the application.

    RTL = (h1*(T1 - R1) + . . . + hx*(Tx - Rx))/(h1+ . . .hx)

    E= RTL/10 + (10+L)/10 ^ (RTL/10) when RTL is positive or zero.
    E = (10+RTL)/10 when RTL is negative.

    Applications should also eventually have an Alter Variable command. The effect that the application has on some other thing is determined by the application level. For example, a sewer system would have an Alter Variable equation like, "CLEAN=CLEAN*(.2E)" There should also be a tag that tells how much of the civ is affected by this application. In this case, only a small area is influenced. But that is still pretty far in the future.

    I would like the tech tree utility to do the following things. If anything here is not feasible, please let me know.

    1. Set default values for m, c, W, and DR.

    2. For every technology, input:
    a. Technology name and text description.
    b. The level of the technology.
    c. Technology requirements and Ts.
    d. Values for m, c, and DR. It would be a big help if these were defined in terms of the defaults (default c times some value). This way, we can change the default values and not have to redo individual values; they would keep the same ratio.
    e. Helper technologies with O and h for each helper tech, as well as a W value defined in terms of the default value.

    It would be nice if parts a through e were in different sections. Also, space should be left for the the Alter Variable section and sections dealing with E and I.

    3. For every application, input:
    a. Application name and text description.
    b. The L value of the application.
    c. Technology requirements with an h value for each requirement.

    Later, the application editor should have much more functionality, but that is all we need for now.

    With this editor, we should be able to define a technology like:

    a. Farm Machinery and Equipment
    b. Level 3
    c. Requires: Agriculture 10% Ts: 10
    d. c=default*.7 m=default DR=default
    e. Helpers: W=default
    Agriculture h=3 O=0
    Mechanical Engineering h=2 O=2
    f. (later) E=default
    g. (later) I=default
    h. (later) Alter Variable commands (more food, etc.)

    I think that is everything. Could everyone make sure that this is good?
    [This message has been edited by Richard Bruns (edited February 29, 2000).]

  • #2
    As I did a final review of the system last night, I noticed a few things that might need to be changed.

    The first is the formula for the RHL. Dividing by the sum of the h values hurts the system IMO. Currently, it would be impossible to change the total effect that RP's have. If you assigned a h1 of 3 and a h2 of 6, the H factor would be exactly the same as if you assigned a h1 of 1 and a h2 of 2. Given the stated definition of h, I don't think that is a good thing. So I propose that we stop dividing by the h terms.

    This would make the H value larger, but that can be compensated for by changing the other variables. If it turns out that I am wrong, we can fix things so that the sum of h is one, and the system will act the way it currently does. Dividing by the values makes the system a lot less flexible; there is no way to alter the total effect that helper techs have.

    The second change is the application effectiveness formula. Currently, it is rather inflexible. The long term behavior is altered by the L value, but there is nothing to change the short term growth of a thing. What if we wanted to have an application that doubles its effectiveness with an increase of 5 tech levels? We currently don't have that flexibility. Also, there is no way to change the rate at which something drops in effectiveness with tech loss.

    So I propose adding two more constants to the E equation. G determines the short term growth, and F determines the rate of application drop with tech drop. So the formula would be:

    E= RTL*G + (10+L)/10 ^ (RTL/10) when RTL is positive or zero.
    E = (10+RTL)*F when RTL is negative.

    If it turns out that these additions are not needed, then we can always set G and F back to 0.1 But I think that we should keep things as flexible as possible.

    The other idea is a bigger change, but it should be feasable. It involves the current scaling rule that says that the knowledge is multiplied by 2 for every 10 levels of tech increase. Would it be possible to change those numbers for the overall system? Perhaps someone would want to cover a smaller time frame where the tech doubles only four tomes over the course of the game. Or perhaps we might find that the 2x per ten level rule does not work. There should be a place in the editor where we can change both the two and the ten. Let's call these the multiplier variable (MV, currently 2) and the gain variable (GV, currently 10).

    These changes would affect the equations in the following ways:

    In the H equation, the 2 would be changed to the multiplier variable MV.

    The definition of W would be altered. It would have to be defined as something times the gain variable GV.

    In the basic growth equation, all of the 2's would be changed to MV and all of the 10's would be changed to GV.

    In the application effectiveness equation, all of the 10's in the RTL terms would be changed to GV. Also, G and F would have to be based on GV. Their default would be 1/GV, and each tech that changes G or F multiplies that default by something.

    The L value is the only tricky change. It needs to range continuously from 0 to a value where the application grows as fast as the tech levels. Currently, L values go from 0 to 10 and the multiplier value is 2.

    We don't want to have to change each L value every time MV is changed, so the use of L in the equation will have to be changed. So, we keep the current L range of 0-10 and change the equation to:

    E= RTL*G + (1+.1*(MV-1)*L) ^ (RTL/GV) when RTL is positive or zero.

    When GV is ten and MV is two, this is the curent equation.

    If MV were changed to 1.5 to compress the time frame, then knowledge would be multiplied by 1.5 every 10 tech levels. To keep up with the rate of knowledge growth, E should be multiplied by 1.5 every 10 tech levels at an L value of 10. This equation does that.

    If MV were changed to 3 to expand the time frame, then E would need to be multiplied by 3 every ten tech levels at an L value of 10. This equation will also work in that circumstance.

    For any value of L between 0 and 10, the ratio of E to the knowledge level will be constant for any MV. Thus, MV change will not change the proportional longevity of applications.

    I think that these changes will give much greater flexibility without changing any of the dynamics of the tech tree. They should not be any more difficult to program, and the current system is a special case of each one, so they do not cause any permanent changes.

    [This message has been edited by Richard Bruns (edited March 01, 2000).]

    Comment


    • #3
      Mark:

      What about the way something drops in effectiveness do to tech loss (even below where it was discovered)?
      Which Love Hina Girl Are You?
      Mitsumi Otohime
      Oh dear! Are you even sure you answered the questions correctly?) Underneath your confused exterior, you hold fast to your certainties and seek to find the truth about the things you don't know. While you may not be brimming with confidence and energy, you are content with who you are and accepting of both your faults and the faults of others. But while those around you love you deep down, they may find your nonchalance somewhat infuriating. Try to put a bit more thought into what you are doing, and be more aware of your surroundings.

      Comment


      • #4
        Mark: We don't need to add the extra parameter D for the helper technologies. Changing m would have the desired effect. This variable that we already have represents "overall strength of RPs". The entire purpose of m was to make research arbitratily easier or harder for some techs.

        If decreasing m makes upkeep too hard, then we can simply decrease c as well. The current parameters can already handle what you want to do with tech growth.

        But there is currently no way to alter short term growth of applications. I think that the G term is needed. Why would it be bad to tell the player that G is short term growth and L is long term growth? Two numbers would allow for much greater flexibility than only one. If too many things depend on only one variable, then things would very hard to debug and customize. What if we decide that we want an application that never gets better? With the effect you are talking about, it would not be possible. But with two independent variables, it is possible to achieve this effect and many others.

        My point of view is that, for now, we should put in anything we might need. Taking stuff out is a lot easier than adding stuff at the last minute.

        Comment


        • #5
          Not needing D...
          Agree, I had somehow gotten the notion that m was a global constant. D is redundant if m changes with different techs.

          G...
          I just think its too much. But its not a showstopper, just my opinion.
          Project Lead for The Clash of Civilizations
          A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
          Check it out at the Clash Web Site and Forum right here at Apolyton!

          Comment


          • #6
            I like the idea of applications that never get better than when first discovered. I assume it will also allow Apps that get a little better(100%) and those that get a lot better(500%) as well.
            My reason is from the military side of things where early muskets can only ever gain at most 100% effectiveness over a long time while early rifles with subsequent minor tech improvements can gain 5-600% improvement.

            I am sure there are similar effect in materials sciences. Wrought hammered steel never gains much in the way of effectiveness (maybe 50%) but the bessemer and open hearth processes (Are these suitable steel working applications, assuming steelworking is level 3 and metal working is 2) start small but rapidly gain effectiveness.

            I think it is a good concept to include if natural application improvement is to be included.

            Comment


            • #7
              Well, I haven't even read through the first part carefully. But there's some things in the second post that I think I need to respond to.

              RHL formula divisor...
              I agree with you that the formula that we had before wasn't very good. I knew about the defects, but didn't know of a good way to fix them. I have an alternative proposal now that I hope you will be happy with. It also solves the problem that we may need to make some technologies arbitrarily much harder than others in terms of RP costs. The reason this might happen is if RPs generated in certain areas are always much larger than others. For instance, farming will consume the attention of most of the population for most of the game. Therefore RPs generated in agriculture are always going to be fairly large compared to many other areas. I propose that in the denominator of RHL we put a tech difficulty level D. D would average to be about 10, but could be much larger or smaller depending on the particular technology. Now there is a big difference between (h1 = 3 , h2 = 6) and (h1 = 1 , h2 = 2) for D = 10. The first set are very important helper technologies, that are hard to do without and make any progress. The second set are nice to have for researching that technology, but will not hugely affect the issue one way or the other unless they are way out of line. So now we have a standard where usually a helper strength of 1 is rather insignificant, and those of 10 or above are usually very necessary. In now if agriculture generates 10 times the RPs of everything else we can just make D for agriculture 100 instead of 10 to balance the system. I hate to add more parameters to the system, but this "overall strength of RPs" one is absolutely necessary IMO. What you think?

              Effectiveness formula...
              I feel that it's a very bad idea to throw more parameters in here. If we can't do it with RTL and longevity, then we simply have the wrong set of parameters or the wrong equation... Every additional parameter we use makes the model more meaningless to the player. I think we really have to be very careful about adding even more parameters, since IMO there are really already too many. I wouldn't even like longevity, except it gets us out of the problem of needing a whole sequence of applications when a single one would do. IMO the only place we should add new parameters is if something is Really Seriously broken. If we can figure out a way to take out some of the ones that we already have IMO that would be a good thing. If it turns out looking like a science project rather than a game we are Toast. So my challenge to you is to simply come up with a formula that uses longevity to get the early boost effect you're looking for, since we're stuck with longevity anyway. I think you could make a case that for high longevity you wouldn't get an early boost, whereas when the longevity is low you should probably get a serious amount of growth out of the application early.

              I fully support putting variables in instead of 2 and 10. You are right than it would be a big mistake to hardcode these numbers in.
              Project Lead for The Clash of Civilizations
              A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
              Check it out at the Clash Web Site and Forum right here at Apolyton!

              Comment


              • #8
                m has a default value, so in some ways is is global. Individual techs have an m value that is something times the default m value. That way we can change the default m and the ratio of difficilties in the individual techs is the same.

                The kind of flexibility that Krenske describes can only be achieved by two variables.

                Comment


                • #9
                  Well, I'm outnumbered, so go for it! But Pleeeze no more parameters
                  Project Lead for The Clash of Civilizations
                  A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
                  Check it out at the Clash Web Site and Forum right here at Apolyton!

                  Comment


                  • #10
                    I am pretty sure that we have everything we need to make a good, flexible system. Also, don't forget that some of these, like W and DR, might disappear from the standard game after we are finished with playtesting and tweaking the system.

                    Comment


                    • #11
                      One more question...
                      Do you have a rough list as to what calendar years among "leading edge" civs of the day that each 10% tech level increment might first have occurred? E.g. 10% in 500 BC; 20% in 200 AD; etc. Such a standard, even if of necessity crude, and having numerous exceptions, would be very useful for model leads (incl. me!).
                      Project Lead for The Clash of Civilizations
                      A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
                      Check it out at the Clash Web Site and Forum right here at Apolyton!

                      Comment


                      • #12
                        There's an excellent book in my schools library that lists many of the social/tech/art/mitilary/daily life/etc stuff about the past from 5000BCE to ~199X. It only has a few mistakes that have been found out to be wrong (FE the spinx was built before the egyptians ever wore, atleast the head), etc. Nothing like a missing broze age or anything. The only thing is I will really need to know what time periods you want for each 10% (other than 100%).
                        Which Love Hina Girl Are You?
                        Mitsumi Otohime
                        Oh dear! Are you even sure you answered the questions correctly?) Underneath your confused exterior, you hold fast to your certainties and seek to find the truth about the things you don't know. While you may not be brimming with confidence and energy, you are content with who you are and accepting of both your faults and the faults of others. But while those around you love you deep down, they may find your nonchalance somewhat infuriating. Try to put a bit more thought into what you are doing, and be more aware of your surroundings.

                        Comment


                        • #13
                          Not all of the techs will advance at the same rate. The scales will be different for each technology. A tech that hasn't grown much might be acquired in 200 AD at Level 60, while a tech that has seen enormous advancement might start at Level 10, even if you get it in 1750.

                          I was planning on tracing the growth of each technology and giving it a starting level based on how many timed it has doubled over the course of history. Otherwise the scales would get really mixed up. We don't have to be that precise for this demo; just assign an approximate starting level and advencement speed.

                          We should probably shift discussion back to the main tech thread. This thread was just for ironing out the equations. I think we have finished with that, so I'll e-mail Garth and say that the model is ready.

                          Comment


                          • #14
                            If you happen to be a very small nation how are you supposed to maintain technology on a deseant level? I think that in someway the size of the country should influence how much RPs are needed to support a tech and research. Maybe RPs needed should increase with 20% every time the population is doubled. The reason i want something like this in is that otherwise clach will be just like civ2: Once u have the biggest population you will almost automatically have the fastest research. That is both boring and unrealistic. That's way i want both randomness in gaining tech and research penalties for big countries.
                            stuff

                            Comment


                            • #15
                              I will respond on the main tech thread.

                              Comment

                              Working...
                              X