Design and documentation journal for my interactive fiction (text games); also reviews and other miscellaneous stuff.

Friday, December 11, 2009

FTA Update

Busy few weeks, with the holiday and all. I'm not feeling inclined to do much programming, so I've been trying to figure out how to implement some larger systems, and occasionally doing some research, like how long a bar of soap might last someone, or what conditions make seeds less viable. Stuff that may or may not make it in, but stuff I think is interesting to know.

I don't think I'll be working on a game for the jayisgames comp - right now I'm pretty overwhelmed with real life stuff, and the one idea I had that I liked requires some significant research to pull off properly. I did have a second idea for a zombie game in a science lab, where you have to combine chemicals to kill the zombies, but the implementation thing pretty much killed the game before I got started. Besides, since zombies don't breathe, most of the reactions I was considering were explosions. Cool, but not what I had in mind. Maybe I'll resurrect the idea at a later date.

Trying to figure out equations for the variables for plants and how they contribute to real life conditions is killing me. I'll probably only be implementing these slowly, but it would be nice to have a goal to work toward. I really need to go back over my statistics books and look at the equations - I think there's some helpful stuff in there, even if I don't include them directly.

My first seed catalogs have been coming in, too, so I've been scanning them, trying to glean potential alleles to include. The Fedco seed catalog has a pretty helpful potato primer - critical variables, including taste, plus a nice table of which varieties have what.

Last, but not least, my "idea" document has gotten really unwieldy, as it's split between several different files and some handwritten notes, with no real order, so I plan to type and reorganize (and upload) it at some point soon.

Monday, November 16, 2009

Weight and Volume

I did some basic weight and volume stuff earlier, based on Eric Eve's Bulk Limiter. I have fixed a few things, upgraded bulk from being a number to being a volume, and added some very boring default messages.

Eventually, I suppose I'll tweak the default messages when the player lifts something very heavy, or picks something up close to her endurance capacity, or maybe add bits where the player drops something, but mostly that's fluff.

Currently, strength is set at 25 kg. That seems okay to begin with - I may even set it a little lower originally. How much can a out-of-shape person carry? I can certainly shift 60 pounds, but I'd be hard pressed to carry it far. (I'm more of a "roll this thing end over end" person anyway.) On the other hand, with a proper pack, I can carry 30-40 lbs for quite a distance. Anyway, I can look up upper-tier numbers for backpackers and what-not later, when I start working on attributes.

How much volume one can swing around is something else entirely, partly because it's based so strongly on distribution. Properly packed and distributed, I can imagine carrying a lot of volume. 500 liters isn't unimaginable, given the use of straps and packs and a light, balanceable weight. On the other hand, 10 bushels seems pretty high, and that's only a fraction of 500 liters. I think I settled for about 10 bushels, assuming most of the stuff the player will be hauling will be heavy enough to prevent abuse. I may have to tweak it down quite a bit, though - for regular items, I can only imagine myself handling maybe a bushel or two on my back, and carrying another 3-4 in my arms.

Also, there's the question of containment - an armful of leaves may only be a cubic foot or two, but you can't just take another one. (A good reason for wheelbarrows and things.)

Still, a simulation has to stop somewhere, and this is it for now. Maybe I'll revisit this if I implement wheelbarrows (which I intend to do, eventually, but it's a helpmeet and not a fundamental requirement, so it's on the back shelf.)

Psychic Controllers

There's a review up of a controller that works via thought patterns. Ooooh.

Now, I am a realist. I know that when Peter Molyneux predicts AI that's dynamic and awesome and changeable, he's lying through his teeth. I know when Bioware claims a dark fantasy world that it will be a generic fantasy world. I have played a virtual reality game (back in the earliest days of such things). I know that robots will not replace human beings for a long, long, long, long time if ever, and their "intelligence" is a complicated fraud. A cool fraud, but not actual intelligence.

And I know that there's got to be serious drawbacks with this thing.

Nevertheless - how awesome is that? Even better, they *claim* the device detects your emotional state (from bored to excited - nothing is said of fear, or surprise). The possibilities there are kind of staggering. I'm not about to shell out $300 for one - I assume this is a pretty crude device, and I prefer third-fourth generation devices, preferably after the price point has dropped - but it's interesting to think about programming a game where you have access to someone's emotional status. If the game could somehow sense the mingled resentment and rage when I hit a maze section, and offer me a way around it? If it could tell what elements (or at least scenarios) were emotionally satisfying (or at least not mind-rendingly boring)? That would be really cool.

Now I'd guess that this device isn't there yet, despite reports. Nevertheless, very interesting.

Saturday, November 14, 2009

Food and measuring food

Looks like the time vs. time of day typo really was the big issue. The lesson of this story: never blame other people before checking over your own work very, very carefully. And don't leap to conclusions about what's broken - it's likely something very silly.

