Apolyton Archive  |  Preserved copy of the Apolyton Civilization Site forums as they ran on Ultimate Bulletin Board, 1998–2001. Read-only; nothing here can be posted to or replied to.  |  Forum index |  About this archive |  The 2005 site & forums

Thread Closed  Thread Closed
  Apolyton Civilization Site Forums
  Clash of Civilizations
  Final (5.3) Tech Dynamics (Page 2)

Post New Topic  

This topic is 4 pages long:   1  2  3  4 

profile | register | preferences | faq | search

next newest topic | next oldest topic bottom of page
Author
Topic:   Final (5.3) Tech Dynamics Format for Better Printing
Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 13, 2001 22:14   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Aw, dang! I suspected as much, since some of your equations had the divisor and others didn't. And also the spreadsheet didn't have a divisor. But I'd already written the thing before I twigged to that, so I figured I'd make sure...
Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 18, 2001 18:02   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Coding Status Update

A new pro Java programmer, named Gary, has expressed interest in taking over coding of the tech model. I have turned over what I had accomplished over the past ten days or so to him. He said he already has a good HTML parser at work, and thought he could manage both the parser for tech, and the GUI tech builder utility by the end of this coming week. Hopefully we'll hear from him here shortly. He also has an extensive math background, so he should be able to fully participate in the discussions on mathematical details of the model. He's also an XP advocate, so we've gotta get him and F_Smith together .

When you get here Gary, an official welcome to the Clash project!

[This message has been edited by Mark_Everson (edited March 18, 2001).]

Gary Thomas 2
Settler
New Zealand
Mar 2001
posted March 18, 2001 19:38   Click Here to See the Profile for Gary Thomas 2Click Here to Email Gary Thomas 2  send a private message to Gary Thomas 2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Mark has asked me to take over the coding for the Technology section.

I am a Java Architect and used to be a technical team leader for a Java coding team.

I have read all the tech threads (that wiped out the weekend).

My design orientation is very similar to that of F_Smith - I am an enthusiast for OO programming, and Kent Beck's Extreme Programming in particular.

I also have quite a bit of experience with XML. I will try and have a working user interface to allow input of technologies and applications within the next few days. This will follow the requirements listed a few posts back.

Cheers

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 18, 2001 20:18   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
quote:

Originally posted by Gary Thomas 2 on 03-18-2001 07:38 PM
I have read all the tech threads (that wiped out the weekend).

LOL! I Believe it... Stout guy (or something else ) to carry through with it!

Great to have you on the project!

Gary Thomas 2
Settler
New Zealand
Mar 2001
posted March 18, 2001 21:33   Click Here to See the Profile for Gary Thomas 2Click Here to Email Gary Thomas 2  send a private message to Gary Thomas 2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Thanks for the Welcome!

The email I got with my password said that I can change it: "Note that you change this password online using the "edit profile" button on our bulletin board"

When I tried this, there did not seem to be any option to change my password. Can you change your password?

First cut at the tech editing user interface is working - it picks up a file and parses it. Course it doesn't do anything else, but I am getting there.

Cheers

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 18, 2001 21:40   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Hey Gary:

Yeah the change password seems to be accessable to me. I hit profile, then entered username & pw and hit submit ID. Then you get a screen that has a lot of editable fields, one of which is the pw. I didn't try actually changing mine, but it looks like it should do the trick.

Good progress! I'm getting the merchants going for the econ model...

Lord God Jinnai
Prince
Arnold, Mo 63010
Sep 1999
posted March 18, 2001 22:03   Click Here to See the Profile for Lord God JinnaiClick Here to Email Lord God Jinnai  send a private message to Lord God JinnaiSend a Message to UIN: 57262757 Visit Lord God Jinnai's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Hey Gary! Glad to see some help here! Me and Rich will insert the actual techs we plan to use once you got a descent user model working so I can't wait!

Hope you didn't fall asleep reading all those posts either

Gary Thomas 2
Settler
New Zealand
Mar 2001
posted March 18, 2001 22:48   Click Here to See the Profile for Gary Thomas 2Click Here to Email Gary Thomas 2  send a private message to Gary Thomas 2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Thanks - I must have been blind - I didn't see the password box. I have now changed it to something I can remember. Coming from an unusual country I have an advantage with passwords - I just use a Maori word.

In writing the data editor I have taken

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

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

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

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

