Avatar portability
From OpenSimulator
(Difference between revisions)
(→2) |
m (Robot: Cosmetic changes) |
||
(23 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | __NOTOC__ | ||
+ | {{Quicklinks}} | ||
+ | |||
+ | {{proposal}} | ||
+ | |||
+ | [[User:Lulurun]] | ||
+ | |||
== Basic Idea == | == Basic Idea == | ||
Line 4: | Line 11: | ||
There are 2 problem to be considered: | There are 2 problem to be considered: | ||
# How to enable foreign user login - Authentication | # How to enable foreign user login - Authentication | ||
− | # How to get a foreign user's belongings(including appearance, inventory) | + | # (If a foreign user can login)How to get a foreign user's belongings(including appearance, inventory) |
To achieve the 1st, client side changes are needed. SO, so far, I have | To achieve the 1st, client side changes are needed. SO, so far, I have | ||
Line 11: | Line 18: | ||
=== Authentication === | === Authentication === | ||
− | [[ | + | This is only partially implemented, and most of this topic need special client supports. |
+ | a simple demo will be avaliable somewhere soon. | ||
+ | For detailed idea: | ||
+ | |||
+ | [[OpenID for data portability in virtual world]] | ||
=== Avatar Portability === | === Avatar Portability === | ||
Line 18: | Line 29: | ||
==== 1 UserInventoryUrl UserAssetUrl ==== | ==== 1 UserInventoryUrl UserAssetUrl ==== | ||
− | [[ | + | [[File:avatar_portability_1.PNG]] |
− | *U1 is an user of GridService G1, so probably, U1's "UserInventoryURL" and "UserAssetURL" are pointing to G1's default Inventory/Asset server. | + | * U1 is an user of GridService G1, so probably, U1's "UserInventoryURL" and "UserAssetURL" are pointing to G1's default Inventory/Asset server. |
− | * | + | * R2 is a regionserver in GridService G2, so R2 fetches assets from G2's Asset server by default. |
---- | ---- | ||
==== 2 Fetch data from multiple Inventory/Asset Data ==== | ==== 2 Fetch data from multiple Inventory/Asset Data ==== | ||
− | [[ | + | [[File:avatar_portability_2.PNG]] |
− | *U1 login to | + | * U1 login to R2, If U1 want to also bring in its apearance, R2 should have the ability that can '''get U1's appearance from U1's "UserInventoryUrl" and get U1's assets(textures) from "UserAssetUrl"'''. |
− | *So, in this case, because an asset request("RequestImagePacket") only sends asset UUID to | + | * So, in this case, because an asset request("RequestImagePacket") only sends asset UUID to R2, R2 has to '''determine which asset server provides the reuqested UUID'''. |
+ | |||
---- | ---- | ||
− | ==== 3 ==== | + | ==== 3 ForeginAssetHashTable ==== |
− | [[ | + | [[File:avatar_portability_3.PNG]] |
>R1 has to determine which asset server provides the reuqested UUID | >R1 has to determine which asset server provides the reuqested UUID | ||
− | *At the right-bottom of this picture, "ForeginAssetHashTable" is used to solve this. | + | * At the right-bottom of this picture, "ForeginAssetHashTable" is used to solve this. |
− | *When an user login, | + | * When an user login, |
− | *#region gets its "inventoryurl", "asseturl" from its "profile" | + | *# region gets its "inventoryurl", "asseturl" from its "profile" |
− | *#region gets its appearance(UUIDs) from its "inventoryurl", and add the UUIDs into "ForeginAssetHashTable" | + | *# region gets its appearance(UUIDs) from its "inventoryurl", and add the UUIDs into "ForeginAssetHashTable" |
− | *#Then when client send a "RequestImage(UUID)", RegionServer can look up into "ForeginAssetHashTable" to get the proper "AssetUrl" | + | *# Then when client send a "RequestImage(UUID)", RegionServer can look up into "ForeginAssetHashTable" to get the proper "AssetUrl" |
− | == | + | == Implementation == |
− | + | === Authentication === | |
− | + | [[not prepared yet]] | |
− | + | ||
− | + | ||
− | == Implementation == | + | === Avatar Portability === |
+ | |||
+ | ==== 1 Implementation - ForeginAssetHashTable.Add ==== | ||
+ | |||
+ | [[File:avatar_portability_4-1.PNG]] | ||
+ | |||
+ | ==== 2 Implementation - ForeginAssetHashTable.Get ==== | ||
+ | |||
+ | [[File:avatar_portability_4-2.PNG]] | ||
+ | |||
+ | ==== 3 Implementation - ForeginAssetHashTable.Remove ==== | ||
+ | |||
+ | [[File:avatar_portability_4-3.PNG]] |
Latest revision as of 20:43, 3 March 2012
This article or section is a Proposal It does not represent the current state of OpenSim, but is an idea for future work in OpenSim. Please feel free to update this page as part of the proposal discussion. |
[edit] Basic Idea
To enable user avatar travel from a grid service to another grid service, There are 2 problem to be considered:
- How to enable foreign user login - Authentication
- (If a foreign user can login)How to get a foreign user's belongings(including appearance, inventory)
To achieve the 1st, client side changes are needed. SO, so far, I have only implemented 2nd, and would like to explan my idea:
[edit] Authentication
This is only partially implemented, and most of this topic need special client supports. a simple demo will be avaliable somewhere soon. For detailed idea:
OpenID for data portability in virtual world
[edit] Avatar Portability
In "users" table, "UserInventoryURL" and "UserAssetURL" have been there for a long time, and they are not used yet. My idea starts from the 2 properties;
[edit] 1 UserInventoryUrl UserAssetUrl
- U1 is an user of GridService G1, so probably, U1's "UserInventoryURL" and "UserAssetURL" are pointing to G1's default Inventory/Asset server.
- R2 is a regionserver in GridService G2, so R2 fetches assets from G2's Asset server by default.
[edit] 2 Fetch data from multiple Inventory/Asset Data
- U1 login to R2, If U1 want to also bring in its apearance, R2 should have the ability that can get U1's appearance from U1's "UserInventoryUrl" and get U1's assets(textures) from "UserAssetUrl".
- So, in this case, because an asset request("RequestImagePacket") only sends asset UUID to R2, R2 has to determine which asset server provides the reuqested UUID.
[edit] 3 ForeginAssetHashTable
>R1 has to determine which asset server provides the reuqested UUID
- At the right-bottom of this picture, "ForeginAssetHashTable" is used to solve this.
- When an user login,
- region gets its "inventoryurl", "asseturl" from its "profile"
- region gets its appearance(UUIDs) from its "inventoryurl", and add the UUIDs into "ForeginAssetHashTable"
- Then when client send a "RequestImage(UUID)", RegionServer can look up into "ForeginAssetHashTable" to get the proper "AssetUrl"