I can't quite wrap my head around how I want to do hunger yet. A lot of animals, especially grazing animals, seem to eat a lot. That is, they'll kind of hang out and nibble for a lot of hours. So they need regular access to food, and aren't going to eat the few pounds of hay/grass in one minute-long turn.

I'm tempted to say that the sheep will need access to adequately nutritious pasture for a certain number of hours a day, or they'll need a certain quantity of supplemental feed (probably in the barn). This gets a little dicey, since it requires looking at some hard numbers and deciding how I'm going to handle weights and measures and stuff. Since I don't quite have that crystallized, I'm going to work on some other stuff for now.

Before I handle harvest-type things, I need to set up a basic weights and measures system. I've got the most basic weight and volume set-up now, but it's not up to handling hay harvest, much less apple harvest. Part of the difficulty I'm having is that the measures are radically different across the world, plus there's some weird farm measures, like bushels.

I considered breaking this down to "meal-units" - the amount of food a person would reasonably eat in a sitting - but I think that's too vague and variable. Some of the factors I'm juggling:
Storage - Assuming the player will set aside space for storage of foods for both people and animals, what does that look like? What's a bushel of wheat vs. a sack of wheat flour vs. a "pile" of hay? (How big is a ton of hay, anyway?)
Quality - high quality hay has more nutritional value than low quality hay, and in real life, an animal fed high quality hay will eat less of it, and/or require less supplemental feeding
Carriable/describle quantities - I want the character to be able to visualize and handle the quantities of food we're talking about, without fine tuning. So not "You feed 2.5 grams of wheat to the chicken. She's thrilled!" but "You scatter a handful of grain for the flock." How much hay does a sheep eat a day? An armful? A flake? Half that? Would there even be hay flakes if there's no baler?
Different kinds of foods and equivalencies - does it matter if you give chickens cracked corn vs. wheat? What about sheep on turnips rather than alfalfa?
Calories - I'm not planning on handling detailed caloric intake for the animals - probably just quantity of certain foods - but I am considering it for people-food. Eating three solid meals of spinach a day is not the same as eating three solid meals of bread and cheese. Basically, this is an extension of food equivalencies.

A lot of these issues are solved for animals if I can figure out pasturization. On the other hand, I can't assume players won't try grain-only diets for the sheep, so there needs to be some back-up systems in place. I'm not really sure how to program the different factors, so I'm setting it aside for now while I turn over different possibilities. I think if I have a clear conception of where that piece needs to go, it won't be too ugly to slot it in a bit later.

Friday, November 13, 2009

Compiler breaking is fun!

So just got through the first major slog-through of code - basically commenting out everything piece by piece until it worked, and then adding code back in piece by piece until it doesn't.

Since a lot of stuff is interrelated, that involved sorting out stuff individually.

I just found my majorly broken piece. (Apparently - hopefully - the only majorly broken piece.) Surprisingly, the nomenclature stuff didn't seem to be the gamebreaker. Nor did any of the other stuff I was deeply concerned about.

Want to know what was? Here's the smallest 'game' that will break Inform.

"test" by Gravel

Month is a number that varies.
Day is a number that varies.

Ovine Estrus is a recurring scene. Ovine Estrus begins when Month is 11 and day is 1 and time of day is 12:00 AM. Ovine Estrus ends when Month is 1 and day is 30 and time is 12:00 AM.

Testing room is a room.

That's it. Did you catch the typo? It's time vs. time of day. (The one that restores sanity is time of day.) Now, I know that names of things are important, but I would have expected an error thrown here, rather than a complete code shut-down. Inform does use "time" as something separate, in a way I think I understand but haven't worked with (i.e. "At the time when the sheep goes to sleep . . .").

Anyway, it's kind of nice to have the first major bug quashed. The code above worked fine with the previous version, and the change isn't mentioned in the documentation, so I'm glad to have that sorted out. Now I need to decide what to tackle next. There's sort of a lot of basic issues - the sheep get hungry and sort of fake eating if they have access to food, but it's pretty raw - for instance, the food never disappears, and the pasture magically has food for infinite sheep from spring to the end of fall. And sheep don't die except if I explicitly kill them - and even then, they vanish without a trace of a corpse. So, yeah. Good times.

Tuesday, November 10, 2009

Dragon Age Musing

In high school, I read about three paragraphs of Nietzsche. This qualified me to talk grandly about how silly people were, and how much more I understood the darkness of human nature. This was bullshit, and I probably even knew it at the time. But the dark, angsty teen poetry was darker than the world that Bioware has put together. Let's be clear: despite their ads and age restricted website and insistence that Dragon Age is set in a dark fantasy world, this is an utterly generic bog-standard fantasy world, cribbed from Tolkien and back issues of Dungeons and Dragons magazines. And not the non-standard campaigns, either.

