Wednesday, December 2, 2015

Heezy Park (EctoComp 2015) reflection

Heezy Park (EctoComp) retrospective

First of all--a break to say thanks to all the visitors who helped me reach 10000 hits! Woo! It's a neat milestone.

Spoilers abound. The game shouldn't take too long to play, and you just need to guess a verb at the end, so...hopefully it'll only take 5 minutes if you're interested.

The short version: Even before the nice placing (3rd of 9, best numerically and percentile-wise) I'm happy with it. I'm happy others seemed to be happy with it. I put a lot into it, but it never felt too heavy. And reflecting on it, the idea didn't just pop into my brain. I bet the deadline helped, but I had a few things floating around.

It was a matter of saying, what if I could do X or Y simply? And a few things came together. So maybe this will help other people make things click, whether it's for the IF New Year's thing, EctoComp next year, or maybe even someone will have a string of short games tied in a packet for the Spring Thing Backyard. Or if it provides a theme for an IFComp 2016 game.

Tuesday, November 24, 2015

The Problems Compound postmortem, part 3: what was it about?

I really didn't give myself time to flesh out that I wanted it to be more of a puzzle game, so I'll share my ideas here. First of all, I'm grateful for Paul Lee's review which saw things I hadn't considered, and I also appreciate the kind comments of several authors in the authors' forum. I also think Doug Orleans found a theme in that I dislike internet arguments and people trying too hard to start and win them, or running up the score after they've won them. It's hard to get the last word in at them(ha ha,) but I've managed to achieve distance. And humor is the most effective way to do that. But it has to be smart humor.

The Problems Compound was intended to be a story about dealing with, well, pride and nastiness and jerks in general. Particularly overbearing, overwhelming jerks and even personality cults and the people who ascribe to "lead" them. It was also about my own introversion and lack of confidence..

This was difficult because many things people do to gain a cult of personality are similar to what people do to be nice, and being unable to differentiate the two causes a lot of cynicism. I've been there.

I tried to put myself back to high school, and I tried to avoid mapping each antagonist to any particular person I knew or have recently known--which probably accounts for a lot of vagueness. I wanted to make sure that I wasn't pinning anyone specific to the wall. And at the same time, I wanted to be able to laugh at them. I think it's important to be able to laugh at the prideful--though there's a danger you can become too proud of your ability to do so.

Unfortunately, this didn't quite work, by and large. Someone in the author forum said they were able to map each character to a member of RAIF, which was interesting, but I didn't really get involved until well after it had died. Still, I was generally disturbed that that is how things were. I certainly wanted people to say "I knew a jerk like that and I can laugh at him."

The reversal-names worked on two themes: one, how do we twist things around? And two, some of the names were complete lies, so how do we deal with that? I also thought they were just funny, but they were a bit scarce. Scarce enough that I dropped the project in March. The thing was, I wasn't looking hard enough, and even with, I didn't really get going until I forced things and tried things wrong and buckled myself in and said, this word HAS to go somewhere. I was concern trolling myself a bit, fighting against the Baiter Master myself. Saying, why bother, etc. Instead of just sitting down and trying to make things right. Which is what Alec does in the game. And I think that's important--to do so despite all the nastiness and bravado and people seeming to know more than you do.

I didn't really implement the idea of the Baiter Master as a mysterious figure until late, where even people who dislike him have to admit he's got power, or charisma, or whatever, but I've found that a lot of people can garner this sort of support, where people lose focus and say their excitingness is more important and bolder than someone saying, they're going too far. Maybe it is, to use a modern example, Donald Trump. Maybe it is someone pointing out what a jerk Donald Trump is before lashing out at someone else. They have social currency. They know how to use it. And I know that I always felt frustrated, for all my logical abilities, that this sort of thing was wrong, and I needed to fight back, and I couldn't.

Worse, there's the fear and paralysis of being stuck in the middle of a "friendly" argument and feeling others are looking down at you. Being bad cop/good copped. Examples include the Stool Toad and Punch Sucker both condescending to you, Uncle Dutch and Turk Young giving life advice, and Art Fine and Harmonic Phil giving advice on art.

The puzzles dropped out from necessity and saying "oh, this works," or "oh, I need this" and I just felt they had the right bit of nonsense. I was pleased when I finally figured out who or what could guard the Compound itself--three brothers--and I'm happy with how the Baiter Master put them in (what he thought was) their place and how I released them from that.

I'll give a drive by of all the characters and my intents.
--Guy Sweet: a "nice guy" with an edge willing to "help" people kiss up to. He's superficially nice to Alec, giving Alec logic games he (Guy) is bored of, even giving backhanded compliments. He is "learning" to be "exciting" and is testing it out on people like Alec. Perhaps Alec does need to be more exciting, or he can be. But he doesn't need to be hit in the face.
--the Word Weasel: not really a character, but the sort of person that says "can you just do a little for me?" then asks a lot. I've certainly been out-bargained by people I am smarter than, and it dented my pride, especially when someone came along and say "How'd HE out-bargain you?" That was tough to let go of. But there are different sorts of intelligence. Also the whole process of signing a permission slip of sorts -- well, I wanted to capture that even animals were ahead in the pecking order.
--the mouth mush: a late addition, but I giggled about it, and overall I like the image
--the Howdy Boy
--Fritz the On: I wanted him to capture what I feel is a nasty hypocrisy. I am pro-decriminalization, but the Baiter Master takes that stance and, if you talk to Fritz, still shames Fritz for several things. Which ruins a major point of decriminalization in the first place. "Hey, be grateful to me, I'm not shaming you as bad as the next guy!"
--the Stool Toad: well, I confess, this was the one I felt was most obnoxious. I mean, he's basically a lazy cop, or that annoying adult who complains about kids these days. And of course he is horribly corrupt because he isn't bothering much about the bar! Basically, he only arrests someone if he can show off about it.
--the Punch Sucker: not developed well enough, but he condescends to you and Lily and looks down on the Stool Toad. Yes, there are good bartenders that do listen and care. He's not one of them. Plus, the whole feeling he is above the law thing.
--Liver Lily: this was tough. I'm not good at writing women characters. But I can assure you I've had both men and women tell me I need to be more exciting. I know the difference between that and "hey, I bet you might find this interesting." But she is basically a big talker who doesn't do much. And that's probably a minor sin compared to the other people, but it is one. (Also, what else do people do at bars other than pick each other up? I wanted to also show Alec as inept at this sort of thing)
--the Howdy Boy: this is a tricky one. You need friends who will help you know which rules to break. But he is a bit forcing. I remember people helping me see I could do small rebellious things then saying, well, don't just think small, and they insinuated I should start using drugs etc. and it left a lasting impression on me. We should have fun breaking the rules. But I remember it felt like people trying to score points getting someone else to try things. If you've read Robert Cormier's Tunes for Bears to Dance To, you may recognize this--someone tries to get the main character to do something bad, just to have power over them. Again, I could/should have made this more explicit.

