Hinterlands: Delivered! (ParserComp 2023 Post-Mortem)

The concept that ultimately became Hinterlands: Delivered! has been floating around my brain since about 2010: an intergalactic delivery driver named T’sino gets stuck on a desert planet while trying to deliver a parcel that (unbeknownst to the courier) contains a powerful fuel source which also happens to be a recreational drug; several competing factions are after the cargo; a drunk soldier named D’zango gets involved; antics ensue. I’d love to say that this plot was influenced by Futurama and Fallout: New Vegas, both of which I love (and there are clearly some parallels between my game and those properties); but at the time I initially had the idea, I would have had only passing familiarity with the former and no knowledge whatsoever of the latter.

Instead, the idea was initially triggered by a news story I heard on the radio, the details of which I wish I could recall. Thinking back, it probably had something to do with Iran and uranium, and the United States and Turkey were probably involved; though in the decade following 9/11, there seemed to be one depressing and convoluted story after another about U.S. involvement in the Middle East. There were seemingly endless occupations of Iraq and Afghanistan, accompanied by the nagging sensation that it was all ultimately about oil, opium, and strategic locations for military bases. In the middle of all this, I imagined some hapless courier, who might at any moment be transporting fuel, drugs, or nuclear materials, blissfully unaware of which faction they might be serving and which others might be paying attention. That’s probably not how anything works in reality, but it’s a starting point for a story.

During this period, I would’ve been reading a collection of Alan Moore’s comic serial Skizz, a sort of E.T. knockoff about an alien who crashes his ship on Earth. Also in heavy rotation at my house would have been Sergio Leone’s spaghetti westerns, which tend to involve an outsider (usually Clint Eastwood) strolling into a small town and getting into lots of trouble. I almost certainly plucked the idea for my McGuffin “colodite,” a dual-purpose fuel/drug, straight from the Richard Kelly movie Southland Tales (though the “spice” from Dune was probably also on my mind). I imagined my story would be told as a psychedelic sci-fi comic in the style of Shore Leave On Pharagonesia by the French cartoonist Moebius.

I made lots of barely coherent notes about this concept, and even sketched pictures of T’sino and D’zango in my notebook. I’d already been thinking of a shared fictional universe, which I may or may not have already begun calling the Hinterlands, which would allow me to tell basically any kind of story I wanted (so long as it happened on an alien planet somewhere and none of the characters were actual humans). Brainstorming this story led to the creation of the Consortium Of Known Occupied Worlds, who have appeared in all of my Hinterlands stories so far. They’re an intergalactic militarized bureaucracy who stand in whenever a story calls for an analog to the United Nations, NATO, the United Federation of Planets, Space Marines, or whatever. Unfortunately it turns out that I can’t draw very well, or consistently, or quickly, so the comic book never came to be; and the idea languished on the back-burner for over a decade.

Around the same time, I wanted to make a text adventure in the shared setting (tentatively titled something like Hinterlands: Worship or Hinterlands: Devotion) but only got far enough with learning Inform 7 to realize that my plan was far too ambitious for me to execute at my skill level, and this project was also put on hold. I still plan to come back to it one day, so I won’t go into detail here.

Three or four years later I had an even more ambitious idea for an RPG (to be called Hinterlands: Refuge), and I began looking for a suitable game engine. I eventually found the Official Hamster Republic Role Playing Game Construction Engine (OHRRPGCE), which had the benefits of being both free and able to run on my laptop. I knew by now that I needed to start small when learning a new tool, so I began making a test game called Hinterlands: Strike! (resolve a labor dispute with turn-based combat, very tasteful stuff). Even this project proved to be too ambitious for my learning purposes, and Strike! was never completed.

So it was that I decided to make the smallest game that could conceivably be called an RPG and to iterate on it, giving each iteration a fancy roman numeral as if it were a Final Fantasy game. The result is the much-reviled LinearQuest series, of which there were nine installments. Following this, I released a spiritual successor called No Exit as part of the 2018 OHR One-Room Game Contest (to mixed reactions). This all culminated in my first serious attempt at a substantial game. Hinterlands: Pilgrimage provided several hours of play, had multiple endings, and was somewhat better received than my previous outings. However, the process of making Pilgrimage left me exhausted and demoralized (and taught me that I’m not much of a coder or visual artist). It would be a couple of years before I made another earnest attempt at developing a game.

