OpenSimulator:Introduction and Definitions-it
From OpenSimulator
Archimedix (Talk | contribs) (→UGAIM) |
Archimedix (Talk | contribs) (→UGAIM) |
||
Line 16: | Line 16: | ||
'''GridServer''': Questo è responsabile per l'autenticazione qualcosa di diverso alla rete: le regioni.Poiché la rete è bidimensionale, e siccome ogni regione ha le coordinate X e Y, è necessario garantire che una particolare coordinata x,y vengano assegnati correttamente (qualunque sia il mezzo 'corretto' per la griglia in questione) ma l'impostazione predefinita di OpenSim è costituita da 2 canali di autenticazione con il server di regione, basata su uno schema a password condivisa (chiamate "password di ingresso" e "password di uscita"). A ciascuna regione è assegnata una UUID. | '''GridServer''': Questo è responsabile per l'autenticazione qualcosa di diverso alla rete: le regioni.Poiché la rete è bidimensionale, e siccome ogni regione ha le coordinate X e Y, è necessario garantire che una particolare coordinata x,y vengano assegnati correttamente (qualunque sia il mezzo 'corretto' per la griglia in questione) ma l'impostazione predefinita di OpenSim è costituita da 2 canali di autenticazione con il server di regione, basata su uno schema a password condivisa (chiamate "password di ingresso" e "password di uscita"). A ciascuna regione è assegnata una UUID. | ||
− | '''AssetServer''': | + | '''AssetServer''': Si tratta essenzialmente di un WFRM database (scrivere pochi, leggere molti).Una volta che un asset (oggetto) viene inserito, succedono 2 cose: Uno, viene assegnato un UUID come etichetta ... e due, non è per la vita (anche se negli sviluppi futuri di OpenSim, asset inutilizzati potranno essere individuati e sfruttati).Suoni, texture, immagini, notecards, script, oggetti serializzati di inventory sono aggiunti, e mai più modificati (saranno "immutabili"). Se si ha necessità di modificare una grafica di soli 2 pixel a sinistra nella vostra casa virtuale, sarà necessario ricaricare un nuovo asset (un immagine) alla quale verrà assegnato un nuovo UUID e associato alla nuova immagine.Quello vecchio rimarrà per sempre. |
'''InventoryServer''': That's all well and good, of course, but if it's all jumbled up into a key-value database like that, then what's the point? How could you keep anything straight? The UUID may be great for a computer, but it doesn't have anything to do with a human-readable label -- and how does it keep track of where I put it? That's the job of a much different database server -- one designed for a lot of little writes and a lot of little reads. This is the Inventory server. It works by -- you guessed it -- linking UUIDs together. The User has a UUID, which is used to get his InventoryRoot folder's UUID, and the InventoryRoot has a list of UUIDs that it links to, and each of those that are folders have lists of UUIDs, and those that aren't contain a link to a UUID, a type, and a descriptive name for the asset. The inventory server also retains permission information about items in inventory. | '''InventoryServer''': That's all well and good, of course, but if it's all jumbled up into a key-value database like that, then what's the point? How could you keep anything straight? The UUID may be great for a computer, but it doesn't have anything to do with a human-readable label -- and how does it keep track of where I put it? That's the job of a much different database server -- one designed for a lot of little writes and a lot of little reads. This is the Inventory server. It works by -- you guessed it -- linking UUIDs together. The User has a UUID, which is used to get his InventoryRoot folder's UUID, and the InventoryRoot has a list of UUIDs that it links to, and each of those that are folders have lists of UUIDs, and those that aren't contain a link to a UUID, a type, and a descriptive name for the asset. The inventory server also retains permission information about items in inventory. |
Revision as of 14:27, 9 December 2008
Introduzione e definizioni di Opensimulator
Il progetto Opensim è una piattaforma flessibile che può simulare degli spazi virtuali tridimensionali. Questi spazi virtuali danno la possibilità di creare, modificare, cancellare e scriptare dinamicamente oggetti (Primitive) -- alcuni dei quali, quando propriamente linkati, istruiscono il client 3D in modo da renderizzarli in nuovi modi.
Come dimostrazione della potenza di questa piattaforma, è stata scritta nella sua configurazione di default, per essere compatibile con il client di Second Life, rilasciato dalla Linden Lab sotto licenza GPL
Abbastanza consapevolmente con l'originale struttura di rete della Linden Lab, sono necessari 5 servizi maggiori da fornire alle regioni che vogliono essere connesse con il client di Linden. Quste sono conosciute con l'acronimo UGAIM, ovvero : User, Grid, Asset, Inventory, Messaging
UGAIM
Ciascun servers gioca un ruolo specifico (e vitale) nel sistema Opensim.
UserServer: Questo è il server responsabile dell'autenticazione degli utenti nella Grid. Ciò significa che esso è responsabile di un compito molto importante: crea un identificatore di sessione per il client che può essere usato per autenticare le richieste di altri server nella stessa grid, e che associa identificatore di sessione con un UUID (Ciò può comportare una autenticazione crittografica, autenticazione OpenID, o anche l'attuale Nome / password di autenticazione dei residenti.)
GridServer: Questo è responsabile per l'autenticazione qualcosa di diverso alla rete: le regioni.Poiché la rete è bidimensionale, e siccome ogni regione ha le coordinate X e Y, è necessario garantire che una particolare coordinata x,y vengano assegnati correttamente (qualunque sia il mezzo 'corretto' per la griglia in questione) ma l'impostazione predefinita di OpenSim è costituita da 2 canali di autenticazione con il server di regione, basata su uno schema a password condivisa (chiamate "password di ingresso" e "password di uscita"). A ciascuna regione è assegnata una UUID.
AssetServer: Si tratta essenzialmente di un WFRM database (scrivere pochi, leggere molti).Una volta che un asset (oggetto) viene inserito, succedono 2 cose: Uno, viene assegnato un UUID come etichetta ... e due, non è per la vita (anche se negli sviluppi futuri di OpenSim, asset inutilizzati potranno essere individuati e sfruttati).Suoni, texture, immagini, notecards, script, oggetti serializzati di inventory sono aggiunti, e mai più modificati (saranno "immutabili"). Se si ha necessità di modificare una grafica di soli 2 pixel a sinistra nella vostra casa virtuale, sarà necessario ricaricare un nuovo asset (un immagine) alla quale verrà assegnato un nuovo UUID e associato alla nuova immagine.Quello vecchio rimarrà per sempre.
InventoryServer: That's all well and good, of course, but if it's all jumbled up into a key-value database like that, then what's the point? How could you keep anything straight? The UUID may be great for a computer, but it doesn't have anything to do with a human-readable label -- and how does it keep track of where I put it? That's the job of a much different database server -- one designed for a lot of little writes and a lot of little reads. This is the Inventory server. It works by -- you guessed it -- linking UUIDs together. The User has a UUID, which is used to get his InventoryRoot folder's UUID, and the InventoryRoot has a list of UUIDs that it links to, and each of those that are folders have lists of UUIDs, and those that aren't contain a link to a UUID, a type, and a descriptive name for the asset. The inventory server also retains permission information about items in inventory.
MessagingServer: This one came later, and it's not quite as essential as the first four. However, if you want the people using your simulator to be able to communicate with each other via anything other than the creation of sky-writing primitive letters, you need this. This keeps track of who's supposed to be able to listen to whoever else, keeps track of long-distance messages sent from one user to another (think 'SMS' for a real-world analogue), and keeps unread direct messages until they're read (also very much like SMS).
All of these servers are important, and because they're so important, they all share a specific property: There Can Be Only One (of each, known to any given region).
Region
Oh yeah, the Region. The Region runs physics, runs scripts (though this may one day be moved off of the Region), keeps track of objects in the scene, keeps track of any observers connected, and sends scene updates to all of the observers. To it, everything it knows about is a UUID. Every last little thing -- a user connected is a UUID, an observer is a UUID, its terrain heightmap is a UUID, an asset is a UUID, a primitive is a UUID, the script running is a UUID... get the picture? It's a glorified data processor.
A Region is, not to put too fine a point on it, a memory space and behavior simulator which can share its state with observers. In short, it is a 3-dimensional MUD.
OpenSim has two modes of operation -- they're called "standalone mode" and "grid mode" (there is also an experimental Hypergrid intergrid mode that we won't go into here). These modes are distinct only in where they get their UGAIM services from. In standalone mode, the region provides its own UGAIM service interfaces and these are run in a single process. In grid mode, each service is run in a separate process, and each process can in principle be run on a different machine.
In grid mode, the UGAIM servers are all run as centralized grid services. All of the users have to be known by all regions, for example, and also have to interact with the Grid itself (which is defined, somewhat arbitrarily, as a 2-dimensional map akin to township and range specification for real property). The region keeps a temporary cached copy of assets (currently set to 24 hours), but not a permanent local copy of its assets. Other entities such as users, messages, or inventory aren't peristently cached. In fact, region servers will opportunistically cache many things to reduce perceptual lag for the client.