Stacey Capps' Interactive Fiction Journal
(Latest 20 entries) (Calendar) (Friends) (Captain Fate: Revealed) (User info) Navigate: (Previous 20 entries)
Saturday, February 26, 2005
After going two thirds through the process of creating autonomously operating non-player characters, I'm scrapping the notion. The further I got, the more the characters's actions became a distraction to the game.
Giving characters autonomous actions makes them feel more important to the plot. The player naturally tends to focus on them and any items they may carry. Since my game is one where the characters are only minimally helpful, this tends to lead the player astray.
Also, detailing the exact actions of my characters forced me to create items that they utilize as part of their jobs. As I began to anticipate the beta testers' attempts to manipulate all these new objects, I realized that adding them wasn't benefitting anyone. It only makes the game more frustrating for players by multiplying the complexity of the world and the number of "wrong" solutions to puzzles.
It's not a loss at all, though. I learned a lot about creating automated routines, and I'm sure the day will come where I'll want to use what I've learned. Also, I added a great deal of responsiveness to the characters that I'll keep in tact for my next release.
On another note, this weekend I played Lost New York by Neil deMause. I couldn't resist the idea of playing a game that would also give me tours through Manhattan at points throughout its colonized history. I enjoyed the game a great deal, perhaps in part because I sympathize with the author's ultimate point.
If the snail mail address listed for game registration is still correct, the author lives quite close to me. So I'm going to send him an email and ask whether he would mind answering a few questions from a would-be amateur game author. I'm sure I'll report it here if anything comes of it.
I also provided some beta testing commentary for an unnamed game that uses PHP to provide the player with selectible lists of nouns and verbs. It's an interesting concept and I wish the author well, but I'll stick with Inform based on my experience.
Sunday, February 13, 2005
First, the game news. After getting the whole thing pretty much ready, I've stopped to take another look at it. I'm now in the process of making a version two, where the non-player characters act autonomously and react better to a wide range of interactions with the player.
What prompted this was a nicely practical article I recently read. I came across it by volunteering to aid the editor of an upcoming book on IF Theory. I'm one of many people providing readers' feedback on the book's selections. What I reviewed was actually pretty interesting, so I decided to try it out in my game.
I'm actually about a third of the way through this process, so I don't think it's a long delay. In the end, though, I'm not sure whether it will ultimately feel worth it. I may decide that all the hustle is more of a cluttery distraction than an aid. If so, I'll scale it back until I'm satisfied. In any case, I'm going to hold off publishing a link to the game anywhere until that's resolved.
While I've been working on that, I've completed the online research materials for MIT's course on interactive narrative. I decided not to do the course's three projects, on the grounds that I've done things similar to two out of three of them already. The third doesn't particularly interest me, nor did the students seem to like it much judging by the online samples of past projects.
I've also been reading encyclopedic entries about interactive fiction on a site called the IF Wiki. I'm about two thirds through it, and it's been an interesting way to touch upon ideas that aren't complex enough for whole articles.
Finally, I've been playing IF games in my spare time. I decided to start at the beginning by playing a few interesting games from the commercial era that I missed. I've finished the only vaguely racy Leather Goddesses of Phobos, which I was not allowed to play as a minor. I completed Bureaucracy, a game inspired by Douglas Adams that my father wouldn't buy me for some reason. And I'm working on Deadline, a mystery that I found a bit too challenging at the age of nine. It really is as difficult as I remember.
I've also been reading various articles and sources on games written after the collapse of commercial interactive fiction. It seems many things have changed. So I've picked five games for play at some later date. They are Curses! by Graham Nelson, Photopia by Adam Cadre, Metamorphosis by Emily Short, Spider and Web by Andrew Plotkin, and Christminster by Gareth Rees. In addition to most of these being written by staple authors of the genre, they all break the conventions of the olden days in one way or another.
Saturday, February 5, 2005
I'm happy to say I did get permission from the original Captain Fate authors to put out a link to the game on rec.games.int-fiction. Actually, I'll be posting about it on a couple of livejournal groups first to test the waters. Also, I need to read the newsgroup to make sure I know how to post my announcement the right way (if there is a right way).
I also got some very useful feedback about my game via email. In many cases, I made relatively minor adjustments. In one case, I was embarrassed to realize that in my haste to incorporate additional flavor text, I'd made my illiterate hero read. Doh!
One tip I got was that it would be more interesting if the characters in the story responded better to the player's actions. In specific, the solution of one puzzle does appear to upset one of the characters. But then things revert more or less to normal.
I agreed it would be funnier if that character remained a bit peeved. It also made sense for the other character to worry about further shenanigans. So I adjusted a few responses depending on whether the event has occurred or not.
I also broadened this idea to a general interest in how perceptions of people change. This is a ripe area for exploration with a superhero, I figure. In the original game, the characters seemed to know that the guy in the costume was the same guy they'd seen earlier. Well, what if they didn't? ( Read my conclusions, behind a link since it spoils the modified game ending )
I also kept with the original concept that our hero thinks he looks cool in his costume while bystanders are bemused by his weird getup. I hope the players will find all this rather funny and not at all confusing. I admit it was confusing making all the changes, but I think it turned out well.
Friday, January 28, 2005
With the goal of smaller, more efficient code in mind, I went back and made a number of modifications. I refused to do anything that, while expedient, would make the code less readable. I did turn off a checking routine during my final save that causes the game to spit out messages when errors occur that are useful to the programmer but confusing to players.
- I reduced the code file from 3000 lines and 124k down to 2530 lines and 95k.
- The compiled game file is only 92k, a mere 6k more than the original 'Captain Fate.'
- I'm now confident that I can create a two-hour game that is under 512k.
The newest version of Captain Fake is functionally similar to the previous ones. However, I did correct one bug and craft more meaningful messages in two other circumstances. I also made the game respond the same way to locking or unlocking the "men's room" as it does with the "men's room door." These are things I missed in the clutter of the original file that revealed themselves readily in the latest version. I think this is the point where I should take a break. I've used every resource available to me as a programmer, all the way up to combing over the basic library files for the Inform design language. I'm fairly certain that where I don't know something, I'll be able to figure it out if need be. My last follow-up will be to email the author from the Inform Beginner's Guide for formal permission to publish my extended Captain Fate. If I get it, I'll post it in widening circles online to introduce myself. Next I'll spend some time reading theory and critique on interactive fiction. I'll probably play a few games while I'm at it, since I'm starting to realize how much I've missed over the years. I'm also going to go through MIT's open source course on Nonlinear and Interactive Narrative. The course grounds the student in experimental creative works, then specifically discusses the Z-machine, Inform, and Tads. In light of a recent article from Slate about Why Video Games Shouldn't Be Like the Movies, I'm interested to see what I can do with narrative to make it feel less boilerplate. I agree that many games today suffer from a disconnect that occurs when the player moves from interactive, nonlinear play environments to linear, predetermined "cut scenes." While a text adventure is surely not going to resolve this for the masses, it's a great place to experiment with new narrative styles on the cheap. Whatever I learn here, I can take with me.
Sunday, January 23, 2005
I'm snowed in by a blizzard this weekend. I have all the food, blankets, and movies I could want. But I also feel unproductive somehow simply waiting it out. So I made a few touch-ups to my game.
I've made it easier to change clothes, buy things, and ask the NPCs for things. I made some minor changes to the game script. I removed an oversight that allowed the player to solve one puzzle without receiving points for it. And I found a way to reactivate the customer's amusing observations to the superhero costume, changing them a bit to match my own sense of humor.
You can download Captain Fake again for the latest release. None of this is essential, but it might make things easier/funnier.
Some interesting statistics:
- The code for the original 'Captain Fake' had 718 lines of text.
- The precompiled code (the file worked on by the author) was 28K in size.
- The compiled game (the file downloaded to begin playing) was 86K.
- The code for my extended version is 3000 lines long.
- The precompiled code file is 118K.
- The compiled game file is 124K.
- Inform will only accept precompiled code up to 512k in size.
- A related game format, Glulx, will accept up to 4 MG of precompiled code.
- Glulx doesn't run on as many platforms and has a few headache-inducing differences.
Based on this, the next thing I'd like to learn is how to create cleaner, smaller code. The contest I'd like to enter someday specifies that the game should be playable within two hours. Personally, I'd prefer to stay away from Glulx for my entry. I wouldn't rule out switching to Glulx someday. But I'd rather do it while writing more of an interactive fiction opus. This game is very short. If I went on at the same pace, I could only write for roughly four times longer before having to switch formats. Surely I can do better.
Wednesday, January 19, 2005
I'm finally finished.
To play the extended game, download Captain Fake. If you don't already have it, you'll also need to download Frotz to play my game file.
The original exercise comes from several latter chapters of the Inform Beginners Guide. I've added new puzzles, new objects, a new location, and a creative twist on Captain Fate's superpowers. I've also added lots of weird code that may or may not work right in all cases. So as with previous game exercises, I'd appreciate receiving reports about typos, game bugs, or nonsensical response messages.
If someone wants to be more than helpful, they could also email a game transcript back to me. Type Script On after starting the game up. This will create a text file called captainfate.log. When you're finished, email that file to the address on my livejournal profile page. Your game transcript will be kept confidential and will be used only for my learning purposes.
Friday, January 14, 2005
I've finished coding the last puzzle, and I've resolved how I want the game to end.
I have one last bug to correct. I also want to update how the game tallies the score. And I'll want to reread all the room descriptions to make sure they're accurate in light of my changes.
I basically have one more solid day of coding to complete. Then I'll release the game and see how many flaws I missed.
Since work has gotten busy again, I'm more tired mentally and have less spare time. I'm only able to get in an hour of coding here and there during the weekdays. By the time I get to the weekends, I need a rest.
But on the up side, I have Monday off for Martin Luther King Day. With this going for me, I'm hoping to release my game sometime next week.
Wednesday, January 5, 2005
I'm down to the last puzzle, and it is of course the most complicated one. Then I have two parsing issues to clear up and some tidying to do before I declare the project finished.
The sense that I'm going to finish this before taking a break is growing. I would hate to be this close and then have to go back months from now and review my code from scratch. So chances are that even if things continue getting busier at work, I will manage to finish the project in my off hours.
Things are getting busier, by the way. If you don't hear from me for a while, that's why. I can't even be 100% sure that I won't slip into radio silence one day. If I do, just bear with me.
Anyway, I'm noticing two interesting things about this experience. First, my speed at coding has accelerated a great deal. I need to research solutions less and less, can code faster and faster, and spend less and less time tracking down punctuation errors and bugs.
The other, more interesting thing is that the feeling I get when working on my project is very similar to the feeling I get when solving a really good puzzle game. Only I'm doing something that nobody has done before, and there is nobody who can solve the problem but me. This gives me the warm fuzzies.
Plus in addition to the logistics of creating a puzzle of the right type to be solved, there is also the fun of tracking all the possibilities the player might reasonably try to reach their goal. I get the feeling that by solving various issues, I am helping the potential players of my game. There are still limits to how far I will go, but this does inspire me to work harder.
Monday, January 3, 2005
I expected my activies to promptly halt at New Years, but it looks like I have at least another day to work. Depending on the extent to which activity resumes at the office, I may also have varying amounts of time to spare during the rest of the week.
At this point, I can see the end of the tunnel. But it's dim pinpoint of a light, not much to get excited about yet. I have one whole puzzle to code, about two thirds of another, a couple of parsing errors to correct, and a change to the game ending to make.
I've successfully incorporated code and information from the DM4, rec.arts.int-fiction, the IF Archive, and Roger Firth's FAQ into my game. The size of the original code file is about double the original. So it's safe to say I've spread out a little.
My opinion is growing that I should probably sit down and read the DM4 at some point. I'm not convinced that I should do all the exercises in the book yet. (There are 138 of them.) But it would be nice to sit down and read the contents, so I will at least know where to go when I have a question. I'm not entirely sure when I'll have the time, though.
Tuesday, December 28, 2004
I've figured out the solutions to both my problems. The first issue, which I had almost solved yesterday, is completely fixed and working now. The second issue has been solved as well. I have a little more debugging to do tomorrow, then I can move on to creating code for my additional puzzles. I suspect what I've learned - both the code and the methods for finding answers - will continue to come in handy.
On the down side, I realize my solutions may have created other problems. I may need to specify a number of reactions for various actions the player may try though they aren't necessary to win the game. But I'm not ready to debug the entire program just yet. My goal right now is to get things working on the most basic level. Then I can test and refine what I've created.
If during the testing process I find that my solutions created more problems than they solved, I'll look for alternatives then.
Monday, December 27, 2004
I did indeed fix the problem where the game responds to 19 verbs by trying to implicitly take objects that can't be taken. (It even prints out a message to this effect, which can be downright problematic.) For my future reference here is some sample code.
!*********************
Object LibraryMessages
with before [;
Miscellany: if (lm_n == 26) {
if (lm_o == OBJECT) rtrue; ! This keeps the (first taking)
! message from appearing
}
];
!*********************
Simply replace the word OBJECT in the code with the thing you want to never be implicitly taken. A new version of William is now online with this fix in place for the hat and pole. It was very easy to do, once I understood the concept. The only problem with the code above is that if you have a game where this issue keeps cropping up, you have to specify one object after another. I would rather the code automatically do this for every object that has been given the "static" or "scenery" attributes that Inform uses to specify objects that can't be taken. I guess I'll have to figure that part out on my own tomorrow for Captain Fate.
I had a nice Christmas holiday, and now it's time to return to this project.
I got a number of polite and useful responses to the query I posted. The huge majority suggested that I check out rec.arts.int-fiction for more information. I left messages along the lines that I would try there shortly. But having done a search on the newsgroup's archived posts, I may not have to. It looks like my questions has been asked and answered multiple times in the past. I can probably solve my problems by reviewing what has already been said.
Today my very simple goal is to go back to the William Tell game and modify code for Gessler's impudent hat on a pole. The game currently gives seemingly nonsensical answers when you try to eat, wear, or remove the hat. If I can fix those messages today, then I can also fix some of what ails my extended Captain Fate project tomorrow.
Meanwhile, I've cleared through all the tasks I set for myself at work. I can now concentrate on interactive fiction with a clear conscience, knowing I'll be heading into January in the best of shape. Unfortunately, I'm not sure I'll have finished Captain Fate by then. But I will have given it a good try, anyway.
Wednesday, December 22, 2004
I've already started using the Designer's Manual and the library contributions in the IF Archive to help me solve issues that are cropping us as I continue this project. But after trying both and thinking really hard about it, there are a couple of issues I still haven't solved.
I've decided to ask the wide world for pointers while I continue ahead with my code. I figure there's no use beating my head against the wall over issues that other people have surely encountered and solved. If I don't get a response, I can always go back and try again.
So I posted the following to inform_dev and int_fiction:
1) Objects that have 'static' or 'scenery' attributes can't be taken. But I'm receiving messages for other verbs besides 'take' that say (first taking noun) before giving the string I have inputed as a response. Example verbs include remove, eat, and wear. Is this a function of the interpreter (Frotz) I'm using, or should I be coding my responses to those verbs differently?
2) Is there a way to direct the parser to prefer a certain secondary object? For instance, I have two doors with locks in the same room. There is a red key for the red door and a blue key for the blue door. Assuming the player has both keys, is there a way to convince the parser to automatically use the correct colored key when no key is specified?
3) Is there a better / different place to post these kinds of questions?
Tuesday, December 21, 2004
2:58PM
I've created all the objects I need for my updated version of Captain Fate. And I solved a couple of small issues with the game's mechanics that got inadvertently triggered by the new objects. I've also added a second non-player character - a waitress named Alice.
Today my task is to make Alice respond somewhat naturally to the player in a variety of circumstances. I'm also moving a needed item into Alice's inventory and tailoring her responses to make it harder for the player to get that item.
After I'm done with Alice, what's left is the heavy lifting of making my puzzles work properly. It will be a great opportunity to create and use variables at several new points in the game. The closer I get to this part of the project, the harder I realize it's going to be.
I'm also keenly aware that players can and will try any number of things that I haven't accounted for. I'm sure I'll spend a lot of time accomodating wayward player behavior before I'm done. But I'll likely release the game before I've dotted all the i's and crossed all the t's. The sense of accomplishment will be much needed by then, plus it will help me muster the energy to clean up the final product.
Tuesday, December 14, 2004
I've been working on my extended version of Captain Fate. The unisex bathroom has been divided into separate men's and women's rooms, each with its own door, lock, key, light switch, and toilet. Hilarity ensued as I sorted through all the issues involved with reusing words to identify similar objects. Then I discovered that I couldn't simply add the women's restroom as a location for the light switch, because flipping the switch in one room then caused the lights to change in the other as well. But I've got it all sorted out now.
I also added a standard diner stool in front of the counter. (There are multiple stools, but the others have customers sitting on them.) Usually, Inform gives the same responses whether you sit on, stand on, or lie on something. Using Roger Firth's FAQ as a guide, I arranged for the stool to give different messages in each case. And of course, you can't actually lie on something as small as the stool at a diner counter. I really enjoyed puzzling out the proper behavior for this one.
The next step is to populate the women's bathroom with some additional items. After that, things will get a little harder for me.
Monday, December 13, 2004
1:22PM
I finished reading the appendices for the Beginner's Manual. Meanwhile, I got a responding email from Sonja Kesserich, one of the authors of the Inform Beginner's Guide. This was very gracious on her part, especially considering that I downloaded the guide rather than purchasing it. The email really makes me feel I'm headed in the right direction with this little project.
She gave me a couple of good suggestions on what to do next, both of which I intend to follow up on. And she told me that the issue with Tell's arrows was corrected in an updated version of the manual, which I failed to download after taking a break from the project. In the future, I'll have to be more careful about using the latest materials.
Today I also read Roger Firth's Inform FAQ. There's a lot of useful information in there. I'll have to check out the rest of Roger's pages online as well.
I have a rough outline on the additions I want to make to the Captain Fate game. I'll be cracking on that shortly.
Friday, December 10, 2004
I've finished the third program from the Beginner's Manual. You can download the adventures of Captain Fake now. However, you might want to hold off on it. I've decided to try adding a little more complexity to this little game as a way of testing what I've learned. We'll see whether I can make it even harder to get that superhero costume on. I'll post again with a new version of the game when I'm done.
The current version does include, once again, a few item descriptions that aren't listed in the book. I've also added a special hint for the player, sinse I felt one puzzle was in need of foreshadowing. And I did a little playing around with verbs after I discovered that the game wouldn't let me 'order' a cup of coffee. They're all relatively small changes.
I've finished reading the book proper, though I still have three appendices to go through before moving on. To relish the building sense of accomplishment, I sent a 'thank you' email to the manual's writers. I also added the Inform Designer's Manual and Twisty Little Passages, a book on interactive fiction theory, to my Amazon Wish List.
The jury is out on whether I'm willing to create a game from scratch based on what I know so far. I suspect the answer is yes, since I still seem to have a certain amount of free time. Also, having glanced inside the Designer's Manual, I'd like to avoid getting frustrated if higher demands at work resume while I'm mid-chapter. For now, I'd rather spend time researching interactive fiction theory and critique, since it will be easier to resume my reading if I'm forced to take a break.
You know, I never did figure out how to resolve the issue with multiple arrows in Tell's quiver. Perhaps I should peek a little further into the Designer's Manual just this once...
Thursday, December 9, 2004
I'm working on the last game in the Inform Beginner's Guide. It's about a superhero in disguise who's in a hurry to save the world. All he needs to do is discretely change into his superhero costume, which turns out to be harder than it sounds.
I'm about two thirds finished with the game as written. I'm sure I'll spend more time modifying it than I spent following the given instructions. I'm learning a lot of useful information about how the player can interact with the game's characters. The coding shortcuts explained in the later chapters are also much appreciated. But I'm going to wait until I'm finished to assess how much I've learned overall.
Meanwhile, I added a few more finishing touches to the game about William Tell. I was dissatisfied with some of the message responses. So I added better responses in case Tell tries to interact with various objects or shoot friendly characters.
I also finally found an active livejournal community for people interested in interactive fiction. Various other communities have been started and abandoned, but int_fiction seems to be in good hands. The profile information alone contains more content than I've typically seen elsewhere.
Tuesday, December 7, 2004
Now you too can be William Tell, famed marksman and man of the people.
Download William. If you don't already have it, you'll need to download an interpreter to play the game. I've found that Frotz works for a wide range of Windows operating systems.
Please reply to this entry if any of the following occurs to you: - You're unable to run the game after downloading an interpreter.
- You notice an error message at any point during play.
- You receive a nonsensical response to a typed command.
- You notice any spelling or grammatical errors in the text.
Like the Heidi game, this one comes largely from the Inform Beginner's Guide. Also like the Heidi game, I have added and edited at my whim. In my version, Tell gets a funny feeling if he tries to leave the area without playing out the famous fable. He's now able to shoot Gessler's hat, Gessler's sergeant, or Gessler himself. Also, the final text given when you successfully complete the game provides a slightly better sense of resolution. Finally, a good number of items listed in the descriptive text can be further examined. This corrects the game's unfortunate tendency to tell people that 'there is no such item' around. I also corrected a bug whereby the game erroneously awarded points for giving an arrow to Tell's son Walter, allowing you to gain more points than the game is supposed to be able to award you. While this struck me as amusing while playtesting, I decided to correct it. There's one remaining issue. I don't like the way the game handles Tell's arrows. The game resorts to gibberish if you try to drop them or give them away before removing them from the quiver. I'd prefer the actions to behave just as they do after the arrows have been taken from the quiver. Or the game could remove the arrows before trying the actions. At the very least, the player should be told to remove the arrows first. But I'm going to hold off on this fix, since I suspect the solution is coming in one of the chapters I'm about to read next. There's one more text adventure left in the book for me to work with, followed by an additional 50 pages of reading. Then I'll have to decide whether I would like to make my own adventure from scratch or whether I'd rather move on to the Designer's Manual, Version 4. Of course, all this will also depend on how much time I have left before work gets busy again.
Friday, December 3, 2004
My, but it's been a very long time.
First, I should summarize. About a week after I wrote my last entry, work became all-consuming for me. I did complete my certification and can now amusingly put the letters CTS after my name.
Rather than letting up, my workload increased afterwards. During the summer, I compiled statistics and wrote a report to my manager on the rate at which work was increasing for me and my coworker. The information was noted, but it wasn't seriously acted upon.
The latest news is that next year's budget includes allocation for another worker. However, it's unclear whether the new worker will be given a schedule that is most suitable for the job, a mistake that may be tempting at a time when the weekend staff is recognized as being light but which would spell the ultimate defeat of the initiative.
There's nothing to do but wait and see what happens. In the meanwhile, my firm has traditionally experienced a lull in activity between Thanksgiving and New Years. My work level is finally back to where it was when I began the interactive fiction project in the beginning.
It's temporary, I know. But it's enough to get me back on track. I read about 50 pages ahead of my last posting before quitting, and now I'm working on code that will refresh me on what I learned back then. With any luck, I'll be posting another shallowly fleshed out 'game' before the new year. Until then, I'll write updates on my progress.
Navigate: (Previous 20 entries)
|
|