Wednesday, November 27, 2013

Play Online!

Matrix Mole has kindly allowed Bad Sister to be hosted on AIFCommunity.org for web play. You'll notice on the right hand side a new "play online" feature. Clicking that will lead to a splash page where you can download the story file or play right from your browser. Unfortunately, because of the limitations of the javascript interpreter there are no images, therefore, several image-heavy descriptions have been revised.

Making AIF more accessible is, I feel, an important part of growing the community, so I encourage other authors to do the same. I know at least TADS and Inform 7 can compile to a web page, so it should be pretty easy. Myself, I found the entire process surprisingly easy to do.

Monday, November 25, 2013

Advanced Layered Clothing version 2

ALC version 2 fixes a minor bug related to stripping. It can be downloaded here.

Friday, November 22, 2013

Advanced Layered Clothing Released

Previously I had talked about Advanced Layered Clothing. I'm now unceremoniously kicking it out to the general public. All of my yammering self-promotion can be read in the post below.

You can download the zip file here.

Hanon Ondricek assisted with proof-reading and features and I want to thank him for his help and for putting up with me sending 3,000 versions of this.

Upcoming extension: Advanced Layered Clothing

For the past few weeks, I've been working on a new layered clothing for use with Simpler AIF, with very little spare time to actually work on any games. While Advanced Layered Clothing has been feature complete for a while, I keep thinking of things to add and change and, since then, it has become a major update to Simpler AIF as well. Overall, I'm pretty happy with Advanced Layered Clothing (or "ALC" as I affectionately call it), and, despite the name, ALC has proven very easy to use so far, as well as pretty easy to modify and customize so I'm pretty sure the community will like it too.

Over the past few days, I've been bug testing both ALC and Simpler AIF pretty extensively, catching quite a few bugs in the process. I'm pretty sure I've caught all the serious/embarrassing ones, still, ALC is quite large and complex and I'd bet there are a few I haven't caught even after release.

New Features of Simpler AIF

Simpler AIF (or SAIF) version 4 had a undocumented feature where you could customize the default library messages by using phrases. I never particularly liked this method and I've replaced it with an entirely new system. Now, all library messages are controlled by the "AIF message rules". Using rules rather than phrases gives the author a lot more flexibility. Such a rule might look a little like this:

AIF message for the can't lick your own pussy rule when the failer is Cersei: say "'Jaime, do I look like a contortionist to you?'"

SAIF now includes an index of customizable library messages that you can basically drop in the game and fill out as you desire, making it very easy to customize most of the extension's default messages.

Common body parts that were included as part of the "common body parts" plugin are incorporated in the core extension itself. By default, however, they aren't actually added to anyone in the game unless you paste in the relevant pieces of code, so they are still optional. What you get, however, is much better support for secondary body parts. For example, it was possible to lick your own tummy and legs in version 4, which has been fixed in version 5.

There are some more internal changes to Simpler AIF that might not be noticeable to most authors, notably a new action phase (the "redirect" phase) whose sole purpose is to redirect actions into different ones.

There are still some things I want to do with Simpler AIF before it is "complete". I would like to support tribadism and frotting, and I would like to generalize how body parts work (i.e. instead of a rule requiring "cock" it would require a "penile thing") to better support non-humans, but these features will be saved for a version 6.

Features in Advanced Layered Clothing

ALC has a clothing system that would be familiar to anyone who has played an AIF game. On the author's end, ALC is fairly simple to use but still has some advanced features.

ALC uses a body slot system (or "body areas") and works by comparing lists of covered areas with the associated areas of body parts. Neatly, ALC doesn't require the body parts to actually exist for you to test coverage (so you don't actually have to have a "feet" object to wear shoes, but you still test to see if the feet would be covered). It's pretty easy to add new garments and body parts. It is not so easy to add new body slots, but it is at least a labor-intensive rather than complex process.

ALC uses a variety of shorthand to make it easy to write prose about garments. For example, you can use the phrase "chest garment of A PERSON" to find the garment covering a person's chest. ALC also automatically sets an "obstructing garment" variable when it tests for accessibility, allowing you to write things like this:

...if Anna's breasts are not exposed, say "You rub Anna's breasts through [the obstructing garment]."

ALC includes three methods of opening a garment: unzipping, unbuttoning and shifting. There are two more I might add in future updates (tearing and unbuckling) but for right now these three are more than enough.

An updated version of SAIF's clothing set system as been adapted for ALC. This makes it easy to manage clothing, making it so characters don't make off with each other's clothes and making it easy to dress characters back up in their clothes.

Finally, and what I think is the coolest feature of ALC, are Automated Descriptions which handle character descriptions similar to how location descriptions are printed up.

Possible Future Extensions

Manageable AIF: Really more of a "lazy person's AIF" extension. Manageable AIF consolidates descriptions and the number of interactions down to as few as possible while still keeping scenes fully interactive, making writing a AIF scene much less work.

AIF Templates: Not really an extension but a collection of fully coded AIF scenes that could be dropped into a game and filled out pretty easily to make a fully fleshed-out interactive scene.

Sex Toys: Simpler AIF's handling of sex toys is poor and non-existent in ALC and it would make sense to move this to a new extension.

Arousal: I have a few ideas for an arousal system although they aren't fully fleshed out yet.

Positions: Again, I have a few ideas how to handle this although they aren't fully fleshed out yet.

So, do any of you have any ideas of what you'd like to see in an AIF extension?

EDIT: Update about Bad Sister

