Great Progress Gary! I would comment on the tags, but I just got back from playing raquetball with the guy who always whups my a**, and I haven't got two brain cells to rub together... So I'm afraid if I tried I'd do more harm than good
Announcement
Collapse
No announcement yet.
Final (5.3) Tech Dynamics
Collapse
This topic is closed.
X
X
-
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!
-
Tags are a part of this model alone.
As to if they are researchareas, in a way i guess you could say that, but they are more. When a farmer farms his land, he produces RP simply by farming and most of that RP is tagged for Agricultural and depending on the farm, Herding...mayby a slight amount for biology. This doesn't mean he reasearched anything, he just did his job and he learns stuff by doing it he can pass on to his children and friends. He may find that if you plant at this date rather than this, its better, but its purely accidental.
Most of the RP generated as you've read goes into upkeep....which Rich, BTW have you gotten a good mesaurement on how it should decrease point wise if you don't have enough?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
-
Well, I can't think of another good name. They are used for the interface, RP generation, and links with other models. You can think of them as "Affect Areas" if that helps. Their interconnection with other models is not yet defined fully, and as part of the "black box" philosophy they don't have to be. They are a concise way of passing data back and fourth between the tech model and other models.
Yes, they are supposed to be a part of the tech creator GUI. My forgetfulness is the sole cause of them not being in the earlier request.
Under the settings in the spreadsheet, the tech will fall by about a level a turn when there are no RP's at all. So if something is totally stagnant for tech turns, you lose kalf the knowledge you once had. I think that is reasonable.
By the way, I'd like to make the mose recent versions of the spreadsheets available to everyone. There haven't been any mechanics changes, but I made them easier to use and hopefully fixed the problem caused by the conversion from the older program. How do I get thhe new ones posted on the website?
Comment
-
Just a coding question. Gary, did Mark give you the game.data.military.TechRequirement file?
This is what I use in the Military code to simulate the effect of better tech giving better stats to an army. (I found that somewhere in the web, but was it in tech pages or some thread, I don't remember)
You may want to check it. Basically it means I need to know for one or more tech(s) for a civ/techlevel, given a "requirement" (you said buzzword?) to build a unit, how much %age I get to enhance my unit stats.
Any feedback on that file is welcome since it never got used, I just know it doesn't crash the system.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
-
Laurent: I did mention that to Gary, and he has the last version I received.
Richard: To get it on the web page put a note in the Web Site Requests Discussion page, and then email it to Dom. Probably duplicating the post in the email is a good idea since Dom prefers to get everything by mail if possible.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
-
Thanks for the input everybody!
I have prowled around the material for things relevant to technology, so am a little better informed.
The usage for tags does rather appear to be to implement the "Object" that is passed as an argument to an Observer (something that implements the Observer interface). In that case we might well call it "ObservationType". I wouldn't have any problem with that, and it has the possibility of having (at a later stage) quite complicated "tags" with functionality of their own. That would probably make the next generation of coders like us more.
I will incorporate the "tags" in the tech input utility when the specs are more defined.
Richard: "they are used for the interface" - I presume that interface means user interface, rather than Java interface. How are they used?
My next query about tags is a little hard to define. They seem to have two sides: in some cases it appears tags have technologies, on the others hand it seems that technologies have tags. An example to make the point:
is it (assuming "tag" is replaced by another word in the final version):
(code)
<tag>
<name>Breeding</name>
<technology>
<name>biology</name>
<level>24</level>
</technology>
<technology>
<name>agriculture</name>
<level>8</level>
</technology>
</tag>
(/code)
or
(code)
<technology>
<name>Breeding</name>
<tag>
<name>biology</name>
<level>24</level>
</tag>
</technology>
<technology>
<name>Agriculture</name>
<tag>
<name>biology</name>
<level>8</level>
</tag>
</technology>
(/code)
Laurent: yes, I saw the TechRequirement.java file (nice Javadocs comments! do you think we can prevail on everyone to do that?). I have a TechnologySet class which gives, in effect, a list the technologies, and the level of each for some particular situation. Because it seems quite unclear whether technologies will be civilization-wide, or more specific - per province, per ethnic group, whatever, I heave left it general. A particular entity which is interested can register as an observer, or query directly to get the relevant information. Since the technology is also an observer, it can listen for RP allocations.
Mark: I think I will not be using your technology code. This happened by accident as I was writing the input utility. By the time I had the basis of that, the approaches had diverged too much. For example, I have a Required class, as well as a Helper class, and both are inner classes of Technology. There is also TechnologySet (described above).
Incidentally, the calculations will be in the TechnologySet, since they know what the levels are in a particular context.
I made one decision, consistent with XML practice: all the tags (the XML tags that is) are now lower case.
Since I am still gathering information about the model, the utility will be delayed until next week. "The cheque is in the mail".
Cheers
Gary
Comment
-
I have some more questions, but since I am posting yet again, I thought I would try and get my code right:
is it (assuming "tag" is replaced by another word in the final version):
Code:<tag> <name>Breeding</name> <technology> <name>biology</name> <level>24</level> </technology> <technology> <name>agriculture</name> <level>8</level> </technology> </tag>
Code:<technology> <name>Breeding</name> <tag> <name>biology</name> <level>24</level> </tag> </technology> <technology> <name>Agriculture</name> <tag> <name>biology</name> <level>8</level> </tag> </technology>
I have two questions:
1. Is the use of float (rather than double) standard thoughout clash?
2. Are "applications" a type of technology? That is do they include growth rate, upkeep, diminishing returns, requirements and helpers? In Java terms, do they extend Technology?
I am gradually moving towards the though that individual technology levels (presently held in an inner class of TechnologySet) should themselves be observable, so for example, something could listen for the specific level of, say, "Tank", for a specific civilization or even province. What sayest thou?
Cheers
Gary
Comment
-
No, applications and technologies are very different things. Applications do not have helpers and they do not process RP's in any way. They do not have tech levels or knowledge associated with them. Their level depends entirely on the level of the technologies they are associated with. They only rise and fall when the associated technologies rise and fall. This is not at all like the effects of helper techs.
In comparison to Civ 2, techs are (obviously) a more advanced version of the technology advances. Applications, on the other hand, are more advanced versions of the military units, buildings, and wonders. The relationship between techs and applications on Clash is about the same as it is in Civ 2.
Let me try to answer the tech tag question:
First, it appears that I haven't explained exactly what they are. From the xml it looked like you thought they were like a different tier of technologies. This is the current list of tech tags:
Agriculture
Disaster Prevention and Ecology
Education
Cash Flow and Economics
Exploration/Movement (includes mobile communication)
Government and Politics
Happiness and Social Control
Health
Infrastructure (includes fixed communication systems)
Military
Production
Prospecting and Extraction
Pure Science
Religion and Philosophy
Standard of Living
Think of "tech tags" as being things that the civilization does or strives for. Hmm...
I now rechristen "tech tags" as "Civilization Activities".
Maybe that will help.
As described in the OO model plan above, Civilization Activitiesdo exist independently and they have their own functionality. The Civilization Activities objects gather economic and social data, turn that data into RP's, and then process the RP's and give them to the individual technologies.
But technologies are not a part of Civilization Activities because each technology can be associated with many tech tags. A tech, for example "Water Delivery Systems," might be associated with the Civilization Activities of Health, Happiness, Infrastructure, and Standard of Living. This means that RP's devoted to all four of these goals will find their way to the advancement of this Tier 3 technology. It also means that advancement in this technology will have a positive effect on all four of those goals.
So the Civilization Activities have the following functionality:
- They determine RP production and feed those RP's to the technologies.
- They provide an easy way for the player and AI to deal with tech. They can simply say "Put effort into improving Infrastructire." This is what I mean by the interface. It is an intuitive way for the player to interact with the tech system. Of course, they can drill deeper if they wish, but this is an option so they don't have to get too involved if they don't want to.
- They help interpret the effects of technology and can alter other models based on technology growth. For example, the Health Civilization Activity would feed data on the overall health of the civ to the Disease model.
One possible source of confusion is that "Z values" were also sometimes called "tech tags." The Z value is the number that shows how much the tech is connected to a certain Civilization Activity. A Z value of 10 means that the tech is very important to that activity, so it will recieve a large share of RP's, and will have a big impact on other models that use the data from the Civilization Activity. Z values of 1 or 2 represent a small effect. If the tech does not relate to the Civilization Activity at all, the Z value is zero.
The Z value is what is defined in the GUI Tech Builder. The default would be zero, in which case the Civilization Activity is not listed in the editor. The tech tree creator would select from the available list of Civilization Activities and assign a Z value to it. Each tech would typically have 1 to 4 nonzero Z values, meaning that it affects one to four Civilization Activities.
A programmer's name for the "Z value" might be "ActivityAffectFactor."
I hope that helps.
Comment
-
Gary:
We can try to enforce JavaDoc comments as a spec for all coders. I used to be quite good about it, but got out of the habit. Could you post exactly what level of commenting you think is most beneficial in the Clash Coding Standards Discussion thread? After a few go-arounds I'm sure we can agree on something that everyone can live with.
Not be using my code...
Well, I am pretty disappointed having absolutely wasted 20 hours of work, but I guess I'll get over it. Before you completely ignore it, you might consider raiding it for things like the tag names already written out etc.. In the end, you have to do whatever you think will allow you to progress most rapidly. But before you go on with all those inner classes, I suggest you consider that the design and our understanding of the tech system is still evolving, and you may have to undo a lot of those changes shortly...
Thanks for the detailed updates of what you are doing, hopefully it will prevent some train wrecks due to misunderstandings .
As you guessed, floats are the Clash standard. Most things in Clash will change gradually, rather than in steps as integers. However, since it's a game we didn't consider that the precision of double was necessary just about anywhere. Since the precision was unneeded, and a double takes up twice as much memory as a float, and we have Lots of them, that's the way we decided to go. Do you have an important issue to bring up on that?
Richard:
Good explanation of tags and their function! If you do a rewrite of the web page, I think you should include this section. I suspect we will also, with additional uses for tags as we get further into playtesting.
All:
On the issue of what object actually "has" tech in terms of game mechanics, I came up with what I think is an interesting thought recently. The idea is that each Complete ethnic group has its own TechnologySet. By complete ethnic group, I mean not the ethnic group component in a single square, but the whole ethnic group no matter how widely it spreads. There are also some complications with the idea, but I just wanted presented briefly and see if it makes sense to people as something we might pursue, or if it seems like the potential problems are larger than the likely benefits.
First of all, I want to state that the geographical extent of a complete ethnic group would be limited by communication technologies and other factors. So, for instance, when the British make colonies that are oceans away from the mother country, the colonists would form a distinct ethnic group. These "American" British would start exactly the same as the EG from which they came, but would evolve distinctly over time. (Some might say too distinctly ) This sort of cultural splitting has been in my mind as a good thing for Clash from the beginning....
So, now we have a separate British and American British EGs each of which have a unique TechnologySet. Tech diffusion would still occur between the Americans and the British (and other EGs as well), but they would not automatically get a scientific advance that the British EG has. With this approach, you can do most of the things that F. Smith was looking for like natives not having gunpowder technology while settlers in the same square did, or even there being different "City" and "rural" EGs living in the same country having different technologies.
Now for some problems... to support this kind of thing, we would need to keep track of RPs generated by each EG separately. I know the economy model doesn't support that right now, and it may be more hassle than it's worth. And there may be other problems with the idea I haven't foreseen yet.
But what do people think of the idea in general?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
-
I thought we had planned on the model being flexible enough for tech to be contained in many combinations:
quote:
There are four options for the detail at which we model technology:
Once per civ
Once per province
Once per EG
Once per EG per province
I thought we agreed that a good data model would be flexible enough to easily switch between all 4 of these, and that we would decide between then based on playtesting.
Comment
-
Yep, sorry, didn't mean to raise an alarm... I hadn't remembered this one being brought up. We'll be able to try them all, as you say.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
-
Actually Mark, I used quite a bit of your code, using the well known programming method called "cut and paste" (I refer you to the well-known book "Antipatterns" for a description of the joys of that method of programming). What I changed was the class structure.
Bear in mind that my primary aim has been to do the utility, not the model, in the shortest possible time. Consequently my learning curve has been pretty steep, and my refactoring rate huge. However, it has given me a wonderful opportunity to ask lots of questions.
I have no problems with using floats for the present purpose.
As I pointed out, my TechnologySet class doesn't care what it is attached to, or what uses it. In passing, my Technology class which contains everthing immutable about Technologies - that is, whatever is read in from the XML configuration file - is neither an observer nor observable - nothing in it changes! Quite a bit of it was cribbed from Mark's code.
I am about to go home for the weekend, and will go over Richard's notes on Civilization Activities in detail when I get there. With my well-known penchant for changing everything in sight, I might use just "Activities" in the code.
Cheers
Gary
Comment
-
Thanks Gary for the description of what you did with my code, that was about what I'd expected you'd do . Makes me feel better . From the previous description is sounded like you'd started utterly from scratch... which didn't make much sense to me, since much of what I'd done was pretty generic.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
Comment