1. I have corrected the e-mail settings so that outgoing e-mails from these forums should be sent now. If you tried to Register or Reset your Password, please try again!
    Dismiss Notice

Pulling accurate guild roster data impossible?

Discussion in 'Census: General Discussion' started by Dethdlr, Jan 12, 2012.

  1. Dethdlr

    Dethdlr Guest

    I'd like to show the members of a guild.  Unfortunately, I don't see how to do so with any accuracy.At issue is the fact that guild data comes from two sources: character and guild.The guild data seems to be the accurate representation of which members are actually in the guild.The character data shows the guild information for that character as of the last time the character was exported and is the only place where their rank is shown.  Unfortunately, that may not still be accurate at time goes on.Take for example this guild:census.daybreakgames.com/xml/get/eq2/gui.../?id=1106691402As of this writing, the guild data says there are 12 members.  But from the guild data, all you get is their name and dbid.But if you look them up in the character data, you can see their rank, status, when they joined, etc.census.daybreakgames.com/xml/get/eq2/cha...ame.first,guildThe character data for this guild shows 13 members even though the guild data says there are only 12.  There is a character named Irawyn that hasn't been updated since Dec 24th.  The guild data was updated yesterday.  So I would assume that the last time this person logged in, they were a part of this guild so their data got exported as such.  After that time, the player either got kicked from the guild or deleted (don't know if deleted characters get wiped from the REST API or not).If this player decides to never play this character again, they will never get removed from the list of characters in this guild if you pull the data up from the character data since the data only gets updated when a character is logged in.  Another example:  Lets say there is a guild with two leaders at rank 0.  One stops playing.  The other demotes the character that stopped playing down to rank 7 which this guild uses for Inactive.  Until that character logs in again, they will remain listed as a leader in the character data because that only gets updated when the character logs in.  Even if you were to locally cache the data from both sources, both the guild and character data still say the character is a member of the guild.  The only place the rank is stored is in the character data which won't be updated until the character logs in again.  Because of the way the data is structured and updated, I don't see a way to get accurate guild roster data for characters that haven't been played for a while.  I suspect that over time this will become more and more problematic, especially for guilds that have a policy of kicking players that haven't logged in for X amount of days.Am I missing something? 

     
  2. Lantis

    Lantis Guest

    There is indeed a discrepancy between what is in the guild collection, and what is in the character collection.  Best way to observe this is when you look at a roster generated by RosterMaster StandAlone - any character displayed with the rank of "No Data" is a character that shows on the guild collection, but not on the character collection when requesting for characters having the appropriate guildid.

    What I'm doing basically to at least isolate these is first build my roster out of the content of the guild collection, using default values for all fields, and the special rank value of 99.  Then, I do a character collection poll, overwriting my current array with what I can obtain from the character collection.

    Afterward, anything still at the special rank of 99 is a character that was in the guild collection, but not on the character collection (or at least didn't report having that same guildid).  RMSA users can chose wether to display or hide those ghosts.

    This kind of issue isn't new or exclusive to SOE.  Turbine has the same issue with their REST API for Lord Of The Rings Online (I ported RosterMaster to it a few years ago): if a character's rank or guild affiliation gets changed, no update gets published outside of the game until the player actually logs back in on that character.

     
  3. Dethdlr

    Dethdlr Guest

    That's actually the part that bugs me.  In game, we change the rank of an inactive players characters to inactive.  With the data in the REST API, that will never show up.

    You can get around the other issues by caching the data like you do in RMSA, but since the rank isn't shown in the guild collection, there is no way to get accurate data for an inactive player.

    Is it not possible to add rank to the guild collection?  I think I asked about having id added at some point in the past and was told it couldn't be done.  Maybe this is another thing that can't be done.

    It's just a shame that the method in place today guarentees inaccurate guild roster data for inactive characters.  Pretty sure the data that used to be exported on the old EQ2Players site handled this.

     
  4. DanKinney

    DanKinney Guest

    Changes to a guild should update the guild collection immediately.  That one should be definitive.  The guild information that is associated with a character may be out of date until that character is updated.

    I will talk to the game team about adding updates to the character on membership actions.  This would solve this problem.

    -dan

     
  5. Dethdlr

    Dethdlr Guest

    If that includes rank changes as well as an inactive character getting kicked from a guild, that would be FANTASTIC!  :)

     
  6. Quicktiger

    Quicktiger Guest

    I think a better solution would be to move all the guild association data from the characters to the guild itself, and use a character ID in the guild collection.  Something like:

      members:

        member:

          name: Quicktiger

          id: 123123123

          rank: 5

          date_joined: 12312312312

          status: 123123123

    this would make it far easier and more logical to connect the two.

    Providing the link to the "guild id" in the character would let us find their guild, but then we could check to ensure they really are members before beliveing that.

     
  7. DanKinney

    DanKinney Guest

    We did update the guild data so that you can c:resolve the characters directly into that data.

    Example:

    Let's pull a guild, let's get the one most recently updated.  If you have a guild, you can reference it by your guild's id.

    census.daybreakgames.com/xml/get/eq2/guild/?c:sort=last_update:-1

    Now, let's resolve its members by adding a c:resolve...

    census.daybreakgames.com/xml/get/eq2/guild/?c:sort=last_update:-1&c:resolve=members

    You will see that some members are not fully resolved - their character is not yet updated into this system.

    This resolve only brings in the minimum amount of data (contrary to how c:resolve usually works).  To add more data, try something like this...

    census.daybreakgames.com/xml/get/eq2/guild/?c:sort=last_update:-1&c:resolve=members(displayname,type.class,type.race,type.level,houses)

    The items within the parentheses are the equivilent to a c:show on the character record.

    Note: there is one bug in the guild resolve.  If you hide the guild.worldid, it will fail to resolve members.  That will be fixed on Tuesday.  For now, I wouldn't worry about trying to minimize the amount of guild info - there isn't very much there already.

     
  8. Dethdlr

    Dethdlr Guest

    I'm using the new resolve now and it's working pretty well.  This should take care of most of the issues I was running into.

    The only question I've got left on it is whether or not the character data gets updated when their rank changes (or if this is planned).  That goes back to the issue of a leader quiting the game, getting demoted to inactive by another leader, and remaining listed as a leader forever since their character never logs in again to update the character data.

    Thanks again!

    Dethdlr

     
  9. DanKinney

    DanKinney Guest

    We have to get that done, yes. I hope to ripple the update to the character collection, but the guild info *must* be updated on membership and/or rank changes. -dan
     
  10. Dethdlr

    Dethdlr Guest

    That would be quite nice.

    Since the rank data isn't available in the guild collection, I'm not really sure what this means.  Does this mean that the c:resolve=members(guild.rank) will have the correct rank somehow even if the guild.rank value is wrong in the character collection?  Or does that mean that you intend on adding rank data to the members in the guild collection?

    Thanks a bunch,

    Dethdlr

    P.S. My guild is experiencing this right now.  We had a guildmate that we haven't seen in a month or so log in and implied that they had bought the account.  Unfortunately, they logged in, said something about buying the account, and logged out while the others online were AFK so they couldn't ask if they guy was joking or if really was somebody else.  They didn't see it in guild chat until they got back to their computer.  As a precaution, we've demoted all his characters until we find out what's going on.  But since the characters aren't logging in, they all still show as being senior members and will continue to do so until we either kick them from the guild, the characters log in, or something gets modified with how the data is shown in the REST API.

     
  11. DanKinney

    DanKinney Guest

    It is my hope that when the guild information changes, the game would update the guild data.

    I'm at a disadvantage here as I don't know the process by which this happens.  Does it happen in the game client or externally (web site)?

    -dan

     
  12. Dethdlr

    Dethdlr Guest

    It all happens within the game.

    I think we may be talking about two different things though now that I look at it again.  

    The guild collection contains a section called ranks that gives the name of each rank number.  When this changes, I'm sure the guild collection would be updated.  That's not what I'm talking about though.

    The members section in the guild collection only contains the dbid and name of the characters, but not any information about what rank each character is at.  This is the part I'm talking about.  Since this section doesn't contain the rank that the character is at, the only place you can get that data from is the character collection.  

    When you do the c:resolve=members(guild.rank), you can see what rank each character is at if that character has an entry in the character collection.  But it's still pulling the rank info from the character collection which won't be updated unless you get the thing working so that membership and rank change info gets pushed to the character collection even without the character logging in.

    Hope that helps clear it up a bit.

    Dethdlr

     
  13. DanKinney

    DanKinney Guest

    I understand now.  I'll talk with Zoltaroth on Tuesday (Monday is a holiday for us).

    -dan

     

Share This Page