Learning the Ropes
NOTE TO CO-AUTHORS: This document is intended to be an advance "inside to outside" overview of the SkotOS architecture, starting with the account being given admin priviledges in the ChatTheatre
So you've been invited to become a staff member in a ChatTheatre, and staff priviledges have been added to your user account.
The next time you login to one of your characters in the ChatTheature client, you will have available new set of special commands prefixed with the +
symbol. Collectively, we call these the plus commands and are only available to ChatTheatre staff. These are in addition to the @
(aka "at") commands available to all players.
ChatTheatre Admin Roles
So what are some of the different kinds of ChatTheatre staff roles that need access to these +commands
?
- StoryHosts have the highest administrative privileges in a ChatTheatre, have priviledges outside of the ChatTheatre engine itself such as the ability to grant and remove staff access, can execute code using the Wiztool admin port, and typically also have administrative control the underlying virtual machines that run the ChatTheatre itself. These users are the ultimate stewards of a ChatTheatre community, and thus are called StoryHosts.
- StoryCoders have at least the same staff priviledges you have now, and their focus is on creating new features and scripts for the ChatTheatre. This requires them to have some development skills, in particular in a specials scripting language called Merry. But they may also have adminstrative access to the underlying DGD server, which allows them to make fundamental changes to the ChatTheatre using a language called LPC. Merry is intended to be a "safer" version of LPC. Staff priviliges in a ChatTheatre are explicity seperate from those of the underlying DGD and ChatTheatre.
- StoryBuilders also have same staff priviledges that you have now, but they focus on building new content for ChatTheatre. Rather than focused on creating new code, they will use tools like the KarMode andTree of Woe to create rooms and objects, as well as copy or modify pre-written scripts written by StoryCoders for use by ChatTheatre Players.
- StoryPlotters also have these same staff priviledges, but instead of being focused on creating persistent rooms or objects they are focused on creating short-term plots and other entertainment for the ChatTheatre Players. They largely use these staff privileges to
+join
,+summon
and or+return
players into plots,+spawn
or+slay
one-time objects used by plots, or+force
or+posses
objects and adversaries to make them do things that scripts do not (or can't). - Some larger ChatTheatre's have StoryGuides. They also have the same staff priviledges, but they focus on using them to respond to assist requests from other ChatTheatre Players and to facilatate or moderate any problems. In particular, these commands allow the StoryGuide to respond OOC (out-of-character) rather than from their ChatTheater in-player character bodies.
Note that these terms have evolved from over 20 years of use by games using the SkotOS ChatTheatre engine such as Castle Marrach. Each differ slightly from game to game do not need to be used by your ChatTheatre community. For instance Castle Marrach no longer has StoryGuides. But the point is that there many ways to leverage the @commands
.
Some Initial Commands
who +who and +dark
Type who
to see what characters are currently logged in and playing in your ChatTheatre. Note now that as an admin you'll see more information than you did as a player, including idle players, other staff, and "dark" staff. Dark staff do not show up in the player who
command.
Type +who
to see not only character names, but account names. (this command used to give players IP addresses, but is now broken probably because of Orchil client's HTML5 tunnelling).
Type +dark
to hide yourself from the player's ‘who', and again to make yourself visible. As a staff member you often will be working in some other window, and don't want other players to send you questions or make assumptions about your availability.
+people and +hotspots
+people
lists characters logged in by location, grouping those together in the same location.
+hotspots
is similar, but lists room that contain 2 or more unidle players, thus showing you the more populated areas of the game. This is good for seeing where current activity is, and for directing new players to areas where they can interact.
+join, +goto, and +go
You can teleport your current body to the room of another player by using the +join <player>
command. NOTE: Be careful directling people, or going yourself to the private rooms where only two people are interacting — it maybe an intimate conversation! As a courtesy it is best to @page <player>
for consent first.
You will notice with the +hotspots
command, that the rooms are given name with colons in them. These are known as woe
names, as they are specially named unique objects in the game, in this case, rooms. You can +goto <woename>
to go to that room.
Finally, there is a more complex +go
command, where you can give a room a global nickname (i.e. usable by all staff) and be able to teleport there. +go list
to see what rooms have been given nicknames. Use +man go
to see how to set nicknames and other features of this command.
+return and +home
The +home
command will teleport you to your personal staff room, or a common OOC location for all staff.
+return
by itself will teleport you to the ChatTheatre has defined your "home" as. For most players this is the room in the game where if you are disconnected from the game for extended time it will send your character's body.
+return <playername
will teleport a player to the
Your Staff Body
One of the first things that you'll want to do as an new staff is to create yourself another character body to use as your "Staff Body".
Why?
- It is very easy to accidently destroy or disable your character body with staff commands while learning all that you can do with them. Having an untouched character body to return to recover from mistakes is important.
- In the history of online text games and our own 20 year history of ChatTheatres, it can help to seperate OOC authority as an admin from your the characters you play in the game. Some people try to keep them completely seperate and anonymous, but that is difficult, but at least knowing what hat you are wearing at any one time, and avoiding the "bleed" of authority into play is useful.
Some ChatTheatres do not allow you to have more than one player character body, so you may need some assistance to make one. There may also be rules about how you name them.
When you login all your character bodies will staff priviledges, but your staff body can be set to different defaults, and do things that standard player character bodies can not.
+title
One of the first things you'll probably want to do is to set yourself a title, for instance +title me "StoryHost"
.
+chatlines
In addition to OOC chat
lines that regular ChatTheatre players have access to, staff have acces to additional chat channels. They will vary from ChatTheatre to
Your True Name
Like the wizard's of lore, knowing a True Name is one of the keys for understanding how the underlying magic work. The same is true for understanding how a ChatTheatre functions.
First, +obname me
— you will see that your body has a name, that your body has a parent, and that parent itself also has a parent. This is the "data inheritance" list for your body. Your character body has its own unique core properties, but many of these core properties come from one of its parents, or is modifed or overriden by one of the children.
You can see all the core properties on your body (quite long) with the +stat me "property:*"
command. You can't tell from this listing where each comes from, or what it does, but all were established when your particular body was created.
If you click on [V]
next to the name of your body, it will execute the command +tool woe view %<woename>
which will open a window view inside of Woe (aka the "Tree of Woe" as once in the past it was extremely slow).
You will now see all the details in your specific object, of the type Base:Thing
. There are many values here, and one of the subsections is the a list of Core:Properties
where you can see many of the core properties defined in this specific Base:Thing
object. But note that there are a number of other properties that are organized or set on this page that you can't delete, only change their values.
Near the top of this list you will se a link to this specific object's parent in the Ur:UrParent
field. Click on that object link and now you will be taking to your bodies parent object. Click in it's UrObject
field to get to it's parent. Keep on going until you get to top. This is the "UrCharacter". This is the top of the data hierarchy. Many values fall from here, down through each child, until they reach your particular character body.
However, there is something higher than this, which is Base:Thing
which is a developer object. As everything object in the ChatTheatre game world is a Base:Thing
, you can't edit it directly, you have to edit it at the underlying SkotOS level. It also has all of the core "methods" for Base:Thing
that various programming functions call.
In fact, your body as an object can be and do everything possible that any other object in the game can be or do. You are in effect also a room (if you are big enough you can contain things, and if you add an entrance or exit and they are large enough, players can enter you). If you set the property flag "Base:Misc:Edible" to true, you can be eaten, a little at a time, until you are gone. If set the property flag "Base:Misc:Potable" you can be sipped upon.
As an example of this, lets +spawn
a new object based on a very simple, generic chair. +spawn Ur:furniture:chair-wood-oak-comfortable
— this will add a chair to your inventory. drop chair
, and look chair
and examine chair
it. Then +obname chair
to see the Woe name of this chair.
Note that this time the object does not have a specific name, It is spawn, and it's full name is [Ur:furniture:chair-wood-oak-comfortable]#519351
Those last numbers are its object number. You will not see this object in the standard Tree of Woe since it is just a copy of its parent, but you can click the [V]
in +obname
to actually see open the Tree of Woe see this specific object. Here you can even rename this — it is still a spawn, but once named you to be able to find it in the Tree of Woe, and modify it if you like.
Now to demostrate that all objects are in some ways the same, go to the Woe view of your chairs' parent. You will see it has details for arms and legs. Let's try them out!
Now +possess chair
. You are the chair! Try wave arm
, kick bed with my leg
. Now sit on floor
and go back to your staff body +possess <name>
. If you now look
in the room, you will see that the chair is sitting on the floor.
Go back to +obname me
and you will see that you have been given a specific Woe name. Many commands work with these names, but in, fact, like the chair, you body has a deeper name. Do +obstat <mywoename> name
. You'd get a result like ` /base/obj/thing#95200` — this is your body's true object name.
However, like all wizardry, this is not the whole truth. You, the player, are inhabiting this character body, but you also just recently inhabited the chair? Where is the real you?
If you now +stat me "property:udat:object"
You will now see that your "user data", aka udat
is /usr/UserAPI/obj/udat#72319
.
Now +obstat <myutdat> property
to see all the properties associated with your USER object.
So in effect, this udat
is your True Name.
Modifying you Staff Body
+stat me "property:appearance:*
+setp me ""
Grab some ideas from http://wiki.marrach.com/bin/view/Coders/CustomiseYourStaffBody
+setp
+man return
virtualhome:home
+stat me "property:udat:object"
Property: udat:object = </usr/UserAPI/obj/udat#72319>
+tool woe view %Neoct:Staff:Verbs:+obname
+tool woe view %Neoct:Data:Doc:obname
+tool woe view TextIF:Init
Customize your Staff Office
grab ideas from:
http://wiki.marrach.com/bin/view/Coders/CustomizeYourOffice
http://wiki.marrach.com/bin/view/Coders/KarMode
Creating your first Object
grab ideas from: http://wiki.marrach.com/bin/view/Coders/CreateYourFirstObject
http://wiki.marrach.com/bin/view/Coders/SpawnVsSummon
Creating your first script
Other resources
http://wiki.marrach.com/bin/view/Coders/+Commands
+man
Orchil theme issues http://forum.skotos.net/forum/our-games/castle-marrach/castle-marrach-discussion/1780929-orchil-client
Creating an NPC
+obname butler
+stat butler "property:nip:*
+tool woe view %Kalle:nip:comm:butler