AIF Library Comparison - Sir Gareth vs. NewKid

As most of the people familiar with my games already know, I am a big fan of NewKid's Chick.t TADS 2 library. Recently, however, I was able to participate in co-authoring a game with Chris Cole and helping answer TADS-related questions for another author creating another game. Both of these games used Sir Gareth's sex.t library. After working on these games, I decided to compare the two libraries for the benefit of any future or current authors out there wondering about them. For anyone interested in using either of these libraries, they are available on my files page.

First off, a couple caveats: The following is a representation of my own personal opinion regarding these two libraries. I do not consider myself an expert in using either library, and there may easily be nuances and options that I have missed or mis-used. This is just meant as a "big picture" guide to using these libraries.

Also, the below assumes you use each library "out-of-the-box". Any TADS programmer can modify each library extensively so that the two are indistinguishable. I have written this guide with the assumption that minimal modification is required. (Obviously, some modification is required such as inserting your own descriptions, and choosing the articles of clothing each NPC wears.)

Ease of Use

I have had little difficulty in using either library, but I believe that Sir Gareth's Sex.t is laid out a little easier for the newbie. Some examples of why I believe this are:

Documentation

I have to apologize to Sir Gareth here. I had previously said that Sex.t comes with no documentation other than in-line code comments. This may have been true of version 1.02 of the library, but the latest version, v1.04, also has a README.TXT file explaining the library. However, I still have to give the edge to Chick.t. Chick.t comes with a manual.htm which outlines his library and the various options. The code is also fully documented in-code, just as Sex.t. NewKid also includes some tips for writers in how to write AIF and IF in general. This is very useful to the new writer, and an excellent source for writers regardless of which library you use.

Features

This is a big one, for me. This section is about what features each library offers: Can you use objects? Does it support layered clothing, and how extensive is the support? What type and how many body parts are supported? To me the two libraries offer virtually the same features, plus or minus on both sides. It basically comes down to one difference: While some of NewKid's features are a little more difficult to implement, it is because they offer a little more flexibility and power. If you want ease of use, go with Sex.t. If you want more control, go with Chick.t.

NPC Interactivity - Both libraries allow you to extensively customize the NPCs with responses to actions. Chick.t offers a few more default responses, but nothing really major. Both libraries allow you to decide which verbs your NPC will respond to. While the Sex.t method is a little easier to use, Chick.t offers more flexibility. With Sex.t, it is an on/off type of set up. Either the NPC will respond to "sit", or won't, for example. Chick.t allows this to be variable depending upon conditions you specify. For example, your NPC will sit in the chair, but won't sit on the floor. Or, you can set it up that your NPC won't sit at all unless the PC is wearing the hypnotic amulet. Both libraries allow you to set up NPC daemon's for automatic actions by your NPC, whether the NPC initiates his/her own sex acts, or just random atmospheric messages. Note: I find NewKid's methodology easier to use, but it is a personal preference. I can't really point to anything concrete about it that is better or easier.

Chick.t does make use of the Chatter.t library written by Suzanne Skinner. This adds a whole bunch of benefits from using that library to increase the conversational capabilities of your NPC, as well as adding such things as information resources (see the tome in "The Backlot").

Type of NPC's - There is a clear winner here: Sex.t. It allows for either a male or female lead (PC), with male or female NPCs. Chick.t is strictly a male lead with female NPCs type of library. You could modify it to allow for male NPCs and a female lead, but it would require extensive rewrites. However, if the game you are creating doesn't require a female lead, or sexually active male NPCs, then both libraries are otherwise the same.

Use of objects - Both libraries allow you to use objects such as dildos and vibrators. I found Sir Gareth's methodology a little easier and more intuitive than NewKid's in this area.

One part of Sex.t that I absolutely loved was the watchedActor class. The watchedActor class is one that can be seen from another room, and even spoken with. A classic example of this is the security camera scenario, where you are at the monitoring station and your NPC is in a cell or monitored room.

One concept that Chick.t makes easy is dancing with/for your partner. This can either be a romantic dance, the two of you swaying to soft music, or something more raunchy like a striptease or lapdance. It is just as easy to set up as any other interactions in the game.

