Ever taken an international flight to a foreign country and felt nervous passing through the immigration checkpoint? Papers, Please aims to turn that around and put you in the role of immigration inspector. Instead of working in a nice modern airport booth, you're assigned to the Ministry of Admission in the war-torn dystopian nation of Arstotzka.

The glorious and free country of Arstotzka has just ended a 6-year war with neighboring Kolechia and reclaimed its rightful half of the border town, Grestin. Your job is to control the flow of people entering the Arstotzkan side of Grestin from Kolechia. Among the throngs of immigrants and visitors looking for work are hidden smugglers, spies, and terrorists. Using only the documents provided by travelers and MoA's primitive computer dispatch system you must decide who can enter Arstotzka and who will be turned away or arrested.

Ok, that's the setup. Some elements of this are pretty similar to my other game, "The Republia Times". I'm a sucker for dystopian settings.

Let's have a mockup:

Lookin a bit empty at this point. The enemy country is on the left and your country is on the right. The top of the screen is the actual border checkpoint and the bottom is inside your booth. Travelers will queue on the top left, pass through your inspection building, then on to enter Arstotzka on the top right. People will enter the inspection booth, you click on their documents and vet them by looking for discrepancies, then you either approve their entry visa or deny their crossing (with or without prejudice).

A little closer:

I haven't completely worked out the precise mechanics yet, but it's probably going to boil down to inspecting all the documents and trying to find any two pieces of information that don't match. For example, if a traveler's passport says they weigh 70kgs, but their current measured weight is 74kgs, you have reason to be suspicious. Highlighting these two pieces of information in the UI will open up further options. In this case, you now need to run a metal detector over the guy or even strip search him. Turns out he just gained some weight so he's clear to pass. Enjoy your time in Arstotzka.

MotivationThe last few games I've worked on have been programming-first, art-second. This time I'm going to try to focus on the art. I'm envisioning lots of cool little pixel portraits and documents and not so many technical challenges. A big part of the game is the traveler portraits so I want to spend a fair amount of time creating those. I'm also considering a system to create face variations from my initial drawings. I guess that would be a technical task so we'll see.

More About the ArtI don't have any formal art training so I'm just gonna copy what I see elsewhere. One thing I like about some of the better pixel-art games is the limited palette. Instead of choosing a global palette though, I'm going to try limiting individual objects or backgrounds to ~3 shades. That's not a hard rule and if it doesn't look good I'm flexible. You can already see a few places in the mockup like that.

For the initial version of the game I'm going to do everything in mid-res pixel art. Pixel art is just way easier, faster, and more enjoyable for me. When it comes to most commercial games however I think pixel art may not be a good choice. It works great for indies and people close to the scene, but my feeling is that most mainstream players prefer a smoother non-pixelated look. I've made some rough experiments with converting the small character portraits to full vector images and they don't look half bad. If I decide to turn this in to a commercial game it's possible I'll do that for all the art. I kinda did the same thing with Helsing's Fire and that turned out ok.

TechnicalI've got a really sweet custom C++ engine built on SDL just sitting here but I'm planning to use HaxeNME for this project. I've done 2 flash games before and really like the fact that they're so easy for others to play. HaxeNME looks interesting and is a slight hedge on this game getting good enough to sell as a native app. Actually I'm a full-time indie developer so I'm really hoping to sell the game when it's done. If it's any good. Next point..

DevLogI've made a bunch of games but never kept a devlog before. I'll do my best to keep this thread updated with screenshots and builds. I don't expect the entire game to take more than a few weeks months to develop. I'll probably edit that sentence out in a few months. Any feedback is appreciated.

Oh, thanks man! I really appreciate that. If I might indulge in a spot of mutual back-slappery, I played both '6 Degrees of Sabotage' and 'The Republia Times' and thought they were just brilliant. Exactly my bag. I'll be watching this one with great interest.

Haha, nice concept. So the whole game will take place in one setting then?