When I was ready to try again, I decided to try my hand at a text adventure. Re-purposing the wildly unpopular strategy I’d taken with RPGs, I set about iterating on the smallest text adventure imaginable, resulting in the much-reviled Locked Door series, which had eleven installments. Following this, I released a one-room game called Hinterlands: Marooned! as part of Spring Thing 2022 (to mixed reactions). Now it was obviously time to make a serious attempt at a substantial text adventure.

I needed a concept, so I went back to the old idea I had lying around for a comic about a courier in space. I dug up my old notes, realized they contained more world-building and character sketches than plotting, made note of any useful information, and jettisoned the rest. This was going to be an adventure game as opposed to a comic book, so the whole structure would have to change. Most of the now-outdated political commentary and espionage intrigue I originally envisioned would fall by the wayside in favor of anarchic goofiness.

I started by laying out the basic world map in Inform 7 (minus a few rooms that were tacked on later in development), created a mood board on Pinterest for inspiration (where I placed art from Max Ernst, Roger Dean, and George Herriman alongside each other without irony), and set about designing the cockpit of the ParcEx craft (with aid from a YouTube video examining the inside of a FedEx truck). I still had very few ideas about puzzles, so I loaded the cockpit with objects I thought might eventually be useful. A lot of these items got cut from the final game, but you can still find them in the source code. Some items I knew would be needed for later puzzles (such as the box cutter) were stashed in the cargo hold for easy access until I could figure out where they should really be located.

I then went about implementing the introductory text and the ending sequence, starting from the point where the player cuts open the parcel with the box cutter. This allowed me to test the entire game while I was figuring out what to do in the middle. It was quickly apparent that the player should not have the box cutter until after they’d gained entry to the fuel station (where they’d be met with some Monkey Island influenced futility), so I added the warehouse to the C.O.K.O.W. outpost and stashed the box cutter there. I repurposed a puzzle from the Locked Door series (where the player must disguise themselves as a goblin to get past a goblin security guard) and stationed a near-sighted gate attendant outside the outpost. The goal would now be to disguise oneself in a C.O.K.O.W. uniform and present an appropriate I.D. card.

In my original conception of the comic book, Private D’zango was to be the protagonist’s screw-up side-kick – a drunk soldier accidentally picked up in a bar who followed T’sino around getting them into trouble. For the adventure game world model, I needed D’zango to stay in one place and serve a role in the puzzle chain. I changed D’zango to be of the same Outer Lumpan race as the player character so the two might more easily be confused by a near-sighted member of a different species, dropped his wallet somewhere easy to find (at the campsite, where he was presumably trying to buy drugs), and proceeded to set up a series of hoops through which the player must jump before talking him out of his uniform.

Part of this series of obstacles involved Private D’zango being hidden away in a speakeasy underneath the inn, with the entrance blocked by a bouncer who must be shown a certain difficult-to-obtain object before granting admittance. This was inspired by Sierra’s Quest For Glory , in which the player could give a secret signal to a bouncer in the tavern to be admitted into the Thieves’ Guild. This whole puzzle chain would come back to bite me later, as testers had no idea where to even begin looking for a uniform and little motivating for bypassing the bouncer. I slapped a band-aid on this problem by including a scene at the beginning of the game where the player can watch D’zango enter the tavern, show something to the bouncer, and walk downstairs.

The chain of events necessary to get into to the speakeasy and get the uniform is convoluted. There are two parallel paths that must be walked. One involves spying on someone in the inn, trading this knowledge to an information merchant for a clue about bypassing the bouncer, and then obtaining a rope and grapnel to go about retrieving the object which must be presented to the bouncer. The other path involves working odd jobs for an antiques vendor to earn money to buy a couple of items that must be given to D’zango before he’ll hand over his uniform.

First the odd jobs. In the center of the village square is a giant obelisk with a “help wanted” poster pasted to it. Players may notice that the sentence describing the obelisk is a bit awkwardly worded compared to the rest of the text in the game. I had assumed that players, when presented with a huge obelisk in the middle of town, would examine the thing. This was not always the case. Some testers got stuck without money and didn’t realize there was even a way to get it. To slap another band-aid on this, I revised the room description in the village square such that it pointed out the presence of the “help wanted” poster (thus the awkwardly worded sentence).

