Jump to content
Sign In to follow this  
DarkMatter

DISCOVERY: Exemplar Properties, File Relationships, and Instance Patterns

52 posts in this topic Last Reply

Highlighted Posts

Posted:
Last Online: A long, long time ago... 
 

[bEGINQUOTE]

3/24/2004 12:25:16 AM[/quoteDATE]
DarkMatter[/quoteAUTHOR]
Gah! BigRed....you need to upgrade man....check out NewEgg.com....WinXP Home (OEM) aint even $100...for a while, it was $89. Thats cheep considering the benefits of XP. 2.gif??[/quoteMESSAGE][/bEGINQUOTE]

No way, man.  I ain't paying Billy a C-note just so I can get infected with viruses and spyware every few days too.  I'll stick with Linux, thanks.  Live Free or Die.

 

Share this post


Link to post
Share on other sites
Posted:
Last Online:  
 

I'd say start a new thread for it. Looks like a great idea and I'm sure we could think of ways to help with it

Just rolling the structure idea around in my head... not coming up with anything so far though

Updates. I think the easiest way to do this would be to allow top level updates to be done only by modd squad or other highly knowledgable people. A Top level update would be changing properties of the main table for the exemplar props, such as description, id, name etc. After that point, there could be a seperate userdefinition table that Users could record their own notes about that property to. These notes would be displayed underneath the 'official' definition and would be sort of like a chat list of known info by the people who use them. See the php website and look up a command or two to see an example of this.

Share this post


