| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Operators

Page history last edited by Bill Maya 15 years, 1 month ago

You can think about Operators in terms of language. Consider this sentence:

 

"The farmer gave the dog that saved the life of his son a big slab of meat from the pig he had just slaughtered."

 

OK, it's a clumsy sentence with too many subsidiary components; a good writer would break it down into several sentences. But it breaks down into words in exactly the same way that a Script breaks down into Operators:

 

gave

     who: The farmer

     to whom: the dog

          that saved

               what: the life

               of whom: his son

     what: the slab

          of meat

               from the pig

                       that slaughtered

                         who: he

                         when: had just

 

Granted, this is a rather odd way of breaking apart a sentence, but its utility arises from its defining the components of the sentence in a precise fashion. And when you're talking to computers, you have to be precise.

 

This nesting capability of language gives it the power to express any idea, no matter how complex. And the scripting language of Storytronics uses exactly the same nesting concept for its Operators.

 

Operator Types

 

An Operator produces a value: a number, a Prop, an Actor, etc. There are three types of Operators:

 

  • Getters
  • Setters
  • Crunchers

 

Getters are simple: they simply look up a stored value and return it. Here is an example of a Getter:

 

Owner of:

   ThisProp

 

When you use the Operator Owner of in a script, SWAT gets the name of the Actor who owns the prop that has just been used in ThisEvent, and plugs it into that slot in the script.

Setters store a new value into a variable. They are represented by Script Buttons. The Verb's Consequences, AssumeRoleIf, EmotionalReaction, WordSocket, and Inclination scripts are all Setters. The way you can recognize a Setter is by the bent corner on the button.

 

 

Crunchers perform some calculation using the values you feed them. Here is an example of a Cruncher:

 

BSum of:

   Quiet_Chatty of:

        ReactingActor

   Fear_Anger of:

        ReactingActor

 

The Operator BSum takes the number representing how talkative ReactingActor is (that is, her Quiet_Chatty value), and adds to it the value representing how fearful or angry she is. This Operator might be used to determine how likely an Actor is to speak her mind in a confrontation, for instance. The more angry she is, and/or the more outspoken she is, the more likely she will be to argue or confront.

 

Nesting of Operators

 

Many Operators have arguments. "Arguments" is just a fancy name for subsidiary Operators that provide further specifics on what the Operator is required to do. Some Operators have just one argument, like these:

 

Quiet_Chatty of:                           how loquacious ReactingActor is

   ReactingActor

 

(We indicate nesting by insetting the argument.)

 

Other Operators have two arguments, like these:

 

PQuiet_Chatty of:                   how loquacious ThisSubject perceives ThisDirObject to be

   ThisSubject

   ThisDirObject

 

Here's an example of nesting arguments:

   Quiet_Chatty of:

        Owner of:

             ThisDirProp

 

Some Operators have no arguments at all; here are a few:

 

BNumberConstant  (a number like 0.0 or 0.5)

ThisSubject   (the Subject of the Event that just happened)

ReactingActor (the Actor reacting to the Event that just happened)

 

Next Tutorial: Special Operators

Previous Tutorial: Lizards

 


Creative Commons License  This tutorial by Storytron, Inc. is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.

 

Comments (0)

You don't have permission to comment on this page.