Jump to content
NQ-Nyzaltar

DevBlog - Rights & Duty Management System (RDMS)

Recommended Posts

(posted Thursday 21st of May 2015 on the DevBlog)

 

 

administration-rights.jpg?w=300

 

 

Today I want to talk about one of the most central mechanism in Dual Universe: how to manage the rights and duties of players against other players and organizations. We want a generic system that will be able to handle as diverse things as: territory management, asset renting, organization functional structuring, delegations, etc. All this with the same core mechanism. In fact, we need some kind of theoretical framework for rights and duties management. Let?s see how we plan to do this in the game.
 
First let?s look at some basic definitions that we will use later. We call ?Entity? anything that is either a Player or an Organization (see the devblog on Organizations). Entities can, among other things, own Assets: equipment, ships, buildings, etc. We are going to focus our attention on assets that can be used to do something, which is represented by the fact that there is a set of Powers that are attached to them. A power represents a capacity to do something. For example: I own a container C, which is an asset that has the ?open? and ?read? powers. These powers represent the possibility to respectively open it and check its content. Another example: a territory, which is also an asset, can have powers such as ?the right to build on it?, ?the right to mine it?, ?the right to enter it?, etc. By default, the owner of an asset is granted all the powers attached to it. The problem we try to address is how can you grant one or several powers to somebody else, and how can you manage this when it gets complicated?
 
The central idea of the RDMS (Rights & Duties Management System) is the notion of ?tag?. A tag is basically a string of characters that you can create. The owner of an asset can do two things: 1. assign some tags individually to each of its powers, 2. give tags to other players (or organizations). Thus, being granted a particular power is simply a matter of owning at least one tag that is assigned to that particular power. Example: I own my container C and I create a tag ?friend? that I assign to the power ?open? of C (this power might have already other tags assigned, it doesn?t matter). Then,I give the tag ?friend? to Alice, my friend, so that she can access the container C.
 
So far, it?s simple, but it is already capable of doing quite interesting things: by using the same tag for several powers, I can grant a player with many powers in one shot, simply giving him/her this tag. Symmetrically, I can grant a particular power to several players at the same time, simply using a tag that I have already given to all these players and assigning it to the power I want to grant. Unlike simple hierarchies, tags can represent complex graphs of relationships between entities.
 
Now, you might think, it can be very tedious to have to manually assign tags to maybe hundreds of powers (one by asset?) or hundreds or players (all my friends!). The way to get around this is that tags can be organized into hierarchies. For example, we can define for tag ?T? two ?subtags? called ?Ta? and ?Tb?.
 
schema-rdms.png
 
In this case, whenever tag T is used (assigned to a power or given to someone), it implies Ta and Tb. If I own tag T, I am granted any power that is tagged with T, Ta or Tb. If tag T is assigned to a power, anyone with T, Ta or Tb can use it. Now, you can build a tree of tags to organize your partners in the game, put them into categories, group them, etc. At the same time, all powers are structured into a tree of powers (predefined by us), so that you have access to abstract categories of powers like ?military?, ?logistics?, ?containers?, etc (we might actually provide several trees of powers, to reflect various ways to categorize them). So, if I want to give all powers related to military assets to someone, I can simply give him/her the military tag (NB: tag names are actually scoped, so that ?military? here would in reality be ?power/tree1/military?, which avoids name conflicts with your personal tag also called ?military?, but which is in fact ?mypseudo/military?).
 
So far, we have seen how to give rights to people, that is: how to grant them powers via tagging. The other side of the coin is about duties. When I assign a tag to a power, it can be attached to several duties. Duties are things like: a price to pay per month, per day or per use to be able to use the tag, a price to acquire it, a certain location that you must be in to be able to use it, etc.
 
Another important aspect is the notion of warranties: when I give a tag to someone, I can also take it back at any time. I may agree to provide a warranty attached to this tag, which says that the removal will be done after a 24h or 48h notice, or that I agree to pay a certain amount when I remove the tag, as a compensation. Depending on who is the stronger in a negotiation, the warranties can be more or less important. But for sure, if I am given a tag that grants me the power to fly a ship in space, I certainly don?t want to be stuck in the middle of nowhere, unable to fly the ship, simply because my tag has been removed.
 
