WorldMaker.netBlog

Blog

My Cover Letter Project

2 days, 23 hours ago

Galaxy's Next Most Awesome Rookie: Earth Edition: Max Battcher's Cover Letter: The Game is the many-subtitled mini-game I've developed as something of an interactive cover letter [1], in part to make up for my lack of ability to get to this year's PAX [2]. In case you think there is room for another sub-title in the game's name, rest assured that today I also sent out a couple of "Special Editions". To play it, all you need is Löve 2D 0.6.2.

This project was an interestingly tough creative challenge for me. It's tough trying to creatively write about things like "why you should hire me", and some of the things that appear on a resume (or don't, for various reasons), and keep them somewhat light-hearted and almost entirely skip-able. I'm not quite sure that I succeeded with what I was going for, but I do hope the final game feels at least half as silly and sweet as I had meant it to be.

At final count the game consists of nearly 3200 words of dialog and is somewhere shy of 560 words of dialog in the minimal path through the game. The script is 27 pages in Celtx PDF output, and I am curious if there is any sort of easy pages-to-minutes rule of thumb for KeyLimePie projects akin to screenwriting's established 1:1 estimate. I'm pretty sure there isn't, but this is the first finished project. [3]

On the technical side, I do feel that I succeeded in what I set out to accomplish. As I mentioned in my last blog post, I Löve KeyLimePie, the Löve 2D KeyLimePie client was written specifically with this project in mind. I wanted to build my cover letter ...

I Löve KeyLimePie

3 weeks, 2 days ago

I just recently got a working client on the fifth platform [1] for KeyLimePie, which is written in Lua for Löve 2D. Löve 2D feels like something in between what I've done with pygame and XNA. I wanted to prove that I grok Lua and Löve 2D was a good way to do that. The Löve 2D client is the richest offline client for KeyLimePie thus far. (The Silverlight client is still my preferred online client.)

I think the simplicity of KeyLimePie's base model once again shines in the Lua client. The Lua code is certainly smaller than I expected, including the fact that the code does all of its own update/draw logic.

The Lua client also happens to be the first implementation of a couple of features I've been meaning to implement in other clients, but the Lua client benefits from the project that explicitly is targeting it, my "cover letter project" [2].

Source Code for Ransom

I've built most of the KeyLimePie clients and tools with Open Sourcing them in mind. However, I'm not sure if there is any actual interest in this toolkit of mine, so I'm going to hold it for ransom:

I'll use contributions to gauge how much documentation I should write, and how many of the tools, clients, and servers I initially release to the web as Open Source. I think the ransom amount is a good start (and a great deal on the work done to date! [3]), but some things, like a lot of the work I've put more specifically into A Robot Fugue may require contributions to exceed the ransom amount before I consider open sourcing them. (For instance, I do have a number in mind to CC license the entirety of ...

On the Unfulfilled Potential of Sliders

1 month ago

The television series Sliders, a mid-90s series about sliding between parallel worlds, has come up in conversation a few times recently. [1] I still believe that Sliders had the potential (still does, given the right reboot) to be a strongly American counterpoint to Doctor Who-- the type of anthology series that could last, and maybe even say interesting things about American culture along the way.

I actually watched the first few seasons of Sliders as they aired. I wasn't able to follow the final move to the Sci-Fi Channel, but did catch most of its seasons in rerun. (It does flavor some of my opinion of those seasons that I originally watched them out of order.)

The first season, in particular, of Sliders has some great moments, and sets up a lot of potential that ultimately never quite gets followed through. Most importantly the show never quite hit the right rhythm across multiple seasons. Part of that is the changing requirements of the double network swap, and part of that is that the show just didn't have the "luck" necessary for longevity.

The Formula

An American whiz kid latches on to an effective, albeit not entirely accurate or sound, method to slide between alternate earths. Along for the journey are his girlfriend, his professor, and a down-and-out soul singer who happened to pass by.

Each episode or so brings a new slide to a different earth, that may be better, worse, or entirely different than the last destination. It is easy for episodes to be one-offs, and to tell anthologized stories.

For the most part the focus is on the journey, rather than the destination of "home", which is elusive (and possibly illusive), and generally impossible, with the show's tech, to pinpoint exactly.

The key piece of ...

Film of the Moment: Inception

1 month, 2 weeks ago

I went into Inception focused on staying away from spoilers (and so I'll try to keep this initial impressions post spoiler free), but I felt pretty spoiled indeed because I have read so much of PKD and Zelazny. It reminded me that I had wanted to write a screenplay based upon Zelazny's The Dream Master as an exercise. (It also reminded me why I never followed through on that exercise.) Inception takes a similar opening premise and then runs with your basic heist movie from there. [1] You know the drill: assemble the team of specialists, have your planning and training montage, then bob's your uncle. Even if all it managed to do was be Ocean's Eleven meets The Thirteenth Floor the movie would be a fun ride. I think Inception is even more awesome that that.

The obvious comparisons of Inception are to The Matrix (whereas the stronger comparisons are to the flawed, but mostly under-appreciated The Thirteenth Floor, which I need to rewatch, or to Dollhouse). In many places Inception (seemingly, but presumably intentionally) takes pieces from The Matrix and arranges them in better ways and makes much more sense of them. It also manages to make its infodumps feel much more organic throughout the story structure. (So, in summary, much better than the first Matrix film in nearly every way.)

My biggest problem with the film was that, to me as spoiled as I am, it felt like it left the training wheels on. I felt like I was ahead a beat or two for the length of the movie, but I can understand that so much of that feeling was that I was already primed for it by some of Sci-Fi's masters (and Dollhouse), and that Nolan's well done foreshadowing ...

On Monkey Island Special Editions, DRM and then The RealID Fiasco...

1 month, 3 weeks ago

Some small bits and pieces a bit longer than gurgles and hopefully quite a bit less than my usual posts in scale, but still blogworthy. I could describe the interconnectedness of the disparate topics (winding from adventure game controls to DRM to trolls and how to deal with them), but instead I'll offer an achievable to anyone willing to stitch some or all of it together themselves.

Direct Control in Adventure Games

As loyal fanboy, I of course acquired LeChuck's Revenge: Monkey Island 2: Special Edition.

One of things that got hyped in the build up for LR:MI2:SE was the addition of "direct control" for Guybrush, as opposed to point-and-click--based pathfinding. For the third time in the series (following EMI and TMI), and the first time in a 2D entry in the series, there are now controls to left-stick (or "WASD") your way around.

I still remember the great debates on the subject around the time that EMI was released (which were a shadow of the longer ones preceding Grim Fandango, of course).

I find it interesting which adventure game fans believe which control scheme is preferable. In playing LR:MI2:SE I've been using a 360 controller (although I own it this time on the PC, via Steam), primarily because I've been playing it on my larger flat screen second monitor.

The control scheme for adventure games has swung back and forth between both poles for far longer than gamers often seem to remember. Certainly in the Golden Age of the 90's all of the majors used point-and-click, but that wasn't always the case. I think it is easily forgotten that the early AGI and SCI games from Sierra used direct control, with joystick support even. (They also had often parsers ...

Testing A Robot Fugue: Act 1

2 months, 3 weeks ago

So a company that I'd love to work for has announced they are working on two other franchises that are dear to me from childhood... In talking and scheming about how I might coax employment out of that business, A Robot Fugue was brought up.

I feel like I should prove that it is a real project in an interestingly good shape. I'm mostly happy with the first act so far (of an expected six), and thought I'd share it with anyone willing to understand that its all just a rough demo of a work in progress and that it still has a bit left to finish, but what is finished is a lot of the optional, early expository stuff. (It should give you a strong overview of its world if you feel like exploring its edges.) I'd love any feedback that I can get. If you find yourself reading this and want to be invited to this very rough and early alpha test/experience, email me to let me know your interest and the primary email of your Google account.

There will be more to come, but I'm actually excited by how well it seems to be working, many rough edges and missing acts and all. This is one of the first builds of the game using the proper KeyLimePie engine (as opposed to its Celtx script, command line testing tools, and Ren'Py pretending to be KeyLimePie) and I'm excited by that. One of the next big stages in testing down the road, I expect, will be when I build KeyLimePie's "secret" save game/progress system. I'll have a bigger call for testers then, for now this is just an early rough test/analysis.

Design Refresh for My Website

3 months ago

While I was working on my nice new Pygments style, I got to thinking about my website's own color palette which after a few years had grown into an interesting hodge-podge. A palette refresh turned into a bit of a CSS audit and an excuse to play with some cool new CSS3 features and some old IE4 friends that are finally about ready for prime-time ("Hello, @font-face!").

July 4th will begin the 8th year of my blogging from my domain name. In that time I've had three major designs (with quite a few more than that rewrites and tweaks). The current design dates back to the migration from Drupal (yuck) to my current, not-very-fancy-but-all-I-really-want custom Django mini-Frankenstein. It's hard to believe, but that happened this time four years ago, meaning that I've used the current design for nearly half of the domain's life... The current design was rewritten once since then to replace inherited spaghetti CSS grids for YUI's nice clean orderly system.

This weekend's design refresh, nicknamed "tangowithme", I standardized the site's color palette, as with the Pygments style, on the Tango palette, which I love. It's like pastel candies for your eyes. To make palette handling a tad bit easier I used a subtly hacked CleverCSS in a simple design-time build system (along with cssmin to preserve a few useful kilobytes).

The more noticeable differences are that I'm using a couple of CSS3 features that you will catch on most modern browsers: border-radius corner rounding and linear gradients. The CSS3 Gradient Generator from glzrad.com was quite nice for visualizing the gradient design.

The most noticeable difference is of course the fonts. If your browser supports it (and many, many will) you'll notice Orbitron headings and Latin ...

A Preview for A Robot Fugue

3 months, 2 weeks ago

I felt it was time to formally introduce my grand writing project of the last few months on my blog. I have been working on a game script about robots that I only recently began to title A Robot Fugue. (That may eventually be demoted to a sub-title, but its much better than the last working title, "Untitled Robot Game".)

This project was the one I used for Script Frenzy, and I brought the current script to the 100 pages required to declare a win! I did cheat, just a little, but I won. The biggest cheat is that a certain bulk of the current script is taken in describing a maze that I'm still not sure will fit into the final game.

So far I feel like I've finished only one of the game's planned six acts. By finished, I mean the act is fully playable and gets most of the (highly expository) points I wanted to get across, but I'm sure it still needs more polish/play-testing. I've got bits and pieces scattered across the other five acts, including the aforementioned maze which may or may not be a puzzle in the game.

In the game, the player takes on the role of a robot named Pov given the choice between a voluntary upgrade and a possibly mandatory deactivation. I've ended up with what I feel to be a very interesting backstory to the game. The world of the game has nearly a century of robotics leading into the alternate 1980s in which it is set.

The title A Robot Fugue has some interesting connotations. Outside of music, a fugue is denoted as "a dream-like state". Certainly, I think this applies to the game at many levels. There is also a negative ...

musdex 10.04.04

5 months ago

Just uploaded the latest musdex (10.04.04) to PyPI and making a quick note here. 10.04.04 is a somewhat significant refactor of musdex, which won't have too many obvious differences without a bit of configuration changing. The new additions is a customizable handler system that will allow for support for other archive formats (beyond just Zip archives), and a customizable way to specify post-extraction "formatters" to make extracted files even more useful under source control. There are no new handlers yet (although I'm considering building an SQLite one for proof-of-concept), but two built-in formatters that can opted in: xmllint and remove_carriage_returns. Details in the documentation including the basics you will need to build a custom formatter or handler.

A Farewell to Microsoft Agent

5 months ago

I attended a pre-Windows 7 launch event (on coding for Windows 7 new features) and heard it as a quick throwaway line in a longer list of deprecations, but a few did snigger at its mention. It came up again today in some reading and this time I thought perhaps to comment on it. With Windows 7, Microsoft officially end-of-lined Microsoft Agent. It seems somewhat odd to eulogize something that can still be downloaded (and considering it came bundled with XP and Vista, it may be decades before existing installs vanish altogether). But in some respects it has already been on life support for years, having never moved beyond its COM roots into the glistening managed world beyond. (Although it was one of the better COM APIs to work with from managed code, but I think the principle is clear that it was a sign of the times when it was bundled in Vista and not upgraded, and particularly not upgraded in concert with perhaps WPF.)

I wonder if perhaps Agent would be something that might have an interesting after-life as an open source tool, but I'm inclined to believe that it won't be relinquished into open source. Even if it were to see an unlikely conversion to open source, I expect that maybe even the open source community might not know exactly what to do with it...

Agent is best known for its abuses than its genuine uses. I can't think of a specific usage that ever really neared the potential for what Agent could be used for. I can only offer my own experiences with the tool, as some small, nearly useless, counterweight to its critics.

Agent was one of the few interesting things that I remember being able to script in JavaScript back in ...

A First Slice of KeyLimePie Part 2: Script Breakdown and Comparing Alternatives

5 months, 1 week ago

Recently in A First Slice of KeyLimePie I introduced a bit of Mass Effect fan fiction as a simple example of a KeyLimePie conversation. In this post I'm going to breakdown the actual script of the conversation, and then compare it to largely equivalent scripts in ChoiceScript and Ren'Py, two of KeyLimePie's nearest neighbors.

There are two key places to start when discussing KeyLimePie conversations in comparison to the other formats:

  1. Choice lists/menus are constrained to 10 directions: the 8 compass directions, a center direction (which I consider the "nevermind" button), and the "next" psuedo-direction (roughly equivalent to a jump/goto).
  2. KeyLimePie's conversations doesn't use a single proscribed scripting language, it's a data model. As a data model, it can be (and usefully is) expressed in any of a handful of markup languages. Both languages in the comparison have different (with a few similarities) procedural scripting languages.

Current KeyLimePie formats include JSON and YAML, with YAML the preferred for writing conversations in (which shares indentation-based formatting with both ChoiceScript and Ren'Py). By current convention, there is a tiny bit of embedded Python that KeyLimePie allows, sharing that with Ren'Py's scripting language, but the Python could be replaced with any embeddable language. The Shepard-Blastos YAML script is actually the first version of the script, but it consequently has some typos that were corrected in later versions. The next major format change for the script was the rewrite of it as my testbed for Celtx import, resulting in the Celtx-formatted Shepard-Blastos script. (I'll be writing my next few conversations directly in the Celtx format.)

Today I wrote an actual exporter from the KeyLimePie data model to ChoiceScript and Ren'Py, so that I could directly point to a comparison of the ...

A First Slice of KeyLimePie: Shepard Meets Blastos

6 months ago

It's one thing to talk about a project and another to show a crude work in progress as an example of what I'm doing with it and where I expect it to go. When I introduced KeyLimePie I mentioned that I was excited about how simple the basic data model is, and yet how powerful (or more precisely: expressive) it can be. Now I'd like to start by showing off some of the simplicity with an actual example. For this first slice [1], I'm going to use a very simple, somewhat silly Mass Effect fan fiction conversation I wrote, in which Commander Shepard bumps into a well known hanar SPECTRE and needs to recruit "him".

This example I first scripted directly in YAML. Then it served as my test script for writing a tool to convert from Celtx to my YAML-based data model, so then it was rewritten in Celtx, had some light spell checking/editing, and was converted back to YAML to compare against the original. Then it was converted to JSON because I decided that I didn't want to use either of the two YAML libraries for .NET in Silverlight, whereas System.Json is quite accessible and handy. (YAML and JSON are good friends, and while I'd rather write by hand in YAML, converting from YAML to JSON is very straightforward.)