--Officer Petty: I think people who point out small faults with a lot of bluster can seem very exciting. But they are not. Or people who say "I just don't like you." The kicker is--you just don't like them for that, and if you're not careful, you actually believe the false equivalence "we just don't like each other." So I figured giving him a ticket to an Advanced Seminar in this sort of thing was funny. I don't think the lessons will stick, and I think he'll be a bad person either way.
--the Business Monkey: mostly for comic relief. I was worried "monkey suit" might be perjorative but a few googles about context and definition relieved me.
--Sly Moore: again, for comic relief. I missed an easy chance in the comp version to say that helping both of them gets all of Idiot Village behind you. That will be post-comp.

--the Assassination Character wasn't developed fully. But basically, he taunts you whether or not you solve his puzzle. If you do, you're going for an easy cheat and not trying to learn anything new. If you don't, you're slipping, or you think you're too good for what you're good at. This sort of annoying trapping comes up in a variety of contexts and is incredibly hurtful. I didn't link that with the puzzle--which I was pleased with, because I always wanted to figure my own parity puzzle, and I remember saying, gee, what if going southwest took square-root-of-2 turns? In my puzzle, I've accounted for that fudge factor.
--the Insanity Terminal: I have always loved James Propp's Self-Referential Aptitude Test and wanted to make one for myself. The theme here is--Alec can cheat for a "good" ending. Post-comp, I'd like to factor in how much he cheats into things.
--Faith and Grace Goode: my views on religion are basically, I can't agree with the facts. It can't possibly be right! But I see how it brings people together to do good, and talk about doing well, on a community level. And that is what Faith and Grace try to do. They are a classic cult--suckering people to believing a "falsehood" like religion with decency. And the BM is too slick for that, ho-ho! Now, it's not all that black and white. Humanist discussions do that too. And large-scale churches do preach hate. But I've certainly seen a lot of hate and scorn from people pointing out where the Bible went wrong and saying, you religious types are just plain stupid. The thing is, the BM doesn't provide any of the decency the Goodes do, or I intended them to have. Others snarking on my own religion as a teen just hurt, and it was worse to hear "you don't still believe that, do you?" even after I expressed doubts.
--the Labor Child: George MacDonald had a quote in At the Back of the North Wind that went "When a child like that dies, instead of having a silly book written about him, he should be stuffed like one of those awful big-headed fishes you see in museums." The Labor Child doesn't deserve death. But he has learned to kiss up and be kissed up to early, and he knows how to push people around (including the jerks) and play fake innocent, etc. And he captures fears I had, when I remember people younger than me starting to mansplain life lessons. I debated a violent end at the hands of the reformed jerks, but it was a bit much.

--the Proof Fool and the Logical Psycho: again, the Logical Psycho is an expert arguer. Everything he says has truth. It's just--the truth is weighted in his favor. He doesn't let you interrupt, but all the same, he's a bit upset if you don't interrupt to say OK. The Proof Fool is the sort of person who's a bit too gullible, who takes what others say on faith but lets them zap him with "PROVE IT." Probably the same thing that happens to Alec, but in this case, Alec helps someone else find a way around it, and Alec maybe feels he can.

--Turk Young and Uncle Dutch: useless, self-congratulatory "life advice" that really just aggrandizes the speaker. The big thing is, they're "helping" you and they outnumber you and talk louder. They talk a lot about their success without actually giving a helping hand. I tried to make them look extra foolish at the end when they applaud each other.
--Volatile Sal: How does the old saying go? Meet a jerk in the morning, you met a jerk in the morning. Meet them all day, you are a jerk. Sal has met jerks all day--well, people who he thinks smell bad.
--Buddy Best: I thought of Chekhov's Death of a Government Clerk, here. Basically, you don't even get to finish sentences around him, and while many people in the Compound want someone to hear them babble on, Buddy goes a step further. He's too busy. So he gives you a token gift and kicks you out. Not a very best buddy.
--Pusher Penn: well, I was very pleased with this name. I wanted him to be a foil to the BM to show, well, even people who disagree with the BM and profit by him won't speak out against him. Even those you think are rebelling--well, they have it good. I've seen this a lot. It's hard to say "X is wrong," or whatever. He is also another character to heap contempt on poor Fritz, who deserves our support.
--Art Fine and Harmonic Phil: while Emily Short voiced concern that it was a shot at critics--well, it was. But here's the thing. They just don't shut up about how great the latest and greatest is, even when it's truly heinous. So I compartmentalized them as narcissists with no shortage of random superlatives. (Yes, Trump is more potentially dangerous to society than an Art or Phil could ever be. But Alec is trying to deal with his own issues.) Again, you have the position of being caught in the crossfire between two people who are arguing, but not really, and they need you as an audience, but they're not going to respect you. Art is sure his form of art (pure emotion) is right, and Phil is sure his more logical view is right. They are both heinously wrong. And I have to admit that they were based on past critiques: at one gaming site, one person who was popular but not well-liked wrote an incredibly flowery review of Missile Command. It got praise, and one person who said "Geez, it's just Missile Command" got shot down. The reviewer then switched to dry wit (aka slow and boring if someone else did it) and got praised for his stylistic diversity. This took a while to be funny, but it is, now.
--the Language Machine: it's upset it's in a bog. It writes dreary stuff until you help it. Yes, it is me, in a way. I'm reminded of the four stages of competence. But instead of (un)conscious (un)knowing, replace knowing with happiness and (un)conscious with (not) sharing. This has been my own. Even being able to write a limerick about something or someone distasteful has helped me drop it and move on--and the funnier stuff, well, I'm glad to have written it, and I can move on, too. However, there is a darker side and I see why it upset some reviewers. In a college writing class, I remember being told "well, why don't you like X's work?" He had some stories about not fitting in but the thing was he would get together with friends after class and snipe about other people's work (including mine) and I think that seeped in, as part of the "don't bash anyone I recently knew." I'd like to kill this incident from the game text and redo it more compassionately later. Or maybe hammer it into something positive.
--the Brothers: each has been insulted by the BM into feeling they have nothing better to do than prevent other unworthies from enterting Freak Control. Alec helping them is a way to show he's not just moaning to himself about what he can't do. I know I've been made to feel I'm not good for much other than standing around, and I've created waves when person A called person B (not present) useless. And this doesn't make me a hero, but all the same, it's worth fighting for.
--the Jerks: they're just intended to be everyday teens who have secrets that can be exploited. They are on the fence. The Child and BM both have something on them, but pushed right, they can change their mind. They deny their own individuality until Alec finds them out. However, I think I can make this episode more convincing. I tried to provide alternate puzzles through, where Alec doesn't have to use logic (and shows he is more than that,) but this came too late.
--the Baiter Master: a slimy little you know what. An amalgamation of the worst I've seen in people. Creating him, I was worried when I pulled a specific quote from a specific person, because no specific person deserves to BE him, and I left him a bit generic at the end. I tried to characterize him through others' opinions of him. I think I have a way to make his corruption fuller, but funnier, post-comp. I wanted to leave the player feeling 1) his power was largely illusory and 2) I've seen people like him take over social groups or, even worse, political movements and I want to fight that. There are some ties between him and Spike Price both having contempt for less exciting people, and I meant to make BM seem like he talks a good game and knows what he can get away with. Alec's discussion at the end is a partial catharsis, though post-comp I've realize how to let the BM troll Alec and simultaneously help Alec flip around his "advice" to something positive.