Now, if you remember the way organizations work, members are assigned ?functions? (used to be called ?roles?, but this has been renamed). We said that functions are about rights and duties. In fact, functions are simply defined by a set of tags, with certain duties and warranties. Any member with a particular function will be granted these tags, as part of the function. The organization itself comes with many powers that are related to the ability to modify functions and set/remove tags inside them. There are some fairly advanced mechanisms to manage these rights of ?tagging? within an organization, based on votes, but this would drive us too far for the moment.
 
The last notion I want to talk about is the notion of ?power delegation?. It is crucial to understand how territories work, which I will explain in another post. I said at the beginning that, naturally, the owner of an asset has all powers on it, and in particular he or she is the only entity allowed to modify the set of tags associated to these powers. What if you would agree to give this ?power of tagging? to somebody else? This is called delegation. If I delegate a power P to somebody S (like a clan or a guild, for example), I accept to lose the right to tag this power and I transfer this capability to S. I can remove the delegation at anytime (together maybe with some warranties), but while it holds, I?m not in charge anymore. S can administrate the power P, and can even remove the automatic ?owner? tag that is always attached to it by default. The ?owner? tag is a special tag that is used to say that the owner of an asset is granted all the powers of this asset. So, if somebody else administrates a power, I can even lose the right to use it. You know the drill: with great powers comes great responsibilities? Think about it: when you live in a country, there are a lot of powers that you have delegated to the government, sometimes losing the right to enjoy these powers. For example, the power to do your own justice. This is the basis of politics and, as we will see later, territorial management.
 
The RDMS is a very sophisticated system. There are many other things I did not mention, because it would be too long for this post (maybe I?ll do another one about ?advanced RDMS?), like: power transitivity, roles, power management in organizations, tag composition, and more details about automatic tagging and hierarchies. What we try to do here is a system that can scale and adapt to many different situations, and that will ?infiltrate? all aspects of the game, from flying a ship in a team, renting properties, scripting automatic defense based on who is showing up, and even the chat system. All those things will use the tagging system to be able to flexibly describe just about anything you want to say about a situation, while making the game ?aware? of it and able to help and check. Emerging gameplay, emerging politics, emerging contracts system, what else? Let us know what you think about these!
 
JC Baillie,
Project Lead

Share this post


Link to post
Share on other sites

I'm glad so much time is being put into the organization system/ guild system/Rights system. I think this is a key factor that if done correctly could make this game great. One question though will these tags be rigidly enforced by codes inside of the actually game, or will it be up to the player to police these tags and make sure that people are not where they shouldn't be.

Share this post


Link to post
Share on other sites

I'm glad so much time is being put into the organization system/ guild system/Rights system. I think this is a key factor that if done correctly could make this game great. One question though will these tags be rigidly enforced by codes inside of the actually game, or will it be up to the player to police these tags and make sure that people are not where they shouldn't be.

I had pretty much the same question.  Computerised locking mechanisms and vehicle controls automatically becoming unresponsive makes sense, although I do believe there should be some scalable, non-trivial means available to "hack" such systems.  Besides that, a payment not being rendered should flag up a warning and nothing else.  To use the dev blog's real world example; if a citizen of a country decides to break a law, there is nothing stopping her/him from doing so.  She/he can break the law.  It is up to law enforcement or other citizens to a) notice that a law was broken, B) discover who broke the law, and then c) bring the perpetrator to justice.  I think this kind of freedom allows for more emergent gameplay.

 

Regarding the system of roles, duties, management outlined in the blog; it all sounds incredibly well thought out and in keeping with the sandbox mentality.  Would this same system be used for short term contracts as well as long term contracts and internal politics?  Like a payment being released from entity A to entity B once an entity B fulfils some task?

Share this post


Link to post
Share on other sites

Congratulations on blowing my mind,

There is much more offered here than what I thought would be available, I can clearly see you all aren't just smart, but genius.

 

I believe when it comes to tag's they are a type of hard-code. Just like if I put a padlock on a door and only tell my best friend the combination. If we lived in a world without bolt cutters, nobody would be able to break the the lock. It all depends on if there will be a mechanic to bust into something, bypass the law, or even 'hack' a terminal.

 

I will also need to spend some time wrapping my mind around whats here and using some predictive analysis to write a post to help people structure their organisations.

Share this post


Link to post
Share on other sites

Seems like you guys are really putting a lot of effort, time and thinking into delivering a well developed organization/guild/community system, kudos to you for that.

 

