Announcement

Collapse
No announcement yet.

Technology Model 7

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

  • Technology Model 7

    Edit: Mark asked me to add a link to the Demo 6 thread, so I decided to go ahead and copy my comprehensive list of links from another post. The following are links to just about every important tech thread on this board, in approximate chronological order:

    Tech Tree Discussion

    Research System Draft

    Tech Research Chart 2

    Technology System E-Mail Archive

    Military Tactics (Includes tech discussion)

    Tech/Social Advances

    Demo 5 Tech Tree

    Technology System Version 5.1

    Final (5.3) Tech Dynamics

    Technology System Version 5.2

    Stuff2's Idea for gaining new techs

    Technology System Version 5.3

    Social Technologies

    Demo 6 Technology Model

    Technology, images and messages


    Mark has asked me to post the knowledge-based technology system that was proposed and discussed in the earlier technology thread. Since the old thread was getting so long and the change merits a new version number, I decided to make a new thread with the updated model.

    Note that this changes very little that has been coded (I hope). The only major alteration is in the area of Applications, which seemed to be confused and/or uncoded in the previous model.

    As has become my habit when starting a new thread, I will start from the beginning so that referencing old threads should not be necessary and that newcomers can hopefully understand the system by reading this one thread. This post will be devoted to an overview, and later posts will have more detailed equations. Please read the overview to make sure we are starting from the same place, and notify me of any errors in there.


    The Basics

    Clash will not be using the prerequisite-based technology “trees” that most strategy games use. We believe that such systems are bad for both realism and gameplay. Instead, we will be using a system of gradually increasing skills that is similar to the character development system in RPG’s.

    Just like an RPG character, the civilization’s skills will increase as it gains experience. The development team recognizes that throughout history, many technical advances have come ordinary people in the course of their daily lives and activities. To reflect this, technology rise is a result of the labor input of various activities within the civilization. The more people that are working on some activity, the more potential there is for new ideas and mundane improvements that result in more efficiency for that activity.

    For example, assume that an ancient civilization has started a big public works program, building sewers and aqueducts for several cities. This will result in the hiring and training of many engineers, project foremen, and skilled laborers who are working these systems. Many of these people will have ideas for doing the job better, and as they do their job they will learn more about the job. But they are learning more than just the basic skills for that particular project. They are learning more general scientific facts, as well as skills that are good for other things. In the future, they will be able to take some skills to other areas like the construction of roads or buildings. A few people will develop general scientific theories based on their work experience.

    So in game terms, investing labor in the construction of aqueducts and sewers would result in a lot of improvement in the Skill tech of Water Systems, some improvement in the Field techs of Architecture and Civil Engineering, and a little improvement in the Theory techs of Mathematics, Physics, and Chemistry. This experience will allow the civilization to become a lot better at making aqueducts, somewhat better at working on other buildings and big public projects, and a little better at understanding the basic concepts of science.

    This system of advancing knowledge means that civilizations will develop in a more natural and realistic way. The people will not wake up one morning to learn that the government scientists have developed “Construction” and that they can now make something that they had never heard of before. Of course, the government can still invest in research and education, but that is not the only source of innovation in the Clash world.

    This technology system also allows technological skill to fall if it is not maintained. A certain amount of effort must go into recording and maintaining data and teaching the next generation the skills that were learned. If this is not done, then skills are lost and civilization becomes less effective at doing certain things.

    The links between the civilization´s activities and its technology are the Research Points, or RP´s, that feed the technology equations. More specifically, RP´s are generated by labor input in some aspect of the civilization, be it political, economic, or military. If output were used, then the level could easily spiral out of control as higher levels led to higher output which instantly led to higher levels, ad infinitum. It is also more logical to base the RP’s on input, since that represents the amount of thought people put into something.

    Activity is an important game concept, since it is the main way for technologies to be linked to the rest of the game. For example, fighting a battle results in RP´s being created and distributed in the Military activity, while investing in public infrastructure as in the aboce example care causes RP´s to be distributed by the Infrastructure activity. These activities, and the technologies they support, are defined in the technology model.

    There will be several Tiers of technologies or skills, each representing a different level of effect on the civilization. They have the same basic equations, but the player interacts with them differently.

    The Tier 0 tech, or "All-tech," serves as a foundation for all othre technologies and would be used to keep tech progression balanced. The exact nature of the All-tech has not yet been decided upon. It might progress according to a fixed timeline, it might use RP´s like any other tech, or it might not be used at all.

    Tier 1 techs, or “Theory” techs, measure the level of general scientific theories like Chemistry or Psychology. These broad categories of knowledge affect many aspects of the civilization, and can serve as a useful benchmark of overall scientific progress. There are about twelve of these.

    Tier 2 techs, or “Field” techs, like Explosives or Mass Communications, measure the level of a more specific field of study. These have a greater impact on a smaller number of civilization activities than the Theory techs. There will be several dozen of these.

    Tier 3 techs, or “Skill” techs like Artillery or Propaganda Techniques, measure the civilization’s skill in a narrow technical area that has direct effects on the daily activities of the government and society. The number of these could rise into the hundreds, but since they are mostly controlled by economic factors and other technologies, the player will not have to micromanage them.

    All of the technologies will affect each other, to some extent. It will be very difficult to make one technology very high while all the others are very low. Each technology is assigned one or more helper technologies, and can be assigned one or more required technologies. A helper technoloy may or may not be a required technology, but all required technologies are also also helper technologies. These are technologies that have an important effect on the other technology. A certain amount of the required technology is needed before the other technology exists, and after that time the level of the helper/required technology will affect how fast the technology rows.

    For example, consider the technologies of Chemistry(Tier 1), Explosives(Tier 2), and Artillery(Tier 3). Chemistry is the helper/required technology for Explosives, and Explosives is the helper/required technology for Artillery. A certain amount of Chemistry is needed before the civilization discovers Explosives, and a certain amount of Explosives is needed before Artillery can be discovered. But even after that, the helper/required technologies are still important. The civilization’s skill level in the Chemistry tech will affect the rate at which the Explosives technology skill level increases. This will in turn determine the development of the Artillery technology, which will have direct effects on the battlefield. If Chemistry is allowed to fall, the technologies that depend on it will advance more slowly.

    The consequence of this is that all the technologies are linked together like strands in a web, so a change in any technology affects many other technologies. It will also be difficult to make a technology change from the norm by a large amount, because if it is much higher than its helper technologies it will be much harder to research.

    Technologies affect the rest of the game through Applications. An Application is, quite simply, anything that the civilization wants to make or do. A Legion is an application. A library is an application. Conducting espionage is an application.

    Technologies affect applications the same way that helper/required technologies affect other technologies. A certain amount of a technology may be required before an application can be built or conducted, and after the application is discovered the amount of the technology determines how effective it is.

    Much of the process that links activities to applications by way of technologies happens automatically, without the need for micromanagement. Building a lot of infrastructure improves many technologies, and as those technologies improve new types of infrastructure becomes available and the existing types become more efficient. But it isn´t that simple. Because the technologies are linked, building infrastructure helps a lot of technologies other than the ones that directly benefit infrastructure, so the best way to build up technology is to be well balanced and invest in a lot of different things.


    I will be going on vacation in Italy next week, and since the computer labs are closed this weekend I will not be able to respond to any posts for a couple of weeks. Note that even when I am at school in Breda, my time and Internet access are both limited.

    I hope to explain things here so that anyone on the team can fill in the tech data they need. My goal, quite simply, is to make myself unnecessary and allow the tech model to continue without me. I am not abandoning the project, but I don´t want to see this year´s relative lack of involvement slow you all down either.
    Last edited by Richard Bruns; December 20, 2002, 03:37.

  • #2
    I thought this was posted last night, but it didn´t go through. Good thing I got in the habit of saving all long posts to text files:

    Edit: the first application write-up had serious errors due to improper copy-pasting, so I fixed it.



    RP Generation and Allocation

    Each model that generates RP´s has its own method for doing so. The economic model generates RP´s for some activity based on the labor input in a specific infraclass tied to that activity. The military model generates RP´s based on the number of elements that fought in a battle. The espionage model, when we make it, will generate RP´s based on how successful the spies were. Trade, when implemented, will generate RP´s in a different manner.

    Each activity has a list of technologies and the proportion of RP´s that go to each technology. In the very simple tech plan currently used for testing, the Food activity takes RP´s generated by the agricultural sector of the economy and gives 80% of them to the Farming tech and 20% of them to the Biology tech.

    The specific number of RP´s generated by various models will need to be fine-tuned as a result of playtesting. Perhaps the Activity objects could be given a value that multiplies their RP´s by some factor before it is distributed. That way, if we decide that battles are generating too many RP´s we could fix it by changing that one number instead of altering the innards of the military code.

    Technology Change Equations

    Previous versions of the model used something called a "Tech Level." This was, quite simply, a mistake in my original design. While thinking of the math behind the model, please forget anything related to tech level or the awful 2000=100 benchmark. While we may resurrect tech level for interface purposes, it has no place in the math.

    There are several concepts used by the equations:

    Knowledge is a linear scale that defines the civilization?s understanding of a technology. It is ideally a direct measurement of quality, performance, productivity, or what can be accomplished with the technology. If the knowledge of Ranged Weapons has doubled, then the civilization will be able to produce military units that are twice as powerful. If the knowledge of Architecture has doubled, then the civilization will be able to produce buildings that are twice as good. If the knowledge of Chemistry has doubled, then the civilization is twice as good at using chemicals to improve the lives of the people. Note that this does not necessarily mean that a library holding all of the facts the civilization knows would be twice as big. It is the application of the knowledge, not its volume, that counts.

    The start of a technology, the point of minimal usefulness, is defined to have Knowledge equal to 1. In 1903, our knowledge of Heavier than Air Flight was 1. It is possible for knowledge to fall to fractions below 1 without the system failing. This rare case would represent a civilization discovering the fundamentals of something, but then losing the ability to do anything useful with it. They would probably be able to bring the knowledge back to 1 with minimal effort.

    At the beginning of a standard game, almost all Knowledge values should be one, with the possible exception of farmiing related technologies.

    Knowledge is supposed to raise exponentially, not linearly. A healthy civilization will double the knowledge of most of its techs at a fairly constant rate. So in the early game a civ takes dozens of turns to rise to a knowledge of 2, but by the end of the game the Knoweledge values may be as high as 1000. Tech and application dependencies should be designed with this in mind, so for example a new military unit will replace the old one approximately each time the knowledge doubles.

    The technology model defines several values used to transform RP into knowledge. In the code, all of these are the result of a Basexxx global value times a xxxMultiplier value set for each tech. This allows us to customize the technologies but also to change default values easily while keeping the relative values of the techs the same.

    RPDiminishingReturns: This value can be used to handicap larger civilizations. It is normally set to 1, and since the number of RP´s generated is raised to this power, a small change can have very large effects.

    GrowthRate: This value multiplies the number of RP´s produced. It is the primary way to change the growth rate of the technology.

    Upkeep: Logically, the amount of effort required to maintain knowledge is directly proportional to the amount of knowledge the civilization has. This value multiplies knowledge, forming a term that is then subtracted from the total RP generation.

    Upkeep cannot be removed from the system without causing problems. It is the only thing that keeps the effect of helper techs in check. Some amount of upkeep is required to force the knowledge to a proper equilibrium and make the behavior of the system balanced.

    TotalHelperEffect is a working variable, defined later, that summarizes the impacts of the helper technologies.

    So the change in knowledge each turn is as follows:

    Knowledge = previous Knowledge + (TotalHelperEffect * GrowthRate * (RP^ RPDiminishingReturns)) - (Upkeep * Knowledge)

    These values are defined in the data editor and used by the tech system creator to determine the activity of the technology.

    Helper/Required Technologies

    A helper technology multiplies the effect of research in the helped technology by an amount that is based on the helper technology´s knowledge. The knowledge amounts are not directly compared, because this could cause major problems with helper techs like Computers where the helper comes later and has a knowledge much lower than the knowledge of the helped tech. Rather, an unnaturally low helper will cripple research by causing several times as many RP´s to be required to advance in the helped tech.

    Each Helper Technology associated with a tech contains certain values:

    HelperTechEffect: This is the primary value that determines the amount that the knowledge of the helper tech affects the growth of the technology it helps. It will normally be between 0.1 and 0.5

    KnowledgeRequirement: This is the Knowledge value of the helper/required tech required for the other technology to exist. This may be set to zero, in which case the helper tech is not required.

    BaseKnowledge: The amount that the helper tech affects the technology is based on this and the current knowledge of the helper tech. This value will normally be the same as the requirement in most cases, but it can be set higher or lower if needed. If the knowledge is below BaseKnowledge, then the RP production will be divided rather than multiplied as a result of the helper techs.

    For each helper tech, run the following equation and store it in a temporary variable:

    HelperTechEffect * ( previous Knowledge / BaseKnowledge )

    Note that we should use the knowledge of the helper tech last turn. If we use the current knowledge, then the order in which technologies are advanced can change their effect on other technologies. A helper in the list before its helped tech would act differently than one later in the list, which could cause problems.

    Then add up the temporary variables and apply a defalt multiplier:

    TotalHelperEffect = GlobalHelperEffect * ( Helper1 + Helper2 + ... + HelperN )

    GlobalHelperEffect is a value that determines the strength of the connections between the technologies. The defaut value is 0.5. It is lowered to decrease the effect of helper tech and raised to increase it.

    So if all the required technologies have a knowledge 32 times the BaseKnowledge, then TotalHelperEffect will be about 16, multiplying the RP generation by that amount. This multiplication could cause problems with game mechanics if not handled properly. The sum of the HelperTechEffects for a technology should not exceed one, and GlobalHelperEffect should not be set higher than one.

    If the average TotalHelperEffect for all technologies ever exceeds the average Knowledge value of all technologies, then tech growth will always accellerate to infinity, even at a constant rate of RP generation, and no level of upkeep can prevent this. For reasonable behavior, the average TotalHelperEffect should be one fourth or less of the average Knowledge amount. This allows the upkeep to moderate the tech rise and prevent infinite advancement.

    Note that without upkeep, any TotalHelperEffect greater than zero will allow an infinite and accellerating rise in knowledge even if RP remains constant.

    Applications

    An increase in Knowledge has the effect of allowing something to be done. Once tech reaches a certain point, an application can be turned on so it is available to the civ. Once turned on, an application remains available even if the knowledge falls below the required knowledge.

    But technology does far more than simply turning things on. It has a direct effect on the power and usefulness of all applications. High technology values will help a civ a lot by automatically improving their Applications.

    The exact functioning of Applications, and their default values, are set in other models. What the technology model does with any application is take any numerical attribute of that application and multiply it by some value based on Knowledge.

    Each attribute of each application can be changed seperately, by one or more helper technologies. The speed of a tank is changed by the Knowledge of Engines, but it´s attack power is changed by the Knowledge of Artillery and Tactics. The tech model doesn´t need or want to know what these values are or what they do. It simply takes some number and multiplies it.

    Each application has the following that link it to the tech model:

    A list of technology Knowledge requirements. All requirements must be met at the same time for the application to become active, but if they fall again it does not become inactive.

    A list of technology Knowledge numbers that cause obsolescence. If all technologies are at or above these numbers, the application can no longer be produced, but old ones continue to function and improve as normal. If any tech drops below the obsolescence number again, the application can be built again. Obsolescence is entirely optional, and should be handled carefully.

    Further, each attribute of an application can have a list of helper technologies. For each technology, the following values are stored:

    KnowledgeEffect: This is the primary value that determines the amount that the Knowledge of the helper tech affects the Application. It will normally be between 0.1 and 0.5

    BaseKnowledge: The amount that the helper tech affects the application is based on this and the current knowledge level of the helper tech. This value will normally be the same as the requirement in most cases, but it can be set higher or lower if needed. If the knowledge is below BaseKnowledge, then the attribute number will be decreased rather than increased as a result of the helper tech.

    For each helper tech, run the following equation and store it in a temporary variable:

    KnowledgeEffect * ( ( current Knowledge - BaseKnowledge ) / BaseKnowledge )

    Then add up the temporary variables:

    TotalKnowledgeMod = ( Helper1 + Helper2 + ... + HelperN )

    The default value of the application´s attribute is then multiplied by one plus the TotalKnowledgeMod.

    Earlier, there was a special way to calculate something called a "T" value. I believe that this T value can now be treated exactly as any other Application. Create an appliation called, for example, "Farm Productivity" and list the technologies that aid it. Then multiply some value in the economy model (formerly called the T value) by the TotalKnowledgeMod.
    Last edited by Richard Bruns; December 20, 2002, 11:08.

    Comment


    • #3
      Perhaps an example of the Application system would be helpful. Consider the military unit Charger, which would have the following descriptors in the technology file:

      Code:
      <application>
      
        <name>Charger</name>
        <type>element</type>
      
        <requirements>
          <technology>
            <name>Warhorses</name>
            <knowledge>1.5</knowledge>
          </technology>
        </requirements>
      
        <obsolescence>
          <technology>
            <name>Engines</name>
            <knowledge>2</knowledge>
          </technology>
        </obsolescence>
      
        <Mobility>
          <technology>
            <name>Warhorses</name>
            <baseknowledge>1.5</baseknowledge>
            <knowledgeeffect>0.5</knowledgeeffect>
          </technology>
        </Mobility>
      
        <Attack>
          <technology>
            <name>Warhorses</name>
            <baseknowledge>1.5</baseknowledge>
            <knowledgeeffect>0.1</knowledgeeffect>
          </technology>
          <technology>
            <name>Military Tactics</name>
            <baseknowledge>1</baseknowledge>
            <knowledgeeffect>0.1</knowledgeeffect>
          </technology>
        </Attack>
      
        <Defense>
          <technology>
            <name>Military Tactics</name>
            <baseknowledge>1</baseknowledge>
            <knowledgeeffect>0.1</knowledgeeffect>
          </technology>
        </Defense>
      
      </application>
      The three attributes of Charger that are changed by the tech model are Mobility, Attack, and Defense. Consider the following cases:

      If a young civilization has been at peace for some time and the Military Tactics tech has fallen to 0.5, then when they first discover and build this unit, the TotalKnowledgeMod will be:

      ( ( 0.5 - 1 ) / 1 ) * 0.1 = -0.05.

      The default values for both Attack and Defense will be multiplied by 0.95

      If, on the other hand, the civ has fought a lot of battles and increased the Military Tactics tech to 4, then the TotalKnowledgeMod will be:

      ( ( 4 - 1 ) / 1 ) * 0.1 = 0.3.

      Both default values will be multiplied by 1.3 when the unit is first discovered and built.

      Now suppose that both the Warhorses tech and the Tactics tech have risen to 4. In that case, the Mobility TotalKnowledgeMod will be:

      ( ( 4 - 1.5 ) / 1.5 ) * 0.5 = 0.83.

      The unit´s default mobility will be multiplied by 1.83.

      The Attack value depends on two technologies, both of which have increased. The contribution from Warhorses is:

      ( ( 4 - 1.5 ) / 1.5 ) * 0.1 = 0.17

      and the contribution from Military Tactics is:

      ( ( 4 - 1 ) / 1 ) * 0.1 = 0.3

      So the TotalKnowledgeMod is 0.47 and the default Attack value will be multiplied by 1.47.

      Edit: formatting
      Last edited by Richard Bruns; December 20, 2002, 10:57.

      Comment


      • #4
        Hi Richard, Excellent writeup. I think the intro is especially good. I've read the whole thing over, but not with the most care at this point. Just a few quickie points.

        Don't blame yourself too much for the levels thing, that was my fault! The goal was to allow one to compare the overall tech level between civs. I think we can do that with the knowledge system too. The simplest way is to just average the knowledge levels of all techs. It isn't completely right since when a new tech becomes active its value of 1 will drag down the average. But I think it gives most of what I wanted out of levels. One could also compare averages in tech areas that way.

        There are still some issues that bother me a bit. Specifically when the system runs away without upkeep cost. I think it would be best to have a system that is stable without the need for upkeep, as we have discussed previously. I need to go back and re-read some of our old discussions before I comment further on it.

        Cya,

        Mark
        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


        • #5
          A quick reply form the hostel computer:

          Last weekend I happened to realize a source of problems. Specifically, in the early game, the TotalHelperEffect will be quite a bit less than one, meaning that RPs are divided, perhaps by as much as ten. This means that tech is severely penalized early on, which was not the intention. Making up for this creates a situation whree tech will run off once helpers are above one. So a very simple solution:

          TotalHelperEffect = 1 + GlobalHelperEffect * ( Helper1 + Helper2 + ... + HelperN )

          That way tech research will never be divided, and the progression from the very early game to later should be much smoother. Adding that one makes almost no difference latre on, but helps at the start a lot.

          Comment


          • #6
            I noticed helper techs tend to have a very powerful effect. Here is the coded behaviour:
            I have Siege warfare a tier 2 tech with Military Tactics as a helper with 0.5 effect. Research in military activity give .25 to Siege warfare tech, 0.5 to Military Tactics (and 0.25 to horses).
            Military tactics start at 10, Siege warfare at 0.
            Here are some progression figures:
            Siege 0. Military Tactics 10 (start)
            0.4/10.1 (first improvement of Military Tactics: 4 times as slow!)
            0.7/10.2
            etc. I finally got around 36/30, which is really a big difference. How can we make sure that tier 1 techs are not far behind tier 2 techs as the game evoles? Should the effect of helper techs be limited to a low value? Which one?
            Clash of Civilization team member
            (a civ-like game whose goal is low micromanagement and good AI)
            web site http://clash.apolyton.net/frame/index.shtml and forum here on apolyton)

            Comment


            • #7
              Hi Guys:

              Laurent, I had similar criticisms to yourself, but since Richard wasn't going to be around, I had decided to wait. But since your post shows problems with the way helpers are handled, I'll put some of my bit up now.

              Originally posted by Richard Bruns
              Each Helper Technology associated with a tech contains certain values:

              HelperTechEffect: This is the primary value that determines the amount that the knowledge of the helper tech affects the growth of the technology it helps. It will normally be between 0.1 and 0.5

              KnowledgeRequirement: This is the Knowledge value of the helper/required tech required for the other technology to exist. This may be set to zero, in which case the helper tech is not required.

              BaseKnowledge: The amount that the helper tech affects the technology is based on this and the current knowledge of the helper tech. This value will normally be the same as the requirement in most cases, but it can be set higher or lower if needed. If the knowledge is below BaseKnowledge, then the RP production will be divided rather than multiplied as a result of the helper techs.

              For each helper tech, run the following equation and store it in a temporary variable:

              HelperTechEffect * ( previous Knowledge / BaseKnowledge )

              Note that we should use the knowledge of the helper tech last turn. If we use the current knowledge, then the order in which technologies are advanced can change their effect on other technologies. A helper in the list before its helped tech would act differently than one later in the list, which could cause problems.

              Then add up the temporary variables and apply a defalt multiplier:

              TotalHelperEffect = GlobalHelperEffect * ( Helper1 + Helper2 + ... + HelperN )

              GlobalHelperEffect is a value that determines the strength of the connections between the technologies. The defaut value is 0.5. It is lowered to decrease the effect of helper tech and raised to increase it.
              Richard, this spec, from your post above, has lost some features that we once had in the tech model. BTW thanks for posting all those links, they were helpful in finding what I was looking for! My basic criticism is that the model is now again in the troublesome regime where helpers almost always help. (Discounting your low-tech point for the moment) And helpers help at an increasing amount as tech progresses. I think this violates an important rule for having a stable tech system where helped techs behave the same as non-helped techs.

              The median behavior of TotalHelperEffect given different tech knowledge levels that can happen in the game should be 1.

              I mean 'median behavior' in a somewhat statistical sense. Given the distribution of helper tech knowledge levels for a given tech in different periods, for different civs in many different games of Clash, the median result should be 1. Sometimes the helpers will help progress in the tech, other times they will hinder. But the 50th percentile result should have TotalHelperEffect = 1. The bold sentence above doesn't mean that TotalHelperEffect won't sometimes help quite a bit in multiplying RPs, maybe by even a factor as large as 5 or 10. And of course completely inadequate tech in all helper areas should allow TotalHelperEffect to decrease to near 0.

              Over the last few revisions of the tech model, this behavior, which I think we once had in there, has been removed. This results in the big problem Laurent has cited. I also think there are other issues, which I won't stress for now.

              Below is a quote of how the old level-based model was a while ago. It has the factors I am promoting, that I think give stability. It comes from the Technology System Version 5.1 thread (page 3) posted March 03, 2000 by Richard.

              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. It is defined as something times the gain variable GV, so if we change GV all of the helper equations will still be accurate.

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

              H = MV^(RHL/W)
              Now this derivation applies to levels, so some changes would need to be applied to compare it directly to yours. But I'd like to make some observations. First of all, the weight factors for each helper h1...hx have no counterpart in the new expression. So now there is no way to enforce in the new model that one of the helpers is nice to have, but not essential, while another may be critical. I also think that we must ensure that the sum of all those weights is 1, or at least near one. The second, and probably most important thing that was not carried forward from the old RHL formula into your current model is an equivalent of the Tn term. This meant that as the level of the tech being helped increased in level, the helper tech levels had to keep pace to maintain the same helping effect. I think this second factor is Absolutely Crucial to have in there for reasonable stability of the helper tech system. Otherwise you have helpers exploding in effect as tech goes forward, as Laurent has indicated.

              With changes made to put these things we once had back in, I think the new system will be better balanced, and much more stable. How to do the Tn effect now could be more complicated, but I think it can be handled within the knowledge based framework. I can say more, but I need to go now. I'll wait for your reply to see if you want implementation ideas from me, or want to work them out yourself.

              Cya, and have a great holiday season!

              Mark
              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
                Originally posted by Mark_Everson
                Richard, this spec, from your post above, has lost some features that we once had in the tech model. BTW thanks for posting all those links, they were helpful in finding what I was looking for! My basic criticism is that the model is now again in the troublesome regime where helpers almost always help.
                Frankly, I don´t see why that is a problem. Helpers should help, and upkeep should hurt. Conceptually, a system where helpers always help and upkeep balances that out is exactly the same as a system where there is no upkeep and helpers sometimes help and sometimes hurt.

                First of all, the weight factors for each helper h1...hx have no counterpart in the new expression.


                Actually, the HelperTechEffect number is a direct descendant of the h1...hx numbers. They do the same thing:

                HelperTechEffect * ( previous Knowledge / BaseKnowledge )

                has replaced

                h1*(HT1n +O1-Tn)

                Of course, as you pointed out, the big difference is that the knowledge of the tech is compared to the BaseKnowledge of the helper tech rather than to the knowledge of the helped tech.

                So now there is no way to enforce in the new model that one of the helpers is nice to have, but not essential, while another may be critical.


                HelperTechEffect: This is the primary value that determines the amount that the knowledge of the helper tech affects the growth of the technology it helps. It will normally be between 0.1 and 0.5


                A value of 0.1 would indicate "nice to have" and a value of 0.5 would indicate "critical."

                I also think that we must ensure that the sum of all those weights is 1, or at least near one.


                I disagree. The GlobalHelperEffect value removes the need to adhere to such a rule. You can see in the equations that if the sum of all the weights is 10 and the GlobalHelperEffect value is 0.1, then TotalHelperEffect will be exactly the same as if the sum of all the weights is 0.1 and the GlobalHelperEffect value is 10.

                The second, and probably most important thing that was not carried forward from the old RHL formula into your current model is an equivalent of the Tn term.


                Tn was a relic of the old days where all the techs were to be at the same level at all times. But we decided long ago to drop that requirement, because of all the problems it caused. I do not think that we need or want to bring such a term back, as I have said before:

                The knowledgeamounts are not directly compared, because this could cause major problems with helper techs like Computers where the helper comes later and has a knowledge much lower than the knowledge of the helped tech.


                Consider the technologies Farming and Biotechnology. It is obvious that Biotechnology is a helper for Farming, and a very useful one. Assume that, by the time the civilization discovers Biotechnology, the Framing tech has a Knowledge of 100. If these knowledge values are directly compared as you propose, then the game engine will think that Farming is now much too high, and it will be penalized by an atrocious amount. The player is severely penalized for discovering a new technology.

                The only way to fix this is to have the lack of Biotechnology knowledge penalize Farming research from the very start of the game, putting a Knowledge value of zero into the formulas. This means that, for about 90% of the game, research into Farming technology will always be penalized because it will always be higher than its helpers. Thus helper techs will always be a drain on research. This is not the intended effect.

                Another possible "fix" is to set the Knowledge value of a newly discovered technology to the civ´s average Knowledge level at the time of doscovery. I don´t even want to think about all the consequences of this; it would mean a nerly total redesign of the other formulas that are based on Knowledge, and my gut tells me it would lead to a huge mess.




                I will agree, however, that there is a fundamental unbalancing factor in the system. Specifically, that is the fact that helper technologies are supposed to be balanced by Upkeep, but helper technologies change the rate of change in technologies, while upkeep is based on the actual amount of the technologies. Helper techs provide a benefit to the growth rate based on RP input, but upkeep causes a panalty based linearly on current level. We are left with trying to make a derivative function balance out a simple linear function, which can only work over a short period of time.

                The solution to this, I believe, is very simple. We change Upkeep so it too is a derivative, changing the rate of change. This makes sense, in a way. The more knowledge you have, the harder it is to implement changes and make people see things differently. Maybe the name could be changed to something more suitable, but I´ll keep it for now. So assuming no diminishing returns, the formula for the change in knowledge is now:

                ( TotalHelperEffect * GrowthRate * RP ) / ( Upkeep * Knowledge )

                and the formula for TotalHelperEffect changes to:

                1 + ( HelperTechEffect1 * Knowledge1 ) + . . .

                So if the average Upkeep is always about the same as the average sum of the HelperTechEffect values, then Knowledge will always increase linearly rather than exponentially, based on the number of RP´s added. Since both Upkeep and TotalHelperEffect are now based on some number times knowledge, this is fairly easy. We just set the global Upkeep value to slighty more than the average sum of the HelperTechEffect values. Note that this change renders the GlobalHelperEffect number obsolete and unnecessary, since Upkeep now includes its effect.

                With this change, the system effectively functions as if helper techs penalized things based on level comparison. Assume the following:

                Upkeep: 1
                Engines: Knowledge 50

                Helpers:
                Physics: HelperTechEffect 0.4 Knowldege 40
                Metallurgy: HelperTechEffect 0.3 Knowldege 40
                Chemistry: HelperTechEffect 0.3 Knowldege 40

                In this case, the following are true:

                Physics: 0.4 * 40 = 16
                Metallurgy: 0.3 * 40 = 12
                Chemistry: 0.3 * 40 = 12

                TotalHelperEffect = 1 + 16 + 12 + 12 = 41
                Upkeep * Knowledge = 50

                Thus the growth rate of the technology is multiplied by 41 / 50, or 0.82 So the tech is effectively penalized by low helper techs. But look what happens if something new is developed:

                Computers: HelperTechEffect 0.1 Knowldege 2

                TotalHelperEffect increases by 0.1 * 2, or 0.2, to 41.2 The new technology is providing a net benefit, even though its level is much lower.

                Now, there is no chance for extreme tech growth. Even if we mess up the design and make the helpers too powerful, all that happens is that tech growth proceeds at a slightly faster rate than planned. Suppose that upkeep is set to 0.5 in the previous example. Then the growth rate is multiplied by 41 / 25, or 1.64. Hardly the catastrophic system failure that could happen if an error was made in the old system.

                I have tested these changes on an iterative spreadsheet, and they do make the systam function much more nicely. Knowledge always increases in a smooth exponential curve, as the GDP and thus RP input increase exponentially.

                Note that this also allows an easy solution to the problem of Tier 1 techs advancing more slowly than lower Tier techs. All we have to do is lower their Upkeep. Since helpers multiply RP´s and Upkeep divides them, the lack of helpers can be remedied by simply assigning less Upkeep. In fact, we can now ensure that all technologies are balanced simply by giving them an Upkeep equal to the sum of the HelperTechEffect values of all their helpers.


                Edit: Fixed formatting error with sub tags
                Last edited by Richard Bruns; January 7, 2003, 07:42.

                Comment


                • #9
                  It bothers me rather seriously that the tech model completely ignores the fact that almost all technological innovations, from the point of view of a particular civilization, are imported from elsewhere. For example, gunpowder was invented once, not separately in every civilization that used it. The same is true of nearly every advance I can think of.

                  Another, less serious problem I have, is that many, possibly most, of the technological improvements occur in discontinuous jumps. Again, using gunpowder as an example, the initial discovery was the breakthrough - later refinments, such as corned powder, were relatively minor.

                  Cheers

                  Comment


                  • #10
                    Richard, your solution looks good.

                    Gary,
                    I agree that many inventions were borrowed, but writing was not, and this one was a big advance (China, Phoenicia, Egypt, South American writing systems have nothing in common).
                    The model makes for some borrowing as there are RPs generated by neighbouring civs if I remember well.
                    The breakthroughs are presented by the tech becoming available, though I'll leave details to Richard, but I think it is explained somewhere.
                    I disagree with the facts that refinements were minor. The first firearms were pitiful. Refinements in chemistry (or however they called it at the time) allowed for better gunpowder and powerful cannons and artillery which could breach walls, whereas early gunpowder provided lousy fire pots.
                    Clash of Civilization team member
                    (a civ-like game whose goal is low micromanagement and good AI)
                    web site http://clash.apolyton.net/frame/index.shtml and forum here on apolyton)

                    Comment


                    • #11
                      Thanks for the detailed reply Richard. I'll give you a response to your points when I get the chance. Right now I'm trying to get D7.2 out the door, and my time is short for Clash this week, so that gets priority. We need to hit Gary's points too, although I think #2 is already covered. Be back later .
                      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
                        Originally posted by Gary Thomas
                        It bothers me rather seriously that the tech model completely ignores the fact that almost all technological innovations, from the point of view of a particular civilization, are imported from elsewhere.
                        What you say about importing technology is quite true, but your criticism is only valid in the current context of the model, where RP generation due to trade, diplomacy, and espionage is not yet implemented. It is entirely possible that, once we get those systems running, they will provide far more RP´s than the economy model.

                        However, there is an easy way to improve the system based on your comments. We can provide for multiple ways of activating a technology. Currently, a tech is activated when the helpers reach a certain amount of knowledge. But we can also allow for a tech to become active due to acquisition from some other place, even if the helpers are not high enough for it to be discovered independently. So if you need Chemistry knowledge of 32 to discover gunpowder, you may still acquire it from somewhere else even if your knowledge is only 16. But the low helper techs will make the growth and improvement of the tech suffer.

                        Comment


                        • #13
                          Clarifications

                          First, I need to fix the formula presented earlier. If I change it to:

                          ( TotalHelperEffect * GrowthRate * RP ) / ( 1 + Upkeep * Knowledge )

                          Then low upkeep values will not multiply RP gain, and there is no divide by zero error if we decide to set something to zero upkeep.

                          Also, you may have noticed the absence of the BaseKnowledge number from the TotalHelperEffect equation. This was intentional. This number had no function that cannot be duplicated by changing the HelperTechEffect of the helper tech, and I think it is good to simplify the system as much as possible.

                          Of course, we must be sure to lower the HelperTechEffect numbers for later game technologies to compensate for this. Examples are in order:

                          Assume that we want the knowledge of all technologies to increase at exactly the same rate: by 1 for every 10 RP´s put into them.

                          Remember that Knowledge values will exponentially, not linearly, so that raising a one tech from 32 to 64 takes the same time that it took to rise from 1 to 2. This behavior is not a new concept, it is exactly the same as a tech in the old system raising from 10 to 20 in the same time that another rises from 60 to 70, assuming both techs started at level 10. The assumption here is that the size of the civilization´s activities that produce RP´s increase exponentially. The spreadsheet I use for testing assumes that the civ´s GDP grows at a rate of 5% per turn.

                          At the beginning of the game, we have the Tier 1 tech Chemistry, with no helpers. We simply set Upkeep to 0 and GrowthRate to 0.1 to achieve the desired effect, since both TotalHelperEffect and the Upkeep divisor will then always be 1.

                          Also at the beginning, we have the Brickmaking tech, which is helped by the Chemistry tech with HelperTechEffect of 0.5 The TotalHelperEffect for Brickmaking will then be 1.5 at the beginning of the game. We then set Upkeep to 0.5 so that the divisor term is 1.5. When both techs double their Knowledge to 2, then both the Upkeep and TotalHelperEffect will be 2, cancelling each other out. If the techs rise at the same rate, these will always be balanced, so we can set the GrowthRate to 0.1 here as well.

                          Later in the game, Gunpowder is discovered when the Chemistry tech reaches level 32. We want Chemistry to help Gunpowder exactly as much as it helped Brickmaking. If we had used the BaseKnowledge number, then we would also set the HelperTechEffect and Upkeep to 0.5 and GrowthRate to 0.1, just like Brickmaking, because then the TotalHelperEffect at discovery would be 1.5 as well, and the TotalHelperEffect when Chemistry doubled from 32 to 64 would be 2. To duplicate BaseKnowledge, all we have to do is divide the HelperTechEffect by 32, setting it to .015625.

                          So at discovery, putting 10 RP´s into Gunpowder will raise knowledge by 1, and putting 10 RP´s into Chemistry still increases its Knowledge by 1. But Chemistry won´t just be getting 10 RP´s. If its proportion of the total RP pool has remained unchanged since the beginning of the game, it will get 320 RP´s for every 10 it used to get, doubling its Knowledge just as before.

                          It may seem odd for Chemistry to get 320 RP´s while Gunpowder only gets 10, but this is actually how the real world tends to work. Old, established industries and technologies always get more support. The number of activities of the civ that support Chemistry will easily be 32 times the number of activities that support Gunpowder.

                          So when both techs have doubled, both the TotalHelperEffect and the Upkeep divisor are 2, and tech growth stays at the same rate.

                          Comment


                          • #14
                            Thanks Richard, your new approach seems to address my biggest concerns. I need to think about it a bit more, but it looks good after a first read-through. I'm not sure about the RP assymetry in the Gunpowder / Chemistry example though.

                            My main concern there is that if we allow the player to invest resources in RPs, then the player gets an Awful lot more improvement for investing say 50 RP worth in Gunpowder than for Chemistry. That's as far as my limited mental processes have gotten, but I thought I'd mention it.
                            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


                            • #15
                              Yes, there can be a boost in new technologies at first. But if they did pump enough cash into Gunpowder to send it to a Knowledge of 6 instead of 2, then the helper term would still multiply RP's by 2 but the Upkeep term would divide them by 4 (6*0.5 + 1), so all future research would only be half as effective.
                              If it does end up as a problem, we can design the system so that later technologies are supposed to jump at first, so for example they wouldn't get a decent gunpowder unit until Knowledge of 5.

                              Comment

                              Working...
                              X