The world has some nice finishing touches, and it's fairly well imagined. The denizens of the world feel far more well-imagined and individualized than any of the characters from Oblivion, and Bioware's NPC's appear to have genuine personalities, and several of them are quite funny. (Not as funny as The Witcher, but above par for RPGs.) Combat kind of sucks, and trying to get your entire party to act the way you want is a grueling task.

I don't care one way or another about including inter-party romance, but I am pleased to find both m/m and f/f options. And if the main m/m romance option (I'm not sure if there are others) is a bit stereotypical - your potential lover is a bisexual elf who grew up in a whorehouse, makes it clear he'd bed anyone with the least incentive, and the achievement unlocked is named "Easy Lover" - I did find him one of the most enjoyable party members, and at least his combat is not fundamentally broken, the way it seems to be for some of the other characters.

It's a good game, but there's some serious misses that standout because the majority of the design is so solid. And I really, really wish we could get two inches away from this faux medieval Britain/Europe thing. I have nothing against Tolkien, but a *little* originality wouldn't kill us, right, game designers? RIGHT? (To be fair, I was obscenely grateful when I got out of the introduction to my character without triggering my most hated trope - where you go hunting and return to find your village burned to the ground.)

Procrastinating

Coding's ground to a halt on FTA, largely because I'm afraid to delve into the Issues. I'm not sure where things went wrong, or how to deal with them - there's at least a half dozen potentially fatal flaws, and how do I cope with that?

What I ought to be doing is other things, to keep my hand in, but I'm not. I am playing a spectacular amount of Dragon Age, though.

Wednesday, November 4, 2009

Horror Musings

Horror is one of the few genres in IF that is done reasonably frequently. There's been a couple large, fully realized Lovecraft-type games in the past few years, and a reasonable number of smaller ones, some more successful than others.
I've been looking a horror IF recently in comparison to the sorts of sub-genres we see in horror movies and books, trying to think about what might work and what probably won't.

Slasher movies - rely strongly on building a cast of characters and killing them off, usually with the big reveal that one of them is the murderer. I don't think IF is really the right medium for this sort of thing - let's face it, characterization isn't easy, and timing the events would be a giant pain in the neck. It might work as a walk-through, but I have a hard time imagining this working well. Part of this is that I think IF can do atmosphere building well, but not so much the big reveal. Gore is appalling because it's visceral; the kind of writing needed to get across jetting arterial blood requires a deft hand. (And then implementation when the player tries to DRINK BLOOD and TOUCH BLOOD and DRAW PICTURES WITH BLOOD.) So what I can imagine working: the PC returning home and finding blood tracking through the house and unmentionable horrors upstairs. What I can't imagine working: the traditional run through the woods with the madman after you. In other words, anticipation rather than fulfillment.

