Announcement

Collapse
No announcement yet.

Attn: Coders -- Govt Model -- OOA

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Attn: Coders -- Govt Model -- OOA

    (Repost from other thread) --

    Very nice system.
    I guess I'm going to try to help do an OOA on this model, to help prepare it for coding. I only wonder if I should create a seperate thread, or keep it all here.

    I'll start by putting it here, if that's okay.

    Okay. I'm just starting to mull this over in my head, so point out any obvious stupidities of mine--

    Objects:

    Ruler (should already exist in game code)
    Civilization (should already exist)
    Country/Province (should already exist)
    Policy??? (I don't know if this should be a seperate object, or if it should be a behavior. Any thoughts?).

    Behaviors:

    Government (seems new to this model)
    Ideology (might already exist, I don't know)
    Social Class (I've move it, this seems to be a behavior of people and not an object, agreed?)

    P.S. -- I'm not sure I understood from the text description if a govt was province by province only, or if there was also some sort of a 'centralized' govt. The model would work for both (scalability -- the sign of a good model), but it sounds like we might need two 'Govt' interfaces (local/single prov and 'centralized' or many provs).

  • #2
    Hi F_Smith, thanks for getting this going

    The only objects you have listed that currently exist in the code are Civ and Province. In addition, since Province has a lot of functions in the game we already have a ProvEcon object for the economic handling of the province, and I suggest a ProvGovt object would probably also be good for things like centralization that are handled on a province level.

    As in the social thread, I don't kapish your def of behaviors. I would call all the things that you have listed under behaviors objects, with the possible exception of SocialClass. Those objects should also Have behaviors to my mind, but are not themselves behaviors. So Government is an object that describes the nature of the current government. The behaviors associated with it I would call 'Governing' and have to do with the government issuing orders and their subsequent effects...

    Govt is mostly centralized... But there may be a limited set of governmental functions handled at the provincial level. I won't comment any further till Rodrigo has a look here.
    Project Lead for The Clash of Civilizations
    A Unique civ-like game that will feature low micromanagement, great AI, and a Detailed Government model including internal power struggles. Demo 8 available Now! (go to D8 thread at top of forum).
    Check it out at the Clash Web Site and Forum right here at Apolyton!

    Comment


    • #3
      Just to repeat from the social coding thread:

      I don't know, really. My first thought was that there is no such thing as a 'govt'. It seemed that a govt is the behavior/interaction of social classes and how they implement 'policies'.

      Do ya'll see a 'govt' as a 'thing', or as 'interactions'?

      Comment


      • #4
        The one thing I don't want is you two guys expecting a tough coding decision from someone with such low knowledge about OO programming like me. In order to have this thread really advancing, I'm going to educate my self on OO programming. I've a couple of friends who really know about this subject and I'll ask them to explain me the basics of it, so in futures posts I'll give you better help.

        Comment


        • #5
          Roq:

          Actually, you can still help. This is strictly a philosophic question, right now.

          What 'things' exist, and are required to make the game? Then, what interactions of those things will be required?

          Altho do ask your friends for some ideas, too. We need all the eyeballs we can get.

          Comment


          • #6
            These are the OO-classes I can think of as a start (to avoid confusion between govt model's classes (upper class, etc) and programming classes, I'll refer to the latter as OO-classes):

            OO-Class: "Class Mentality" (we need 5 objects of this OO-class per civ called Upper Class Mentality, Lower Class M, Religious Class M, Military Class M and Bureaucratic Elite M"):
            DNP (object)
            INP (object)
            NOMINAL_POLITICAL_STRUCTURE (object)

            OO-Class: "Ideology" (we need aprox 20 objects of this OO-class for the game):
            NAME
            INP (object)
            NOMINAL_POLITICAL_STRUCTURE (object)

            OO-Class: "Ruler's Profile" (we need 1 per civ, called "Govt Profile"):
            INP (object)
            DNP (object)
            NOMINAL_POLITICAL_STRUCTURE (object)
            TAX RATE
            BRIBES

            OO-Class: "Government" (we need 1 per civ, called "Govt Profile")
            INP (object)
            DNP (object)
            Pol.power Distribution (REAL_POLITICAL_STRUCTURE object)
            TAX RATE
            De Facto Influences (REAL_POLITICAL_STRUCTURE object)
            UC PRIVILEGES
            RULER'S INFLUENCE OVER MC
            UC INFLUENCE OVER MC
            LC INFLUENCE OVER MC

            OO-Class: "NOMINAL_POLITICAL_STRUCTURE"
            Ruler's pol.power
            UC pol.power
            LC pol.power
            RC pol.power
            MC pol.power

            OO-Class: "REAL_POLITICAL_STRUCTURE"
            Ruler's pol.power
            UC pol.power
            LC pol.power
            RC pol.power
            MC pol.power
            BE pol.power

            OO-Class: "INP"
            PRIVATE PROPERTY
            SOCIAL POLICIES
            ECONOMIC PLANNING

            OO-Class: "DNP"
            SLAVERY
            ETHNIC DISCRIMINATION
            RELIGIOUS DISCRIMINATION
            FOREIGN AFFAIRS
            CIVIL RIGHTS


            We also need two matrixes per civ with 4 rows and varying columns (from 3 to 5). We also need a vector having from 0 to 3 elements. We need another 2 vectors having from 0 to 20 elements.

            That's what comes to mind for now...

            Comment


            • #7
              While having government attributes in classes is a good idea, its not a good idea to hold the specific data within those classes.

              Instead for the leaf level of information, use some form of accessable data storage; a text file, proprietory file format, or database.

              A relational model can be as flexible as you would need it to be, to match the needs of the OO data model.

              Reasons for this structure? Rapid changes are easier by this method, allowing for balance changes, scenario development and other aspects at the drop of a hat.

              Comment


              • #8
                rodrigo:

                Good job, again.

                I'll look this over tonight, before I finish the gui for building and testing these models. I'm about 75% done with that. Then, time permitting, I'll try and give some intelligent feedback on those classes.

                Limey:

                Hi. The actual attribute values for darned near everything will be loaded from a file/files. In my other games, I use xml for simplicity and power, using reflection to load the class. Since anyone with 2 mins explanation can code powerful xml.

                I'm not sure if they're going to use xml here, but they'll come up with something, I'm sure. Altho, since I have an xml parser already coded, maybe they will go with it . . . once they see how easy it is to use. It's what the object editors/testing program I'm building uses, so we'll see.

                Comment


                • #9
                  Okay:

                  Here's some more preliminary code, just trying to order things in my head:

                  ***************************************
                  Code:
                  import java.util.*;
                  
                  public interface Government
                  {
                      public void         addGovtPolicy(Policy p);
                      public Policy       getGovtPolicy(String n);
                      public Enumeration  getAllGovtPolicies();
                      
                      public void setNominalPoliticalStructure(PoliticalStructure p);
                      public void setDeFactoPoliticalStructure(PoliticalStructure p);
                      
                      public PoliticalStructure getNominalPoliticalStructure();
                      public PoliticalStructure getDeFactoPoliticalStructure();
                  }
                  ****************************************

                  Then we have a 'PoliticalStructure' interface and an 'Ideology' one (that likely just extends 'PoliticalStructure').

                  A 'govt' object will implement Government and Culture. It will contain two PoliticalStructures (nominal and defacto), a collection of Policies and a collection of 'Cultural Traits' (more policy objects).

                  So far, so good?
                  [This message has been edited by F_Smith (edited July 07, 2000).]

                  Comment


                  • #10
                    Feedback wanted, please:

                    Clash Object/Scenario Editor, Mark I



                    http://home.austin.rr.com/lostmercha...ashEditor.html

                    Just a test for compatability. Please hit this page, and if you experience any errors or bugs, post them in one of the 'coders' threads.

                    Not any real functionality yet, other than being able to add a basic 'Ethnic Group' to a few basic 'MapSquares'. But updates coming along soon.

                    Comment


                    • #11
                      F_Smith:
                      (read the other thread 1st)

                      I know you're thinking in terms of flexibility for scenario designing, but I feel you're going too far. I'm really confused about how you've handled the coding. Thinking about ethnic-group level classes or any such thing is IMO pushing it too far. Don't get me wrong, but I really need to see in your coding what I had in mind while writing the model. Otherwise it'll be hard for me to help here. You can lie to me if you want and code wahetever you think is best, but let me see things in the way I have them in my mind.

                      I saw an error in the OO-classes I proposed to you some posts above. Classes mentalities should include only DNP. No INP nor a political structure. Instead of these two, each class should have a support share for ideologies (up to 5 ideologies), which eliminates one of the matrixes proposed later.

                      This is what I need:
                      Classes need mentalities (preferred values for DNP and support shares for ideologies). The Upper Class and Lower Class use cultural info from the MCA, which is a set of cultural attributes built by aggregation of cultural info from several ethnic groups. The Religious Class mentality is used using RCM, which is a set of cultural attributes built using MCA and a planet-level object GRW. Military Class mentality is built using LC and UC mentalities and some variables from the current govt profile. Bureaucratic Elite mentality matches the current govt profile.
                      I must insist that procedures to create mentalities are not the same. For UC, LC and RC is almost the same. For BE there's no procedure, just a copy of current govt values. For MC is a totally different procedure.
                      These differences in modeling classes is what I feel makes impossible to simply expand the number of classes and have classes at any social level (ethnic, province, etc). If you add a "Wizards Class", what procedure are you going to use? are you going to make the scenario designer do code in order to produce its behavior?

                      -----------
                      "Then we have a 'PoliticalStructure' interface and an 'Ideology' one (that likely just extends 'PoliticalStructure')."

                      What do you mean by interface?
                      ------------

                      "A 'govt' object will implement Government and Culture. It will contain two PoliticalStructures (nominal and defacto), a collection of Policies and a collection of 'Cultural Traits' (more policy objects)."

                      Why govt has a culture? is it the majorities culture (MCA)? If you store MCA within govt, why wouldn't you do the same with RCM?
                      ------------

                      "In the code I have, you can, as scenario designer, choose to default all SocialClass Culture attributes to that of the 'Civ'-level culture. But you aren't forced to do so."

                      Things like this I don't understand. Classes don't have a culture in a general sense. The Military Class don't have a culture from where to build its mentality. I'm affraid you have generalized the idea of the UC and LC using their culture to create their mentality. It's not generalizable. MC and BE simply don't have cultural traits.
                      -----------

                      "There is not really a need for a 'majority' object, on the code level. 'EthnicGroups' are sub-divisions of that object, so the EG collection functionally *is* the 'Majority'"

                      Majorities is a set of EGs as you say, but the important thing is not the set itself or the list of EGs, but the mixed values of the ethnic groups cultural attributes. That's why I see a majority as an object, including EGs objects and having a procedure to merge values.
                      ------------

                      Looping thru: I'm not familiar with this term. In a single turn there's very little to do. In essence, we need the current govt profile to evolve. This means its values must move to a "future govt profile", where the FGP values were determined in some specific turn a while ago.


                      Help me, F_Smith! You've got me all confused!!!

                      Comment

                      Working...
                      X