as the substantive definition of requirements.

This raises a coding point. One of the most well-accepted, ingrained even, principles of coding is that all identifiers must be descriptive. Under no circumstances should you ever use single letter variable names (sometimes people get away with i for an index and e for an exception, but that is it).

So I would like the model designers to provide me with descriptive values for: m, c, W, DR, Ts, O, h, E, I and L.

I am unclear what "Technology requirements" means.

The file will be in a simple XML format (so I can use a simple parser), here is a sample:


<Parameter>
<mValue>0.1</mValue>
</Parameter>

<Technology>
<Name>FarmMachinery</Name>
<Description>Farm machinery and equipment</Description>
<Level>3</Level>
<mRatio>1.4</mRatio>
<cRatio>1.2</cRatio>
<Requirement>
<Name>Agriculture</Name>
<Value>10</Value>
</Requirement>
<Helper>
<Name>Automation</Name>
<Value>0.7</Value>
<Offset>20</Offset>
</Helper>
</Technology>

However, the users of the utility will never need to look at this.

Since getting the utility out seemed the biggest priority I have not gone over the equations very closely. However I did notice that h and W seem to share the same dimension space - that is, if you double all the h values and double the W value, the result is unchanged.

Enough for now. I am hoping that all my & g t and such come out right!

Cheers

Gary Thomas 2
Settler
New Zealand
Mar 2001
posted March 18, 2001 23:13   Click Here to See the Profile for Gary Thomas 2Click Here to Email Gary Thomas 2  send a private message to Gary Thomas 2
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Damn - all my careful indentations of the XML got lost. It will really look like:


<Parameter>
  <mValue>0.1</mValue>
</Parameter>

I hope that works. If there is no indentation it didn't work.

I have two questions.

Somewhere in my voluminous reading I remember seeing a comment that "Level" was used for two quite different things (tech level 1-3, and level of a particular technology on a 1-100 scale), and an alternative was proposed for one of them. Could somebody let me know what that alternative was and for which one. Thanks.

My other question relates to "Requirement" which crept into the XML example, but does not appear to be part of the model. What is the situation there?

Cheers

Richard Bruns
King
NC, USA
Nov 1999
posted March 19, 2001 00:05   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Welcome, Gary, and thanks for helping!

Technology requirements are the tech levels that are required for an application or another technology to become available. FE the tech requirements for the first cannon might be explosives level 10 and metallurgy level 30. The tech requirement for Explosives might be Chemistry level 20. Requirements will typically be helper techs.

The user can choose to define tech layers or "Tiers." These used to be called "levels." The Tier defines how the interface treats the tech, and it also sets the framework for vital techs.

The difference between h and W is in terms of what they apply to. W is an overall variable that affects every helper and vital tech equation. h, however, is different for every helper or vital tech. h is used to set up the relative effect of all the techs that help a single technology. For example, we may want to set up the following:

Aircraft Helpers:

Propulsion Systems h = .3
Physics (Mechanics) h = .5
Electronics h = .1

In this way, we can set up the relative effects of all the techs that help the development of airplanes. But what do we do if playtesting shows that, overall, helper techs have too much or too little effect overall? It would be horribly tedious to change every h value, so I put in the W value so we could easily change the whole system at once.

Descriptive requirements:

I had much more of more of a math background than a programming one when I wrote the model, and now that I have learned more about programminr I see that the names are pretty arcane. So I'll take a shot at decent names:

default m = BaseGrowthRate
default c = BaseUpkeep
default W = BaseGlobalHelperEffect
default DR = BaseRPDiminishingReturns

For individual Technologies:

m = GrowthRateMultiplier
c = UpkeepMultiplier
default DR = RPDiminishingReturnsMultiplier
Ts = StartLevel
O = HelperLevelOffset
h = HelperTechEffect
I = ExternalGrowthRateMultiplier
E = ExternalUpkeepMultiplier
L = ApplicationLongevity
[This message has been edited by Richard Bruns (edited March 19, 2001).]

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 19, 2001 07:54   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Great to see tech chargin' forward!