Style

Arousal system - both libraries use an arousal system, but they are implemented in diametrically opposed manners. The arousal method in Sex.t is a slow build-up over time, where you can perform the same action, or multiple actions, that each build-up your partner's arousal until it passes a specific point at which climax is achieved. Chick.t uses a sort-of one-shot, cut-scene method where you perform an action and it increases your partner's arousal, but duplicating that action will not increase the arousal anymore. I think the choice between them is something each author has to decide, as it is more of a philosophical difference than a programming one. The methods by which each arousal is increased is also different. Chick.t allows the author to precisely decide when and where the arousal will take place by putting in your Chick.arouse functions where you want. With Sex.t, it is an automatic function. You set your toucharouse variable (for example), and the code takes care of the rest.

This does lead to something that I found slightly annoying. Let's take the case of a shy girl who will touch herself in certain areas, but not others, but will allow you to touch her. In any case, her touchmsg is triggered where you can set up a statement that lets you specify a message of "You touch her and she likes it" and "She blushes and doesn't want to do that". However, triggering her touchmsg also triggers her arousal unless you take extra pains to prevent it. This means you could possibly get the situation of receiving this message "She blushes and doesn't want to do that. 'Oh, oh, OH!' she cries as she orgasms". It is a little extra work, and I found it slightly annoying, but it isn't a major detraction from Sir Gareth's library.

Clothing - Both libraries allow for a very extensive list of layered clothing such as bras, panties, shorts, skirts, dresses, teddies, etc. They automatically keep track of what is worn under what, and won't allow you, for example, to wear your underwear over your jeans. They also have a built-in prevention for letting girls wear each other's clothing. Sex.t can allow this by making the clothing the same "size" (a variable you set for the clothing), but Chick.t is a little more adamant about this. Out of the box, both will automatically list what clothing items your NPC is wearing, and automatically adjust that description as you remove/add items. Chick.t automatically includes a description of appearing body parts, while Sex.t doesn't (other than a generic "She is completely naked"). On the other hand, Sex.t does provide complete control over what is listed and what isn't, so it isn't all that difficult to change this.

Body parts - Both libraries allow for a very extensive list of body parts, although only Sex.t includes male NPC body parts. Chick.t's default list is a little more thorough, including lips, hair, etc. Chick.t also offers a much more comprehensive list of body part synonyms than Sex.t, although each adequately covers the usual word lists. Using both libraries, I was able to add in some non-usual body parts (such as feet and hands) without any trouble.

Bugs

Yes, even though both sets of libraries are mature and well-made, I did discover some bugs in each set. Most were very minor. I have to give the nod to Sir Gareth in this department, as I found his library to be almost completely bug free. The only bug I found had to do with the watchedActor class. Even if you set the actor so that you cannot talk to him/her, he/she will still respond to commands. You could also claim that the annoying auto-arousal situation I described above is a bug, but it is really a sort-of logic problem, not a real bug. What I mean is that it is something that I wished worked differently, not a problem where it is working incorrectly.

Sad to say, and I hope that NewKid will forgive me, but the same cannot be said for NewKid's library. There is at least one bug that will give you a glaring TADS runtime error. This has to do with the lead character's clothing. If you attempt to drop it, you get a big, old error. I created a patch that corrects this problem. There is also a minor problem in the description of one of his clothing types. The good news is that his new Chick3.t was completely free of these bugs in the version that I beta-tested.

Final Thoughts

So, which do I recommend? Well, I really can't recommend either one. Or, rather, I should say that I recommend both of them. They are both very well done, powerful libraries. I personally prefer NewKid's library because it suits my writing style, and I found it easier to customize it to my needs. However, if you just wanted something to plug in sex descriptions, you may find Sir Gareth's lib more suited. You, as a writer, should make your determination based upon your needs. The only definite recommendation I can make is that if you want to do a female lead character, then you need Sir Gareth's library.

For a more thorough review of each library, including examples allowing you to write a complete short game, take a look at my TADS 2 AIF Tutorial, available on my files page.