Nevermind the technical stuff, let me present what this script looks like visually:

http://if.unlore.com/shepbla.png

That is directly from my visualization tool ("whip"), with no doctoring of any sort. It shows the entire branching layout of the conversation from start to finish, including pre-conditions. I figure that you shouldn't have much trouble following it if you have any experience with state machine diagrams and/or Mass Effect. You'll notice the requisite ...

Storing Documents in Version Control with musdex

6 months ago

I've posted my first (presumably buggy) distribution to PyPI (aka the CheeseShop): musdex (musdex documentation). You should be able to just pip install musdex and try it.

This is part of my lead up to Script Frenzy. I'm gearing up to (hopefully) win Script Frenzy by working on a KeyLimePie project. I've got a game backstory and outline I've been working that is less controversial than some of my earlier stuff, and I think a lot of fun. I've put off some of my KeyLimePie work to focus on tooling so that Script Frenzy is as smooth as I can make it.

To get that "real script feel", plus nicely typeset PDF files to help "win" Script Frenzy, I decided to work in Celtx, which is a free screenwriting tool built on the xulrunner platform. I built a tool to convert from a few simple (and I think reasonably script-like) conventions in Celtx to the YAML KeyLimePie data format that I already have tools to work with. (More proof that I think YAML as the basic data format was a good choice.) I took one of my existing YAML scripts, converted it Celtx and then back, as a good test that things work.

