Introducing Playfic

So, I made a weird new thing with my 15-year-old nephew, Cooper McHatton. It’s experimental and has lots of rough edges, but quite frankly, I’m tired of working on it, so here you go.

Playfic is a community for writing, sharing, and playing interactive fiction games (aka “text adventures”) entirely from your browser, using a “natural language”-inspired language called Inform 7.

Inform 7 is incredibly awesome and weird. For example, this is a fully functional game:

East of the Garden is the Gazebo. Above is the Treehouse. A billiards table is in the Gazebo. On it is a trophy cup. A starting pistol is in the cup. In the Treehouse is a container called a cardboard box.

Type that into Playfic, and you end up with this simple game, ready to send to the world.

The official documentation is extensive, with a great manual and recipe book. I’ve collected a list of resources to help you get started.

For now, there’s very little documentation on Playfic itself, but you can click the “View game source” link on every game to see how it was made, and Cooper’s adding sample games from the official Recipe Book.

My hope is that Playfic opens up the world of interactive fiction to a much wider audience — young writers, fanfic authors, and culture remixers of all ages.

While the language can be tricky, building simple games is surprisingly easy. Cooper had never coded anything or made a game before trying Playfic, and within 30 minutes of futzing around, he’d made his first game.

Some stuff is broken and missing, but I’d love to hear what you make of it. Open to any and all feedback. Go make some games!


    Nope, it just uses the commandline Inform 7 compiler on the server, so should be 100% compatible. As long as your code doesn’t require any extensions that aren’t bundled with Inform 7, or try to include any other non-existent files, it should work just fine.

    This is truly amazing! You have created the killer IF app. I tip my hat at you both. May bards sing your praises in all the taverns in the kingdom. Here’s wishing you a long lifetime filled with thrilling adventures and vast treasure.

    Most interesting. Little question, though – I can view the most recent games and the most popular games… how do I go about vieweing ALL games?

    You can’t, yet! The Explore section is very sparse right now. I was waiting until I had a couple dozen games before redesigning it to make it browsable/searchable… Expect changes soon.

    I find this intriguing, and would enjoy more games. Here’s some issues I have:

    • No indicator of the size of the game. It would help to know the toy pieces from the long-running ones.
    • Some kind of comments or feedback would be great. What did other people have to say about it?
    • The one time I used save, it seemed to fail. More directions on how to use it and how it works?
    • Is it at all possible to save games to the server, so I could resume from any browser?

    Overall, a great start.

    I’m going to have so much fun with this. The last IF “game” I made was in grade 8 programming. Disguising my laziness as “being clever”, every possible first move ended in death. This time I plan on allowing at least three moves before certain doom.

    Awesome project you two, well done!

    I have a suggestion for you. An invaluable usage of Playfic could be to try out, on the fly, some example code – it could be a simple dirty test of something the author could later expand on; it could be example code to help someone else with their problems; it could simply be a copy-paste of code used in a thread at IntFiction, to showcase the problem and/or the solution. It could be used to simply showcase quick ideas: “Hey, I had this thought for a conversation interface, seems very cool and innovative… I’ll just try it out on Playfic and then I’ll have something to show for it, quickly, no fuss”.

    In this case, however, it would be useful to distinguish between “games”, “examples” (“recipes” might be worth their own cathegory, too), and simple “quick and dirty code”, which I’d call “sandbox”.

    Just a thought I had.

    With the amount of games already in, I think this’ll be a tool of choice come next SpeedIF. 😉

    Another suggestion, though hardly critical and not all that trivial – you *could* implement the use of extensions, by, say, allowing the user to open an extension pane, choose an extension, and automatically copy the contents of that extension onto the source code. There’s a number of cosmetic changes you could do to ensure it doesn’t get bulky and overwhelming – keeping the “extension code” hidden, or on a different panel, or just automatically appending it to a different part of the source code, or what have you – but it’s doable, if not really a top priority.

    Of course, anyone who really wants to use an extension can just do the copy/paste him/herself. 😉

    In a related note, if you wanted to do something of the sort and that meant you had to provide the extensions yourself, rather than using the Inform page, I’d reccommend iXu, an utility which automatically downloads new and updated extensions.

    I probably have too many suggestions for my own good, but here’s another one.

    You could default games to z5, instead of z8. Then, if the game got too big for z5, if it were possible to detect it, you could automatically switch to z8. Or you could try giving the user that option. Again, this is not really a priority, it’s just that I don’t see people using z8 much, in this format – the games done so far certainly don’t need to be z8.

    Also, here’s a thought for the future – it would be *way* cool if you could allow outputting for Glulx and using Quixe (or Parchment, doesn’t it allow Glulx now?).

    Just thoughts that pop into my head. Feel free to tell me to shut up.

    Hey, how come my last comment was automatically posted and my two previous, lengthy ones were “submitted for approval”?

    Peter: Sorry about that. Overzealous comment spam filter.

    Love, love, love all the feedback. I’m planning on doing a semi-private mode, where you can share code with anyone who has the URL, but it doesn’t show up on the site publicly. That might address your use case, but there’s value to showing all that example code publicly, as long as it’s separated from deeper games. I’ll think about that.

    Regarding extensions, I could just add mirror every extension in the I7 extension library, though I imagine that would become a maintenance nightmare, unless I could automate it somehow. Unfortunately, iXu only works for Windows, and I’m using the Linux compiler. Providing an extensions panel is an interesting idea, but I’m afraid that will create the same amount of work to maintain. Though the benefit is that it would expose all the additional features enabled by extensions, and give a way to browse them all.

    What’s the disadvantage to using .z8? Are the files larger, or is there less interpreter support for .z8? I assumed using the most modern Z-code would make sense.

    And yes, I’m looking very closely at Quixe and Glulx. Quixe’s HTML5 save/restore feature is fantastic, and creators won’t hit the memory limits of the Z-machine.

    Keep the feedback coming! Thank you!

    Regarding z8, it’s just that using it when you could be using z5 always struck me as using, say, a shoebox to carry a pair of earring. However, few games nowadays use z5 (though most Playfic games would, I should imagine, be short enough, by their very casual nature), and on the practical side of things, there’s really no difference – practically every interpreter worth its salt out there can play z8 as well as z5, and nowadays space constraints are not an issue – nor, usually, are memory and speed, since most interpreters (even my interpreter of choice for mobile IF, ZaxMidlet, which is java-based) can handle z8 as well as z5.

    So I guess there’s really no *need* to. It’s just that, well, there’ll be lots of earrings in shoeboxes. But when you’re dealing with millions of cubic metres as we do today, well, what’s a few shoeboxes more, heh?

    When you do get around to fleshing out the “explore games” section (which I imagine should be soon, given the number of games already out there), you could include an RSS feed for the newest.

    I agree with Peter that it would be immensely helpful to distinguish between completed games, beta versions, and testing/sandbox stuff (and to default to the last of those).

    It’d also be good if the full Explore section, when it shows up, could be sorted by date of publication. It seems fairly likely that a good number of games will be published only on Playfic, and this would make life much easier when determining which are eligible for XYZZYs, etc.

    Wow, this reminds me of when I was in grade school and we used to program these types of games into our graphing calculators. Good times! Great concept translated into a great website =)

    Again, because my last comment hasn’t been up and it’s been days: since you’ve got so many games up, now, maybe it’s time to refurnish the “Explore” section, and hey, what about an RSS feed of new games? That’d be cool.

    Awesome suggestions, all were already high on the to-do list. I’m going to add a news feed to the site, as well, to keep everyone up to date on changes.

    This is just so interesting. I had exactly this same idea and while trying to figure out ways to build a browser-based compiler for the Inform language, I stumbled across Playfic.

    Great idea using the Inform 7 compiler itself, couldn’t ask for better. You’ve done an exceptional job with it all, the entire site is just perfect and totally lends itself to collaboration.

    Not to belabor the point, but you really do have to make games browsable. Otherwise there’s no way to access older games, and there’s a lot of games there already.

Comments are closed.