Of course through all this there is Alec, who has the option for a quick out with the cutter cookie. (And, post-comp, another food.) He's more malleable. I wanted to make him a bit of a cipher, but post-comp I would like to relate his past failures he realizes and maybe ways to improve. That would make him a fuller character, but I do want to avoid tooth-grinding autobiography.

Well. That's all for characterization. I hope this clears things up. I read a quote from Gustave Flaubert (I wanted to copy Madame Bovary's unsentimentality) saying you could not use literature to exorcise your demons. I do think writing PC helped me exorcise a few, but it gave me some new issues.

I think they are positive enough to discuss in a sequel. Which I've felt more confident planning.

The Problems Compound postmortem, part 2: testing

I'd like to talk about testing, first, both in general and specific to The Problems Compound.

But first, my previous entry is a hopefully humorous pop quiz, if you followed from planet-if.

From my perspective, it's hard to ask testers. If I've asked them before, there's always the "oh man, I'm asking them for another tricky thing to test" angle, but if I've never asked, I wonder what I'm getting them into. It's--well, it's hard to ask, and this actually hits on themes I didn't develop enough in my game. About finding it hard to ask, or figuring you had or were something pretty smart but no way to develop it.

So I'm grateful for the efforts my testers put in. Especially given the things I wanted to address in the game. So, mentioning everyone in no particular order, I'd like to bring up my work with Juhana Leinonen on BitBucket as something that went really well & which I'll discuss later in a post on organization, as well as September-ish interactions with Brian Rushton and Hugo Labrande, who helped despite preparing games of their own. And Wade Clarke, Marco Innocenti and Matt Weiner came back for more punishment even though they know what testing a game of mine can mean: unimplemented stuff, odd bugs, and things that should connect but don't.

The Problems Compound postmortem, a pop quiz on testing

I'll start with a true/false test. It's a bit rigged, but I think you'll see the point.