Now all I need is to... Sit... Relax... And let my braincells absorb what I just read...

 

So yeah, I'll be somewhere along the same lines as you there Saffi, in the sense of... Understanding the system! Hehe.

Share this post


Link to post
Share on other sites
@Jared:

There will be default existing tags implemented in game. BUT... Players should be able to create their own tags, opening a lot of possibilities... ;)

 

@Klatu Satori:

About "Hacking", this will be a whole activity by itself, and a wide set of skills related to that will be available to train. But this kind of activity will probably be implemented for or after the official release. But it's definitely on our todo list.

 

And yes, contracts will have the same kind of flexibility than Organization Management.

In fact, the feature will use a lot what has been developed for RDMS :)

 

@Saffi:

We understand that "Hacking" game mechanics might seem blurry for the time being (as it hasn't been clearly explained in detail).

But don't worry: This will probably be the subject of another DevBlog post in the future!

 

@Comrademoco:

Haha, indeed, this is quite a piece of data to assimilate, not easy to see all the implications from the first read. 

But we hope this will be a lot more intuitive and clear once you will be in front of it in-game :)

Share this post


Link to post
Share on other sites

This tag system can go further than management and duties. If players have full control of tagging, they can add custom features into the game.

A little complicated.. which is why I hope there will be a system to validate and assist with tags.

 

A lot of possibilities here, this is why I love Dual Universe.

Share this post


Link to post
Share on other sites

Hi Astrov,

 

For those who will feel a bit lost with the Tag possibilities, there will be generic default tag configurations.

A player that don't want to dive in these game mechanics won't be forced to do so, in order to stay user-friendly.

