A lot of issues have come up recently, and we as a group are having a hard time agreeing on the way to approach them. So I decided to make a proposal for how to settle these issues and move on. Much of the discussion centers around 1) realism/complexity of our models, and 2) programming game models. In general I'm not trying to solve specific issues here, but to get agreement from the group as to how we will resolve different classes of disagreement among the team. I think consensus is important on these general modes of operation of the group since these sorts of issues are going to come up over and over again. Only in the case where there is no consensus, and also no set of relatively cheap compromises where we can "take both approaches" will I attempt to use my awesome power as project lead to force resolution on an issue. Hopefully that won't need to happen.
I will be shocked if everyone agrees to the first draft of this. It's meant to be more of a discussion starter. I will number my proposals to facilitate discussion. If anybody wants to add further clauses to a team 'contract', just start numbering from where I left off... The numbering scheme in no way indicates order of importance, it is more just what comes out of my stream of consciousness. Also, I may post this before it's finished since I think we need to start discussing this stuff ASAP.
When we get something we all agree to, I will get the final version up on the web page.
Additionally, I will occasionally here use specific examples just to illustrate overall project problems. No examples are meant as a specific criticism of anyone, but frankly was mostly because I already had an example handy. In fact, people have already responded to some of my suggestions on some of these issues, and I thank them for it.
Everyone that is currently on the project is working very hard, trying to do the best for Clash. I appreciate the work that all of you have done . Now, on to my points...
1. Realism/Complexity of game models
I have said it before, but I'll say it again. Being more like the "real world" is not a sufficient argument for acceptance of a game model, or programming approach to the game model IMO. So long as the game is internally consistent in its logic that is all that is necessary. I agree that all other things being equal, more realism and complexity has an appeal for me also. But I hope to demonstrate below that all other things are very seldom equal. I realize here that in my initial Clash web page way back when, I emphasized the importance of realism as compared to the ridiculous things that happen in games like civ. I Know we can do Much better than Civ. But I think we have to draw the line on realism at some point for several reasons:
a) Discussing ever-more-realistic models takes time from more critical priorities.
b) Executing more complex models in code takes more system resources.
c) Creating AI to handle more complex models is more difficult, and the AI will generally be worse.
d) Good GUIs become more difficult to make because more complex models generally require more complex GUIs. And if the player can't really interact with a certain complex model, then it is my general opinion that the system resources can be spent better elsewhere.
e) Micromanagement almost of necessity increases as model complexity increases. That micromanagement may be fun for a certain person, but unless the complex model is optional, or the AI is competent in that area, it will end up pissing off all the players that don't think that particular kind of micromanagement is fun.
I don't want to bog things down discussing these points too much. If you even agree with three out of these five reasons, then please think seriously about cooling it on the realism front.
Discussing ever-more-realistic.... I know I personally am guilty of liking to discuss minutae on many issues endlessly. I am trying to change that behavior, and that's one of the reasons you have seen me less on the forum recently. I ask the rest of you to do the same. I propose that if the item under discussion is not in demo 5, or in the basic code architecture that F. Smith is trying to hammer out, that you try and do something to contribute to one of these areas.
And one final perspective, a quote from Paul Crocker, who left the project after doing an awful lot of work on tile art:
I completely agree with Paul Crocker's statement that people are spending way too much time digging far down into the details of models (or were, some change has been noted already ) and not spending enough time worrying about how the high-level pieces fit together. And whether the thing will be fun. I think some topics in aggregate are more likely to hurt the game than help it, because people coming to the forum see game participants going way overboard IMO into unrealistically complicated models of the world. I expect a fair fraction of them will leave the site chuckling never to return. I may be wrong, but this is just my impression of it based on some early feedback that I got on clash from a few people who design games professionally.
These individuals looked at an early design of Clash, which is not Nearly as complicated as what we have now, and said that it was hopeless to try to create such a complex game. I disagree with them, but when I see the world models getting ever more complicated, I get very concerned. More complicated means it's harder to have the AI do the right things, harder to do the interfaces properly, and harder to tune the behavior of the world when it doesn't come out right. I think F. Smith is right when he says that the object model the game is coded in should allow for this complexity. It will allow us to change direction rapidly if we decide there is one critical thing that needs to be made more complicated. But to actually attempt to utilize most of this potential complexity in the actual game mechanics will IMO kill the project.
So my plea, is for everyone to think about things that are Absolutely Essential for gameplay, and to temporarily put aside everything else. If you can program, or think you can learn how to program in Java, then programming is the most important thing you could be doing. That is because only by actually putting some of the big ideas in the system into code will we start to learn if they are fun and work properly. I am not knocking the spreadsheet models of some areas, they are also valuable. But in truth we can't gauge the feel of the game from a spreadsheet.
If you don't think you are suitable for coding, and are just working at very small details in your area, especially if it is far from being actually programmed, please consider thinking about the interface for some area. We have had very little discussion of the player interfaces for the models in general, and this is a Big issue. Or take of fresh look at a model you are not familiar with and picture yourself playing using that model.
2. Programming issues and the intersection between coding and existing models
When a model lead and the model coder disagree on the approach to use in a model they should try very hard to find a point of agreement on each issue. When this is impossible the programmer can use any approach in code provided it can mimic the model results. The programmer is also free to put in any optional models they see fit, provided that those models only replace the "standard" one when a check box is activated by the player. The programmer should then start a separate thread for discussion of the alternate model. I think we have just today reached agreement on such an issue, and its discussed in the next section.
3. Code Object Design and Pointers
This is meant more for informational purposes than as something that we necessarily need to agree to as a group. But it seems to be coming up in a lot of places, so I thought I would put up an example of what 'pointers' in object models allow one to do in terms of game modeling here. A pointer is a programming term for something that points to another object. For example a Province object will have pointers to all the map squares contained in it. The province should not have the complete map square information contained in it, because the map square object is used by other parts of the program, like Task Forces need pointers to the square they are in, and the map itself is an array of pointers to map squares. Pointers are very flexible. This example is from the technology model.
As I see it, the major thing we've been discussing is the object that holds tech. F_Smith wants tech to be at the EG (ethnic group) level, Richard (and me too) at the civ level, or at most province level. By putting an overall tech object pointer at the EG level we can have Both solutions. For the EG level model this means each EG has its own unique Tech object which does all the complex things F_Smith wants (and Enormous computational and other baggage IMO, but that is another discussion). Simply by having a checkbox that says 'Tech at civ level' you can instead have Every EG in the civ have its tech object pointer point to The Same 'civ' tech object. Then you would sum over what RPs are being produced in the civ could be applied once to the overall 'civ' tech. When that tech object changes all the EGs tech pointers point to the new modified object and things are basically the same as if there only Were one tech object, associated with the civ.
I see no problem with a limited amount of this type of complexity in the model coding, provided the 'standard' system gets coded along with any other options.
4. Demo 5 Code Structure... Old architecture, or switch to Beast
Sorry, I have run out of time. Will fill this in when I can.
-Mark
I will be shocked if everyone agrees to the first draft of this. It's meant to be more of a discussion starter. I will number my proposals to facilitate discussion. If anybody wants to add further clauses to a team 'contract', just start numbering from where I left off... The numbering scheme in no way indicates order of importance, it is more just what comes out of my stream of consciousness. Also, I may post this before it's finished since I think we need to start discussing this stuff ASAP.
When we get something we all agree to, I will get the final version up on the web page.
Additionally, I will occasionally here use specific examples just to illustrate overall project problems. No examples are meant as a specific criticism of anyone, but frankly was mostly because I already had an example handy. In fact, people have already responded to some of my suggestions on some of these issues, and I thank them for it.
Everyone that is currently on the project is working very hard, trying to do the best for Clash. I appreciate the work that all of you have done . Now, on to my points...
1. Realism/Complexity of game models
I have said it before, but I'll say it again. Being more like the "real world" is not a sufficient argument for acceptance of a game model, or programming approach to the game model IMO. So long as the game is internally consistent in its logic that is all that is necessary. I agree that all other things being equal, more realism and complexity has an appeal for me also. But I hope to demonstrate below that all other things are very seldom equal. I realize here that in my initial Clash web page way back when, I emphasized the importance of realism as compared to the ridiculous things that happen in games like civ. I Know we can do Much better than Civ. But I think we have to draw the line on realism at some point for several reasons:
a) Discussing ever-more-realistic models takes time from more critical priorities.
b) Executing more complex models in code takes more system resources.
c) Creating AI to handle more complex models is more difficult, and the AI will generally be worse.
d) Good GUIs become more difficult to make because more complex models generally require more complex GUIs. And if the player can't really interact with a certain complex model, then it is my general opinion that the system resources can be spent better elsewhere.
e) Micromanagement almost of necessity increases as model complexity increases. That micromanagement may be fun for a certain person, but unless the complex model is optional, or the AI is competent in that area, it will end up pissing off all the players that don't think that particular kind of micromanagement is fun.
I don't want to bog things down discussing these points too much. If you even agree with three out of these five reasons, then please think seriously about cooling it on the realism front.
Discussing ever-more-realistic.... I know I personally am guilty of liking to discuss minutae on many issues endlessly. I am trying to change that behavior, and that's one of the reasons you have seen me less on the forum recently. I ask the rest of you to do the same. I propose that if the item under discussion is not in demo 5, or in the basic code architecture that F. Smith is trying to hammer out, that you try and do something to contribute to one of these areas.
And one final perspective, a quote from Paul Crocker, who left the project after doing an awful lot of work on tile art:
quote: BTW: I also opted out of taking on a major role because . . . I felt that people were worrying too much about minor details rather than tackling the basic framework (FE worrying more about adding coral reefs, etc than how the whole thing fits together). |
I completely agree with Paul Crocker's statement that people are spending way too much time digging far down into the details of models (or were, some change has been noted already ) and not spending enough time worrying about how the high-level pieces fit together. And whether the thing will be fun. I think some topics in aggregate are more likely to hurt the game than help it, because people coming to the forum see game participants going way overboard IMO into unrealistically complicated models of the world. I expect a fair fraction of them will leave the site chuckling never to return. I may be wrong, but this is just my impression of it based on some early feedback that I got on clash from a few people who design games professionally.
These individuals looked at an early design of Clash, which is not Nearly as complicated as what we have now, and said that it was hopeless to try to create such a complex game. I disagree with them, but when I see the world models getting ever more complicated, I get very concerned. More complicated means it's harder to have the AI do the right things, harder to do the interfaces properly, and harder to tune the behavior of the world when it doesn't come out right. I think F. Smith is right when he says that the object model the game is coded in should allow for this complexity. It will allow us to change direction rapidly if we decide there is one critical thing that needs to be made more complicated. But to actually attempt to utilize most of this potential complexity in the actual game mechanics will IMO kill the project.
So my plea, is for everyone to think about things that are Absolutely Essential for gameplay, and to temporarily put aside everything else. If you can program, or think you can learn how to program in Java, then programming is the most important thing you could be doing. That is because only by actually putting some of the big ideas in the system into code will we start to learn if they are fun and work properly. I am not knocking the spreadsheet models of some areas, they are also valuable. But in truth we can't gauge the feel of the game from a spreadsheet.
If you don't think you are suitable for coding, and are just working at very small details in your area, especially if it is far from being actually programmed, please consider thinking about the interface for some area. We have had very little discussion of the player interfaces for the models in general, and this is a Big issue. Or take of fresh look at a model you are not familiar with and picture yourself playing using that model.
2. Programming issues and the intersection between coding and existing models
When a model lead and the model coder disagree on the approach to use in a model they should try very hard to find a point of agreement on each issue. When this is impossible the programmer can use any approach in code provided it can mimic the model results. The programmer is also free to put in any optional models they see fit, provided that those models only replace the "standard" one when a check box is activated by the player. The programmer should then start a separate thread for discussion of the alternate model. I think we have just today reached agreement on such an issue, and its discussed in the next section.
3. Code Object Design and Pointers
This is meant more for informational purposes than as something that we necessarily need to agree to as a group. But it seems to be coming up in a lot of places, so I thought I would put up an example of what 'pointers' in object models allow one to do in terms of game modeling here. A pointer is a programming term for something that points to another object. For example a Province object will have pointers to all the map squares contained in it. The province should not have the complete map square information contained in it, because the map square object is used by other parts of the program, like Task Forces need pointers to the square they are in, and the map itself is an array of pointers to map squares. Pointers are very flexible. This example is from the technology model.
As I see it, the major thing we've been discussing is the object that holds tech. F_Smith wants tech to be at the EG (ethnic group) level, Richard (and me too) at the civ level, or at most province level. By putting an overall tech object pointer at the EG level we can have Both solutions. For the EG level model this means each EG has its own unique Tech object which does all the complex things F_Smith wants (and Enormous computational and other baggage IMO, but that is another discussion). Simply by having a checkbox that says 'Tech at civ level' you can instead have Every EG in the civ have its tech object pointer point to The Same 'civ' tech object. Then you would sum over what RPs are being produced in the civ could be applied once to the overall 'civ' tech. When that tech object changes all the EGs tech pointers point to the new modified object and things are basically the same as if there only Were one tech object, associated with the civ.
I see no problem with a limited amount of this type of complexity in the model coding, provided the 'standard' system gets coded along with any other options.
4. Demo 5 Code Structure... Old architecture, or switch to Beast
Sorry, I have run out of time. Will fill this in when I can.
-Mark
Comment