I wrote an imageless version of Bad Sister for play on browsers. It is ready to go except that it needs a host. If you have a server and wouldn't mind hosting it, please send me a line.

Monday, November 18, 2013

Inform 7 Headaches

I love inform 7. But sometimes I want to bash its head in.

I'm writing a demo game for my new layered clothing extension where there's a shirt and pants rack, and I want the player to appropriately put the right piece of clothing on the right rack by being able to type in "put X on rack" without typing "put X on the pants rack".

This appears to be a simple enough with a "does the player mean" rule...

DOES THE PLAYER MEAN PUTTING SOME PANTS ON THE PANT RACK: IT IS LIKELY.
DOES THE PLAYER MEAN PUTTING A SHIRT ON THE SHIRT RACK: IT IS LIKELY.

Normally, you'd think that would solve the problem, but oh no. No matter how much I manipulated the rules, the parser popping up with a disambiguation error, unable to know the appropriate place to put clothes. It took me about half an hour to figure out what was going on.

What I found out later was -- the putting it on action actually parses backwards, and in order to disambiguate the second noun, it couldn't refer to the first noun (which hasn't been clarified yet). So, it's literally impossible to make Inform understand PUT PANTS ON RACK if there are more than two racks in the room. However, you can make Inform understand PUT PANTS ON PANTS, which is nice but something I very much doubt my players will try.

So, I've tried many things to solve this issue... a supply a missing second noun activity, new understand rules, other, more obscure solutions, but it just seems to be impossible without deep knowledge of I6's parser, something which I don't have. The only real solution at this point is to consolidate my two racks into one.

It almost makes me wish I was using TADS 3. TADS 3 has an amazing parser that is extremely good at discerning the player's meaning through the verify routine. The verify routine checks if it is logical to do something, and discerns disambiguation by whatever the verify routine returns. This means that TADS 3 has essentially integrated its check and disambiguation systems together... its rather elegant and I am envious of it. Inform 7 would do well to borrow this concept from TADS just as TADS borrowed scenes from Inform 7.

Friday, November 8, 2013

Progress Report VIII

So, I took a bit of a break this week. And by "break", I mean I didn't fiddle around with the source code like I usually do, but I have still been writing. With the framework pretty much done, the remainder of the work is pretty much is just pounding out the story, events and content. That should take quite a while, so I'm thinking it might be another week before I do some actual coding.

I've been experimenting using Scrivener to plot out AIF. So far, I like it, but I'll blaze this trail a little further before I actually write about it.

No word count estimate this week (most of the writing is in an external document at this point.)

Tuesday, November 5, 2013

Another Wannabe's Laws of Using Character Descriptions

I. Pick three to four distinctive characteristics for each character. At least two of them must be something other than eye color and hair color.

These aren't the only physical characteristics of your character, but they will be the ones the reader will use to draw a rough picture in their mind of what the character looks like. Possibilities: a mole, some acne, stubble, square chin, long nose, weird ears, lanky arms, etc. Other parts of the body can be described but it is only these ones that "distinguish" this person from other people.

II. Repeatedly draw attention to these characteristics as the character does stuff, not just when writing an obligatory character description paragraph.

The player is likely to forget the distinctive features of characters. Therefore, you want to refer back them regularly. Have the character brush aside their black hair from their face, reach out with lanky arms, have their tits bounce as they jump, the sun reflect off their blue eyes, scratch a scar, and on and on. This is an efficient way to write, since it does multiple things a) makes characters a little more memorable b) bring attention to the NPC's mannerisms c) establishes a real physical presence for the NPC. Not only will this make your writing more interesting, but the reader will gradually get a strong idea of what they look like.

III. Drop the description when the player first meets the NPC.

Interactive Fiction has a unique advantage in that the reader can summon up a physical description when they examine the character. However, you still want to describe a new character, because it makes sense that you'd take an appraisal of someone as you meet them. It's annoying if the player is forced to examine a character just to find out what they look like.

IV. Don't use numbers in your description.

Exception: if the PC is the sort of person that would notice someone's measurements just by looking at them. Otherwise, it's weird if you list someone's bust or cup size when "large tits", "ample bosom", "narrow waist" etc would do the job just as well.

V. Efficient character descriptions are better than long and detailed ones.

Good writers are sentence multi-taskers and can do multiple things with fewer words. Take this example.

George is still youngish. He's still got cheeks plump with a bit of baby fat and a mop of unruly, brown hair. His face seems impressed with child-like wonder combined with newly-found adolescent cynicism. At least, he kinda does when he wears his glasses. He has blue eyes.
 Compare it with this:

George still has cheeks plump with baby fat and a mop of unruly, brown hair. His blue eyes carry, in equal measure, innocence and newly-found adolescent cynicism. At least he kinda does when he wears his glasses.
As you can see, the second paragraph deletes both what is implied (George's youth is implied by his cheeks with baby fat) and combines what is necessary (the sentence about his eyes into the paragraph about his expression).

VI. Go forth and write AIF.

Not technically a law of using character descriptions, but all the same. Write more AIF.

Friday, November 1, 2013

Progress Report VII


Here's a bit of a teaser for the interface. I think it's going to be a lot easier to see what's going on now.

Not much to say really. A few days into the beta and I think it's going very well. I've gotten a lot of useful feedback.

Summary

The slog of game mechanics continues, but the end is in sight. For a break, I wrote some more of the actual story. I'm not going to post the usual percentage because I just don't feel like it this week.


Total Word Count: 80379 (up 9295 this week from 71084)