That's where musdex comes in. This is a tool that I've meant to build several times over, but knowing that I'm going to be working in Celtx for a month, I decided to finally build it. The Celtx format, like a number of other common document formats today, is really a zip file of a set of XML and HTML documents. musdex is designed so that I can edit a Celtx document as Celtx appears to see it, and yet (transparently) version control the individual XML and HTML documents ...

Star Trek Online Fan Fiction: Fiara and the Sophorians

6 months, 2 weeks ago

Normally I don't preface my fiction, but this is mediocre fan fiction at best and probably needs a fair warning. Star Trek Online has put me in a mood I haven't felt in years to write some bad Star Trek fan fiction. Something about the limited impact a player can have on a current generation MMO always tends to bring out weirdly deep character back stories from me. I'm not entirely sure why I'm posting it here, feel free to ignore it, but maybe someone will find it funny or interesting. (Hire me, I promise that I can also write better than this!)

STO doesn't have social pages up yet, or I would link directly to the character, so a screenshot will have to suffice. Star Trek, as always, is Copyright CBS Studios, and Star Trek Online and its character creator are Copyright Cryptic Studios. I'm referencing these works within my fair use rights. The portions that are my own insanity and creativity I reserve some rights in accordance with my usual Creative Commons license, as linked in the footer, by-nc-sa.

