Vanishing Actor/PPOs
Moderators: Community Managers, Developers
Re: Vanishing Actor/PPOs
I played around with this extensively last night, trying different values for various pieces of furniture and am at the same conclusion (probably) as Xinux: the parent id for a PPO needs to be a very specific value, and is only unique for that spawn_id. How this value is derived, I have no idea, but my guess is that this ties into some field in the client's assets files. With the bindstone, any other number than the Parent Id provided by Xin will not work (object id doesn't matter, as long as it is unique). This tells me the number is important to the client for rendering the asset (with an positive incorrect parent id, the asset is still loaded and assigned a channel, just not rendered. With a negative parent id, the asset is not loaded or assigned a channel).
Xin, had you modified Xen's parser to show DT 54 to come up with the hammock value? If we have all available PPO models available in packets, we are gold and just need to reparse and re-source. Otherwise, perhaps we can get this from the asset files.
If you need me to modify Xen's parser, let me know and I'll work on this, this evening.
Xin, had you modified Xen's parser to show DT 54 to come up with the hammock value? If we have all available PPO models available in packets, we are gold and just need to reparse and re-source. Otherwise, perhaps we can get this from the asset files.
If you need me to modify Xen's parser, let me know and I'll work on this, this evening.
Re: Vanishing Actor/PPOs
Xen's parser already show's the parent_id as this.
public const byte CO_PARENT_UNIQUE_ID = 54;
I noticed something with spawning items in the house i'm messing with the parent_id seem to be the same in this house for the items per room ie... upstairs room parent id for all items -983479532 while the downstairs room is 1295500385
public const byte CO_PARENT_UNIQUE_ID = 54;
I noticed something with spawning items in the house i'm messing with the parent_id seem to be the same in this house for the items per room ie... upstairs room parent id for all items -983479532 while the downstairs room is 1295500385
Re: Vanishing Actor/PPOs
Just cause I'm VERY curious, but at work and can't look myself., is there a separate spawn_id for EACH and EVERY PPO? Or is it 1 spawn_id for each unique PPO (all cabinets would use the same spawn_id)?
If it's a separate spawn_id for each PPO, and now you are saying each room is assigned a different parent_id, I wonder if this number is still coming from the Client (it's gotta be...).
If you spawn a different copy of the same house object, and put items in it, would they work with the same parent_id, or would they be assigned a different parent_id. I'm really hoping for the former :p. If they are assigned some parent_id, we'll need to figure out how the client is deciding what parent_id it expects.
If it's a separate spawn_id for each PPO, and now you are saying each room is assigned a different parent_id, I wonder if this number is still coming from the Client (it's gotta be...).
If you spawn a different copy of the same house object, and put items in it, would they work with the same parent_id, or would they be assigned a different parent_id. I'm really hoping for the former :p. If they are assigned some parent_id, we'll need to figure out how the client is deciding what parent_id it expects.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Vanishing Actor/PPOs
[quote="Lokked"]is there a separate spawn_id for EACH and EVERY PPO? Or is it 1 spawn_id for each unique PPO (all cabinets would use the same spawn_id)[/quote]
Currently, I wrote the "PlayerPlacedObject" parsing to consolidate similar entities into a single spawn_id. The loader looks like this:
So if the name, display, draw scale, physics AND building_type are already in the raw_spawn+raw_spawn_objects tables, return that spawn_id and just save the placement (location) using that chunk/spawn_id.
This is incorrect!
Now knowing that parent_id is critical, I need to add that to the lookup in GetPPOPawnID (visual parser) and save what SOE sends. I almost wonder if parent_id is like a model ID? we will know when the data gets re-parsed with multiples of the same object "name", and look at the parent_id. If they are all the same, it's likely a model link to client assets as you say.
If they unique for an entire housing area, then that means each and every House + it's Assets (inside) we'll need to know their ID's for - which will be impossible. This is why I think it's a derived ID. We will have no way of knowing what Lokked's house's Parent ID is, if it's not in our raw data. They have to be dynamic, we just have to figure out what the valid values are.
Btw, as I just said to Lokked in IRC, posting here for others;
[quote][12:10] <~john> Lokked: "each room assigned an ID, which is set on the PPO when it's placed, and then stored in the DB" -- plan ahead; player placed objects in their houses, needs to be stored in a character_* table. probably `character_house_items` or something similar, since players can have more than 1 house. so a `character_houses` table FK'd to _items, or _assets.
[12:10] <~john> ie,. we will not store PPOs that are player-owned housing items in `spawn_objects`
[12:10] <~john> they are only there now for data analysis.
[12:11] <~john> i will also likely rename our spawn tables at some point -- the schema is in no way accurate or complete, but works for now the end.
[12:15] <~john> <@Lokked> Ok, continue: Do you know if the same house spawned in another location will use the same parent_id for it's objects?
[12:15] <~john> beware of my current parsed data... I "consolidated" PPOs based on spawn_name and mouseover_display, draw_scale, physics and building_type.
[12:15] <~john> I need to remove that consolidation for PPOs if we're going to get an accurate read of what these houses/assets are.[/quote]
Currently, I wrote the "PlayerPlacedObject" parsing to consolidate similar entities into a single spawn_id. The loader looks like this:
Code: Select all
query = String.Format("SELECT * " + "FROM `vgo_rawdata`.`raw_spawn` rs, `vgo_rawdata`.`raw_spawn_objects` rso " + "WHERE rs.id = rso.spawn_id AND " + "spawn_name = '" + database.Escape(ppobject.prefab_name) + "' AND " + // ppo "prefabNameTag" stored in our DB as spawn_name "mouseover_display = '" + database.Escape(ppobject.mouseover_display) + "' AND " + "CAST(draw_scale AS DECIMAL) = CAST(" + ppobject.draw_scale + " AS DECIMAL) AND " + "physics = " + ppobject.physics + " AND " + "building_type = " + ppobject.building_type + ";"); Now knowing that parent_id is critical, I need to add that to the lookup in GetPPOPawnID (visual parser) and save what SOE sends. I almost wonder if parent_id is like a model ID? we will know when the data gets re-parsed with multiples of the same object "name", and look at the parent_id. If they are all the same, it's likely a model link to client assets as you say.
If they unique for an entire housing area, then that means each and every House + it's Assets (inside) we'll need to know their ID's for - which will be impossible. This is why I think it's a derived ID. We will have no way of knowing what Lokked's house's Parent ID is, if it's not in our raw data. They have to be dynamic, we just have to figure out what the valid values are.
Btw, as I just said to Lokked in IRC, posting here for others;
[quote][12:10] <~john> Lokked: "each room assigned an ID, which is set on the PPO when it's placed, and then stored in the DB" -- plan ahead; player placed objects in their houses, needs to be stored in a character_* table. probably `character_house_items` or something similar, since players can have more than 1 house. so a `character_houses` table FK'd to _items, or _assets.
[12:10] <~john> ie,. we will not store PPOs that are player-owned housing items in `spawn_objects`
[12:10] <~john> they are only there now for data analysis.
[12:11] <~john> i will also likely rename our spawn tables at some point -- the schema is in no way accurate or complete, but works for now the end.
[12:15] <~john> <@Lokked> Ok, continue: Do you know if the same house spawned in another location will use the same parent_id for it's objects?
[12:15] <~john> beware of my current parsed data... I "consolidated" PPOs based on spawn_name and mouseover_display, draw_scale, physics and building_type.
[12:15] <~john> I need to remove that consolidation for PPOs if we're going to get an accurate read of what these houses/assets are.[/quote]
Re: Vanishing Actor/PPOs
I'm going to look into how this parent_id is created, or how the client understands that the listed parent_id relates to the building's PrefabPackName:PrefabNam:Location.
Re: Vanishing Actor/PPOs
I'm not sure if this information is worthwhile, but I had two houses on one of my accounts, and both houses at least had chests in them (I'm pretty sure the 2nd house had only chests, while the first house had chests and a couple misc items, like a Christmas tree). I can identify the houses by loc if you want.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Vanishing Actor/PPOs
Well, with the last parsing of Raw Data PPOs, I think I have solved the disappearing items in houses problem -- by making them not appear at all And, Something is really whacked in Khal...
[attachment=0]ScreenShot_00185.JPG[/attachment]
Edit: Just learned that these blown out items are Movers, not PPOs. That's why the next post, the PPOs look normal because I didn't pop Movers
As usual, my pesky job keeps getting in the way so I am out of time tonight to figure out what this is all about. But previous PPO data had no parentUniqueIds at all. This batch has the Id if it was in the collected data, so I expected to see houses full of beautiful furnishings... not a scene from Inception.
Edit: Just learned that these blown out items are Movers, not PPOs. That's why the next post, the PPOs look normal because I didn't pop Movers
As usual, my pesky job keeps getting in the way so I am out of time tonight to figure out what this is all about. But previous PPO data had no parentUniqueIds at all. This batch has the Id if it was in the collected data, so I expected to see houses full of beautiful furnishings... not a scene from Inception.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: Vanishing Actor/PPOs
Well I have no idea what I did to that last import above, but I re-loaded PPOs in Khal, and as I had hoped, with a collected parentUniqueId, Houses look beautiful again
[attachment=4]ScreenShot_00186.JPG[/attachment]
Edit: Hey Volt, something interesting. While the house assets seem to stay visible now, the spawned Door that I can see from outside, disappears when I go inside. Maybe doors have a parent ID too somewhere.
Edit2: I noticed in the transition between a houses main floor and just before it's staircase, the graphics go completely apeshit. This may be the change between parentIds (Xinux?)
Stand here, and inch forward a foot, then:
At least I finally get to see what that damn Ra8001_Food_lvl1001_bass001 PPO is -- complete with mouseover!
[attachment=1]ScreenShot_00190.JPG[/attachment]
[attachment=0]pain_in_the_bass.jpg[/attachment]
Edit: Hey Volt, something interesting. While the house assets seem to stay visible now, the spawned Door that I can see from outside, disappears when I go inside. Maybe doors have a parent ID too somewhere.
Edit2: I noticed in the transition between a houses main floor and just before it's staircase, the graphics go completely apeshit. This may be the change between parentIds (Xinux?)
Stand here, and inch forward a foot, then:
At least I finally get to see what that damn Ra8001_Food_lvl1001_bass001 PPO is -- complete with mouseover!