Announcement

Collapse
No announcement yet.

Technology System Version 5.2

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

  • For the past several weeks I have been trying to comprehend Java and OO modeling. It may not be working too well, as I still don't understand why the ethnic groups have to store the handles for tech objects. Technologies do nothing to define ethnic groups.

    Besides, there may be a terrible problem with this. Consider:

    Ethnic groups are stored at the mapsquare level, so the number of EG handles will be the number of mapsquares times the number of ethnic groups we define.

    If technologies are stored by ethnic group, each of these objects will have hundreds of technology handles inside it. This would mean that we would have hundreds of thousands of handles for the tech objects. It seems to me that that kind of thing would make the program grind to halt.

    Come to think of it, that may be why Java programs are so slow. If the language requires those hundreds of thousands of handles to be created in the design, it makes sense that Java can be 10 to 20 times slower than C.

    F_Smith: Okay, I saw another complaint about the design of the tech model. From my studies, it seems that we were doing okay. What are we doing wrong this time? I thought you said the outline I posted was okay.
    [This message has been edited by Richard Bruns (edited September 15, 2000).]

    Comment


    • Rich:

      I don't understand how you did the analysis.

      When you look at an ethnic group of people, what properties do you believe they have?

      Here's my basic understanding of 'OO'.

      Take an object, say, an automobile.

      That 'car' object has 'color', 'make', 'model' attributes. The 'car' object holds 'transmission', 'engine', 'tires', etc, objects.

      Similarly, an 'ethnicgroup' is a group of people.

      So an 'EthnicGroup' object should hold 'demographics', 'knowledge', 'religion', 'culture', etc, objects.

      List off the properties the object has -- an ethnic group of people has a pop number and income/spending habits (demographics), known technologies and skills (knowledge), a common belief (religion), etc.

      That way, when any part of the program wants to deal with/make changes to an EthnicGroup, all the relevant data is available.

      At least, that's how I understand it. How do you analyze it?

      And I don't believe I agree with your assessment of Java's speed . . . but that's another topic.

      P.S. -- when you say 'handles', do you mean the pointers to the tech handles?

      Comment


      • Richard, don't feel bad, I don't see why tech has to be in EG either. And I've been coding at least using a version of OO programming for years.

        F_Smith:

        You are trying to code objects according to how you perceive the real world analogs of those objects might work. In business that probably works fine since the world you are dealing with is the real world. In a game one can use any Logically Consistent framework for how the world works. FE we can decide that a civ is the object that holds knowledge of tech. In our definition there might be no lower level of knowledge. So one can perfectly well IMO let each civ have a tech object.... It is only because you choose to be interested in having people at smaller levels know about tech that your model is the way it is. It doesn't Have to be that way.

        Anyway you can store a pointer to a Tech object anywhere you want, but as Richard says those tech objects can't be independent for the default game anyway since it would take up awesome amounts of memory and processing power. I know you are doing this to make things as flexible as possible. But don't say it Has to be that way, as you frequently do. Please say "to make it extremely flexible for scenarios, and future evolution of the system, IMO it Should be done this way..."
        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


        • My thoughts on where we should include stuff like tech level.

          People in this game are represented in a hierarchical manner, a person (not modelled) is part of an EG, which is one of several EGs in a square, which is part a province, which is part of a civ, which is part of the planet. The level at which we should store a particular item of data is the most detailed level we
          can imagine that differentiated description of this attribute could have any meaning in gameplay terms.

          Thus if we can imagine that it would be important that Peter knows more than Paul, then we would have to model individual persons with individual tech levels. This is not feasible. At the other extreme, we could decide to have one tech level for the whole planet, in which case we would not need an elaborate tech system.

          The other options we have are:

          EG level: Do we really need to differentiate between the tech level of individual EGs?

          Square level: A case could be made that since certain techs/apps would demand access to particular infrastructure or terrain, it could only occur in certain squares. Shipbuilding in the Himalayas?

          Province level: Another possibility, but this would mean that you might be able to build something in one province, which you would not be able to build in another

          Civ level: I guess the original tech concept.

          Whereever we store the info every 'person' will have access to the tech level that is relevant for him at a given time, by accessing it throught pointers to objects higher in the hierarchy.

          [This message has been edited by Beör (edited September 15, 2000).]
          Civilisation means European civilisation. there is no other...
          (Mustafa Kemal Pasha)

          Comment


          • Mark:

            Actually, my understanding of OO design is that you always break things down to the lowest level you'll have, and assemble up. It's also known as a 'component' approach.

            We have models requiring an 'ethnic group' object, each 'ethnic group' will have to be able to have a differing level of technical knowledge, therefore we are suppose to store the 'technical knowledge' at the 'ethnic group' level. For several things (like migration, for instance) an 'ethnic group' will have to be able to carry the information on their 'technical knowledge' with them.

            It really is considered automatic, I believe. Which is why I present it as a matter of analysis, not opinion.

            And again, it doesn't chew up resources -- compared to the requirements of doing it at a higher level, then having to 'disassemble' the data. That is *very* computationally heavy. It is considered bad OO design.

            At least, that's my understanding of OO design.

            And I also disagree about not modeling the game systems based upon the real-world objects. That, to me, *is* the *only* way to do it. Which is why I fundamentally disagree with some of the modelling done here.

            * * *

            Beor:

            Aside from the requirements of a 'component' architecture, don't 'ethnic groups' have to be able to have different tech levels, even per square?

            I'm thinking about things like migration. Won't an 'ethnic group' migrating have to carry it's 'technical knowledge' level with it?

            Or would they automatically know whatever technology is known by others in areas they move thru -- and then they lose that knowledge when they move on?

            If 'technology' is 'knowledge', the data belongs with the people that have the knowledge. Knowledge is not in any way tied to an area, it's tied to people. And yes, a group of people in the Himilayas should have the ability to learn to make boats, if there's some way to teach them and some way for them to practic (a lake, say?).

            I could be mistaken, I guess, but it seems so clear.
            [This message has been edited by F_Smith (edited September 15, 2000).]

            Comment


            • F_Smith:
              quote:


              So an 'EthnicGroup' object should hold 'demographics', 'knowledge', 'religion', 'culture', etc, objects.

              List off the properties the object has -- an ethnic group of people has a pop number and income/spending habits(demographics), known technologies and skills (knowledge), a common belief (religion), etc.



              No, sorry. The EG's were never meant to have the property of "knowledge." The game assumes that all EG's with a civ are equally intelligent and have equal access to the civ's knowledge base. Dealing with EG's should not require info from the tech system. Can you give an example of where this would be needed?

              The game assumes that the entire civilization has the same maximum knowledge level, which is represented by the tech level. Provinces have a seperate "applied" tech level that is based on investment and upkeep. The deatils of that are in the economy model.

              So the "Technology" objects only need to be stored in the "Civilization" objects. The details of province infrastructure that relate to tech levels are kept in the "Province" objects.

              The book I am studying says that handles are identifiers that point to a certain object. I think it says that handles and pointers are the same thing. Or maybe it doesn't, and I am just confused. Like I said, I'm having a bit of trouble learning all of this.

              The speed issue isn't my analysis. It comes from the book I am studying and from my friends who were dubious about the prospect of getting anything complex to run in Java wuth any decent speed. And then there is the fact that my old computer could run things like Descent 2 without any problems but was incapable of running the simple Demo 4 without freezing.

              Beör:

              The RP's are generated mostly by economic activity at the square level. The tech level is then defined by civ, and the economic model interprets it to the provinces. So you will not get shipbuilding with an inland civ.

              Comment


              • I'm responding to F_Smith's simul-post:

                quote:


                We have models requiring an 'ethnic group' object, each 'ethnic group' will have to be able to have a differing level of technical knowledge.

                Aside from the requirements of a 'component' architecture, don't 'ethnic groups' have to be able to have different tech levels, even per square?



                Again, no. This was not meant to happen. While it may make sense, IMO it would be a nightmare for the player. If every ethnic group or every square had different tech levels, the result would be a giant mess. The player would never know what could or could not be done. It makes no sense to me that EG1 in square 55,17 can build muskets but EG2 in square 56,18 cannot. This would happen if the techs were modeled seperately, and it would create a huge nightmare IMO.

                Everyone in the civ is assumed to know the same thing. It might not be exactly right but it is an assumption that we have to make. Migration within the civ has no effect on tech level.

                When a group migrates away from a civ, they carry all of the civ's knowledge with them. I would assume that they create a new nomadic civ in the process of breaking away. Their knowledge level is the same as the original civ's because they were once part of that civ. As they travel, the normal inter-civ tech diffusion routines will determine how the knowledge changes.

                By the way, the techs for ocean ships and river/lake boats are different. (Although they are helpers and share some of the same vital techs.)

                Comment


                • Richard:

                  I'm simply pointing out, from an OO perspective, since an 'ethnic group' is a specific, real world thing (a group of people), and since that real world counterpart has a 'knowledge' object (so to speak), that a good model should be built the same way.

                  I am aware that ya'lls current model is not done using this kind of OO analysis. I am also aware that to code the game, ya'lls model will have to be 'translated' to an OO design.

                  You know I disagree with that approach. But I leave it to ya'll to do what you want, in this regard. If I code it, I'll just translate the model (as would any other programmer), so that the 'game rules' work as you request -- even if the game code can *not* work that way.

                  For one example of why, read the 'migrations' example above.

                  If you mean 'pointers' (it sounds like you do), there are going to be a bunch of pointers all over the program. It's the only way to make *any* program run efficiently. They are not memory hogs -- in fact, a pointer is a way to minimize the memory requirements by encapsulating data in common objects.

                  One comment I'd like to make, from my experience -- OO design is a *more efficient* method of programming than 'procedural' approaches every time. The program will run more smoothly, be more flexible *and* less bug-prone.

                  Regarding speed, remember, 'Demo 4' was not OO in any way. It was a purely procedural program. Which is one big reason it's been stalled for so long. There is no easy way to fold all these complex models into the existing code. The complexity would (did) quickly overwhelm any programmers who would try to take on the task. Things that should take a week have taken a year.

                  Re-architecting the program to an OO 'component' design was absolutely necessary.

                  Comment


                  • Mark:

                    I'm sorry if I pissed you off.

                    I think perhaps I should take the weekend off. Maybe, being stretched too thin has made me insensitive. I still feel there's a lot of truth in my comments, but I don't want to fight over it. This is just suppose to be a hobby for all of us, and besides -- I enjoy ya'lls company too much to burn any bridges over something as esoteric as 'project management' methodologies. I've had this discussion before, with people here at work, and I know how it can end. I really don't want that.

                    I'll check back in Sunday, after I've had a chance to give my mind a rest.

                    Again, please forgive me for my rudeness.

                    Comment


                    • Richard:

                      Sorry, just saw your post.

                      Agreed, your game model can work that way. The code will simulate that.

                      There will just be the option to do it more 'realistically', if we want, as an optional 'tech' system (just like the optional 'politics' system). Since people and techs will develop without much player interaction, it would make perfect sense for a 'English' ethnic group in a mapsquare to be able to make muskets, while a 'Native American' ethnic group in the same mapsquare does not have that ability.

                      Your approach, while fine, would allow those natives the knowledge to make muskets.

                      I would just like an alternative to this.

                      I'll catch you Sunday.

                      Comment


                      • F_Smith:

                        I'll get over it... Basically I'm already over it .

                        I agree with you that there could well be big defects in our project management methods... The rest of us are mostly makin' it up as we go along... Thats one of the reasons you are such an asset to the project

                        I'm sure I don't agree with the particular issues you raised today in that one paragraph. Or at least I don't think what you said were the Major reasons why things have turned out as they did over recent history. But anyways, if necessary we can just agree to disagree.

                        I see the logic behind your overall approach, and it makes sense. It was just your stating your conjectures about this important topic as if they were facts... If you had just phrased your hypothisis a bit softer, and thrown in some maybes there would have been no problem.

                        Anyway, I understand how being under pressure can make these things both easier to say, and easier to react strongly to on my part! Have a great weekend!
                        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


                        • F_Smith: I know you won't see this for a while, but I'll respond while it is fresh on my mind:

                          I know that any group of people will have a set of knowledge; I made the simplifying assumption that they will all have the same knowledge (the civ's). This eliminates the need to explicitly state the knowledge of all the little groups. They are a component of the Civ object, so they inherit many characteristics of the civ, like tech level, life expectancy, literacy, etc. Since they all inherit the same thing, we don't have to worry about it. Isn't that one of the good things about OO?

                          I think it is perfectly reasonable that the natives can make muskets. The natives in your civ are assumed to be integrated into your legal system, economy, and society. They still have a cultural identity, but they are trading and working with everyone else. Members of that EG can be working in the blacksmith shop just like anyone else.

                          Soon, they will be able to run the blacksmith shops themselves. Tech diffusion has ocurred. I think that if we modeled them all seperately and had tech diffuse between them, the tech diffusion methods would give us almost exactly the same result: they would all have the same knowledge very soon. I'm just changing "very soon" to "instantaneous".

                          Comment


                          • One of the reasons we see things differently lies in the understanding of the concept 'tech level'.

                            F_Smith sees it as knowledge possessed by individual people (which we don't model, hence an EG).

                            However, I don't think this was the idea. Richard states it very well when he says that tech level represents the 'maximum knowledge level' of the civ. I would go even further and say that tech level represents the maximum knowledge level, infrastructure, knowledge processing institutions and maybe even ressources of the current civ. It is an upper limit of what can possibly be achieved in the civ.

                            FE say I was a part of the Danish EG in the European civ. As a civ we would have the necessary knowledge and infrastructure to build a nuclear power plant in the Danish province. But if I migrated to a New Guinea tribal civ I would not be able to 'carry' this tech level with me. It is not part of me. Even if the entire Danish EG migrated we would still not have the necessary tech level to build a nuclear power plant in New Guinea, as we would lack important infrastructure. So this tech level is not a part of an EG either. If a foreign power conquered a European square with a nuclear power plant in it, they might be able to coerse the technicians in the plant to uphold production for a while, but if the conquering civ lacked access to Uranium (or whatever is needed in such a plant), proper disposal facilities or the like, eventually they would not be able to have a functioning nuclear plant. So the tech level is not part of the square either. If provinces are big a tech of this sort might be said to reside at the province level, but very high tech levels can only be achieved and upheld by entire civs (think Star Wars project) or maybe even the entire planet (think future techs like a solar shade).

                            What I am saying is that the more advanced a technology is, the higher in the hierarchy it belongs. There is no unique answer to where tech level should be represented if reality is to be modelled. When technology approaches the level of the present, it seems necessary to have civ level tech levels, which in my view suggests that we should keep it at the civ level for the entire game for simplicity and ease of game play.

                            As F_Smith states this has the disadvantage that when people migrate they do not carry the tech level with them. The exhange of techs at the borders of civs must therefore be handled in another way:
                            How is the exchange of techs going to be handled?
                            Civilisation means European civilisation. there is no other...
                            (Mustafa Kemal Pasha)

                            Comment


                            • I'm OT, but sorry, I must respond....

                              F_Smith:

                              "Regarding speed, remember, 'Demo 4' was not OO in any way. It was a purely procedural program."

                              Absolutely wrong!!! It may not use your component OO approach, but it is not procedural. You are like one of these fundamentalists that say, not only do you need to belong to this denomination to go to heaven, but you need to go to this particular church! I am using OO design practices that I learned from books on the subject. Not perhaps the best, most current ones, maybe not what you think of as OO, but OO none the less.

                              "Which is one big reason it's been stalled for so long. There is no easy way to fold all these complex models into the existing code. The complexity would (did) quickly overwhelm any programmers who would try to take on the task. Things that should take a week have taken a year."

                              Absolutely wrong again. I got sick of programming after demo 4 and stopped for a long time. I needed a break after having put in 40hr work weeks on Clash alone, not considering everyting else in life. Everyone who said they were going to code did basically nothing except consume my time in trying to get them set up. No approach would work with those resources. I have at least one clear case that the existing code structure didn't cause someone's progress to lock up. Garth was going to start from scratch so you Cannot blame the existing code for why he was able to accomplish nothing. I personally think that lack of time and committment is the major problem in the lack of progress. You are jumping to conclusions because of your evangelism for your OO component design process. Nobody Ever said to me, or on the forums "I can't work with this code" or "The complexity is too much with X model...". They said they had no time, or had lost interest. So There Is No Information That Supports Your Analysis. Just your opinion standing alone.

                              I would appreciate if you would not make comments like this again. You have only conjecture on your side, and all its doing is pissing me off....
                              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


                              • Beör:

                                Sorry I didn't reply earlier; this thread got lost in the shuffle.

                                I agree with your analysis, except for some of the parts about infrastructure and resources. Technology tells you how to build infrastructure and use resources, but it does not include the availability of those things. The economic model handles resources and infrastructure building, while the tech model tells you how much infrastructure it is possible to build.

                                So if all of the Danish people moved to a primitive area, they could immediately invest in infrastructure. As they devoted economic inputs to infrastructure, it would keep improving. Eventually they could build power plants if there was no tech loss.

                                Migrating civs are assumed to carry knowledge with them in the form of memory, technical skills, books, ect. But the knowledge is very susceptable to tech loss when it is in this form. If no economic inputs are being devoted to a particular area, there will be no RP production and the tech level will fall pretty rapidly. So after a few dozen turns, they might lose the ability to build the power plants because they are out of practice.

                                Technology exchange is handled abstractly for the most part. Contact with another civ will give you tagged RP's to be spent advancing a certain tech. Tech levels will only be transferred in rare situations because the tech level is assumed to be a level of knowledge that is an integral part of your society. As you pointed out, an invader will not be able to take all of the tech level that lets them build power plants. The presence of the power plant would give them lots of RP's to advance their tech level, but they would not simply inherit your tech level. Their society doesn't have the necessary background or skills to start making power plants.

                                Comment

                                Working...
                                X