Just a quick note for Gary. If you read the faq under 'UBB Code' you will learn a bunch of useful formatting commands. One of them is the Code tag that preserves indentation. its ['code] ... ['/code] (remove ' when using).

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 19, 2001 12:03   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
[Edit]
This is a public service announcement to future readers of this thread... In this post I confused 'requirements' which still exist, for 'vital techs' which have been eliminated in the design. So you can mostly ignore this post as confusing and irrelevant . The only reason I'm leaving it here is so that subsequent comments about the post make sense. -Mark
[End Edit]

Gary, just something you missed when reading the tome. For a regular tech (as opposed to an application) there are no longer vital techs (called requirements in the original spec). All techs that adjust difficulty are called helpers, and a formerly vital one is just one with a large value of h.

The discussion of this change started at the bottom of my post of Mar 8 in this thread (p1).

-Mark

[This message has been edited by Mark_Everson (edited March 20, 2001).]

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 19, 2001 14:52   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Many thanks for the prompt response. And particularly thanks for the English language names for the variables.

Mark: I was sure I did use the code tag for my XML sample. Oh well, I will be more careful next time.

I have a contradiction of requirements (using the word advisedly). Richard says that requirements are required, Mark says they are not...

Seconds out.

Cheers

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 19, 2001 18:09   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Gary:

You used 'code' with angle brackets. UBB seems not to parse that right. Use plain brackets and it'll work fine.

Resoving my statements with Richard's...
He was talking about Applications (Tier IV) techs Only AFAIK. I was saying they aren't needed for Tier I - III (Theory - Skills). I believe Richard and I agreed on this in the posts after that 3/8 one I talked about. So in your parlance... Requirements are required for Applications, but requirements aren't required for other techs, where you are helped by helpers instead.

Richard Bruns
King
NC, USA
Nov 1999
posted March 19, 2001 19:40   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
But there is an attribute of the helper tech called the requirement. That is the level of the helper tech that is required for the tech to exist. Flight does not exist until you get to a certain level of the helper techs; those levels are the 'requirements' for Flight.
Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 19, 2001 20:00   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Thanks for clarifying! All I can say is OOps

[This message has been edited by Mark_Everson (edited March 19, 2001).]
Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 19, 2001 22:29   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
It appears to be something of a terminology mixup:

To Mark "requirements" meant extra strong helpers.

To Richard "requirements" meant prerequisites.

To Gary "requirements" are the rules for writing the whole thing.

Just joking.

The code for the utility progresses.

Looking beyond the code, it is perhaps time to give thought to program (as opposed to model) design.

I have to concoct some way of a technology for a civilization (as opposed to the overall technology data) being able to find the helper levels for that civilization. This is a bit tricky so far.

The technology objects, which know about helpers, know nothing about the relative levels for a particular civilization.

A specific technology for a specific civilization can look up the helpers from the overall technology data. But then how does it find out what the levels are for its own civilization?

This sort of thing accounts for most of the labour of coding. The algebraic part can be done in a few minutes. The interconnection between the various part can take days or weeks.

I will be thinking on the matter as I finish the utility.

Cheers

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 20, 2001 15:35   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
The utility is progressing well. About 2000 lines written and working.

I had to digress into the actual model - not really required for the utility, but needful if the final result is to be coherent.

There are two matters that I would like some clarification on.

Tags:
I did read some information about tags in my marathon reading effort.
Unfortunately I left my hard copy at home (100 miles away) and really don't have the time to pursue elucidation on the web.

So I would appreciate some clarification of the current situation.

I am unclear whether tags are used merely to inform the player of the status of research, or to indicate which technologies will receive the benefit of current research. If the latter, some further clarification and perhaps model development is required.

Tiers:
I can't see why tier information is read into the program. It is never used and has no effect on game play.

Cheers

Gary

Richard Bruns
King
NC, USA
Nov 1999
posted March 20, 2001 17:08   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Tech tags determine a lot of things. First, they are an important way for the players and the AI to interact with the tech tree. For example, If disease is a problem, then the player will know to funnel research into the "Health" tag. This should also be easy to program into the AI, so it doesn't have to 'know' a whole lot about the tech tree when making decisions.

Tech tags are also the way that most RP's are assigned. Most RP's will come from basic economic activity. These activities, like building castles or running a government, will increase related techs, as your people get more experienced in doing something. The tag of the technologies determines which tech these activities will add RP's to.

For more complete info, look here.

Tiers do have an effect. As currently designed, Tier 1 techs are theoretical techs like "Chemistry" that historical rulers did not know about or relate to. As such, the players will not see ststus reports of tehse techs and cannot order research to be directly put into them. They will only order direct involvement into the Tier 3 techs like Shipbuilding. No ancient king said, "Learn about Chemistry." They said, "Build better Siege Engines." As the game progresses, players will gain the ability to interact with the more theoretical technologies.

We have made some attempts at OO modeling. Maybe these got lost in the shuffle:

quote:

Outline for Tech System Implementation with OO modeling:
This outlines the entire tech system procedure, starting and ending with object parameters for the other game models. This is mainly a definition of the objects and their interactions; the equations will come later.

The system is run at the end of the turn. It uses data about events and attributes from that turn and the results are implemented at the beginning of the next turn.

This system can be run at the civ, province, or even the square level. The default would be the civ level, but if you wanted different provinces or squares to have different tech levels you could run these methods at that level.

1) Data about RP generating activity in the area (civ, province, or square) is collected. I would assume that this would be a matter of inputing object parameters (trade, construction, etc.) from the other game models.

