No. 4 I have the answer to... Essentially there are just too many squares in the game to worry too much about the details of what happens in each individual square. (With the current default map square sizes there are about 10k populated squares out of the 64k squares in the world. The economic model is handled on the provincial level, and most other things are handled at the provincial level and higher. The most significant exception is combat, which still happens on the square level. Anyway, our working assumption is that individual squares should only hold enough detailed information to prevent really bizarre things from happening. So, for instance, we need to keep track of the number of people in each ethnic group in a square (at least approximately) so that if I take a single square of yours, I will have a square of people that are pissed off at me because they have been conquered by ruthless barbarians (me). Unless I elect to forcibly move them, they will still be there, and still be of the original ethnic group if you take that square back from me (at least if you do it fairly soon, before the culture evolves away from your culture because of being in the different environment of my civilization).
But in terms of the government model not really much happens in a map square... and we don't want each square to have its own unique cultural group, that is just too many objects IMO. So although each square will have a collection of ethnic groups, those particular ethnic groups will generally be in many squares associated with that civ. So all we need to do is point to several different EGs, and say how many of each is in the square. Your average multiethnic civ might have something like 10 ethnic groups, even though it might have hundreds of squares, each with something between one and four ethnic groups. This approach makes a lot of sense to me, and Rodrigo agreed with it when I suggested it. If ethnic groups are unique at a square level, it will both cost huge amounts of processing time (evolving lots and lots of cultures), and use large amounts of memory (tens of thousands of ethnic group objects) while giving very little benefit to the player. Sound reasonable?
On the other big issue... here is a quote from the government thread:
Originally posted by roquijad on 07-10-2000 10:27 PMHere I go: The govt model has a great weakness in "expandability". While developing it, I (and I guess Axi too) never thought about the posibility of having an arbitrary number of classes or to add/change/remove classes. After seeing OC3 govt model approach, I realized some people might desire to have lots of classes. In OC3 they're already talking about "large farmers", "small farmers", etc, which for my taste is too much detail, but it doesn't look bad for others. On the coding side, it won't be easy for a scenario developer to create other classes and their behavior, and most of times it would need extensive coding by the scenario designer himself, which is not my mental idea of scenario designing. This happens because in the current govt model classes' behavior is not created straight forward and in the same fashion for all of them. UC and LC behavior is given by a set of cultural characteristics called MCA, while the RC takes values from another set called RCM. Each, MCA and RCM, are computed using very different procedures. Also, the military class uses UC and LC values plus a special mathematical formulation for choosing ideologies. So, almost each class have its own way to compute its behavior, and this not only includes different variables, but also very different procedures. This usage of different modeling for each class makes deeply harder an attempt to create a totally new political environment. Adding a new class can be an imposible task for a model developer, unless it's very similar to one of the already existent classes.
On the other side, how the model uses "ideologies" presents another problem. Ideologies have fixed values and they should cover all the relevant regimes the game is expected to have. If a scenario designer chooses to have 10 classes instead of the original setting, the number of ideologies needed for the minimum flavor increases Extensively.
Ideologies have yet another problem. For representative regimes, pol.power shares must go according to demographic shares. Since pol.power shares are fixed in ideologies, this means the ideology itself needs to determine demographic shares, so coherency can be obtained. This isn't much of a problem with the current classes we're dealing with (excluding middle class) if we accept demographic shares are given by the values of PP, EP and SP, but if now one imagines adding/changing classes, then the relationship between demographic shares and ideologies can be very complicated.
IMO the govt model is simply not expandible. If this characteristic is a must in the team's view, then a radical change is needed in the model. I never thought about expanding classes, so it's my mistake
Rodrigo, I wasn't thinking about the kind of versatility F. Smith is looking into either, so don't feel too bad! But as he brought it up, it seems at least something worth thinking about... And if you decide that it's too difficult to inject that sort of level of customizability into the model, I think we have to go with your opinion. However, let me propose something for you to think about, and then we can discuss whether it's worthwhile or not.
Although there are a number of different ways of getting class behavior in the model, there are usually at most three or four different ways all the classes decide their behavior or inclinations.
So, for instance, classes' behavior is determined from one of the following: MCA, RCM, a weighted ratio of other classes' behavior, and a few others. Would it be possible to simply use a weighted ratio of all these factors to generate an arbitrary classes behavior? I'm not sure it is worth the trip, but it would give the system a large amount of versatility without needing a massive redesign. In this formalism the religious classes behavior would come from 100% RCM, with all the other components being 0%. This would give a fairly substantial toolboxes to any scenario designer who was sufficiently brave to try and rework the government model. IMO if you can propose such a scheme without a huge amount of work, it would probably be worth it. And if you think it's too much, then I think there is not significant harm in using F. Smith's approach of making the object design more general, but hard coding your model into the more general object design. After all, part of the reason for F. Smith is doing this, is so he can demonstrate his ideas about object-oriented design, and what it might do for the rest of our code.
Does that sound like an okay approach to everyone? And we can discuss these issues further after Rodrigo has had a chance to think about it a bit? Anyway, that's my take on the way to proceed....