More or less, yeah. There will be some activity in the border checkpoint area at the top, but most of the focus will be in the booth.

If the inspection gameplay works out ok, I'm also thinking of incorporating the contrary mode where you work as a smuggler/spy-chief/terrorist-leader for the enemy state. You'd be assigned tasks ("smuggle 20kg of bullets"), recruit agents to pass through the border, set them up with fake documents, hide contraband on their body (you know where), and send them through the checkpoint. I guess that would take place in a different setting.

A possible extension of that is to have player-created smugglers in the pool of travelers passing through player-controlled inspectors. And THAT... might make a half-decent play-by-day multiplayer game.

More progress on the mockup (slightly too wide for the forum, scroll to see it all):

At the top you can now see the queue of people and several guards. I'm hoping to have all this animate naturally. It'll probably just look like an unholy mess of swimming pixels but I'm gonna try it anyways.

When called, one person will walk into the inspection booth and appear close-up at the bottom. Likewise anyone you approve for entry will visibly leave the booth and walk off to the right. If you reject someone's entry they may be sent home or arrested. In these cases they'll leave the booth back to the left side of the checkpoint. The passageway off the top leads to jail so the plan is to have the guards drag any smugglers/spies/terrorists up there.

ActionI'd like to include a small action element in the game and from this mockup you can kinda see where it would happen. The wall in the middle is quite tall, but not impossible to climb. If one of the travelers gets restless or desperate they may try to run past the guards, scale this wall, and escape into Arstotzka. If they make it over this wall, an action sequence begins where your cursor becomes a sniper crosshair. You'll have about 3 seconds to shoot them with a tranquilizer before the guards on the right open fire. So you get one last chance to save their life. Or maybe they're a suicide bomber and you're really saving the guards from instant death.

MiscIn the inspection screen, I've added the speaker (to ask questions and view the transcript) and the computer teletex handle (to request information from MoA computers and view results). These both show how many items are available.

IssuesAlso in this mockup you can see the tight squeeze for the documents window. I really want to be able to inspect 2 docs at a time, but with this layout there's not enough room. Gonna have to think about how to handle that better.

I spent some time today with the traveler animations. Wasn't sure if you could get semi-natural idle, walk, run cycles out of a 1-color 8x18 pixel character. Not sure I succeeded but it's close enough for now. Searched around for a good sprite anim editor before settling on Pixen (OSX). To be honest I'm not that happy with it but it's better than Photoshop for animation. My biggest gripe is that there's no way to preview multiple sequences together. Which leads to...

ProgrammingI think I'll start putting together some code to preview animation sequences. The current animation doesn't look that great yet but I can probably improve it with better tools and more time. To that end I'm gonna dive into HaxeNME and try to get a simple animation previewer up and running. Just need something to load in multiple animated gifs and string them together with individual repeat counts. Or something.

If your resolution is not set in stone, may I suggest you increase the height to 640, so that it'd be 960x640 which makes more sense. If you do, something like this could work for the layout. Done very quikcly, just copy-pasted the other document. It would probably be a different type of thing and most likely with a different width. I just widened the character bit to fill the space.

I hope you don't mind me editing it's just that I've wrestled with limited screenspace a lot.

This looks really good and reminded me a lot of the original prince of persia's characters' running sequence. Are you using rotoscopy as well?

Hah, thanks! No rotoscoping, I just drew those frames by hand. With so few pixels it's pretty easy to iterate on. Now that you mention it though, rotoscopy is exactly the look I'm going for. I kept thinking "natural" animation but what I want is that classic low-res rotoscoping feel. I'm glad you mentioned this cuz now I know what better to aim for

If your resolution is not set in stone...I hope you don't mind me editing it's just that I've wrestled with limited screenspace a lot.

I was thinking it best to stick to 16:9, but after seeing your mockup I'm not so sure anymore. 3:2 gives a lot more room to work with. I probably don't know enough about what kinds of documents the game will include to decide right now but I'm gonna experiment with 960x640 as you suggest. Thank you for the ideas! I absolutely don't mind you editing the mockup and I really appreciate the help.