Link to post
Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     

    [bEGINQUOTE]

    3/24/2004 4:22:45 AM[/quoteDATE]
    [/quoteAUTHOR]


    No way, man. I ain't paying Billy a C-note just so I can get infected with viruses and spyware every few days too. I'll stick with Linux, thanks. Live Free or Die.


    [/quoteMESSAGE][/bEGINQUOTE]

    LOL

    Don'y buy into media crap too much, BigRed. I'm a longtime linux user....been using it since Linus first released it. As such, I know for a fact that Linux isn't invulnerable to attacks, and in fact, can be quite vulnerable. Some of the most atrocious hacks in history (usually done by uneducated script kiddies), were facilitated by Linux, not Windows. Remember a few years back in the late 90's when we had those HUGE, several day long blackouts of major sites like Yahoo, Amazon, BestBuy, etc.? The only reason those hacks, which cost companies billions, were possible, is because of some major security holes in the linux kernel, allowing root access. And it was a 9 year old script kiddie who caused it all. 2.gif

    Windows is a lot more secure than its given credit for. The problem is two things. A) Microsoft and Windows are always in the public eye, and any flaw is highly hyped because of Microsofts past business tactics and broadspread hate for the company. Linux is never publicized because its not nearly as widespread, there arn't any antitrust cases against Linus, etc. etc. etc. B) Windows is secure, and most of the worms that have caused problems in the last couple years had patches out WELL before problems started. People just never install them, and leave their systems insecure. The same problem exists with Linux, except for one thing: The people who use Linux are geeks, and tend to update their CVS checkouts daily. 2.gif So, they are always up to date. 22.gif

    But, further discussion on this topic, which I would welcome (I love arguing linux vs. windows) should probably take place in an off-topic thread. 39.gif

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Hiya, kids, sorry I dropped out for a bit. I have quite a few other irons in the fire....

    I'm not sure we'd even need the muscle of SQL Server to do this, honestly - it could likely be done in Access easily enough, and unless you're talking in excess of a million unique keys, the Jet engine can handle it just as easily as SQL, but without the additional learning curve (Access I know: SQL I'm not nearly as familiar with).

    Resolved: This would be pseudo-opensource, i.e. write access limited to a group of people known and/or proven to have a clue about what the heck they're doing. Fair enough - we don't need a database full of guesses.

    Resolved further: There should be some discussion mechanism included which will allow information to be compared/tested/argued about before it's inserted into the database

    Resolved further: Updatable existing records to allow for discovery of new information about old topics

    Resolved further: The data structure should be fairly simple, at least for someone who knows a bit about data structuring. I do.

    sidebar: Since for everyone BUT me the interface would be web-based, the *nix v. windows discussion is herefore deemed irrelevant, if interesting <ahttps://community.simtropolis.com/assets/emoticons/2.gif>

    So let's talk data structure.

    It seems that the identifiers are are in an 8-byte hex format (i.e. 0xffffffff) This is fine, except that there seems to be no easy way to tell the difference, based solely on the hex ID between an identifier for an OBJECT (exemplar/cohort) and an identifier for a PROPERTY.

    Looking further at iLive, I'm finding my head spinning quote quickly. What I really need is for someone with an understanding of the inherent data structure of this thing to help me understand it - what would the tables in a normalized database containing all of this information look like, is what we need to determine. Once I've got my head around that, I *think* I can figure out how to ask the right questions that will allow you guys who actually have the data and have already been working with it to get it to me in a fashion that makes it easy to parse in the work that's already been done, tie it together, and build a web interface which could then be used to display, maintain and update the information.

    I'm pretty good with relating data, but this is such a complex set of information that I'm just not getting my head around it by randomly examining various entries in the simcity_1.dat file as displayed in iLive. I can, for instance, copy all properties to clipboard...but holy crap would it take a long time to do that by hand for every single cohort/exemplar! And even if I was inclined to take the 2 or three years to do that, I'd *still* have to figure out how to sort it and categorize it and format it for importing as data. There's just too much here that I don't know or understand, and as enthusiastic as I am about trying to do this, I don't want to waste my time or anyone else's by having to re-do all the work that's already been done.

    Even if I could get a huge set of comma-delimited text that was at least grouped in some meaningful fasion - say, one that has the exemplars for all the....BRIDGES or all the Terrain or all the police stations...just so that I can have confidence that the data structure for each record would be the same for that particular group of data, which I could then use to build a bunch of files that would help me understand what my columns might look like and what information is unique or repeated and so forth - it would be a big step forward in my ability to get my head around this thing.

    Surely someone has an understanding, at least, of the data patterns for (say) ALL THE FIRE STATIONS or ALL THE POLICE STATIONS or ALL THE TERRAIN or ALL THE R$$ LOTS and could arrange it into some fashion that my ignorant self could grasp? That's where I'm lost at - I just don't understand the data well enough to be able to look at it for a few minutes and go Ok, okay, all of the X will have properties A, B, C, and D, so my table will then look like so.

    Sorry, maybe I'm in over my head with this attempt, or maybe the existing tools are the best way to handle it. I'd like to think not, but don't be afraid to say so if that's the case.<ahttps://community.simtropolis.com/assets/emoticons/41.gif>

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Well, I think what you're looking for is an overview of the Exemplar Type property. This property defines what an exemplar is part of the group of.

    As for all subproperties, I can offer a copy of the exemplar/cohort spec if you need it, but that's mostly just hex formats

    Best way for categorizing exemplars if you're doing that would be to pull everything with the exemplar type and group ID's, then subdivide them via exemplar type, which should give you forinstance: UI, Udrive it, Lot, Building, Road, etc.

    For the most part, exemplars share a lot of properties, but there's also bunches that are quite unique as you've probably seen. The shared properties are usually the more simple stuff like type, name, parent cohort, which links to a global cohort that gives the exemplar its inherited properties

    As far as I can think, tables could go like this

    For Exemplars (whole file)

    EXEMPLAR TYPE(property),SUBGROUPING(as datgen/reader, ask DM if you need help, ie R$, CS$$ etc.),INSTANCE,NAME,DESCRIPTION,USERDEFINED 1..2..3 and so forth (User created entires that could follow the main description to add nibbles of data

    For Exemplar Properties (subfile lines)

    PROPID (property ID),NAME, DATATYPE (Uint16,S32 etc), REPSifCONST (Either a constant for the number of repetitions, or a value range for how many reps there can be if not constant), DESCRIPTION (current or primary description), USERDEFINED 1..2..3 (as before, user created data bits that can be appended onto the end as they are found out)


    Just the stuff I can think up at the moment.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    I'm no MODder, but I think I discovered one of the unknown properties:
     
    Name Value: 0x0ABE1AF70
    Data Type: Unit32
     
    I searched the simcity_1.dat file for the instance value that was assigned to the property. The instance was a PNG file that  produces a yellow highlighted box around the garbage truck when there is an available mission.
    Example:
    Name: Unknown
    Name Value: 0x0ABE1AF70
    Data Type: Unit32
    Rep: 0
    Value: 0xCBF0755E
     
    The highlight PNG instance number for the garbage truck is CBF0755E.
     
    Let me know if this helps...
     
    -Swamper77

    Share this post


    Link to post
    Share on other sites
  • Original Poster
  • Posted:
    Last Online:  
     
    Thanks swamper. I'll try to add it before the next release.
     
     
    Here is an updated spec for properties.xml property tags. This is the new style that I created for DatGen, and it includes a lot of extra information. It is still XML, but more hicherarchial, with extra attributes for property tags. Every group can have subgroups, like the following example:
     
    <group name=Test>
     <group name=Sub Test>
      <property num=0x0F45CD50 type=Float32 name=prop1 desc=a property #1></property>
     </group>
     <property num=0x0F45CD51 type=Uint32 name=prop2 desc=a property #2></property>
    </group>

    There are several new attributes that have been added for the property tag. These attributes define the kind of length the property has, and the defailt reps and values. Below is the full spec for the property tag:

    <property 
    num={HEXVALUE} 
    type=Float32|Uint32|Sint32|Uint64|Uint8|Bool|String 
    lengthtype=fixed|variable 
    length={POSITIVENUMBER} 
    value={HEXNUMBER}|{DECIMAL}|{INTEGER}|{true|false} 
    name={STRING} 
    desc={STRING} 
    example={STRING} 
    />

    The new lengthtype attribute can be either fixed or variable. Most properties are fixed in length, and have a specific number of reps. Some properties, though, have a variable number of reps, and need to be treated specially. The new length attribute defines the default length for the property, useful when inserting new properties using an exemplar editor. The third new attribute is the value attribute. This attribute is a comma-separated list of default values for a property, and can represent hex, decimal, or integer values. For example (some attributes ommitted):

    <property num=0x00000010 type=Uint32 lengthtype=fixed length=1 value=0x00000000></property>

    <property num=0x8a416a99 type=Uint32 lengthtype=fixed length=3 value=0,0,0></property>

    <property num=0xcaa9ab92 type=Bool lengthtype=fixed length=1 value=true></property>

    The last new attribute added to the property tag is the example attribute. This is a simple string that can be used to store example usage of a property. Some properties have multiple formats of use, or complex usage, and examples can be helpful. This is an optional tag.

    The properties.xml file is fully complient, standard XML, so any complient XML reader can load and parse the file. The new higherarchial nature of this version of properties.xml has broken compatability with the reader, so posted below is the source code used in DatGen to load and process the data contained in the new properties.xml file. (Following is unoptimized C# code taken from DatGen's source. Its not optimal, but it works properly. The following code makes use of the .NET System.Xml namespace, which contains classes designed to load and parse standard XML markup.)

    private void LoadExemplarProperties()
    {
     string fileName = basePath + properties.xml; // configure the path to properties.xml
     // set up a file system watcher, so any changed made to properties.xml can be
     // dynamically immediately loaded into DatGen without having to close and
     // reopen the program
     if (fswProperties == null)
     {
      try
      {
       fswProperties = new FileSystemWatcher(basePath, *.xml);
       fswProperties.Changed += new FileSystemEventHandler(fswProperties_Changed);
       fswProperties.EnableRaisingEvents = true;
      }
      catch
      {
       MessageBox.Show(this, You are running an older version of windows.\nChanges to the properties.xml file will not be\nautomatically detected and loaded. Upgrade to\nWindows 2000, Windows XP or better to enable this\nfeature., Property Manager Error);
      }
     }
     
     // load the .xml file into a DOM in memory
     XmlDocument propDoc = new XmlDocument();
     propDoc.Load(fileName);
     XmlElement root = propDoc.DocumentElement;
     XmlNodeList groups = root.SelectNodes(//group);
     // create a dictionary to hold the loaded properties
     propDict = new CategoryDictionary();
     // parse the property tags in each group
     foreach (XmlElement group in groups)
     {
      if (group.HasChildNodes && group.HasAttribute(name))
      {
       string gname = group.Attributes[name].Value;
       XmlNodeList props = group.SelectNodes(property);
       foreach (XmlElement e in props)
       {
        uint dbNum = 0;
        try
        {
         if (e.HasAttribute(num) && e.HasAttribute(name))
         {
          // a single property
          ExemplarPropInfo epi = new ExemplarPropInfo();
          epi.number = int.Parse(e.Attributes[num].Value.Substring(2,<ahttps://community.simtropolis.com/assets/emoticons/4.gif>, System.Globalization.NumberStyles.HexNumber);
          epi.name = e.Attributes[name].Value;
          if (e.HasAttribute(desc))
           epi.desc = e.Attributes[desc].Value;
          if (e.HasAttribute(type))
           epi.type = e.Attributes[type].Value;
          epi.lengthType = true;
          if (e.HasAttribute(lengthtype))
          {
           string lt = e.Attributes[lengthtype].Value;
           if (lt == fixed)
            epi.lengthType = true;
           else
            epi.lengthType = false;
          }
          if (epi.lengthType)
           epi.defReps = 0;
          else
           epi.defReps = 1;
          if (e.HasAttribute(length))
          {
           epi.defReps = int.Parse(e.Attributes[length].Value);
          }
          epi.defVals = ;
          if (e.HasAttribute(value))
          {
           epi.defVals = e.Attributes[value].Value;
          }
          dbNum = (uint)epi.number;
          propDict.Add(gname, epi.number, epi);
         }
         else if (e.HasAttribute(num1) && e.HasAttribute(num2) && e.HasAttribute(name))
         {
          // a range of property values
          string name = e.Attributes[name].Value;
          string desc = ;
          if (e.HasAttribute(desc))
           desc = e.Attributes[desc].Value;
          string type = ;
          if (e.HasAttribute(type))
           type = e.Attributes[type].Value;
          int start, end;
          start = int.Parse(e.Attributes[num1].Value.Substring(2,<ahttps://community.simtropolis.com/assets/emoticons/4.gif>, System.Globalization.NumberStyles.HexNumber);
          end = int.Parse(e.Attributes[num2].Value.Substring(2,<ahttps://community.simtropolis.com/assets/emoticons/4.gif>, System.Globalization.NumberStyles.HexNumber);
          
          if (start > end)
          {
           int tmp = end;
           end = start;
           start = tmp;
          }
          for (int i=start; i<end; i++)
          {
           ExemplarPropInfo epi = new ExemplarPropInfo();
           epi.number = i;
           epi.name = name;
           epi.desc = desc;
           epi.type = type;
           epi.lengthType = true;
           if (e.HasAttribute(lengthtype))
           {
            string lt = e.Attributes[lengthtype].Value;
            if (lt == fixed)
             epi.lengthType = true;
            else
             epi.lengthType = false;
           }
           if (epi.lengthType)
            epi.defReps = 0;
           else
            epi.defReps = 1;
           if (e.HasAttribute(length))
           {
            epi.defReps = int.Parse(e.Attributes[length].Value);
           }
           epi.defVals = ;
           if (e.HasAttribute(value))
           {
            epi.defVals = e.Attributes[value].Value;
           }
           propDict.Add(gname, i, epi);
          }
         }
        }
        catch (Exception ex)
        {
         // record to debug output bad property tags
         Debug.WriteLine(DatGen: Error parsing properties.xml: Number = 0x + dbNum.ToString(X8));
         Debug.WriteLine(ex);
        }
       }
      }
     }
    }
    public struct ExemplarPropInfo
    {
      public int number;
      public string name;
      public string type;
      public string desc;
      public string example;
      public bool lengthType;
      public int defReps;
      public string defVals;
    }

    The new properties.xml file is not yet fully complete, as most properties are still missing the lengthtype, length, and value attributes. As its a fairly tedious task to add all this information to so many properties, it may be a month or two before a complete new version of properties.xml is released.

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    For those of you interested, I've recently gone through the Properties file, and tried to try clean it up a little [Do not use the file attached to this post, use the one in the URL mentioned below]. A number of items, for whatever reason, have been updated/changed/modified/added-to.

     

    EDIT: ergh........ok, there's a slight error with that Propertiles file attached to this post, so do not use it [nothing major though].

    Just incase [i do] anything else is done with it, I've decided to just put it on my webspace: 

    PropertiesFile_18.05.04.zip

    Any problems/questions with it, just let me know. End Edit

     

    Following is a list of remaining Unknown Properties [EDIT: 29 of them], in Hex order, followed by the [type of] Exemplar/Cohort file type that the property is found in &/or related to;

     

    0x09C2AEF1 - Textures/Terrain related

    0x09C2AEF2 - Textures/Terrain related

    0x0B579C20 - Background loader

    0x0B579C2a - Background loader

    0x0B579C2B - Background loader

    0x482CB451 - Bridges

    0x482CB452 - Bridges

    0x482CB453 - Bridges

    0x482CB454 - Bridges

    0x6A8A09D2 - Demolition Thresholds

    0x6A8A09D3 - Demolition Thresholds

    0x6A8A09D4 - Demolition Thresholds

    0x6A8A09D5 - Demolition Thresholds

    0x6C0700C4 - Automata Tuning Exemplar

    0xA8EAA060 - Ordinance Simulator

    0xA8EAA061 - Ordinance Simulator

    0xA8EAA062 - Ordinance Simulator

    0xA8EAA063 - Ordinance Simulator

    0xA8EAA064 - Ordinance Simulator

    0xA8EAA065 - Ordinance Simulator
    0xA8EAA066 - Ordinance Simulator
    0xA8EAA067 - Ordinance Simulator

    0xC973C9A9 - Air/Water-craft related. Also found in Cohort files.
    0xCA480831 - Parks Manager
    0xCA9B4CA8 - Health Lots (Related. i.e Large medical centre, and small clinic)

    0xEA5AC496 - God Mode Terrain Tools [4 of].

    0xEC06E7CF - Automata Tuning Exemplar
    0xEC0700C0 - Automata Tuning Exemplar

     

    EDIT; 0xCBE243F7 - LE CustomFlag. This property is created by the LE, & is contained along with the various Lotconfigproperties. 

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Holy mother man, that's a lotta unknowns removed in one go 9.gif

    Got three more to add to that list that I cant find in properties on review I'm afraid

    CBE243F7 - Lots
    ABE8Bf57 - Vehicle Ice Cream
    ED1832e7 - Prop Gnome

    Also was wondering about two more things ^^;;, if possible is there any more info on the various things the 0x00000000 property does, and do you have the file that the 0x2aa405d3 property is in, or at least its iid listed anywhere ^^;;;. Am hoping to have a look at it and compare it between the two editions of SC4. Have both RH and Vanilla installed on different harddrives for comparison purposes :)

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     
    opps, I totally forgot about the Lots 43.gif [i'll have to add that one, 0xCBE243F7, to the list].
    ABE8Bf57 - Vehicle Ice Cream ? hhmm, That is an IID, not a property, & there's nothing really Unknown with anything associated/related with this.
     
    I can't seem to find this one, 0xED1832E7 - Prop Gnome, anywhere? I had/have this one [0xED1832E7] in my notes, but I just thought maybe it was a typo, since I couldn't find it anywhere, in/with anything. You sure you don't mean 0xEC1832E7 [which is somewhat close to that one, only difference is one value, & also known now]?
     
    As for 0x00000000: pretty much what its descriptions says. Some Exemplars it's in, it's just a simple String. Whereas other Exemplars its in, it does more than that [i.e. holds the capacity values for the Ferries for example]. It basically behaves a bit like the OccupantGroup property in some ways, with it being linked/tied in with other data [such as other Properties etc].
     
    As for 0x2aa405d3: I just decided to lable that one something appropriate [its IID is: 0x4AA4047A]. I actually have copies of the file [all of them actually35.gif] both before, and after, any patches, & both pre- & post-RH. When viewing it with the Reader though [with using different versions even], the file seems to stay pretty much the same [least on my end. There is a difference with pre/post-RH/Patch, but it doesn't seem like much of a difference].

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    an IID huh... woopsies. Must have been tired when working on those two. I'll go back and look at em in a bit and see where I got em from

    I found both of them in Datgen though. I remember ABE8Bf57 from when looking at the icecream truck exemplar, but its quite possible I misread an iid when looking for the property id.

    the other one, I just found while browsing through all the gnome exemplars. Will look for it again :)

    and thanks for the clarification on the 00000000 :)

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Thought I'd include this since its the exemplar thread.

    This is a copy of the LotConfigObject property spec as it currently stands
    We still need the definition of 0x00000003 lines, and the meaning of the 11th and 12th repetitions.

    0x0: Building line. Defines position, and IID reference of building exemplar.
    0x1: Prop line. Defines position, and IID reference of a prop exemplar.
    0x2: Texture line. Defines position and IID reference of a base or overlay texture.
    0x3: Unknown
    0x4: Flora line. Defines position, and IID reference of a flora/growable tree exemplar.
    0x5: Water requirement tile.
    0x6: Land requirement tile.
    0x7: Transit Line. Defines transit connections and automata paths

    ---Global values 1-10
    Value # | Value | Description
    -----------------------------------------------------------
    1 | 0x0-0x7 | Line type descriptor. See above.
    2 | 0x0-0x20 | Level of detail modifier (0x0 all, 0x10 med only, 0x20 high only)
    3 | 0x0-0x3 | Orientation. 0=South, 1=West, 2=North, 3=East
    4 | * | X Location Position. 0x00000000-0xFFFFFFFF
    5 | * | Z Location Position. 0x00000000-0xFFFFFFFF
    6 | * | Y Location Position. 0x00000000-0xFFFFFFFF
    7 | ** | X1 Size Position. bounding box
    8 | ** | Y1 Size Position. bounding box
    9 | ** | X2 Size Position. bounding box
    10 | ** | Y2 Size Position. bounding box
    11 | 0x00000000 | Unknown.
    12 | ?? | Unknown.

    * These values define position. VERY large numbers.
    ** These values define bounding box size. VERY large numbers.
    The scale of each tile is 0x00100000
    For each location tile, the first three digits are the tile to place on, and the last 5
    are the location on the tile
    -----------------------------------------------------------

    ---Individual Values 11-16


    ---0x0 Lines---
    13 | IID/ID | For Ploppable buildings, this is the IID of an exemplar/s3d pair
    | For Special Buildings (tollbooth etc) IID of exemplar for data
    | For Growables, the ID of the lots compatible building family

    ---0x1 Lines---
    13+ | IID(s) | Each rep Defines sets of one exemplar and one s3d for random props

    ---0x2 Lines---
    13 | IID | Defines an IID of a Texture for a Base or Overlay

    ---0x3 Lines---
    UNKNOWN

    ---0x4 Lines---
    13 | IID | Defines a set of one exemplar and s3d for lot Flora (trees etc)

    ---0x5 Lines---
    NO CUSTOM REPS

    ---0x6 Lines---
    NO CUSTOM REPS

    ---0x7 Lines---
    13 | Type | Network Connection type (see table1)
    14 | RUL | Neighbour Tile Rules (optional and can be left as 00's)
    15 | RUL | RUL Flags for this tiles connection and which path to use
    16 | IID | Custom Sc4path for this tile (optional)

    Table1:
    0x00000000=Road
    0x00000001=Rail
    0x00000002=Highway
    0x00000003=Street
    0x00000004=Pipe
    0x00000005=PowerPoles
    0x00000006=Avenue
    0x00000007=Subway
    0x00000008=Elevated Rail
    0x00000009=Monorail
    0x0000000A=One-way roads
    0x0000000B=ANT
    0x0000000C=Ground Highway

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Blah. Gave up on the Relational spec for the moment, so I thought I'd post what I've been doing. First off, the complete LotConfig Spec

    --------------

    This Specification Concerns the LotConfigPropertyLotObjectData Lines.
    Spec is Complete As Of September 5th, 2004.
    -----------------------------------------------------------------------------------------------------------------------
    0x0: Building line. Defines position, and IID reference of building exemplar.
    0x1: Prop line. Defines position, and IID reference of a prop exemplar.
    0x2: Texture line. Defines position and IID reference of a base or overlay texture.
    0x3: Fence Line. Not implemented currently.
    0x4: Flora line. Defines position, and IID reference of a flora/growable tree exemplar.
    0x5: Water Constraint tile
    0x6: Land Constraint tile.
    0x7: Network Node Line. Defines transit connections and automata paths

    ---Global values 1-12
    Value # | Value | Description
    -----------------------------------------------------------
    1 | 0x0-0x7 | Line type descriptor. See above.
    2 | 0x0-0x20 | Level of detail modifier (0x0 all, 0x10 med only, 0x20 high only)
    3 | 0x0-0x3 | Orientation. 0=South, 1=West, 2=North, 3=East
    4 | * | X Location Position. 0x00000000-0xFFFFFFFF
    5 | * | Z Location Position. 0x00000000-0xFFFFFFFF
    6 | * | Y Location Position. 0x00000000-0xFFFFFFFF
    7 | ** | X1 Size Position. bounding box
    8 | ** | Y1 Size Position. bounding box
    9 | ** | X2 Size Position. bounding box
    10 | ** | Y2 Size Position. bounding box
    11 | 0x00000000 | Usage (optional/mandatory) Flag. Unused.
    12 | 0xABBBBCCC | ObjectID (See Table2)

    * These values define position. VERY large numbers.
    ** These values define bounding box size. VERY large numbers.
    The scale of each tile is 0x00100000
    For each location tile, the first three digits are the tile to place on, and the last 5
    are the location on the tile
    -----------------------------------------------------------

    ---Individual Values 13-16


    ---0x0 Lines---
    13 | IID/ID | For Ploppable buildings, this is the IID of an exemplar/s3d pair
    | For Special Buildings (tollbooth etc) IID of exemplar for data
    | For Growables, the ID of the lots compatible building family
    /// Props may be used to control function. EX. 0x2c520000 through 0x2c54 control Ferry function.
    /// Applicable GIDs and Formats for Instance for props may be found in the Groups and Instances Format File.

    ---0x1 Lines---
    13+ | IID(s) | Each rep Defines sets of one exemplar and one s3d for random props

    ---0x2 Lines---
    13 | IID | Defines an IID of a Texture for a Base or Overlay

    ---0x3 Lines---
    NO CUSTOM REPS (Assuming the LineType worked, this would be an exemplar/s3d pair most probably)

    ---0x4 Lines---
    13 | IID | Defines a set of one exemplar and s3d for lot Flora (trees etc)

    ---0x5 Lines---
    NO CUSTOM REPS

    ---0x6 Lines---
    NO CUSTOM REPS

    ---0x7 Lines---
    13 | Type | Network Connection type (see table1)
    14 | RUL | Neighbour Tile Rules (optional and can be left as 00's)
    15 | RUL | RUL Flags for this tiles connection and which path to use
    16 | IID | Custom Sc4path for this tile (optional)

    Table1:
    0x00000000=Road
    0x00000001=Rail
    0x00000002=Highway
    0x00000003=Street
    0x00000004=Pipe
    0x00000005=PowerPoles
    0x00000006=Avenue
    0x00000007=Subway
    0x00000008=Elevated Rail
    0x00000009=Monorail
    0x0000000A=One-way roads
    0x0000000B=ANT (Dirt Roads)
    0x0000000C=Ground Highway
    Table2 - ObjectID:
    0xA0000000= 0,2,4,6,8,a,c,e - Random one of these chars incase the other ID's are the same
    0x0BBBB000= Object Family
    0x00000CCC= Unique Object ID for this family. Incremental for similar

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Secondly, a small update to exemplar properties

    Updated:

    00000000 - MultiProp - 4 purposes: Buildings = String Resource Key for Hover, Motorcycle Bank Robbery =
    Helicopter and Spaceship = , Ferries = Ferry Capacity
    c973c9a9 - Air_URBAN (Float 1)

    Finished:

    09C2AEF1 - Texture Size - Texture Size in Pixels for each Zoom
    09C2AEF2 - Texture Mask Size - Mask Size in Pixels for each Zoom
    2aa405d3 - De-Loc String - Text De-localization string for Languages. Main Exemplar

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Thirdly, this is the about half finished Relational spec I've been working on the last few days. It shows the direct connections between each filetype and other filetypes.

    There are currently 18 filetypes which are not documented or not fully documented for one reason or another, so if anyone can document a filetypes relations, that would be great

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Finally, and this one IS completed.

    The group and instance ID format file. It documents the groupid's, their purpose, and a character by character breakdown of the instance ids of each subtype for each groupid for each format

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Hi,

    I need a hint: How to interpret response curves, especially those 'Congestion to CPS' response curves in the Automata Tuning Exemplar?

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Reposting the list from DarkMatter's first post, which was heavily truncated in the crash May 2008:


    Originally posted by: DarkMatter
     
    Known Exemplar Properties List
    ======================
     
    0x00000021: File Resource Key

    0x27812020: Resource Key Type 0

    0x27812821: Resource Key Type 1

    0x27812820: Network Model Resource Key

    0x09C80416: Model Resource Key

    0x09C80417: Headlight Model Resource Key

    0x8A2602B8: Item Icon Key

    0x8A416A99: User Visible Name Key

    0xCA416AB5: Description Key Type 1

    0xCA416B2A: Description Key Type 2

    0x8A2602BB: Parent Button ID Key

    0x28EBBC30: Ordinance Resource Key

    0xE974EAA4: Tunnel Resource Key Type

    0xCA271781: Port Data Key Type 1

    0x8A270FC3: Port Data Key Type 0

    0xC9E69AF6: Siren Model Resource Key

    0x6A416B21: Name Key

    0x27812825: Flora Resource Key

    0x4A08C700: Disaster Resource Key

    0x8A020200: Terraforming Resource Type 1

    0x4A271248: Animation Resource Type 1A

    0x4A27124F: Animation Resource Type 1B

    0x00000010: Exemplar Type

    0x00000020: Exemplar Name

    0x0A751675: Simulator Date Interval

    0x27812810: Occupant Size

    0x27812832: Wealth

    0x27812837: Growth Stage

    0x2781283F: Monopoly Piece

    0x27812840: Demand Satisfied

    0x27812841: Demand Created

    0x29244DB5: Flammability

    0x296E88E9: Wealth Filter

    0x2A499F85: Query Exemplar GUID

    0x49BEDA31: MaxFireStage

    0x4A764564: Simulator Date Duration

    0x4A89FCF3: Previewable

    0x4A9F188B: Light

    0x6A5E0727: Active Lot State

    0x6A871B82: PluginPackID

    0x6A95E503: Query as main building

    0x8A2602B9: Item Order

    0x8A5E5DB8: Is Ground Model

    0xaa1dd396: OccupantGroups

    0xaa60e745: Goofy Stat Response Curve

    0xc98204b8: Visual effect name 0

    0xc98204b9: Visual effect name 1

    0xca5b9305: Mayor Rating Effect

    0xca5b9306: Crime Effect

    0xca7515cc: Simulator Date Start

    0xe9822d62: kSC4BuildingNoModelProperty

    0xea2e078b: City Exclusion Group

    0xea3209f8: Conditional Building

    0x4aa60ebc: Capacity: User Visible Text

    0x47bb3f30: Initial Cap

    0x47bb3f41: Type affected

    0x27812834: BuildingWealthLevelOccupance

    0x87CD6360: Stage values count

    0x87CD6361: Stage 1 values (#Population#, #Percent#)

    0x87CD6362: Stage 2 values (#Population#, #Percent#)

    0x87CD6363: Stage 3 values (#Population#, #Percent#)

    0x87CD6364: Stage 4 values (#Population#, #Percent#)

    0x87CD6365: Stage 5 values (#Population#, #Percent#)

    0x87CD6366: Stage 6 values (#Population#, #Percent#)

    0x87CD6367: Stage 7 values (#Population#, #Percent#)

    0x87CD6368: Stage 8 values (#Po

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    Reposting the post by LowGenius above, which was slightly truncated in the crash May 2008:


    Originally posted by: LowGenius Hiya, kids, sorry I dropped out for a bit. I have quite a few other irons in the fire....

    I'm not sure we'd even need the muscle of SQL Server to do this, honestly - it could likely be done in Access easily enough, and unless you're talking in excess of a million unique keys, the Jet engine can handle it just as easily as SQL, but without the additional learning curve (Access I know: SQL I'm not nearly as familiar with).

    Resolved: This would be pseudo-opensource, i.e. write access limited to a group of people known and/or proven to have a clue about what the heck they're doing. Fair enough - we don't need a database full of guesses.

    Resolved further: There should be some discussion mechanism included which will allow information to be compared/tested/argued about before it's inserted into the database

    Resolved further: Updatable existing records to allow for discovery of new information about old topics

    Resolved further: The data structure should be fairly simple, at least for someone who knows a bit about data structuring. I do.

    sidebar: Since for everyone BUT me the interface would be web-based, the *nix v. windows discussion is herefore deemed irrelevant, if interesting 2.gif

    So let's talk data structure.

    It seems that the identifiers are are in an 8-byte hex format (i.e. 0xffffffff) This is fine, except that there seems to be no easy way to tell the difference, based solely on the hex ID between an identifier for an OBJECT (exemplar/cohort) and an identifier for a PROPERTY.

    Looking further at iLive, I'm finding my head spinning quote quickly. What I really need is for someone with an understanding of the inherent data structure of this thing to help me understand it - what would the tables in a normalized database containing all of this information look like, is what we need to determine. Once I've got my head around that, I *think* I can figure out how to ask the right questions that will allow you guys who actually have the data and have already been working with it to get it to me in a fashion that makes it easy to parse in the work that's already been done, tie it together, and build a web interface which could then be used to display, maintain and update the information.

    I'm pretty good with relating data, but this is such a complex set of information that I'm just not getting my head around it by randomly examining various entries in the simcity_1.dat file as displayed in iLive. I can, for instance, copy all properties to clipboard...but holy crap would it take a long time to do that by hand for every single cohort/exemplar! And even if I was inclined to take the 2 or three years to do that, I'd *still* have to figure out how to sort it and categorize it and format it for importing as data. There's just too much here that I don't know or understand, and as enthusiastic as I am about trying to do this, I don't want to waste my time or anyone else's by having to re-do all the work that's already been done.

    Even if I could get a huge set of comma-delimited text that was at least grouped in some meaningful fasion - say, one that has the exemplars for all the....BRIDGES or all the Terrain or all the police stations...just so that I can have confidence that the data structure for each record would be the same for that particular group of data, which I could then use to build a bunch of files that would help me understand what my columns might look like and what information is unique or repeated and so forth - it would be a big step forward in my ability to get my head around this thing.

    Surely someone has an under

    Share this post


    Link to post
    Share on other sites
    Posted:
    Last Online:  
     

    this is great! just what I'm looking for!

    not exactly but pretty close.

    you guys should make a manual like this, but with better description!

    giving example is best! on what they're used and so on!

    keep up the good work!

    Share this post


    Link to post
    Share on other sites

    Sign In or register to comment...

    To comment in reply, you must be a community member

    Sign In  

    Already have an account? Sign in here.

    Sign In Now

    Create an Account  

    Sign up to join our friendly community. It's easy!  

    Register a New Account

    Sign In to follow this  

    • Recently Browsing   0 members

      No registered users viewing this page.

    ×

    Thank You for the Continued Support!

    Simtropolis depends on donations to fund site maintenance costs.
    Without your support, we just would not be in our 24th year online!  You really help make this a great community. *:thumb:

    But we still need your support to stay online. If you're able to, please consider a donation to help us stay up and running. This helps sustain a platform where we can share our community creations for years to come.

    Make a Donation, Get a Gift!

    Expand your city with the best from the Simtropolis Exchange.
    Make a Donation and get one or all three discs today!

    STEX Collections

    By way of a "Thank You" gift, we'd like to send you our STEX Collector's DVD. It's some of the best buildings, lots, maps and mods collected for you over the years. Check out the STEX Collections for more info.

    Each donation helps keep Simtropolis online, open and free!

    Thank you for reading and enjoy the site!

    More About STEX Collections