http://media.worldmaker.net/blog/stofiara.png

Fiara (Rekam, Fiara Wisdom) is a tall, thin, wiry alien with pink skin. As with many players, I do enjoy playing at the extremes of the character builder. (Although it seems to me that more prefer to play at the small end, rather than the tall one, which I always found odd in the superhero MMOs...) Then of course I had to answer what race she was from and why she was on the fast path to being an Officer in the Federation...

First a biography and then a couple of more detailed logs. I realize that logs aren't the best way to write the tale that follows (and I also realize ...

KeyLimePie Visual Novel Engine and the Deceptive Power of Simplicity

6 months, 3 weeks ago

I've mentioned briefly on twitter my attempt to write a game or two in the "Visual Novel" format [1]. It's an easier to write genre than IF, as much as I love IF, and a more interesting genre than just a CYOA. The art requirements are generally a bit kinder if I try to explain them to any interested artists than the traditional adventure game (fewer animations, no walk cycles, ...).

I've smashed this in with my desire to play with writing Mass Effect-like 2D conversations. I realized that a single 2D "compass" menu makes a lot of sense as the driving focus for a Visual Novel game. In particular, it gives more of an IF-like "map directions" relationship to locations, albeit with an even more visual Pie menu chooser.

I think its safe to announce the engine I've been writing, the Keystone Literary Menu Pie (abbrev. KeyLimePie), named of course for the Pie Menu that is the keystone in the engine. If anyone is actually interested, I am planning to release it as Open Source as it comes closer to completion (which should be soon, I expect). I'm focussing on cross-platform, browser-based Silverlight (with IronPython magic!) for the main player engine, which means I will be testing it in Moonlight as well (but I don't expect any difficulties; Moonlight rocks). I've also been building some editing/development tools against normal CPython. (It will be easy to port the engine to non-Silverlight platforms, which are in my mind primarily iPhone and Android. I could see writing a pygame engine as an excuse to better learn pygame, and because that would also be really easy.)

(I guess I should note that I'm not actually announcing any games that I'll be writing for ...

Colophon Copyright © 1999-2010 Max Battcher / WorldMaker. Some Rights Reserved.

With our thoughts, we make our worlds. Font Hosting by Kernest.com. I only buy the best Robots — All my Robots are GSD ServDev® Brand.