2) Tagged RP's are generated from this data. Each tech tag has a Tagged RP object that calculates itself based on the data gathered in step 1.

3) Social effects and other external multiplicative effects are applied to RP generation by tag. The object parameters from the other models again cause the Tagged RP objects to recalculate themselves. (Note that this allows society to have different impacts on different fields of study. Philosophy innovation might be frowned upon while Agriculture innovation might be supported.)

4) Tagged RP's are distributed among the technologies. Each technology has an associated Tech RP object that calculates itself based on data from the Tagged RP objects and the level of the associated tech.

5) THL (Total Helper Level) values are calculated. Each tech has an associated THL object that recalculates itself based on data about the helper and vital techs.

6) Each tech level is recalculated. Each tech object recalculates itself based on data from the associated RP object, THL object, tech attributes, and its own tech level. (This is the step that is detailed in the spreadsheet.)

7) Tech diffusion is calculated. The tech objects recalculate themselves based on data from surrounding areas and the internal conditions of the area. (Note that this is in addition to the effects of trade. Trade generates RP's that must be turned into technology by the civ or province. This gives completed technology directly to the area. So, your society might not provide a good environment for the development of something, but they would use it once it is completed.)

8) Application levels are calculated. Each application object recalculates its level based on the tech objects and its own attributes.

9) The effects of application levels are implemented. The objects in the other models recalculate themselves based on the parameters of the application objects. These effects will take place before the start of the next turn.

So the basic outline is:

Other model objects (previous turn) -> Tagged RP objects -> Tech RP objects -> Tech objects -> Application objects -> Other model objects (next turn)

quote:

I could finalize my plan for the methods if the following object list is agreed upon:
Tech Tag objects, with the Tagged RP's as parameters and the methods for calculating the tagged RP's.

One Tech RP object for every technology, with the methods for calculating itself based on parameters in the Tech Tag object.

The Technology object, with the level as a parameter and methods for calculating the level.

