Tease AI Scripting Overview Part 6: Modules and Misc
Posted: Fri May 08, 2015 5:10 pm
Welcome to Part 6 of the Tease scripting overview. Today we'll be taking a closer look at the remaining Linear-type scripts for this program - Module, Link and End. First, let's take another quick look at what they are and what they require:
Modules: Once the domme decides she's taunted the user enough as he strokes, the program seamlessly switches to a randomly selected Module. A module can be as simple as telling the sub to stop stroking/get to the edge, or it can be much more complicated by creating multiple paths, using media in different ways, playing games, nearly anything you can think of. The user will be stroking at the start of every Module, and must not be stroking when the Module ends. Therefore, each Module requires either @StopStroking or an @Edge Command for each possible path.
Links: When a Module ends, it moves directly into a Link script. Link scripts are buffers that give the domme a chance to wind the user down from the last Module, or build him up for the next round of Taunts. While I mainly use these for taunts that take up too many lines to make good Stroke Taunts, you can use the same Commands available to all Linear scripts to make anything you want. Link scripts always lead to the next round of Stroke Taunts, so each Link requires @StartStroking on the line before each @End it may contain.
End: Once the domme has decided she's toyed with the user enough, she will load up a random End script at the end of a Module rather than moving to a Link script. End scripts have a few unique commands, most notably @DecideOrgasm, which lets the program reach different conclusions over multiple playthroughs based on the domme's settings. More on this below.
So now that we're familiar with the different kinds of Linear scripts, let's take a closer look at Modules and what kind of possibilities they represent. I did mention that Modules can be as simple as the domme telling the user to stop stroking or edge, so let's see how that looks:
This simple 3-line script is a complete and functional Module as it meets all the requirements - @StopStroking or @Edge command, and all paths end with an @End Command. It's not the most interesting thing in the world, but not all Modules have to be. In fact, this is a pretty good Module to have, because it will progress the tease without ever seeming repetitive. That being said, I think we can improve it a little with use of the @Chance() Command. @Chance() is very similar to @Goto(), but instead of automatically going to the specified line, it has a specified chance of either going to the specified line, or the next line in the script as usual. Let's demonstrate by putting it into practice:
So as you can see in this example, after the domme says the user's name in the first line of the script, there is a 50% chance she'll keep going and tell him to edge. If the program lands on the other 50%, she'll jump to the specified line and make him stop. Whatever number you enter after @Chance is what percentage chance the domme will jump to that line. So @Chance90(This Line Here) is very likely to jump to (This Line Here), while @Chance05(This Line Here) is very unlikely to jump there. (The number after @Chance must be a two-digit number 01-99)
If this was the only Module we had, we would know the domme was either going to make us edge or stop stroking after each Taunt cycle, but we'd never know which one in advance. So the @Chance() Command is a very easy way to mix up even the simplest of scripts.
Now some of you may be wondering - What happens if the user gets close to the edge during the Stroke Taunt cycle? There's two kinds of Modules in the Module folder. Normal Modules that begin when the Stroke Taunt cycle ends, and Modules that have names that end in "_EDGING.txt" that are selected when the user says he's on the edge during the Stroke Taunt cycle. I prefer to make a copy of every Module I write, and make a small edit to beginning before saving it to "ModuleName_EDGING.txt". The reason for doing this is that it doesn't make sense for the domme to tell the sub to get close (as certain Modules will do) when he's already said he was, and scripters may want to create Modules concerning the user's lack of stamina, etc.
The only difference between regular Modules and _EDGING Modules is that while regular Modules must contain @StopStroking or an @Edge Command, _EDGING Modules must contain @StopStroking or the _EDGING Module-specific Command @EdgeDecide. (@EdgeDecide simply lets the domme decide to tell the sub to stop stroking, or tell him to hold it)
So now you know a little more about Modules, but what can they REALLY do? How do you really bring out the power of the software? The biggest thing I've tried to do is simply let each scripter use their imagination, and then give them the tools to have that imagination realized. I think the creative process often begins with the question of "Can I do this?", so instead of dry explanations of Commands and what they do, let's just ask some questions and see what the answer is:
Can I create, show, change, compare and store variables?
Yes you can! (Also note the Command @NullResponse which lets you run Commands without the domme outputting anything to the screen)
Can I save my place in a Module and return back to it after some more Stroking?
Absolutely!
Can I play videos during Modules? Can I specify what kind?
Why not! While we're on the subject of Video, let's take a quick look at the Video Settings tab:
Tease AI lets you set different Video paths for different genres. This allows the program to be specific about its Taunts at appropriate times, but we'll get more into that in a moment.
For the time being, let's get back to our Linear scripts. I can sit here and post examples of different Commands in action, but that's not really all that useful. I will be working on a list of all Commands and Command Filters. That way scripters can have a handy reference to see everything that's possible, and I will also do what I can to incorporate that guide in to Tease AI itself.
So let's take a quick look at End scripts, and more importantly how its @DecideOrgasm Command works. Here's one of my current End scripts:
The @DecideOrgasm Command works similar to a @Goto() Command in some respects. When @DecideOrgasm is called, the domme will decide to Allow, Ruin or Deny the sub's orgasm based on her various settings and random chance. Once she has her mind set up, a state is set in the program, and the program goes to the line that represents that state (Orgasm Allow), (Orgasm Deny), (Orgasm Ruin). After jumping to the appropriate line, the program will resolve the state on the next @Edge Command. @Edge, @EdgeNoHold, and @EdgeHold are all viable here, but @EdgeToRuin is not necessary on the (Orgasm Ruin) branch, because the program is resolving the state. (You may use @EdgeToRuinSecret options if you don't want the domme spilling the beans in advance) The domme uses Keywords automatically once you get close, and these Keyowrds are appropriately chosen for the orgasm state. This way you can have her say "cum for me" or "ruin your orgasm" in many different ways.
You'll probably notice a couple of other commands, one of which is @EndTease. This is used as the second to last line in every End script, and let's the program know the tease is over.
The second Command is @SendDailyTasks. This Command can only be used during End scripts. (The user can also request Daily Tasks instead of greeting the domme and beginning the tease, but that is handed internally by the program) When used, the domme will "send" the user a custom list of tasks she would like his to do for the day. This letter is created by combining a series of List-type scripts located in the domme's Tasks folder. These lists can be filtered by the orgasm state, and any usual Command Filter. Here's a look a one of the Task notes I received after being allowed to cum by the domme:
I personally think this is a pretty awesome feature of the program. I know there's nothing quite like opening up tasks for the day, wondering how challenging they'll be, what little touches the domme will leave behind in the note, and the ache of anticipation as I start reading. Tease AI generates these Tasks from 9 different lists, each representing a different body of the letter. With Command Filters and Keywords in play, all notes will be random, but feel tailor-made. The more contributions the community makes to these Tasks, the more varied and amazing they'll become.
As I mentioned, you also don't need to wait to complete a tease to get these lists. If you would just like to hop on to Tease AI and request a list of tasks for the day from your domme, she'll be more than happy to provide you with one.
While we're on the subject of awesome features, let's talk about how Tease AI can generate teases from any Video in your collection: As you noticed in the Video Settings panel, you can set paths for different genres for videos. This has a few uses. First and most simply I'm going to have an App that let's you play and generate random things. Say you want to play a JOI video, but you want it to be a surprise. Just load up Tease AI, open the Randomize App and click Random JOI. Boom, random JOI video from your collection and you can just stroke for it without having to engage the domme.
But what else this allows us to do is create Command Filters for some Video Teases. Tease AI currently has the following three Video Teases:
Avoid the Edge: The domme will randomly choose a Video from the paths you have set up and selected. You will then be tasked to stroke. If you tell her you're close, the domme will pause the video automatically and run through a randomly selected special script to taunt you or cool you down. Then when the script ends the video automatically resumes playing and you go back to stroking. The game will end once the video reaches the end.
Red Light, Green Light: The domme will randomly choose a Video from the paths you have set up and selected. When the domme says "Red Light", the video pauses automatically and you have to stop stroking. When she says "Green Light" the program resumes and you can go back to stroking. The game will end once the video reaches the end.
Censorship Sucks: The domme will randomly choose a Video from the paths you have set up and selected. You will then start stroking, but occasionally the domme will put a black bar that says "CENSORED" over the action. The bar will never show up in the same place, or be the same size. Any time the censor bar is covering up anything sexy, you have to stop stroking. The game will end once the video reaches the end.
I'll probably create more Video Teases during open development if I think of some, but already you can see that Tease AI gives you a very wide variety of options of what's possible in scripts. So wide in fact, you may notice a potential problem - How are you supposed to keep track of what scripts you're set up for and which ones you're not? What if you download a bunch of scripts, but one script uses Hentai images and you don't have any, or a Video genre you don't have, or gets even more specific and uses Images with specific Local Image Tags? Once you have a lot of scripts, how are you supposed to keep 'em separated? We could call The Offspring and ask them - they'd probably know, but there's a much easier way. Tease AI will handle this process for you automatically - with zero additional effort required from scripters. Let's take a look at the Scripts tab in the settings menu:
The scripts tab allows you to see all the scripts you have at a glance, manually selecting and de-selecting each one you'd like the program to use. Tease AI looks at all the Commands in any given script, and automatically knows if a requirement needs to be listed, which it then displays in the requirements window. Scripters don't need to worry about this at all, Tease AI does it on its own. Furthermore, you can simply click the "Select Available" button, and Tease AI will automatically select the scripts you meet the requirements for, and de-select the ones you don't. The process couldn't be easier, so as a user you never have to worry about which one of your scripts you meet the requirements for and which ones you don't.
At this point, there's not really much more I can say about scripting. There's details that need to be expounded on for sure, but that can wait for a proper Tease AI Guide. With a week to go until the first public build, I'm going to focus on crunching to create additional content to launch with. I'll also be working on the Command and Filter Command guide, which I feel is the last essential piece of this overview series. In the meantime I'll gladly answer any questions or comments you have, otherwise - the countdown is on
Modules: Once the domme decides she's taunted the user enough as he strokes, the program seamlessly switches to a randomly selected Module. A module can be as simple as telling the sub to stop stroking/get to the edge, or it can be much more complicated by creating multiple paths, using media in different ways, playing games, nearly anything you can think of. The user will be stroking at the start of every Module, and must not be stroking when the Module ends. Therefore, each Module requires either @StopStroking or an @Edge Command for each possible path.
Links: When a Module ends, it moves directly into a Link script. Link scripts are buffers that give the domme a chance to wind the user down from the last Module, or build him up for the next round of Taunts. While I mainly use these for taunts that take up too many lines to make good Stroke Taunts, you can use the same Commands available to all Linear scripts to make anything you want. Link scripts always lead to the next round of Stroke Taunts, so each Link requires @StartStroking on the line before each @End it may contain.
End: Once the domme has decided she's toyed with the user enough, she will load up a random End script at the end of a Module rather than moving to a Link script. End scripts have a few unique commands, most notably @DecideOrgasm, which lets the program reach different conclusions over multiple playthroughs based on the domme's settings. More on this below.
So now that we're familiar with the different kinds of Linear scripts, let's take a closer look at Modules and what kind of possibilities they represent. I did mention that Modules can be as simple as the domme telling the user to stop stroking or edge, so let's see how that looks:
This simple 3-line script is a complete and functional Module as it meets all the requirements - @StopStroking or @Edge command, and all paths end with an @End Command. It's not the most interesting thing in the world, but not all Modules have to be. In fact, this is a pretty good Module to have, because it will progress the tease without ever seeming repetitive. That being said, I think we can improve it a little with use of the @Chance() Command. @Chance() is very similar to @Goto(), but instead of automatically going to the specified line, it has a specified chance of either going to the specified line, or the next line in the script as usual. Let's demonstrate by putting it into practice:
So as you can see in this example, after the domme says the user's name in the first line of the script, there is a 50% chance she'll keep going and tell him to edge. If the program lands on the other 50%, she'll jump to the specified line and make him stop. Whatever number you enter after @Chance is what percentage chance the domme will jump to that line. So @Chance90(This Line Here) is very likely to jump to (This Line Here), while @Chance05(This Line Here) is very unlikely to jump there. (The number after @Chance must be a two-digit number 01-99)
If this was the only Module we had, we would know the domme was either going to make us edge or stop stroking after each Taunt cycle, but we'd never know which one in advance. So the @Chance() Command is a very easy way to mix up even the simplest of scripts.
Now some of you may be wondering - What happens if the user gets close to the edge during the Stroke Taunt cycle? There's two kinds of Modules in the Module folder. Normal Modules that begin when the Stroke Taunt cycle ends, and Modules that have names that end in "_EDGING.txt" that are selected when the user says he's on the edge during the Stroke Taunt cycle. I prefer to make a copy of every Module I write, and make a small edit to beginning before saving it to "ModuleName_EDGING.txt". The reason for doing this is that it doesn't make sense for the domme to tell the sub to get close (as certain Modules will do) when he's already said he was, and scripters may want to create Modules concerning the user's lack of stamina, etc.
The only difference between regular Modules and _EDGING Modules is that while regular Modules must contain @StopStroking or an @Edge Command, _EDGING Modules must contain @StopStroking or the _EDGING Module-specific Command @EdgeDecide. (@EdgeDecide simply lets the domme decide to tell the sub to stop stroking, or tell him to hold it)
So now you know a little more about Modules, but what can they REALLY do? How do you really bring out the power of the software? The biggest thing I've tried to do is simply let each scripter use their imagination, and then give them the tools to have that imagination realized. I think the creative process often begins with the question of "Can I do this?", so instead of dry explanations of Commands and what they do, let's just ask some questions and see what the answer is:
Can I create, show, change, compare and store variables?
Yes you can! (Also note the Command @NullResponse which lets you run Commands without the domme outputting anything to the screen)
Can I save my place in a Module and return back to it after some more Stroking?
Absolutely!
Can I play videos during Modules? Can I specify what kind?
Why not! While we're on the subject of Video, let's take a quick look at the Video Settings tab:
Tease AI lets you set different Video paths for different genres. This allows the program to be specific about its Taunts at appropriate times, but we'll get more into that in a moment.
For the time being, let's get back to our Linear scripts. I can sit here and post examples of different Commands in action, but that's not really all that useful. I will be working on a list of all Commands and Command Filters. That way scripters can have a handy reference to see everything that's possible, and I will also do what I can to incorporate that guide in to Tease AI itself.
So let's take a quick look at End scripts, and more importantly how its @DecideOrgasm Command works. Here's one of my current End scripts:
The @DecideOrgasm Command works similar to a @Goto() Command in some respects. When @DecideOrgasm is called, the domme will decide to Allow, Ruin or Deny the sub's orgasm based on her various settings and random chance. Once she has her mind set up, a state is set in the program, and the program goes to the line that represents that state (Orgasm Allow), (Orgasm Deny), (Orgasm Ruin). After jumping to the appropriate line, the program will resolve the state on the next @Edge Command. @Edge, @EdgeNoHold, and @EdgeHold are all viable here, but @EdgeToRuin is not necessary on the (Orgasm Ruin) branch, because the program is resolving the state. (You may use @EdgeToRuinSecret options if you don't want the domme spilling the beans in advance) The domme uses Keywords automatically once you get close, and these Keyowrds are appropriately chosen for the orgasm state. This way you can have her say "cum for me" or "ruin your orgasm" in many different ways.
You'll probably notice a couple of other commands, one of which is @EndTease. This is used as the second to last line in every End script, and let's the program know the tease is over.
The second Command is @SendDailyTasks. This Command can only be used during End scripts. (The user can also request Daily Tasks instead of greeting the domme and beginning the tease, but that is handed internally by the program) When used, the domme will "send" the user a custom list of tasks she would like his to do for the day. This letter is created by combining a series of List-type scripts located in the domme's Tasks folder. These lists can be filtered by the orgasm state, and any usual Command Filter. Here's a look a one of the Task notes I received after being allowed to cum by the domme:
I personally think this is a pretty awesome feature of the program. I know there's nothing quite like opening up tasks for the day, wondering how challenging they'll be, what little touches the domme will leave behind in the note, and the ache of anticipation as I start reading. Tease AI generates these Tasks from 9 different lists, each representing a different body of the letter. With Command Filters and Keywords in play, all notes will be random, but feel tailor-made. The more contributions the community makes to these Tasks, the more varied and amazing they'll become.
As I mentioned, you also don't need to wait to complete a tease to get these lists. If you would just like to hop on to Tease AI and request a list of tasks for the day from your domme, she'll be more than happy to provide you with one.
While we're on the subject of awesome features, let's talk about how Tease AI can generate teases from any Video in your collection: As you noticed in the Video Settings panel, you can set paths for different genres for videos. This has a few uses. First and most simply I'm going to have an App that let's you play and generate random things. Say you want to play a JOI video, but you want it to be a surprise. Just load up Tease AI, open the Randomize App and click Random JOI. Boom, random JOI video from your collection and you can just stroke for it without having to engage the domme.
But what else this allows us to do is create Command Filters for some Video Teases. Tease AI currently has the following three Video Teases:
Avoid the Edge: The domme will randomly choose a Video from the paths you have set up and selected. You will then be tasked to stroke. If you tell her you're close, the domme will pause the video automatically and run through a randomly selected special script to taunt you or cool you down. Then when the script ends the video automatically resumes playing and you go back to stroking. The game will end once the video reaches the end.
Red Light, Green Light: The domme will randomly choose a Video from the paths you have set up and selected. When the domme says "Red Light", the video pauses automatically and you have to stop stroking. When she says "Green Light" the program resumes and you can go back to stroking. The game will end once the video reaches the end.
Censorship Sucks: The domme will randomly choose a Video from the paths you have set up and selected. You will then start stroking, but occasionally the domme will put a black bar that says "CENSORED" over the action. The bar will never show up in the same place, or be the same size. Any time the censor bar is covering up anything sexy, you have to stop stroking. The game will end once the video reaches the end.
I'll probably create more Video Teases during open development if I think of some, but already you can see that Tease AI gives you a very wide variety of options of what's possible in scripts. So wide in fact, you may notice a potential problem - How are you supposed to keep track of what scripts you're set up for and which ones you're not? What if you download a bunch of scripts, but one script uses Hentai images and you don't have any, or a Video genre you don't have, or gets even more specific and uses Images with specific Local Image Tags? Once you have a lot of scripts, how are you supposed to keep 'em separated? We could call The Offspring and ask them - they'd probably know, but there's a much easier way. Tease AI will handle this process for you automatically - with zero additional effort required from scripters. Let's take a look at the Scripts tab in the settings menu:
The scripts tab allows you to see all the scripts you have at a glance, manually selecting and de-selecting each one you'd like the program to use. Tease AI looks at all the Commands in any given script, and automatically knows if a requirement needs to be listed, which it then displays in the requirements window. Scripters don't need to worry about this at all, Tease AI does it on its own. Furthermore, you can simply click the "Select Available" button, and Tease AI will automatically select the scripts you meet the requirements for, and de-select the ones you don't. The process couldn't be easier, so as a user you never have to worry about which one of your scripts you meet the requirements for and which ones you don't.
At this point, there's not really much more I can say about scripting. There's details that need to be expounded on for sure, but that can wait for a proper Tease AI Guide. With a week to go until the first public build, I'm going to focus on crunching to create additional content to launch with. I'll also be working on the Command and Filter Command guide, which I feel is the last essential piece of this overview series. In the meantime I'll gladly answer any questions or comments you have, otherwise - the countdown is on