The spying presented its own challenges. It also required some money for renting a room at the inn, so the previously described problem was also interfering with testers’ progress. On top of this, testers who did figure out how to earn money were having trouble actually paying anyone for anything. Including a system of money and payment in the game was a challenge for me from the beginning, and to the very end I was going back and adding more synonyms for paying, buying, renting, etc. The currency (shiny rocks) apparently still causes one issue where some players find it necessary to drop their money in order to throw a grapnel at a different rock. I swear I thought I had fixed this, but apparently my solution wasn’t thorough enough.

Speaking of throwing that grapnel, let’s pivot to the rope itself. The rope was my single biggest cause of grief while implementing this game. It could be tied to objects at either end. The two ends could exist in different rooms. There were bugs aplenty, one of which made it into the final game because I couldn’t figure out how to squash it. Attempting to “tie something to the rope” and attempting to “tie the rope to something” result in different outputs for some reason. A certain wording of this action causes a response that the rope is already tied to itself, which I could never figure out how to prevent. A last-minute transcript from a tester revealed that attempting to untie the rope from itself caused a fatal stack overflow, but at least I was able to disallow that action and ward off the game-breaking bug.

Now that we’ve talked about the rope, let’s talk about the well. This was actually the hardest puzzle for me to think up, even if it turned out to be the one that testers had the least trouble solving. I needed one more job for the antiques merchant. I knew the act of getting her what she wanted would need to cause damage to local infrastructure and be generally disrespectful to the community (there is actually a theme to be found in this game, if you squint hard enough). I knew commerce wouldn’t be the target, because commerce was doing the targeting. I even had a vague notion that the puzzle might involve sabotaging the water supply somehow, but I just couldn’t figure out what the merchant might want that would lead to the appropriate sort of scenario. I turned to the OHRRPGCE community (Slime Salad) for brainstorming help. Several users contributed to the brainstorming, but it was a user named GLOW who ultimately suggested stealing the original bucket from the town’s well, which had been there since the founder established the settlement. To make it desirable to the merchant, I decided the bucket should be made of gold. I also took the destructiveness of the puzzle a step farther by having the player “liberate” the village livestock in order to gain access to the well. The alleyway where the well is located and the nearby farm were two of the last rooms added to the map.

In making the game, I had been using a skeleton of a map without many room descriptions; and the only NPC dialog that worked were the interactions necessary to complete the game. So when I got done implementing all the puzzles, I was left with a lot of writing to do. Somehow the room descriptions were the most exhausting part of the entire process, and I procrastinated finishing them way longer than I should have. Particularly frustrating were the descriptions for the extra rooms in the tenement (can you guess who lives in each room?). After that, the dialog was mostly a breeze, except accounting for all the synonyms testers might use when asking about, say, the Puscaati agent.

Once all the room descriptions and dialog options were written, it became a matter of testing. I found some great testers through intfiction.org, Slime Salad, and the Interactive Fiction and Inform 7 channels on Discord: Jade Aincioa, Robinson Nox, Björn Paulsen, Tristin Grizel, Ralph Versteegen, Meredosia, Morpheus Kitami, and Valerie. They uncovered numerous shortcomings in the game, most of which I was able to repair. Testing was a deeply concerning process though, as most testers never finished the game and some took weeks to do so. I still have no idea how long it takes the average player to complete the game, though some post-release reports indicate play times in the vicinity of 1-2 hours.

A brief word about a cut idea: At one point, I wanted the warehouse to contain a giant mech suit with shoulder-mounted missile launchers, which the player could use to wantonly destroy buildings around the village. This would’ve served no purpose except perhaps leading to an alternate ending. Obviously this would have led to needless complexity for no other reason than to take the story’s theme to absurd extremes, so it never got implemented. I still want to make a mech game one day.

Overall it has been rewarding to take an old unrealized story idea and turn it into a finished product, and I hope others were able to get some enjoyment out of playing it. If nothing else, I am now more confident in my ability to make a substantial text adventure and have more experience to build on with future projects. That about wraps it up. Thanks for playing. Thanks for reading. Thanks for hosting. Thanks for existing.

12 Likes

Thanks for the detailed write-up! I really enjoyed playing this one, so interesting to hear about its development.

2 Likes