(Would it be better to have the RP as a parameter in the tech object? I'm not sure about this one.)

The Application Objects, with methods for calculating the level based on parameters in the tech object.

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 20, 2001 19:47   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
I am still rather vague on how "Tags" work. Are they research areas? If so, it would be nice to call then ResearchAreas or some such. "tag" as a word, is rather overworked - to me it means something like <Technology> in an XML (or HTML) file. It is also something that goes in a sheep's ear.

Are the tag areas to be built in to the code? Or configurable?

There doesn't seem to be any provision to read the tag levels for each technology from the XML file. Are they supposed to be part of the data input utility?

It would seem to be a reasonable idea to read in the tags from the same file as technologies.

It has just occurred to me that the tags might be part of one of the other models and described there. Is this so?

Alternatively are they a completely separate model of their own?

Sorry to be so confused. I have no difficulties with the idea of coding for tags (provided they get a more explanatory name) in an OO modelling way. The idea of using such a structure for intercommunication is appealing.

More or less by accident, the technology model is becoming data driven, with the possibility of swapping from one tech file to another for specific scenarios. This is the type of code structure that I particularly like, for it generality, extensibility, and configurability.

Cheers

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 20, 2001 21:24   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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
Lord God Jinnai
Prince
Arnold, Mo 63010
Sep 1999
posted March 20, 2001 22:20   Click Here to See the Profile for Lord God JinnaiClick Here to Email Lord God Jinnai  send a private message to Lord God JinnaiSend a Message to UIN: 57262757 Visit Lord God Jinnai's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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?

Richard Bruns
King
NC, USA
Nov 1999
posted March 20, 2001 22:44   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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?

LDiCesare
Chieftain
La Ferté sous Jouarre France
Jan 2001
posted March 21, 2001 05:35   Click Here to See the Profile for LDiCesareClick Here to Email LDiCesare  send a private message to LDiCesare
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.
Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 21, 2001 07:47   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 21, 2001 15:15   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 21, 2001 15:20   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Dammit, got "[ code]" wrong again, here it is again

is it (assuming "tag" is replaced by another word in the final version):

code:


Breeding

biology
24


agriculture
8



or

code:


Breeding

biology
24



Agriculture

biology
8



Cheers

Gary

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 21, 2001 15:22   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
I give up!

Cheers

Gary

Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 21, 2001 16:25   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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>

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>

Be a miracle if it works...

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

Richard Bruns
King
NC, USA
Nov 1999
posted March 21, 2001 17:23   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 21, 2001 19:34   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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?

Richard Bruns
King
NC, USA
Nov 1999
posted March 21, 2001 21:32   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 21, 2001 22:22   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.
Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 21, 2001 23:05   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 22, 2001 06:56   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
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.
Gary Thomas
Chieftain
New Zealand
Mar 2001
posted March 22, 2001 15:42   Click Here to See the Profile for Gary ThomasClick Here to Email Gary Thomas  send a private message to Gary Thomas
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
I have just finished reading a book by Gerry Weinberg and Don Gause (psychologists of programming) called "Are Your Lights On?"

I fear that my lights are off. I have come home a day early (taking Friday off) so I would have three clear days to get the input utility done.

And I left all the source code I had written behind.

Of course what programming project doesn't have slippage...

So I guess I will spend the next three days on other aspects of the system. For example, my XML code uses the the Apache xerces implementation. This is a jar file 1.49Mb long. It won't fit onto a floppy disk. On the other hand, we only use a small part of it, and the source code is available. So I will extract the required part of the source code and incorporate it in the Clash input utility.

Which leads immediately to my next topic. Game save status, individual user configurations, and other aspects of the game could all be stored in XML format. I have tried to write the input and storage classes in a general way. Also, Java streams allow, in a very simple way, any files to be zipped. This makes them smaller (obviously) and also makes them somewhat less easily hacked. Alternatively I can quite easily write a triple DES encryption system to make them completely unhackable. This I see as a possible later addition.

The question of Applications. Here is Richard's comment:

quote:


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.


and an earlier quote:
quote:


For individual Technologies:

m = GrowthRateMultiplier
c = UpkeepMultiplier
default DR = RPDiminishingReturnsMultiplier
Ts = StartLevel
O = HelperLevelOffset
h = HelperTechEffect
I = ExternalGrowthRateMultiplier
E = ExternalUpkeepMultiplier
L = ApplicationLongevity


The last entry appears to apply to Applications. However, I am not sure.

Do applications have Requirements? If so, do the requirements have start values?

How do the actual objects (units, buildings, whatever) interact with the corresponding application? Can the application be viewed as "permission to build"?

As an aside, while I and E are in view, I do not think that one should program for futures. That is, if something isn't actually in the model, it should be left out, and added later if necessary. There is an extensive literature (starting with Kent Beck et al in the XP web site) all of which says the programming for something that might be used is counter-productive. I refer you to website at www.xprogramming.org. However, here is a quote from that website:

quote:


You’re NOT gonna need it!

Often you will be building some class and you’ll hear yourself saying "We’re going to need...".

Resist that impulse, every time. Always implement things when you actually need them, never when you just foresee that you need them. Here’s why:

Your thoughts have gone off track. You’re thinking about what the class might be, rather than what it must be. You were on a mission when you started building that class. Keep on that mission rather than let yourself be distracted for even a moment.

Your time is precious. Hone your sense of progress to focus on the real task, not just on banging out code.

You might not need it after all. If that happens, the time you spend implementing the method will be wasted; the time everyone else spends reading it will be wasted; the space it takes up will be wasted.
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because "we’re going to need it". Don’t write getters for other instance variables because "we’re going to need them".

The best way to implement code quickly is to implement less of it. The best way to have fewer bugs is to implement less code.

You’re not gonna need it!

Now, Civization Activities. This is starting to look more like an interface than an object, though, like all interfaces, they will have objects which implement the interface. One possibility is to use the Observer/Observed interface. If this is used, we then have a TecnologyActivity object which implements the CivilizationActivity interface.

Must go now - the phone is needed.

Cheers

Richard Bruns
King
NC, USA
Nov 1999
posted March 22, 2001 17:17   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Sorry about that. That list you quoted was never meant to be a list of what should be put in the GUI. It was simply a listing of all the variables used. I only meant to make the distinction between variables that were needed once per system and ones that we needed a lot of.

E and I will be important, but I just realized that I misplaced them. They would work a lot better if they were a part of the Civilization Activity class. They are both based on the society, and it was decided earlier that the different Civilization Activities would have different growth rates, based on the values of the society. So they would be used in a different set of equations.

I have another idea that could help the system. I know that programmers absolutely hate this, and I'm sorry. But this is a small change and shouldn't take too much time.

Currently, the helper tech effect is based on the difference between the helper tech level and the starting helper tech level. This means that if Physics level 70 is a requirement and Physics started at level 10 and it is now level 80, the new tech would instantly get 70 tech levels worth of help. That has been shown to have the potential to make problems.

But what if the helper effect was beased on the difference between the requirement and the current level of the tech? That would mean that the new tech gets no help at the start, and in the above example it would only bel helped by the ten levels of Physics above the requirement. I think this would work better, and it is a lot closer to Mark's initial proposal for helper techs.

Helper techs can now have a negative inpact, as is logical. A few quick spreadsheet tests have confirmed that a reasonable amount of tech loss occurs when the helper drops below the required level.

I realize that the application system has not been clearly defined in one place. Let me attempt to fix that. But first, I'll organize the variable names better.

-----

This chart is an attempt at a complete list of the variables used by the system. Mark and LGJ, please review and check it for accuracy and throrughness.

Black variables will be input in the GUI, and red ones are numbers from other sources that will be used in calculations.

General Values (Once per System):

default m = BaseGrowthRate
default c = BaseUpkeep
default W = BaseGlobalHelperEffect
default DR = BaseRPDiminishingReturns
MV = MultiplierVariable (typically 2)
GV = GrowthVariable (typically 10)

Technology Values (Once Per Tech):

m = GrowthRateMultiplier
c = UpkeepMultiplier
DR = RPDiminishingReturnsMultiplier
Ts = StartLevel

(Set Helper Technologies)


Tn = InitialTechLevel
Tn+1 = FinalTechLevel
H = TotalHelperEffect

And the helper equation is now:

RHL = h1*(HT1-Ts1+O1) + . . . + hx*(HTn-Tsn+Ox) (Variables defined below)

TotalHelperEffect = MultiplierVariable^(RHL/BaseGlobalHelperEffect)

For Helper Techs (Once for each of a technology's helper techs):

h = HelperTechEffect
O = HelperLevelOffset
Ts = TechRequirement

HT = CurrentValue

For Applications (Once Per Application):

L = ApplicationLongTermGrowth
G = ApplicationShortTermGrowth
F = ApplicationLossModifier

E = ApplicationEffectiveness

(Required Technologies)

For Required Techs (Once for each of an application's required techs)"

R = TechRequirement
h = TechEffect

T = CurrentValue

E will be calculated for each application as follows:

(For readability, I'll use the shortened names. Otherwise the equations would be much wider than a page.)

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

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

Whew. I hope all that was complete and accurate.

Mark_Everson
Clash of Civilizations
Project Lead

Canton, MI, USA
b.02-15-99
posted March 22, 2001 20:02   Click Here to See the Profile for Mark_EversonClick Here to Email Mark_Everson  send a private message to Mark_EversonSend a Message to UIN: 30578681 Visit Mark_Everson's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Gary:

I think that XML input and output are only really useful in the long-term for the specification files associated with things like technologies, economic goods, infrastructure, military units, and AI tendencies. Putting the whole save file for the game out as XML seems to me unnecessary, since the save file would then be prohibitively large. The game data itself will probably be several MB, and once you wrap that all in XML, well, the mind boggles...

I like your XP quote. When you get a chance you should put it on the coding discussion page.

Richard:

I think you did a great job with this synopsis! The only thing I didn't like about the variables stuff was:

Ts = TechRequirement
That is confusing since Ts has another meaning...
Can we use:
Tr = TechRequirement? Just so there is no confusion between starting tech levels and tech requirement levels?

I think your new helper tech formula is better than before... As I bet you thought I would but as I explained to you in an e-mail a few weeks ago, I still think your approach on the helper tech's still fundamentally is Not going to work, and fear you're going to have to go back and make tremendous changes at a later date. Since Gary and the others haven't seen my analysis of what is wrong with the system, I'm going to go ahead and post it here. One note here, I wrote this before Richard proposed the new helper tech formula. The quoted e-mail uses the old formula, but I believe the fundamental issues I'm bringing up are still relevant with the new formula, just slightly subdued. For that reason (and innate laziness ) I haven't edited the previous text to update the formula.

Previous e-mail starts here...

As an outgrowth of the work I'm doing on the technology model, I think I've identified a very serious problem with your helper tech expression. The problem occurred in the change that you made so that you can handle computers and such in the way you prefer. I believe the new expression (which I've copied below) doesn't give the right scaling behavior for helper techs as tech levels change from numbers like 10 to numbers like 100.

THL = h1(T1-Ts1+O1) + . . . hn(Tn-Tsn+On)
where T1 through Tn are helper technologies
H = MV^(THL/2W)

I think I can make my point most clearly by considering a technology that has no helpers, call it A, and a technology B that has a single helper. Because A has no helpers, that is equivalent to H = 1 whether you are at the low-tech end (10), or the high-tech (100). Now let's assume that A and B are supposed to *on average* grow at the same rate. (Obviously because B has a helper tech, depending on the helper tech you would expect it to either grow somewhat faster, or somewhat slower than A.) For simplicity I will assume that all starting tech levels and offsets are 0, that MV is 2, that h = 5 and that W is set so that A and B grow similarly at an overall tech level of 10. So we want H for B = 1. If we assume that when B and A are 10, B's helper is also at a level of 10, then W would have to be very large to have H be approximately 1. That's is not a very satisfactory solution, so I'll relax one of my assumptions, and say that we will change the offset to -10. I will follow your rule and have W=3h for 'safety'. But now at the very start of the game, when all techs might be around the level of 1, H = 2^(-9/3) = 1/8. So two techs that by construction are supposed to grow equally Can't over any reasonble range of techs with your model. When we get to tech = 100 then H = 2^(90/3) which is Vastly different from 1 that we have for tech A.

In short, the Only way to make A and B behave similarly on average is to make W preposterously large, basically eliminating the helper function entirely. I really think this system is broken, and we're going to find other bizarre things like this. Before you spend lots of time putting in values I encourage you to test your spreadsheet over the broad ranges of tech values that will occur in the game.

And the same problem occurs when you contrast techs with "low strength" helpers, meaning something like a single or two helpers that have low helper coefficients, with "high-strength" helpers. I'm not going to go through the whole presentation again, but it appears to me that unless we are willing to stick with the specification that Absolutely Every Technology Must have a set of helper technologies with roughly equal "strength" this system is fundamentally flawed.

Old e-mail ends here...

I'm not trying to be provocative or abusive, just trying to save what appears to me to be enormous amounts of potentially wasted effort.

IMO we should go back to the old formula:
THL = h1(T1-T+O1) + . . . hn(Tn-T+On), where T is the level of the tech that is being helped. For those who weren't here for the long, drawn out, previous discussion, what this the equation requires that all technologies increase levels at a roughly similar rate throughout the game. It doesn't mean there can't be fairly large imbalances, but a large imbalance would be a spread of 20 points or so between best and worst technology level. I completely realize this precludes your (Richard) doing technologies like computers as you wish. (Quick synopsis; computers could start at a level of say 10, even though most other techs are 60 at that stage of the game). I think we can easily handle your previous objections about how computers would work by simply making Computers an application with an effectiveness parameter that grows very rapidly as some Skill like "Computational Machines" grows above the 60, or whatever, level.

I realize I haven't laid out my arguments in an airtight manner, or one that can be necessarily understood by everyone. But hopefully I've outlined enough of what I think the problems are, and the solutions might be, that we can figure out whether my ideas are all wet (in which case I'll apologize ) or are mostly correct.

-Mark

Lord God Jinnai
Prince
Arnold, Mo 63010
Sep 1999
posted March 23, 2001 00:06   Click Here to See the Profile for Lord God JinnaiClick Here to Email Lord God Jinnai  send a private message to Lord God JinnaiSend a Message to UIN: 57262757 Visit Lord God Jinnai's Homepage!
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
Not to be picky, but just to be clear for anyone who wants to use this for making differnt scenerios, the Civilization Activities 'Health' should be renamed 'Health and Biology'...also we need to add 'Chemistry' and 'Eletronics' or whatever you want to call them....i looked over that list Rich and i couldn't find a place to put 1> Gunpowder (unless you want pure science because gunpowder was not oginally used for 'Military') and also modern electronic devices such as computers and other stuff except infrastucture which doesn't make sence. I think with that we can now cover all Real World stuff.
Richard Bruns
King
NC, USA
Nov 1999
posted March 23, 2001 00:14   Click Here to See the Profile for Richard BrunsClick Here to Email Richard Bruns  send a private message to Richard Bruns
Edit/Delete Message    Reply To And Quote This Message
IP: Logged, Admin Access Only
quote:

Ts = TechRequirement
That is confusing since Ts has another meaning...
Can we use:
Tr = TechRequirement? Just so there is no confusion between starting tech levels and tech requirement levels?

The cryptic names like Ts will probably be phased out soon anyway. They aren't very user-friendly, so we should probably switch to the programming names listed.

---

Mark, your analysis was skewed by the number that you used. Typical HelperTechEffect (h) values will be in the range between .1 and .5 The value you used, 5, was 10 times larger than what will be used in the game, so that greatly exaggerated the effect of the helper tech.

But on a more general note, I think that staying with this system would take a lot less effort then switching. There are a lot of simple things we can do to eliminate any potential imbalance.

Look at these two technologies:

A RP % Tn+1 THL
45 0.17 44.87 0
B RP % Tn+1 THL
45 0.17 45.25 18

They are exactly identical, except for the helper. Note that the total difference between the two results in this case is only a level of .38 Now look at what happens with a slightly different RP distribution:

A RP % Tn+1
45 0.2 45.00
B RP % Tn+1
45 0.14 45.05

The difference is practically erased. This simple fix will scale up and down to different levels and RP inputs. The difference due to helper techs can be easily dealt with using slight changes in the distribution of RP's.

So how do we arrange this change in RP's? The system already has a way: The ActivityAffectFactor (Z values) associated with Civilization Activities. Techs with a higher total of factors will get more RP's. So if we want techs to rise at the same rate, all we have to do is follow a simple design rule: If a tech has a lot of helpers, it should get less ActivityAffectFactors, and vice versa. That way, tech with fewer helpers get more RP's and tech with more helpers get less, so they advance equally.

Of course, techs will not generally rise at the same rate anyway. With this system, they don't have to. They will probably rise at different rates, like they have throughout history. The science of cannons rose a lot more than the science of agriculture did in a similar amount of time. Knowledge of cannons doubled many times in a few hundred years, while the knowledge of agriculture only rose a small amount in that time. There are countless examples of this type of growth disparity. If all techs were supposed to be close to the same level throughout history, chaos would ensue. The tech levels would lose all meaning if Agriculture and cannon technology rose by the same amount from 1450 to 1750.

I am quite sure that there is only one thing that can ruin this system. That would be the violation of the scaling rule that says that the amount of knowlegde is multiplied by MultiplierVariable every time the tech rises GrowthVariable levels. The smooth running of everything, all the applications and equations for growth, depends on that rule. Yes, it would be possible to work around this scaling rule, but doing so would take far more time and effort than a little alteration of ActivityAffectFactors and HelperTechEffect values.

Apolyton Civilization Site Forums
> > > Clash of Civilizations Forum

This topic is 4 pages long:   1  2  3  4 
next newest topic | next oldest topictop of page

All times are EDT

Administrative Options: Open Topic | Archive/Move | Delete Topic | Top
Post New Topic  
Hop to:

Contact Us
Apolyton Civilization Site

Powered by: Ultimate Bulletin Board, Version 5.44a
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.

AltaVista Type or paste text or Web address (beginning with http://) here:
Powered
by Systran
Translate from: 

Front Page | Civilization III | Dinosaurs | Civilization II | Call to Power | Call to Power II | Alpha Centauri | Alternative Civs | Misc | Links | About ACS | GameStats
GameLeague | Scenario League | HAC | Civilization Scenario Collection | Spanish CivII Site | Clash of Civs | CtP Maps | Art of War | WesW's Ctp1/2 Site