But yes, the tag system will go further than the RDMS. For example, it will be possible to set some automatized defense systems to shoot at intruders, based on the tags they have (or don't have). It will also be possible to customize visual markers (based on tags) on players you meet in-game. And this will be only visible to the player who put the visual marker, of course. Welcome to Augmented Reality (and lots of opportunities for emergent gameplay).  :)

Share this post


Link to post
Share on other sites

So, for the tags if you go down to the most basic rights, will there be hundreds of tags for one thing? Are you guys going to stop at a certain point and only have so many sub-sections for tags? Will there be a tagging screen where you put how long exactly what you want to tag and what other conditions will be specified, or will the be a screen where it has all these things and you just fill it in?

Share this post


Link to post
Share on other sites

Regarding Hacking:

 

I'm sure everyone would agree that hacking should be available for certain powers, but not for stealing the blueprint. 

 

I should be able to compromise that force field door, but I wouldn't be able to steal the blueprint from whoever designed it, and resell my own constructs.

Share this post


Link to post
Share on other sites

When in doubt look to Star Wars Galaxies. It can show you the wrong way to do many things as well as the way that would have been perfect but just wasn't quite there yet hehe. 

Share this post


Link to post
Share on other sites

Let's say I want to operate a spaceship rental business in-game for newer players that can't afford their own ships.  I would want to implement some sort of Rental DPU / construct to assist with automated rentals (so that I don't have to be there in person to babysit the ship rental business).  

 

You mention in the DevBlog about expiring tags, but will it be possible to get tag expiry events on the Rental DPU?  

 

For example: Player Joe walks up to SpaceFighter953, which I currently have available for rental.  Joe then deposits XX currency into the Rental DPU and it issues a "SpaceFighter953_rental_token" tag to Joe, which will expire in 24 hours (or however long depending on how much currency deposited via the rental DPU).  Once the tag expires, Joe will be locked out from controlling the ship, unless he deposits more currency into the Rental DPU.  And finally...  15 minutes after the last expiry, have the ship autopilot back to my shipyard to become available to the next renter.

 

Will it be possible for the Rental DPU to get a notification when the rental tag expires, or would I be required to track the time events in the DPU itself within the Lua code?  If I can process a tag expiry event, then I could issue tags to allies to allow them to use my fleet temporarily and arbitrarily based on the tag itself.

 

 

PS: Yes, I am currently envisioning those coin operated airplanes/rocket ships for children outside of your corner store pharmacy.

Share this post


Link to post
Share on other sites

Let's say I want to operate a spaceship rental business in-game for newer players that can't afford their own ships.  I would want to implement some sort of Rental DPU / construct to assist with automated rentals (so that I don't have to be there in person to babysit the ship rental business).  

 

You mention in the DevBlog about expiring tags, but will it be possible to get tag expiry events on the Rental DPU?  

 

For example: Player Joe walks up to SpaceFighter953, which I currently have available for rental.  Joe then deposits XX currency into the Rental DPU and it issues a "SpaceFighter953_rental_token" tag to Joe, which will expire in 24 hours (or however long depending on how much currency deposited via the rental DPU).  Once the tag expires, Joe will be locked out from controlling the ship, unless he deposits more currency into the Rental DPU.  And finally...  15 minutes after the last expiry, have the ship autopilot back to my shipyard to become available to the next renter.

 

Will it be possible for the Rental DPU to get a notification when the rental tag expires, or would I be required to track the time events in the DPU itself within the Lua code?  If I can process a tag expiry event, then I could issue tags to allies to allow them to use my fleet temporarily and arbitrarily based on the tag itself.

 

 

PS: Yes, I am currently envisioning those coin operated airplanes/rocket ships for children outside of your corner store pharmacy.

 

Wow. That was a very specific example. Coin-operated spaceships :D

 

Well a tag giving the right to operate the rental ship would certainly work. I believe you can have time-based tags as well, so 24-hour expiration should be no problem. To have the ship autopilot back to the shipyard after expiration could be a bit trickier - it would definitely have to be coded into the ship's script, but since time-based tags would be temporary, you couldn't have it permanently coded.

 

Unless: there would be some way for the ship to detect the presence or existence of the tag (or token).

Example:

 

If "SpaceFighter953_rental_token" = True, "SpaceFighter953_controls" = True. Else, "SpaceFighter953_controls" = False and "SpaceFighter953_Return" = On

 

Or something to that effect. I am by no means a programmer. As for the DPU's ability to log tag expirations, I'm clueless.

Share this post


Link to post
Share on other sites

Wow. That was a very specific example. Coin-operated spaceships :D

 

Well a tag giving the right to operate the rental ship would certainly work. I believe you can have time-based tags as well, so 24-hour expiration should be no problem. To have the ship autopilot back to the shipyard after expiration could be a bit trickier - it would definitely have to be coded into the ship's script, but since time-based tags would be temporary, you couldn't have it permanently coded.

 

Unless: there would be some way for the ship to detect the presence or existence of the tag (or token).

Example:

 

If "SpaceFighter953_rental_token" = True, "SpaceFighter953_controls" = True. Else, "SpaceFighter953_controls" = False and "SpaceFighter953_Return" = On

 

Or something to that effect. I am by no means a programmer. As for the DPU's ability to log tag expirations, I'm clueless.

 

Yes, maintaining all of that in the Lua code would certainly be no problem with the timedEvent(..) type of function that is planned, it would be much better to be able to make the DPU listen to a specific tag for expiry.  It would give many more options in addition to the specific example I gave.

 

So tag listening events are the primary point in question.  Hopefully the devs are listening and can provide an answer.  :)

Share this post


Link to post
Share on other sites

@CodeGlitch0

I don't think you'll need a DPU to lock the renter out of the ship - the tag grants the player the right to operate the ship and once it expires, the power to operate the controls is gone with it.  Look at the tag like the keys to a car.

 

Something to watch out for though is hacking.  It's not a feature they're currently working on but something they have planned for the long term.  So there might be a way for some players to hack the controls (hotwire?) and steal your ship.  You'd need to factor it in as an irregular expenditure :s No idea how hacking will work though.

Share this post


Link to post
Share on other sites

@CodeGlitch0

I don't think you'll need a DPU to lock the renter out of the ship - the tag grants the player the right to operate the ship and once it expires, the power to operate the controls is gone with it.  Look at the tag like the keys to a car.

 

That's very true. Went right over my head :) Again, no programmer brains up in here.

Share this post


Link to post
Share on other sites

@CodeGlitch0

I don't think you'll need a DPU to lock the renter out of the ship - the tag grants the player the right to operate the ship and once it expires, the power to operate the controls is gone with it.  Look at the tag like the keys to a car.

 

Something to watch out for though is hacking.  It's not a feature they're currently working on but something they have planned for the long term.  So there might be a way for some players to hack the controls (hotwire?) and steal your ship.  You'd need to factor it in as an irregular expenditure :s No idea how hacking will work though.

 

Yes, I get the concept of the tagging system.  I am talking about having code notifications when a timed-expiry tag expires.

 

Anti-hacking, I can deal with.  Anti-griefing defensive tools (read: personal security systems) were something of a specialty of mine in my Second Life days. :)

 

 

EDIT: For an additional example.  Let's say I issue someone a tag to allow them to fly my spaceship, but because in this fictional dimension I'm a jerk, I decided to create a self destruct system on the spaceship that activates when I manually revoke a tag.

Share this post


Link to post
Share on other sites

Not sure about that. I think you'd need an element that detects the revocation of tags... seems doubtful something like that would exist. Maybe Nyz will enlighten us?

 

What you could probably do instead is program the ship to self destruct when someone without access attempts to use the controls.

Share this post


Link to post
Share on other sites

Not sure about that. I think you'd need an element that detects the revocation of tags... seems doubtful something like that would exist. Maybe Nyz will enlighten us?

 

What you could probably do instead is program the ship to self destruct when someone without access attempts to use the controls.

 

Yeah, but that would be less fun since I am a jerk in this theoretical dimension (not true in real life). In that instance, perhaps I would want to blow up the ship when the pilot least expects it.

 

It could fairly easily be accomplished by setting up a timed event that checks tags every XX milliseconds and then activates when it is gone.  But it would be far more efficient from a software / performance perspective to have the tag change events pushed to any DPU listening for them rather than to use a timer. ex:

// Psuedo-code

function onNavigationConsoleActivated() {

    create_timer(call: check_tag, every: 10 ms);
    
}

function check_tag() {

    if navigation_console.pilot.hasTag("youre_alive"):
        return       // Ok, you're safe for now...

    // otherwise..
    navigation_console.get_spaceship().self_destruct();
}

vs

// Psuedo-code

function onNavigationConsoleActivated() {

    navigation_console.pilot.listen_event(event: "tag_removed", tag: "youre_alive", call: uh_oh);
    
}

function uh_oh() {

    navigation_console.get_spaceship().self_destruct();
}

The first function fires constantly. The second, only once.

Share this post


Link to post
Share on other sites

So you're basically suggesting a visual version of coding where tags replace functions? If so I FREAKIN LOVE IT! This would do wonders for the average player who doesn't know how to code. The way I see it working is like looking at a circuit board with the wires connecting the functions together to form a complex system, essentially replacing code with a fun game that is easy to use yet hard to master. 

 

Basically it would be setting up a bunch of cause and effect gates that have a function that is either on or off, which could then trigger multiple other functions down the line. The first function in any hierarchy would be the condition on which every other attached function is triggered. This is only an idea but my god the possibilities.

 

A visual representation of the code would make it far less intimidating than the potentially messy look of Lua or C+.

Share this post


Link to post
Share on other sites

Yap this seems to be a great system, my only concern is the UI,

I am a coder and advanced builder but....

 

Many ppl i knew from minecraft like, or other sand box games are kids or teens,
so I hope there will be a simple UI with preset buttons for basic tagging with more common functions,

and one advanced UI where we can control in more advanced way all aspects

Share this post


Link to post
Share on other sites

Yap this seems to be a great system, my only concern is the UI,

I am a coder and advanced builder but....

 

Many ppl i knew from minecraft like, or other sand box games are kids or teens,

so I hope there will be a simple UI with preset buttons for basic tagging with more common functions,

and one advanced UI where we can control in more advanced way all aspects

Yeah, it is a good system that brings the joy of Bureaucracy to the teens of the world :P

 

"Oh, so you wnna go through a Stargate little Timmy? Guess, what, you need to fill Form 11-B/513RG. Come back when you find the manager for that form. He logs in every 11 hours for 1 minute." 

 

 

:P Standard Bureaucratic hell.

Share this post


Link to post
Share on other sites

Yeah, it is a good system that brings the joy of Bureaucracy to the teens of the world :P

 

"Oh, so you wnna go through a Stargate little Timmy? Guess, what, you need to fill Form 11-B/513RG. Come back when you find the manager for that form. He logs in every 11 hours for 1 minute." 

 

 

:P Standard Bureaucratic hell.

"For the sake of the player base and its variety, I think the Developers will eventually include this. There's still Beta and the release for that."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×