Btw, this is exactly the kind of challenge I enjoy. I'll take a limited resolution, palette, or game mechanic over unlimited freedom any day. Given Pioneers resolution and (awesome) palette, I'll bet you're the same way

This looks awesome! I really liked The Republica Times, looking forward to seeing this develop.

Thanks spolvid. This game will probably have a similar flavor so I hope you enjoy it too.

Slightly updated layout with taller resolution:

Eigen's suggestion prompted me to keep experimenting with the mockup. With a 3:2 aspect, there's room to rearrange the inspection booth a bit and give the doc inspection area more space. Each document can be maximum 150x215 and 2 documents can be visible at any time. Teletex query results, the audio transcript, and the rule book will behave just like documents. This'll be nice for consistency and having the docs side-by-side makes it easier to find and highlight discrepancies. 150x215 is not a lot of space but my feeling is that the docs shouldn't be too complicated so hopefully it works out.

Closeup:

From left to right there's a clock, scale readout, microphone, computer screen, and notebook. Not sure what to do with the clock just yet but there'll probably be some time component to the gameplay. Scale shows the person's weight, mic will show the audio transcript document when clicked, computer screen will show the teletex document when clicked, and the notebook will show the rule book when clicked.

Rule BookIn order to establish the baseline regulations for which documents and information a traveler must have to enter, there's a rule book. This lists things like "Traveler must have an entry permit", "Traveler must be over 18", etc. If a rule is being broken, it can be highlighted for further options. One example would be the "Traveler must be over 18" rule. If you inspect their passport and calculate their age to be < 18, you can select both their passport birthdate and the age rule. This will highlight the discrepancy and open up a teletex query or a question you can ask the traveler.

Looks rather interesting. I'd have to see how it plays first to make a full assessment when it's done, but I certainly have respect for the unique dynamics.

Thanks Shine and makerimages. After reading this I figured it'd be best to prototype the gameplay ASAP. Instead of spending more time on the animations (which I'm pretty sure will work out ok), I've moved ahead to the core mechanics (some doubt here).

First Build!In the last couple days I've gotten up and running with HaxeNME. You can "play" the first build here:

Drag And Then DropI originally intended to have the documents just be clickable on the left; after which they show up in one of 2 fixed-width columns on the right. Nice and simple. Unfortunately that felt a bit lifeless when I prototyped it. There was also the general problem of space; each document would be limited to 150 pixels wide.

Instead there's now full drag-n-drop across the counter and desk. I think this solves the space problem nicely as you can always shuffle things around to see large documents. It also feels a lot cooler IMO. Much more like actually inspecting a pile of papers and a little bit fun in it's own right.

Haxe/NMEI gotta say, HaxeNME is pretty nice. There are a few quirks but for a non-taxing 2D game it's great so far. With MonoDevelop (on OSX) and the HaxeNME extension there's tab-completion, nice error messages, and one-click building for flash/mac/windows/etc. Some stuff doesn't work quite the same on all platforms but it's as close to write-once/run-everywhere as I've seen.

Curiously, one of the trickier things to get right was the double-size pixel rendering. Flixel makes this easy as it blits everything to it's own sprite, then scales that up. You can do something similar in vanilla HaxeNME but it's not really optimal for the native targets. I ended up scaling the root DisplayObject, snapping pixel locations while dragging, and writing custom functions to generate nearest-neighbor rotated bitmaps at half-res. Also, I'm using a bitmap font class (pxBitmapFont) since rendering .ttfs seems to always have some level of anti-aliasing.

Procedural GenerationI really like procedural generation for puzzle/logic games like this. For one, it keeps the game interesting for me personally during development. For another, it makes generating lots of content much easier. In this case, the travelers will be generated randomly from a set of rules. My next steps will probably be fleshing out the game world and working out what these rules are.