Supernatural - there's a fair amount of ghouls and ghosts in IF, perhaps because the ritual is something to enact. From a traditional IF standpoint, puzzles can tie in well to the cleansing of a ghostly presence. First you have to find the bell, book, and candle, and then you have to find the ritual, and then ...
This is something King of Shreds and Patches did well at, although towards the end, it got a little heavy-handed. This is a pretty specific sort of supernatural horror; I haven't played anything similar to Korean/Japanese supernatural films, which I think would also work well for this sort of thing. In a lot of the East Asian horror I've watched (not that I've watched a ton), horror intrudes into everyday life through ordinary things that become sinister. You go to turn on the tap, and it keeps running, and suddenly there's hair in the sink, lots of hair, and the water is spilling onto the floor, and it's cold and something is breathing down your neck. Or it's the static on TV, or the ringing of your cell phone. Whatever the intrusion is, it starts out small and creepy, and comes to dominate. This doesn't have to be quiet horror - Uzumaki does it with the most innocuous thing imaginable - a swirl shape. In fact, I think Uzumaki the movie might have been a better IF.

Creature Feature - in creature films where the creature is only out for blood, there's the same problem as slasher flicks. What has potential are the films where the protagonist is the beast, and is being subsumed by it.

Sunday, October 25, 2009

Modeling Fruit Trees

I currently have a separate space set aside for the Orchard, and plan to prevent the deliberate seeding of trees in fields or gardens. I hope to figure out workarounds, but there's kind of a lot of issues with planting trees, especially fruit trees, amongst annual crops. Mature fruit trees are going to shade out most vegetables, for one thing - also, their root systems are shallow, so limiting plowing and stuff becomes a real headache.

On the other hand, there's significant benefits to planting trees in pasture - the trees provide shade and shelter, and provide food, and grass will grow under them. On the other hand, I don't really want players taking the orchard and pasture as the same place, so there need to be limits there, too.

There might also be clever players who try to establish fruit trees in the wild, and that should be difficult, but possible, at lest for the heartier species/cultivars. Not everywhere, though, and not too many. And, of course, there are wild food trees as well.

Anyway, until I figure that mess out, I will be restricting fruit trees to fruit-tree-approved locations - namely, a section I am calling the Orchard. My original plan was to divide the Orchard up into several rooms, and allow the player to plant up to 9 trees a room. I was thinking of this as a quantity of trees that's generous but not overwhelming, and a mental space that I can clearly visualize.

I haven't started coding the Orchard yet, partly because I'm not convinced of the wisdom of this implementation.

One problem I'm having is the artificial restriction. Unlike rows, where you can run out of space convincingly, tree planting is more of an art. Sure, the books say you should plant large trees (standard apples, nut, peaches, sweet cherries) 30-35' apart. But homeowners don't, and the character (someone with limited gardening experience, scrabbling for survival) might not, either. Plus, there's smaller trees, like plums, that might not take up that much space (20', assuming a bigger rootstock). So you might expect 16 smaller trees to fit comfortably in the same space as 9 larger trees - and, of course, the player is not planting mature trees - only saplings.

So I'm considering the benefits/disadvantages of faking a square footage thing. That is, every room has square footage X (hidden from the player). That can be taken up by a variety of perennial crops - maybe the player wants a few acres of raspberries! A tree takes up a set amount of space (which I'm probably going to declare as a block, even though it's more of a circle area.) You can plant without problem until the available square footage is taken. Then the player may get a warning that continuing to plant will overcrowd the saplings, or maybe there's a warning in the description somewhere. The player can continue to plant, crowding the trees more and more tightly (with more and more adverse consequences along the way).

This would be mildly more difficult, but not that much more difficult, than individual tree spots. It would take away some of the clear vision of the space - I think vivid descriptors, perhaps even location descriptors, would be vital. Something like "A row of raspberry bushes grows against the wall, bracketed by a pair of plums and an apple in full flower. A young cherry is still holding onto the last of its blooms." rather than "You see a row of raspberries, two apple trees, two plum trees, and a cherry tree."

I don't think I'd want much more than that - nine apples is pushing it, and sixteen plums definitely would be, for a dynamically generated description. That description is 3500 square feet plus the raspberries (maybe another 200 sq ft?) - if I could push it to 4400, I could call each room a tenth acre. (In my head, if not in the game.) It might also allow for row implementation if I wanted - that is, I could "make" short rows take a certain amount of space as well, so the player could grow corn between apples if she wanted to. Not a good idea in my opinion, but feasible? Maybe. And it might allow for tree planting elsewhere if I wanted. Maybe even a better overall space management allocation? Hmmm . . .

I don't really want to get into exact measurements with the player, partly because I think distances are not a helpful way for most people to imagine space, and partly because I think it encourages powerplay behavior. (And there's more than enough of that encouragement in-game already, as far as I'm concerned.) Plus, there's the whole metric/imperial thing.

Saturday, October 24, 2009

Weight and Volume Extension

Finished first draft of a weight and volume extension last night. It is currently strongly based on Eric Eve's Bulk Limiter. That is, the volume piece is currently cribbed from it, and the weight piece is an easy amalgam of that and the weight stuff in the new version of Inform 7.

Here's how the weight stuff works now:
- Every thing has a weight called mass, which is how much it weighs. (WOW!)
- Weight is currently handled in kg, but can be printed in lbs, which is how I generally think of things, so is helpful to me, while maintaining the deliciously natural internal logic of the metric system.
- Every container and every player has a weight called strength, which is how much it can hold. Anything over than that is refused using the blandest reply ever.

Here's what I want to consider:
- I don't think there's much advantage to handling density, but I certainly could, especially if I get an idea of how much volume one "bulk" is. The only thing I can think of is whether something sinks or floats when you throw it in water, which is interesting, but maybe not a gameplay necessity. Anyway, it should be a fairly easy thing if I decide to use it.
- I expect furniture will be made of materials - almost exclusively wood. It might be nice to model basic size and strength for supporters.
- Ways to manipulate heavy things. So you can't lift a log, but can you roll it? You can't lift an animal - can you push it instead?
- Strain limits. I can pack 50 lbs in my backpack, but the odds the bottom will tear out increase pretty dramatically. I can carry that pack around all day, but it will get more challenging, and my back will hurt tomorrow, and I'll be sore. Also, I might wrench a muscle or something.
- Things of near-negligible weight and size. Mostly these will be handled by bundling them together (a handful of feathers still has negligible weight but noticeable volume), but I should keep an eye out for exceptions.

Friday, October 23, 2009

Dear Inform, why do you hate me?

So after I updated Inform 7, I had to go in and redo all the nomenclature stuff. No problem - boring but solvable. Well, I got that patched up, plus another few things it was unhappy about, and then it compiled . . . and gave me an error page without any information.

That is, it's the "This really should have worked, but didn't" page. ARGH.

So I spent a solid day putting the game through the compiler piece by piece, and I can't figure out what's wrong with my code. It's pulling some really wonky stuff with the "this line is misaligned" errors, so I commented those out, and then it went right back to "This really should have worked but didn't," but in a very strange spot. At which point, I double checked my extensions.

And while there's a note on the Inform 7 website that Dynamic Objects works with the *last* version of Inform 7, there's no note that says it works with *this* version, and neither Dynamic Tables nor Dynamic Objects has been updated since the last release date. If it doesn't work, I am completely fucked, because pretty much all my code depends on it.

FUCK.

Thursday, October 22, 2009

Nomenclature finished!

Got all the names sort appropriately. There's a lot of very strange things people name children. There were a lot of gigglicious moments.

I have a couple concerns with the list I have:

- I may have inadvertently skewed the names towards European names, since those are the ones I encounter more and type more, and so find easier to type correctly.

- The list itself is inadvertently skewed towards Western names, given the time periods I used, and that the names weren't a random sampling - only the top 1,000, so names from small groups are bound to be left out. I don't remember seeing any Vietnamese or Thai names, and only a couple of Korean names. Japanese names have minimal representation.

- I left in a fair number of names I'd feel queasy about using for people. I mean, at some point, Commodore was a popular enough boy's name to make it on the list. I'm a little uncomfortable with the gender binary here. There were an amusing number of names that I'd tag feminine on the male names list, but since there can't be duplicates, I took them off. So there's no Rose, Marian, Ethel, or Edith in the male names list. On the other hand, I left a lot of the action names, job names, and war hero names on the male list. I may go back and change that. On the other hand, I kind of love the idea of having ram named Napoleon or Admiral.

I'm changing the instances to where the code picks names to use variables, rather than hard numbers, so it'll be easier to update the list numbers when I add/remove names.
(So instead of saying "Let R be a random number from 1 to 1000 . . ." I say "Let R be a random number from 1 to numberoffemalenames . . .")

It should clear up issues down the line. I hope. It's kind of hard to plan ahead, since I'm still figuring out Inform's little quirks. Stuff I think should work *awesomely* doesn't.

Modeling Plants

One of the tough things about plants is there's just too much to model. So I've got to decide how to do some basic divisions, and which features will add the most without being a complete deal-breaker in terms of coding.

Here's how I'm considering modeling annual vegetable crops now:
There's an object called a row - each row can be planted independently, although I don't think I will implement half rows and quarter rows. I am considering two row lengths: short ones for the garden, where most of the vegetables will be grown, and long ones for the larger fields, where I expect players will grow grain. (Pasture grasses are going to be modeled relatively shallowly, and since very different concerns are at stake, that will all be handled by a pasture object.)

Each row will store values for its particular growing conditions: soil fertility, friability, pest levels, weed levels, etc. At intervals, probably every hour, the row will update the growing conditions for the plants growing there - whether there's been more water or more sun, if there's a frost. (I expect to do this with a relation (growing in), but I'm fuzzy on relations now, so I have to experiment. I'm hoping something like "Repeat with R going through all rows: if a crop plant is growing in the row, blahblahblah" will work.)

The advantage to this over handling each plant individually is processor speed; plus, unless the player is trying to breed plants, there's no real benefit to treating each plant separately. Why would it matter if Tomato A or Tomato B dies? (In contrast, there may be a genuine loss if Bessie the cow dies but Pete the bull lives, rather than vice versa.) A player experimenting with different conditions will need to plant two rows of a plant to compare effects, but that seems like a small penalty to pay. Plus, the row can "fake" death of part of a row if necessary.

I'm hoping to get it so the player can address commands to either the row or the plants, and that I can get the parser to choose the right rows as necessary. I'll be limited the number of rows per screen, but it'll definitely be easier in the fields if ">WEED CORN" means the player spends a few hours pulling weeds, rather than getting a disambiguation like "Which corn do you mean: the corn, the corn, the corn, the corn, the corn, the corn, or the corn?" Playing with the parser is yet another thing I don't really get, so it'll be an interesting experience all round. I suspect it will be difficult to implement basically two actions from one command (>WEED [PLANT] vs. >WEED ROW), but if nothing else, I can implement a meta-command, like >WEED GARDEN.

Naturally, this brings up issues if the field is very weedy and large - there has to be a way to stop the action in the middle if the player gets hungry or injured or whatever. My, isn't that going to be fun? Still, there's got to be a way to do it. If Nethack can do it, I bet I can. Still, I think I might leave that aside, as that's going to be tricky meta-behavior, and will need to vary from action to action. That is, it's not just "Instead of doing something when the player is hungry:" behavior - I think I may need to classify actions into crucial and non-crucial, with crucial being ones that shouldn't be interrupted (ie cooking, going home) and non-crucial interruptable (sleeping, weeding, fishing, etc.). I do think the game shouldn't prevent the player from doing non-crucial things if she wants; sometimes it might be vital to get a field harvested before a storm, say, and the game would have a tough time predicting all those occasions.

Wednesday, October 21, 2009

Nomenclature updates

So, an update to the animal name debacle. Well, I guess it wasn't that bad - just a bunch of boring, boring work that's not quite done.

I was feeling strong this weekend, so I went into this handy excel sheet cribbed from Dan Meyers. I'm not sure how he extracted the data, but he has a solid 100 years of the top male and female names born in the US in one handy excel spreadsheet. Well, okay, semi-handy.

I basically did interval selection on the names, figuring that the difference between 1890 and 1891 would be pretty small, so I did each decade instead, from 1890 to 2000. Put all the names in one column, and filtered out the duplicates. As a result, I got 2500-odd male names that were semi-popular in the last 120 years, and 3500-odd female names. It's surprisingly interesting work going through them all, although I will be grateful when I'm done. I'm up to about name 1000 in each of them. Basically, what I'm doing is pulling out spellings I find difficult or confusing, names that are either completely off the wall or that are too close to another name I want (ie Brian vs Bryan vs Brion vs Bryon). Some of the silly names I'm leaving in, as I can imagine a sheep named Commander.

I'm less picky with the male names than the female ones, because the ratio of male:female names is likely to be pretty low amongst farm animals, and so the player will be typing them less often. We'll see how the numbers come out; I'm hoping for 1,000-1,500 for the females, and about 1,000 for the males.

I did look at replacing the nomenclature values with indexed text, but it got kind of ugly pretty quickly. Since there's a rename option, I'm not too worried. The players will give up the ability to name all their chickens "SOUP", but so be it. I am planning on keeping a list of gender neutral names for insertion later, so there's a chance of a silly name somewhere along the way. Actually, there's plenty of human names that are plenty funny as is (Armani got cut, I'm afraid), and others that are funny in context (a ram named Byron? WIN.)

I've made a note to play with using these as external files, so people can tweak their own, but I think that will wait until I'm in a mood for frustration.

Monday, October 19, 2009

A word on betas

I've been reading a lot of reviews of games where people say things like "the betas must be good at puzzles" or "the betas must not have gotten this far" or something along those lines. In my (very very limited) experience as a beta, just because you complain or point something out or create funny little stories pointing out how something needs to be fixed does not necessarily mean that it's going to be fixed.

Often authors are too far along to do the rewrite they need to, or too caught up (even with betas) to embrace the need to better clue puzzles. So, sure, it *could* be the betas' fault, but it could also be, you know, the person who wrote the story. I'm not sure that it's at all kosher to point out that I *noticed* and *warned* the author about some of the bad stuff in reviews, so I just want to say, generally speaking, please don't assume it's my fault.

It's true for my games, assuming I ever complete them, too. I put the stuff in, misspelled or incoherent or unplayable, and I'm responsible for that.

There's no doubt that betas can make games much, much better, but it the author isn't willing or able, then the best beta in the world isn't going to help. I guess an argument could be made that the best beta in the world would be able to eloquently show the author the error of her ways, but ultimately I don't think of that as my job. I'm happy to make a case for something I feel strongly about, but I'm not a community spokesperson on the Importance of Grammar and Well-Hinted Puzzles.

Edit: Also, authors frequently just don't allow enough time for beta and fixing. It's well-nigh impossible to get a 2-hour competition game from beta to solid release in, say, a week, which is when some authors are ready to go. There needs to be plenty of time for adjustment, feedback, more adjustment, and then hopefully release to another set of fresh betas, and more tweaking.

Thursday, October 15, 2009

Dynamic Descriptions

Part of the challenge of trying to make a game that's going to be played over a long period of time is to keep the material fresh. Even in some of the shorter IF pieces, I've noticed that room descriptions can get stale; what to do when the player will probably see the same room description dozens of times throughout the story?

I'm toying with the idea of trying for semi-dynamic room descriptions - that is, some elements would be static (there's always a wall here, a house there), but mostly not. The game would pull together a description from various things - weather, time of day, player's physical/emotional state, what's in the location - and give a paragraph describing what the player notices.

Tricky to do in a way that feel fresh and coherent, but something to consider.

Thursday, October 8, 2009

Inform Update and Kind of Value (nomenclature)

I was so sure I had the latest version of Inform. Well, turns out I didn't. Downloading it broke my code big-time, and I'm not sure how to go from here.

Here's the issue:
Originally, I defined that animal names as a kind of value. Why? Well, partly incompetence, and partly because it seemed like a good idea at the time. The name values are defined in a Table of Names (I'm clever like that about naming stuff). The names were gleaned from the Social Security Administration, which apart from making sure people are using the right social security number, also publishes massive quantities of information about baby names. Great! I thought. An easy shortcut to having a significant number of animal names.

So I made a big list, with female gendered names at the beginning and male gendered names at the end, and called it a day. The last version of Inform handled this with aplomb.

Well, unfortunately, some names are used for both genders, and the current Inform doesn't want to add a value to a list of value when it's already defined. So it gets to the male names, finds Ashley, or Anton, or Armani, which apparently parents named their female babies this year, and freaks out.

The easy fix would be to remove/replace those names that conflict. Tedious. But at this point we're talking a tedious easy fix to a short-term solution.

I suspect that I would have been better off making names text originally, except I might run into trouble if the player wants to refer to the animal by name - I think that requires what Inform calls "indexed text" and what I call "WTF text." I have had real issues getting indexed text to work properly for me on the few occasions I've used it, and it edges dangerously close to rules I'm not comfortable with - a lot of that fiddly stuff is still in Inform 6 or something. (Hey, I remember why I made names a new kind of value now, and it wasn't pure laziness. It was fear. See, this is why I need to keep development notes.)

The other downside is pure laziness - I have to find a way to put double quotes around all those names. (Right now, there's ~2,000, plus the names of wild animals.)

Also, there's a bunch of names that are essentially nonsense. I need to weed out the names that are tough to spell. I love the idea of having a cow called Anastasia, but I'm not typing "milk Anastasia" twice a day. So I need to:
- figure out what I'm going to do. I could put mixed gender and generic animal names in a neutral gender section in the middle of the list, and allow either gender to pick from them, or I could eliminate the gender that doesn't seem "right" to me, or some of both. (Armani is not a girl's name in my game.)
- weed out all the difficult to type names
- weed out all the names I *hate*
- look at the longer ones and make sure they're names I can type and would be willing to type
- find replacements for the names I removed

This is not what I want to be doing right now, so I'm wondering how I can shelve it for later. Some days I feel like fiddly stuff, other days . . . not so much.

Tuesday, October 6, 2009

IF Comp 09: The Hangover

So same spiel as last time: here be spoilers, and there's no cut, because Blogger is evil and I am more interested in playing IF now than foiling the evil that is Blogger.

Right now I'm mostly posting comments as I go, and I'll write up more formal reviews of the ones I think deserve them.

So, unless you want spoilers for Hangover, which is "the story of you," you better get going. I mean, you wouldn't want to spoil yourself about you now, would you?

------------------------- Fake Cut! -----------------------------------------
Start : 8:57 PM

I was semi-interested in this first intro sentence. I mean, the story of me! Sweet! Except "You awake in your apartment with an unknown women and your bank informing you that you changed your name last night."

I've never woken to a bank in my apartment before, nor have I ever had an account with a bank open past 4:45, so this seems a little implausible. And I can't imagine the contortions I'd have to go through to change a name on my account. Or maybe I filed a change of name form with the government last night. It's unclear. Guess I better play the game and find out!

The game provides no intro text - it literally dumps you in, and smugly tells you pushing enter (to get to something that isn't a title) doesn't work. I'm chalking this up to ADRIFT, which I haven't used before. Dear ADRIFT: You suck.

First paragraph has rampant punctuation, spelling, and grammar issues ("your west"? Really, game?). This is the second game that has had issues with basic English competence in the first few lines. It's hard for me to believe that a game is bug-free if it doesn't look like anyone has bothered to read over the descriptions once or twice. (Okay, not everyone catches comma splices and its/it's errors. But "ill-loking bed" makes no sense.)

My robe is "so wretched George Carlin would faint." I know George only from his youtube video about the words you can't say. Did he have a bit about bathrobes?

Examining the bed brings up the delightful sentence "I'm pitty you for the sole fact that you actually sleep there." This makes me strongly suspect Red Conine is an ESL speaker, which makes me feel bad for being so mean about the language issues. Then not so bad, because if you wrote something in a foreign language, wouldn't you run it by a native speaker or two before releasing it? Regardless, I promise I won't poke fun too much at the English errors unless they're very very funny. Or I get really angry.

Your bathrobe is in the room description, even after you pick it up and put it on. Sigh.

I would like to say on behalf of poor housekeepers everywhere: I take excellent care of my teeth, thank you very much.

Uh - "women" doesn't seem to be a typo - everywhere that the one, single, mysterious woman is mentioned, she's "a women". And sometimes capitalized. I kind of like the idea you might have the Aristotelian ideal of Woman in your apartment. That would be cool. Unfortunately, this game seems creepy and borderline misogynistic, so I'm guessing that's not what's happening here.

The game is actively mocking player-me for having green plastic chairs. As much as my character is apparently a lush and a creep, I feel the need to say "Hey!" This is how much the game is actively pissing me off. I mean, who decided I had three 1980's green chairs anyway? And now it's mocking me? (Also, I'll have you know that retro is *very* in right now and I, personally, would like very much to have three cool green retro chairs in my apartment.)

The bank's grammar is awful. Also, apparently after the government changed my name last night, showing amazing speed for a beauracratic organization, the bank instantly was notified, and the post office must have been working overtime, because there's a letter on my doorstep the morning after I changed my name. I find it hard to believe that the same group that took six months to issue me a passport processed a name change overnight.

Okay, I'm done. I went out to the street and into a burger joint, where a "women" name "Deby" has no respect for "you, the customer." Considering this game appears to have no respect for me, the player, this is the straw that ends this session.

Finish: 9:47 PM - we're clicking right along, aren't we?
Score: Right now, 1.

Note - I'm saving my transcripts for these games. I'm often interested in how players go about stuff, and I wish more people updated this sort of mundane stuff. I'll probably load them in a batch at the end.

IF Comp 09: Trap Cave

I'm starting late, since I had Stuff to Do this weekend, but here we go!

Trap Cave is the first in line.

But first, a note. I followed Blogger's instructions for inserting Livejournal type cuts, and it broke the blog.

Big time.

So there's spoilers galore here.

Here be dragons.

Okay, you've been warned.

------------------- La la la not a real cut ----------------------------

Start: 8:40 pm

So the opening note is that the English version isn't fully translated. That is, indeed, an IMPORTANT NOTE. At least it's not an important note about the death of the author's beta tester or something. The note apologizes for the "inconvenience" of not having the game translated.

I do not have a good feeling.

Oooh, ASCII art. Oooh.

Opening paragraph has a dash where there should be a comma, and a slightly confusing sentence structure. Second paragraph has a weird tense issue. "The last thing you remember is your march . . ., as suddenly the floor collapsed . . ."

Irritation: I can't use the enter that I want (the one on the right hand side of the keyboard by the number pad). Can't get mad at the author - I'm assuming this is a program "feature."

Looking at myself shows the first bit of German. Insert your own guess-I-hit-my-head-harder-than-I-thought joke here. Oh, and it resets the room description to German, too.

Okay, it's clear that only the commands have been implemented in English. This is fascinating, as I kick and scream for help and try picking up things until it becomes clear that essentially the whole game is still in German.

Look, I have total sympathy for running out of time. But this is huge - if you're going to ostensibly release the game in English, release it in English. If you're not, don't provide the slightest of translations with an apology. This is not okay. This is unplayable. Also, it's essentially a menu-based game, where your actions are entirely prescribed by the author. I might accept this under other circumstances with protest, but I'm already irritated.

Finish: 8:51 PM
Score: I'm not even sure how to touch this one, as I don't really feel like there was a game to play. The one description I read seemed uninspiring and cliched, but maybe it got awesome later. I mean, the cave had a lattice door in it! That's more interesting than a gazebo. (Zork II, I'm looking at *you.*)

"Fun"

Something I was contemplating this weekend: Why would this game be fun, anyway?
I mean, I wouldn't code it if I didn't think I'd enjoy playing it at some point. But "fun" is such a weird, nebulous thing. If it's outside the mainstream, explaining why something would be fun can be a challenge. So what's the pull of playing an IF that's essentially a big farm sim?
It doesn't really have a plot as such, and certainly not a story as such, even in the extended design plan, which is the usual reason I give for playing IF.
Some things come to mind:
- Cracking the system. For someone else, who comes in from outside the game, there's a sort of pleasure in figuring out what needs to be done. I anticipate the main hurdle to be surviving the first winter - after that it'll probably get easier.
- Exploring the world. I expect the world to be relatively large, between garden, orchard, fields, pastures, buildings, and wild areas, and hope to have it change over time, which is cool.
- For genetics geeks like me, there's something kind of cool about teasing out what's inherited and trying to isolate the right gene combos to get what you want.
- There's the joy of seeing something you built over time change and grow (i.e. planting an orchard and getting fruit from it, seeing it blossom, etc.)
- There's the achievement piece - have you completed all the upgrades on the house? Put on a nice new roof?
- There's a time management piece - there's no way you can keep on top of everything. What are your priorities?
- There's sort of a curiosity/world building piece I should really work on - not that this is pure realism at all, but what would someone's options be if he/she was cut off with limited survival skills? And playing a game is more fun than actually doing it.
- Responsiveness/growth - this is sort of a world-exploration thing, but discovering what you can do. Since skills grow with practice, the player should have more opportunities to do stuff.
- And, of course, if there's anything Dwarf Fortress has taught me, it's that losing is fun. Hopefully it can be here, too, rather than infinitely frustrating.

I'm definitely concerned about the game becoming too easy after the first year. I can think of a few deus ex machina ways to slap up the difficulty level, but not many organic ways.
One thought would be to begin to introduce other survivors that need to be supported.
Another would be the increasing affect of wilderness - as the area becomes more fully abandoned, predators move in.

Either way, that's a long a way off, and definite supplementary material.