1. Testing is good for your IFComp entry. T/F
2. Testers can find bugs you can't. T/F
3. Testers can suggest features you didn't see that will make things easier. T/F
4. Testers will try the stuff you maybe didn't have time to, which saves you time and the necessity of backtracking when you really want to focus on one feature. T/F
5. Testers remind you of stuff you forgot to implement. T/F
6. It can be hard to ask testers for their time, but people are generally nice and willing. And even a 20% response rate is very good. T/F
7. It's worth working through the emotional crush of seeing where testers got stuck, because it motivates you to look for other things. T/F
8. Different styles (go fast/go slow, supercritical/super encouraging, knows the programming language/doesn't) of testers turn up different things. Whatever you're writing is hopefully far more interesting than a standardized test, so even a lack of skill can be a huge help. T/F
9. Starting testing earlier is better, because then bugs that were hidden and hard to find are more likely to turn up, and issues you just can't deal with right away may become clearer in a month. T/F
10. You should have minimal programming-tests you run before sending something to testers, so that their time is used the best they can. T/F

 I bet you got 10/10 and would've even if the answers weren't all true. I could go on like this for a bit. But ever question I write out, I've violated in some way.

Sunday, November 15, 2015

The Problems Compound postmortem part 1

First I'd like to offer an apology for the description of the Language Machine. I think a tester tried to talk to it, and I wanted to make it clear that you couldn't, and its being inanimate felt wrong, because it was doing I added that. It's something another round of testing would've fixed. But I did not give my testers the time. I hope people who were annoyed find this explanation acceptable and call it sloppiness instead of malice. I also believe the fix made it into the final edited version. I saw it as a poor computer stuck in a bog, but my text opened up another interpretation for a reviewer in the author forum and a reviewer outside. Here is what I have now.

The Language Machine is scenery in Standard Bog. "The language machine hums along [if wax is in lalaland]cheerfully[else]balefully[end if], its console spewing out [if wax is in lalaland]poetry, which isn't good, but it's not overblown[else]dolorous, leaden, formulated prose about, well, being stuck in a bog[end if] in its bottom half. In the top half is an LCD [if wax is in lalaland]smile[else]frown[end if]."

Friday, September 11, 2015

The 8 Queens Problem Revisited

When I was younger I remember seeing this and hearing how difficult it was. And it certainly is. The basic problem is this: place 8 queens on the chess board so that none attacks the other.

Now you can just place one in each row/column and start shifting them around, or you can make educated guesses. Of course, you can brute-force it with a computer, and you can remember a pattern, or even that there is a symmetrical solution etc--but is there a way to *understand* it?

I think so. In fact, I felt like I cheated when I figured it out. Because I said, what the heck, let's see if this works.

The idea is this: queens in the 2x2 center invalidate the most squares. Then queens in the 4x4 center. So can we get away with placing nothing in the 4x4?


Now if you, like me, did too many logic problems with red, blue and green houses, cats/dogs/hamsters as pets, and so forth, you'll recognize--none of the corner 2x2 squares can work! If so, columns 3-6 would need 1 queen in each. But there would only be 3 rows for the 4 queens. Contradiction.


Wow! There's not much left to try, especially when we invoke symmetry e.g. we consider c8 to be the same as f8 as we can just flip the board horizontally.

Now, let's note the following squares are equivalent: b/g4/5 or d/e2/7. You can rotate the board 90 degrees or flip it until one becomes any of the other. So let's say none of them are possible.

Then either c7 or f7 must contain a queen. But they're mirror images--so, c7. Now g6 or g3 must contain a queen, but c7 takes out g3. Similarly c7 takes out b6, meaning a queen is at b3. That leaves a queen at f2. This is a big problem. We can't have a queen on row 1. c6 negates c1, f2 negates e1/f1, b3 negates d1.


Therefore, we must have something on a square like d7.


This means the queen on row 8 is at f8. But now if a queen is on b6, that eliminates a6 and a5. d7 eliminates a4, and f8 eliminates a3. Row a cannot have a queen. since the queen cannot be on b5 (d7) or b4 (f8) it is on b3.


Note row 2 now has the queen on e2--d7 and f7 take out e2/f2, and b3 takes out c2. That leaves c1 for the queen on row 1.


d7 takes out h3, f8 takes out h6, and e2 takes out h5, leaving h4 for the queen. That puts another queen at g6. The remaining queen is at a5.


There you go.

An alternative method was to notice that we get close with...


Here we try and see if flipping a couple queens will do the trick. There aren't too many possibilities, and I found 8-3(horizontal) and 8-7 worked fine. There are not very many possibilities, as after the first flip, you will see that one of two queens obviously has to be moved. And due to symmetry we can always start by moving one of the upper queens.

So this was an interesting way that trying for a simple cheap way to get through paid off. And if someone ever asks you about this trick, then I hope you can remember either of the ones above. I like the gut-the-center best, as it leaves (at VERY most) 6x12 = 200 possibilities. Why? Column a has 2--5 and 6 being equivalent to 3 and 4, and a5 forces b3 while a6 allows b3/b4 (3 possibilities) with 2 possibilities for g/h. Mirror this for rows 7/8, though c8 is not equivalent to f8 here, and you have at most 72. Well, minus the ones the a/b/g/h diagonals got rid of.

And even then you can remember that the solution mirrors itself over the x axis, which cuts things down totally. Again, symmetry and simplicity.

Friday, August 21, 2015

Beyond Division, by Joseph Geipel

This is a short effort investigating telepathic powers, and not just of people, but of wolves. I like the use of footnotes to convey what the author is trying to do, and I think maybe future IntroComp editions should flesh out what exactly we can or should do. How much is too much? How can we make sure we are not push-polling the reader? Whatever the answers, this game certainly does not push any trollish boundaries that way. So I think more games, completed or not, should try this. Because I think it helps the author, too, answer tough questions in a public forum, and it's something to poke at when the creativity dries up.

This was the first of the IntroComp games, and I enjoyed replaying to refresh my memory about what was going on, here. It seems like it has a solid foundation, and the writer should be able to push his vision through. While it may seem like faint praise to say a first-time writer didn't try to do too much, that's what happened here. The game moves quickly to a focal point that opens up several possibilities. So while with Meld I wondered how this mess got bundled up (which is fun to figure in its own way--the intellectual poking is my sort of thing,) I saw--and was open to--more possibilities here. And I suspect this will appeal to a wider audience.

The switch in view between the wolf and person was quite good, and I was caught up enough not to notice I was being funneled to the next bit. The wolves and people obviously had some enemy's enemy and how much to hate the bad guy issues to work out, and if it wasn't super intense, it opened up the way for a big story without choking me off. The author had a clear idea of what to do and never needed to resort to silly tricks to do it.

I also enjoyed having the conversational topics at the bottom. This relieved the standard headaches of a parser game simply and effectively.

So I think this was the best title of IntroComp and the best work, too. It's not just one I hope gets done, but I can really see it getting done, and just because the author seems to have a pretty good vision of where to go doesn't mean they don't deserve the reward.

Thursday, August 20, 2015

Deprivation, by Michael Coorlim

Seeing the size of the TADS file and executable, I thought I was in for a biggie. But not so. There are only three rooms. You've had a bad weekend, the details of which are vague. You also have insomnia.

If this seems like a This Lousy Apartment game, that sort of is and isn't true. It looks like a first effort, and the author seems to have hit at the least inspiring of conventions about this sort of thing, which is a shame, because it just implicitly feels like they know what they're doing when putting actual words together.

I think this could've afforded to be a bit longer than just the one non-puzzle that gets you to the end. So I think the scope was off, and the author could and should have concentrated on, maybe, another night (do you go to work after sleeping? What are the consequences? How messed up is your sleep schedule?) than the more trivial things one finds in a text adventure My Apartment game that are no fun to implement or, for that matter, comb through and realize they don't offer much.

I'm letting this effort skate based on the "ABOUT" section and how it was planned. I like the concept, and too much of the writing on examining etc. was good for this to be an accident. So I have more to say than "pfft, another apartment game." My guess is that the author settled for such a game and probably wished there was a way to do a bit better but didn't find any. Because what's implemented feels good and smooth, but the effort seems to have been focused in the wrong places.

I also might be letting this skate because it's in TADS which always seems to produce a unique flavor of adventures, and I do like the default links you can click on. For instance I very much enjoyed testing Royce Odle's Dead Man's Party and the odd things it does, and I always meant to look at more TADS games. But I never do.

Meld, by David Whyld

I always seem to take more energy on a David Whyld game than others. Even the mistakes he makes are fundamentally interesting. He'll overuse a joke I've heard before, but then he'll do a joke I thought I heard before just right. He'll provide a mechanic that's not fully fleshed out, but there'll be a couple spectacular examples how each works.

Meld certainly caught more of my time than any of the other IntroComp games, for better or worse. And I think he's found some pretty good territory to farm: big ideas people have put aside that are maybe a bit unpopular or not scholarly enough, but they can be, in Un-'Merican English, ripping good yarns.

IntroComp reviews, part 1: Lair of the Gorgolath, Voltage Cafe, Walker's Rift

I should've gotten through IntroComp earlier, but at least I got around to it, eh? We'll start with these three, and I'll post the other tomorrow.

Hopefully my reviews will have something new to say or, if they don't, help act as a deciding vote/deciding motivation for an author to say "I need to do this, or that."

I've avoided other reviews, so there may be repetition, but I think I'll be less biased that way. In the past, I sometimes poked at reviews to see how long/short a game is, to organize my own time, but that spoiled a lot more. (Note to IFDB admins or anyone: I think this would be a good feature to put in for a game. Have people vote on how long a game seems to take. I know lots of times I'd like to sit down with a game but I have no clue how long it is.)

If you haven't gotten through IntroComp, you have one more day. No game is terribly long, except for one that has a walkthrough anyway. (Note: walkthroughs are a good thing, in-game or not. Authors, even if you want people to see the bad ending or not be spoon-fed, maybe put the "right" path at the end? Or say so to start?)

I hope it's not rough to say these missed the cut for my top 3, but they had enough that it's worth saying a bit. I'd have said a bit more if I'd have started earlier.

Wednesday, August 5, 2015

How gender inclusion helped me proofread an abstract wordplay game

So when I decided to allow female characters for A Roiling Original, it was intended to be trivial, just as an exercise, so that I can finally say I didn't have all-male games. Even if the choice didn't affect gameplay.

But writing perl scripts to look through the random text (check for duplicates etc.) turned up some odd stuff. I had a lot of ways to check for anagrams, but one thing I hadn't done was to look at something like this.

"Lead Yon: No Delay[r], by [if player is male]Dean Loy & Leo Nady[else]Ola Endy[end if]"

Now, it's a decent exercise to have a flag in my checker-program to spear both the male and female options. But here's where something weird turned up.

When running -female, I still got a few flags than in "male" mode and couldn't explain why. The entries anagrammed themselves, but one was reported as a duplicate and the other wasn't.

The answer was that I was using a classifying-string to look at duplicates, but above I would have

Male: a4d4e4l4n4o4y4
Female: a3d3e3l3n3o3y3

And of course I was taking the GCD so the 4's and 3's became 1, wasn't I?

Oh no I wasn't.

It turns out I never suspected this might be a problem.  So, having cleared 1000+ anagrams as not heinously duplicating each other, I thought I'd get one final check--and it opened new problems. Well, I wanted to make sure of things.

But I didn't see it until, just to check everything, I wanted to make sure there were no bad female anagrams (e.g. if Ola Endy had been Lea Endy.) That's how bugs work--it stinks when a whole new area opens up, but it's worth it to know I saw something odd, found what was really wrong, and fixed it.

The work hasn't been too bad. It's more interesting than a boring mindless click and point game, and I'm turning up ideas and seeing what works and what is repetitive. And it was something I'd always wanted to do, to give the extra polish, but I put it off.

Flagging duplicates seems like chewing on grist, and it sort of is, but on the other hand, it's another way to get an idea to pop up when I don't expect it. You put in the work, something like this eventually comes to the surface. I just was a bit shocked to see so MUCH to re-re-check.

So gender inclusion was a good step for me, and if it isn't profound, it added complexity on my end. (I also am changing some NPC's gender for version 4. Again, I used automated means to see all the possible places that, say, the Smart Kid was. Then I grepped for "he|him|his" ... so I think I'm okay. But there may be a surprise there. I'll obviously need to run it by a tester.)

Now, I can't force gender inclusion for my IFComp game. The protagonist's name must be what it is, and so must a whole raft of NPCs'. But I have a few things I think will be amusing, that provide gender twists without getting into sexuality. I won't be able to find enough, but I think it'll be harmless laughs. And my hope is one player will say "YOU FORGOT (THIS POSSIBILITY)!

Monday, July 20, 2015

IFComp 2015 Devblog #4: Consistency and going for big stuff

We'd all like to strive for consistency--and of course we all want to Catch the big fish too. I think the first helps with the second, as long as it's not done too much. So what is too much? And when does consistency become foolish and the hobgoblin of little minds?

So a correct (but unhelpful) answer is to say "You need a bit of each," and then if someone asks how, fluff on the details with "Oh, you'll figure out out."

This is strictly correct, but often we need data or illustrations for a story. My experiences at GitHub have given me some idea. It has a wonderful tracker for progress. And when I saw it, I said, wow, that'd be neat motivation to get me doing something every day. It worked so well! I would write up an issue, and that counted, and that was good, because it showed I was planning and thinking. I'd make a small fix, and it reminded me I did something well.

The only problem was that I started putting off fixes--for the day when I might not get anything done. Part of this was in my head, but I did play these games. Or I'd wait til 12:01 AM the next day. This book-fudging isn't exactly high-level embezzling or criminal records falsification, but it did eventually get in the way of just doing stuff, which was the opposite of my intent. And I was clicking just fine--well, until that day when I made a lot of changes, had something to do in the evening, and forgot to check in my changes until 12:03 the next day. Rats! So much for my 41-day streak. But it was a nice busy weekend, and I got a lot of stuff done, writing and Real Life.

This precipitated a nice long streak of doing nothing on GitHub. Well, I did something, just not on GitHub. Until Jason Lautzenheiser mentioned that he wanted to look at various source controls and I figured heck, why not throw the Stale Tales Slate up there. So I moved over issues, etc., from Bitbucket.

I've had two days since then where I forgot to submit changes. Obviously, I can fix that sort of localized error. I want to pay attention and get credit for when I do stuff, and I want to make sure I take time to do the simple stuff. And I'm not going to beat myself up over missing it, because I got a lot of changes done. I think the big thing is to avoid "BUT I DIDN'T DO ANYTHING" and the slump that potentially follows. Perhaps this is too technical or sports related for some people--but it's helped me.

Number one is considering hitting streaks in baseball. DiMaggio's record of 56 is all-time. That's where he had several chances to get a hit, and--well, he was lucky enough to get it going. Some days, it just didn't fall, but most days, he did get a hit. With writing ideas it's a bit easier to do something every day. And I think the hitting-streak model works pretty well, as the most recent long one I remember lost its final chance on a sacrifice fly. To stretch the analogy, Luis Castillo had several chances to get a hit withhis 35-game streak before he was left in the on-deck circle...and I had much more control over what I could do to submit some work for the day before I saw it was 12:03 or, well, 11:57 with nothing really adequate to send in. But the important thing is to win, and if I write out a big idea and don't need a bug to do it, so much the better.

Number two is considering how a football team mixes up plays. The run (probably get a few yards) and the pass (take a shot downfield) are both necessary, but if you play one too much, you may get predictable and unoriginal. Even unbalanced teams go with 1:2 ratio at worse, and if it's higher, it's probably because they're down and need to catch up (like a writer too close to a deadline.) So instead of worrying about what is the best thing to write, I try and mix it up to keep it fresh.

And sometimes I just need to punt to come back later.

Another has been Monte Carlo simulations, or stuff I remember from Analysis class. Let's say I give myself x=100 1-minute intervals a day to think up a big idea, the sort I get (throwing numbers at a wall) once every y=100 one-minute sessions, totally random. My times may run together e.g. on the bus or writing at my desk. Or they may be taken during breaks working or working out.

The expected distribution is 1/e chance I get no ideas, 1/e I get 1, 1/2e I get 2, 1/6e I get 3, 1/24e I get 4, etc. Changing x and y, the probability of no ideas is 1/e^(x/y).

So I can see that I can reduce the probability I get no ideas per day by doing more--but it'll never get close to perfect! There'll be some bad day. I also have some baseline figures for, what if I have more than one idea, and no, I shouldn't be surprised.

This has helped me a lot when I sit down and can't think of anything good right away. It's a mathy way of saying "I can have patience and faith" as opposed to hearing "YOU NEED TO SIT DOWN AND HAVE PATIENCE." Now some of this patience comes about by writing stuff down and seeing where it leads. But it also helps me keep things objective when I see an idea. I can't fully know if an idea is super inspired or not. Sometimes it feels too esoteric, and sometimes it feels too simple. There's always an excuse to puff it up or shrink it down.

And this isn't to say emotional stuff is bad. It's just that, for me, the less I worry about if an idea is a big one, the more I can look into adding the good stuff to make it a big one.

Thursday, July 16, 2015

Ouch! 3 months since my last post.

I've been--sharpening my tools. I hope? I meant to be posting a lot about my IFComp game, and the ideas and humor have been flowing, and I hope everything makes it in. The thing is, I'm putting out my nets, even if I'm doing a bad job of writing new code. I've got a lot of white paper.

As for actual accomplishments? The big news is that I finally moved some projects to GitHub, and the results were immediate. BitBucket has some useful organization, but GitHub's flexibility let me nail down the issues that were important to me.

So I would like to say that, if you have any idea whether creating a source control project is a good idea, even if you only use the issue tracker--it is. And with a source tracker, if you regularly upload, it's even better.

Thursday, April 16, 2015

IFComp 2015 Devblog #3: More small tools, and when to write or borrow them

I haven't actually been getting a ton of game done, but I have been knocking out things that've delayed me before. That's really important, because at the end I wind up with a lot of things I could've/should've done later.

Now, I do due diligence to check for something that already does what I want, but the thing is--if a script can take just a few minutes to put together, or if I'm able to modify it by myself, that's a big help. I like being able to write my own control language (which is far less technical than it sounds) because it gives me a feeling of autonomy. Also I may not have the bells and whistles of a bigger project.

Whether you should write your own scripts or search for them on the web is a tricky question, but I generally proceed with a couple Google searches, then I allow myself 15 minutes to write an adequate script. Often I put those 15 minutes when I would've been messing around anyway, so it is not time lost.

I'd think even an hour would be worth it--the thing is, I just want to have stuff to do instead of time-wasting, and personal projects are very good. I've found that writing my own code and finding someone who did it better, later, has given me faith that I can take that much more help from other people I don't know.

And here I like the quote of the perfect being the enemy of the good. Perfect = finding an app that does nearly exactly what you want. Good = being able to write something up that does what I want, basically and quickly. Perfect could also be the app doing everything I want--but I've found that I can tweak my code if a missing feature becomes annoying. A good time is the next time my mind would wander.

My question at on how best to back things up provided an interesting discussion. I provided a script for Windows or Unix, and someone promptly wrote up system-based ways to back things up. I was glad to see this, and it reminded me to look for this sort of solution first before spending my own time.

Though for what it's worth, I like being able to back files up by number: to, or whatever. It just appeals to me aesthetically. I can also easily see how the file size grows with time, to track how much/well I'm working. So I think my programming time was well spent.

My two big scripts were:
  • something that runs automatically every day to notify me if I haven't modified a critical file in X days (e.g. my hint file, or my walkthrough, or even the GBLORB...because if a release version doesn't build, that's a pain) as I think one of the big thing to avoid is long periods of inactivity. You need to nudge yourself to keep moving. We all have our own ways.
  • a release-bundler. My big problem with release and crunch time is, I'm never sure if I have the right version. Or, I make one small good change, and I'm worried I'll forget to update a walkthrough.
I'd like to show off a chunk of code for the Ugly Oafs release, which was a pain. I figured it would be a great dry run because my IFComp 2015 game won't need all this, so it'll be a breeze by comparison. Also, it's just good to be organized.

>>soffice --headless --convert-to pdf c:/games/inform/uglyoafs.inform/Source/uo.odt --outdir c:/games/inform/uglyoafs.inform/Source --headless
>>pdftk A=c:/games/inform/uglyoafs.inform/Source/uo.pdf B=c:/games/inform/triz/uoup.pdf C=c:/games/inform/triz/uodn.pdf cat A1-6 B C A7 output ugly-oafs-guide.pdf
F=C:\games\inform\uglyoafs Materials\Release\Ugly Oafs.gblorb
F=C:\games\inform\uglyoafs Materials\Release\ugly-oafs-invisiclues.htm

This looks like a mouthful, but let's break it down.
  • name=the name of the project. So I can say uo, 14, or whichever, and the program runs.
  • v=the version
  • out=the output zip file name. You'll notice the %, which maps to the version number.
  • >>soffice (etc): I recently downloaded LibreOffice, which allows you to convert documents to PDF on the command line. This is an example.
  • >>pdftk (etc): this is another useful tool for merging and sorting PDFs. In this case, what I do is to take all but the past page of the manual, then insert two Trizbort-produced graphics before the last page, which is an appendix. Now, I'll have to adjust the numbers if another page is added--and maybe there's a way to specify 2nd-last pages. But for now, this works, and it's easily changeable.
  • F=* the files to add to the ZIP. Again, % points the script to the current version number.
  • The script ends with a blank/empty line
You may've noticed I used a lot of 3rd-party software. 7-zip is indispensible to me, to be able to create zip files from the command line. Mac/Linux users probably won't need it, but the reason I like it is because you can write a simple batch file to re-copy over critical files. Fiddling with the mouse takes energy.

"Control language" may seem like a 5-dollar word, but once you are able to parse one file, it becomes easier. I've used it for work and home projects, and each has bolstered the other. I can be as serious or detailed as I want, when I want, and it's not hard to add.

One side benefit of this was that I included some code-checking scripts in with the assembly, so that helped me detect big problems in my Stale Tales Slate. For instance, if any of the book names were wrong, or if punctuation in any of my random text was off. Having five checking scripts run at once with an easier mnemonic ( roil vs. typing the script names) has certainly made details way less.

If anyone is interested in this perl script, I would be glad to send it to them. It is under 2K, and it's great to have one less potential logistical nightmare in six mo--oh, geez, it's closer to five months already.

Monday, March 30, 2015

IFComp 2015 Devblog #2: Homemade InvisiClues

I wrote a PERL tool for homemade InvisiClues as a programming exercise, but I didn't use it right for a while. I mean, I had hints in-game, and they seemed to trump this, so the InvisiClues were an afterthought. I had a chicken-and-egg problem.

But it recently occurred to me that the clues could be a useful tool for development. I could just put in a special character/hash for clues I needed to implement. For instance, # at the end of the line meant, get to this. Searching for them would help me decide what to attack next.

It helps me a bit to have this instead of a general outline, because when I think of outlines I think back to school and the outlines I didn't want to do for a paper I didn't want to write. And the term "white paper" makes me think sometimes of how I should be using planning for things that will help me in my career.

InvisiClues fit right in with writing a parser game, though. And it allows me, the author, to have a bit of nostalgia while not inflicting the bad parts (cruel game difficulty, bad implementation) on the player. Plus I still remember the first time I saw InvisiClues online. Wow! How did they do that?

Once I learned scripting language, it didn't seem quite so amazing, but it was still cool.

Juhana Leinonen's JavaScript at Undo Save Restore provided the back-technology I needed for this. I just needed to know how to be able to open parts of a document with a click. Once I had that, I figured how to parse input and convert it to HTML.

The result is that I now have a document that I can twiddle and see where I need to tighten things up, and I have what I think is a slight improvement on the above invisiclues. Even seeing the wrong question can be a spoiler for the player, and at the same time, it's annoying to have to plow through question A, then B, then A.

Trizbort was useful for putting everything in its place, but now I'm relating things in different rooms. Or instead of a long description that overlaps another room, I have a section in the InvisiClues. Also, the template is in human-readable form.

#this is the output file name. Default is invis-(file base).htm
#this is what is displayed in the title bar
!H2G2 HTML Clues
>The Vogon Ship
#below is a subtopic that you can open up
>>The Vogon Hold
#below is the first question to open
?Why am I dying?
#hit tab and enter to reveal each answer
Not enough protein.
Eat the peanuts.
?How do I get the babel fish?
This is just an example. No way I'm displaying the solution.
>>The Airlock
?How do I avoid dying?
Just wait. You won't.
>After playing the game
?Have you tried...
...kicking the dog?
...(other silly stuff?)

I have InvisiClues up for Threediopolis, so you can see how that works.

  • The text source
  • The HTML
  • Finally, here is the PERL code. I've thought about doing markup like *text* for bold, {text} for italic, and _text_ for underline, but that's a bit of a feature. If you find this script useful, I'd be thrilled to hear about it.
As for homemade tools in general? I recommend due diligence first. If you don't find exactly what you want, maybe a freeware app will be close enough. If it's not too complex, it really is a boost to make your own small app. Just don't spend more than a few days getting it working, and don't feel you have to add TOO many features. The ones you need most will reveal themselves as you poke around more.

Saturday, March 28, 2015

Stale Tales Slate: two re-releases

Already posted at, but this is a big enough event for me, it goes on my blog.

I'm happy to announce that I have re-released versions of Shuffling Around (v4) and A Roiling Original (v3), the two games in my Stale Tales Slate.

They feature a lot of bug fixes and features, and while bugs are lurking, I think the main things are:
  • puzzles are fixed so as to be sensible
  • major bugs have been paved over
  • there's increased user-friendliness
  • Color trizbort maps! Visit if you want to draw up your own. They're a nice addition to any release, big or small. They helped keep up my morale when I saw a stupid bug I made.
The total source code is over 3 megs. This is a bit ridiculous, and a lot is due to the random text, but--I'm proud of my perseverance, even if sometimes I didn't attack the VERY highest priority bugs. The cool thing about text adventures is, player don't have to look at all the random stuff--but if it catches their fancy, it's there for them. And it's (I think) pretty clearly labeled in the source code.

Many people helped with Roiling version 3, including Mr. Patient who was, well, patient with my being slow with transcript. Changes are included in the change log. Matt Weiner helped with Shuffling version 4. If any bugs are left, there were a lot worse bugs before.
Well, actually, I saw one. Each region in Roiling has an item that you can use to get a hint. But the problem is, if an object has already been hinted, this duplicates the HINT capability. So I would like to attend to that. This is a case where I saw a fix but I wanted to get things done this month and not introduce any bugs with feature creep. So, next release it is!
The games are submitted to the IFArchive but until then there are dropbox links.

Shuffling: ...
Roiling: ...

The change logs are here:

Shuffling: ... s.txt?dl=0
Roiling: ... s.txt?dl=0
I may go into detail later. But for now, I think I can move on to my next projects. I started looking at things about three years ago, and now things are finally in a maintenance state. (I think!) I had a lot of fun mucking around. But I have new ideas. And quite bluntly, as fun as finding some cool words, phrases, etc. can be, I've got anagram fatigue.

Wednesday, March 18, 2015

IFComp 2015 Devblog #1: Trizbort

Here's an introductory post for my hopeful IFComp 2015 game. I'm going to be keeping details vague, but I hope to link back to them. Since the rules changed to allow discussion pre-comp, I thought I'd see how this goes.

The first thing I'll address is prototyping. It's something I'd never done. Jason Lautzenheiser's impressive work on Trizbort allows me to color regions in. This is a big help! Just being able to stare at something colorful and/or shift it around is a big thing.

Monday, March 16, 2015

On FrenchComp, and how I organized things to judge it

I got a lot done this weekend, though maybe not as well as I hoped. While I put off ParserComp, I realized I also managed to put off FrenchComp. This is one thing I was upset about. I meant to look at all four games last year, and I eventually did, but I wasn't able to judge.

Saturday, March 14, 2015

Lockdown, by Richard Otter

This is a game about someone who has just gone on a shooting spree. They're faced with the consequences, but there's still one more thing to do. The question: what?

Three Days of Night, by spaceflounder

This was another relatively quick game set in space--which seems to fit well with the sunrise theme. It feels relatively low-risk, and it's about gaining contact with intelligent aliens.

Down, the Serpent and Sun by Chandler Groover

This game was rather quick for me, but I suspect that's because I didn't poke around carefully enough. Some of it seemed sparsely implemented, but I did find two cool ways to die. This was satisfying enough, but I'd still like to see the "good" end if there was one. An IFDB review pointed to that the ClubFloyd folks found it.

Thursday, March 12, 2015

Endless Sands, by Hamish McIntyre

Endless Sands by Hamish McIntyre is, thankfully, not so endless. You, a recently new vampire, need to escape the desert before sunlight. But actual buildings where you could take refuge are roofless, occupied or locked, due to various slapstick reasons.

I suspect whether you enjoy this game depends on how much patience you have at the moment, so if it frustrates you, sit down, draw up a map, and come back again.

Six Gray Rats Crawl Up the Pillow, by Boswell Cain

Six Gray Rats Crawl Up the Pillow is a brief work where you are sent to a nobleman's castle to sleep in his bed, on a dare. The plague has killed him.

ParserComp Intro and Links

I wasn't able to think of anything for ParserComp aside from one puzzle which I think will do nicely in a later game, but I was able to test four of the games. I'll reserve opinion on them until the judging deadline is over. If you're wondering what ParserComp is, look here. If you're wondering if you should judge, please do! It looks like ParserComp's haul of parser games is roughly equivalent to IFComp 2014's.

This post will serve as a link to the individual game reviews. I italicized the ones I did, because reasons. Also, I'm hiding scores, as I've found that I, as an author, get more from saying "Oh! I should've done that!" then from a score, which I can twist around in my mind to mean what I like.

An Adventurer’s Backyard, by lyricasylum
Down, the Serpent and the Sun, by Chandler Groover
Endless Sands, by Hamish McIntyre

Lockdown, by Richard Otter 
A Long Drink, by Owen Parks
Mean Streets, by BadDog
Six Gray Rats Crawl Up The Pillow, by Boswell Cain
, by Caelyn Sandel
Terminator Chaser, by Bruno Dias
Three Days of Night, by spaceflounder

Post-comp reflections:
Chlorophyll, by Steph Cherrywell (Beta-tested)
Delphina’s House, by Alice Grove (Beta-tested)

Oppositely Opal, by Buster Hudson (Beta-tested)
Terminator, by Matt Weiner (Beta-tested)

Halfway through ParserComp

This is a post I hoped to make on March 1st, and I hoped to be making my wrap-up post today. Nevertheless, I encourage people to get to as many ParserComp games as they can, even if it is only 7. Or even if you get less than 7, if you can make a transcript (start a game and type TRANSCRIPT, usually,) it's a big help.

Unfortunately, my judging may be a bit impatient due to the time squeeze I put myself in, but that is sort of valuable--sometimes I'm less likely to let things skate and say "Oh, I can deal with that, I guess, I'm glad to see anything." Which is a good attitude to have in general, but it's tough to balance that with saying, well, let's help other authors fix what they can, because we don't know what might make a player flip a switch and start to love/hate a game. We can, however, stack the odds in favor of the first with observation and evaluation and such, even if we can't rigorously back ourselves up.

So, see what you can do! I imagine the authors have enough space from their original versions that they are ready to make whatever changes give the most value, and plus, it's always neat to get something just before a comp ends. Or even after it.

HERE is the full list of games. The games reviewed so far are below. I hope to have time to get through the remaining 5 4 3games I can judge.

An Adventurer’s Backyard, by lyricasylum
A Long Drink, by Owen Parks
Mean Streets, by BadDog
Sunburn, by Caelyn Sandel
Terminator Chaser, by Bruno Dias

Oh, and 2 bonuses--it happens that way, things getting done in clumps:

Endless Sands, by Hamish McIntyre
Six Gray Rats Crawl Up the Pillow, by Boswell Cain

Terminator Chaser, by Bruno Dias

Terminator Chaser threw me off as I expected it to be timed. It wasn't. You need to shut down a mining base on Mercury before the sun comes up, but of course it is not that simple.

Thursday, February 19, 2015

An Adventurer's Backyard, by Lyricasylum

This is a short treasure hunt with a few small puzzles. It very much feels like a first effort, and while there's nothing to offend, there also isn't much to inspire. Still, I think we should all have the fun of writing a game like this.

It's also written in ADRIFT, and while I admire Campbell Wild's work on ADRIFT and ADRIFT programmers' focus on just having fun, I'm spoiled by Inform's robustness, and the simplicity of creation doesn't always match up with the simplicity of solving and navigating the parser (e.g. must say OPEN TOP DRAWER and not OPEN TOP.) That happened a bit here. It got in the way of a game that was intended to be just whimsical.

Wednesday, February 18, 2015

A Long Drink, by Owen Parks

The game was called A Long Drink. And I didn't expect to see the Kool-Aid Man. I expected plot twists, not twisty straws. And a murder, of course. And evidence pointing to the last guy you thought, even after considering the last guy you thought. I knew all about alcohol for its own sake, and what with the title, I hoped there was a little more to it than that. Secretly, I was hoping for gratuitous smoking. Especially indoors. Criminally under-represented these days.

So it began. A mysterious "accident." A woman named Val. A mysterious house. And the host dead upstairs. But I'd seen text adventures like this before. It would have to do something to get me interested.

It was the Trizbort map that did it. I'd never seen so many one-way doors in such a small area before. It looked like the house was a trap, then a bedroom. Perhaps that was where it ended. Not the basement.

Sunburn, by Caelyn Sandel

Sunburn is a brief work about a (likely trans, based on hints) woman who has been locked in an office to die painfully (mentally and physically) in retribution for turning a passive-aggressive "nice guy" down. It has alternate endings, which is a specialty of this author (and something I like to see,) and it fits into a tidy zblorb.

Tuesday, February 17, 2015

Mean Streets, by BadDog

It's neat to see not just Inform games in the comp. This is an effort from BadDog, who is new on the scene. It's set in Grittyville (Aw, man! Now I should've totally written my introcomp game last year. It was called Grubbyville. I may or may not have to change it now. You snooze, you loose) and advertises itself as a sort of noir adventure.