2012 November 14
at 23:06
Papers, Please
Old Stuff
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.
Motivation
The 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 Art
I 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.
Technical
I'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..
DevLog
I'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.
______________________________________________________________________
There are updates throughout the thread, but I'll just put this here:
>> Get the Latest Build <<
(Currently in beta so missing some stuff)
______________________________________________________________________
Want your name in the game?I'm including real names for the immigrants. Add yours here:
dukope.com/usemyname______________________________________________________________________
Papers, Please on Steam GreenlightPlease vote!
______________________________________________________________________
2013 February 14
at 21:49
This Is Why We Can't Have Nice Things...
...like friendly border guards.
Spriting Workflow
I've spent some time animating sprites now and thought to post the workflow I ended up with. The basic pipeline is to create/edit/animate the sprite frames and save/export them as individual numbered pngs. Then comes TexturePacker to put all the frames in one sprite sheet which the game uses. I tried lots of different sprite animation programs. Everything was recommended by somebody but since I'm on a mac, I couldn't try Graphics Gale, which many say is the best.
Pixen
Pixen is a native Mac app with all the bullet-pointed features. I animated the basic traveler idle, walk, and run anims in Pixen a few months ago. When I went back a few days ago to do the rest of the animations I quickly got frustrated. Biggest problem is the export process which requires too many clicks to save out the individual pngs. Although I remember Pixen having onion skinning, I couldn't find the toggle again and gave up before spending much effort on it.
ASEPRITE
This app is clunky as hell, especially on OSX. But after learning some shortcuts it got much easier and I made good progress in spite of the completely wonky mouse movement. The load/save process is really smooth and I created the traveler climb and guard walk+idle animations fairly quickly. The onion skinning is nice. Unfortunately, I started running into problems with the explosion. My initial test came out terrible; mostly due to the limited tools available.
Photoshop
Realizing I'd need something cushier for the explosion pixeling, I moved over to Photoshop. Best to make the drawing easier and deal with whatever painful export process there was afterwards. Photoshop's animation system is pretty nice and I felt completely at home with the tools and layers here. PS Extended has onion skinning but I ended up doing ok without it. For exporting, there's a built-in "Export Layers" script but it's absolute shit. Instead, I ended up saving for web to an animated gif, then extracting the frames using ImageMagick.
ImageMagick
ImageMagick is a set of command-line tools for editing images. The main tool is called "convert" and lets you do all kinds of cool stuff. I've been using ImageMagick more and more recently and it's really come in handy on this project. For example, to take an animated gif, replace the background color with transparency, and export the frames as 32-bit png:
convert -coalesce 'Boom.gif' -define png:format=png32 -channel rgba -fill none -draw "color 0,0 replace" border/Boom-%02d.png
Easy and fast.
Now that I've got the Photoshop workflow down, I'll probably stick with that for everything. In total, I spent around 6 hours yesterday on the explosion. I don't ever want to hand-pixel an explosion again. In-game, it's gone before you even notice it so I'm leaving it here for rubberneckage:
2013 March 14
at 21:13
That's another bug. It shouldn't issue a citation since the 'task' is outside the legal border rules. If you can believe, I never once let that guy through in my testing (morals) so I never saw this citation.
Neither did I. That's what confused me.
Sorry, meant to say that I detained him every time. Never tried just denying him.
Just found the bug. Thanks for the heads up. You should get a citation for denying (since his docs are all clear). But it's supposed to say "Applicant clear for entry" on the citation instead of the "Brothel Help" thing.
I now realize this is kinda weird since your two options are to arrest him or let him through. Seems that if arresting is ok, you should be able to just deny him without penalty. Not quite sure how to resolve that.
2013 April 24
at 09:49
Thanks to everybody for the comments. I'm gonna dump a huge response here. It's getting harder and harder to respond to people individually as the game gets more exposure. This is a problem I always wished to have
fleur: Looking through this thread, I am wondering why the player must get a rifle, necessarily?
It's a gameplay thing that I'm stubbornly attached to. That's basically all there is to it. I haven't finished integrating it though, so it may still be cut if I find it doesn't work.
zede: Are you going to release this on mobile as well?
I'm plotting it. After PC/Mac, and likely only iPad due to the size constraints.
John Sandoval: it wasn't clear to me till about day 5 that i had to/was able to feed my family
I've added a message about this on the first day's night screen. (final branch only, not in betas)
Comrade Beric: Point of fact, I'm still unsure of exactly how I get paid.
Yeah the game is intentionally vague about this. And a lot of other things I guess. I may put a small number on the night screen somewhere to incidate how many people you processed. With that it'll be possible to deduce (without being told directly) how the money is awarded.
arkhometha: I detained him [the pimp] and the newspaper gave me he the ringleader was arrested but the girls still died. I thought the blame was on me.
Are you sure about this? There are two exclusive scenarios:
- Detain him and get this news:
@ News Human Trafficking Ring Shut Down! \ Grestin Checkpoint Officer Nabs Mastermind \ Face:M-11-12-8-5
- Approve/Deny him and get this news:
@ News Dancers At Grestin Club Found Dead! \ Newly Immigrated Girls Victims Of Human Trafficking
Are you saying you saw both pieces of news after detaining him?
crazysam: Can you share how you handled full screen / windowed switching and most importantly, window resizing?
There is a top-level sprite (child of the stage) that contains all the display objects and handles the resize message:
public static var kPixelWidth = 570;
public static var kPixelHeight = 320;
...
private function applySizing()
{
...
// choose resMult to fit stage size
var mult = 1;
while (true)
{
if (kPixelWidth*(mult+1) > stageWidth) break;
if (kPixelHeight*(mult+1) > stageHeight) break;
mult++;
}
resMult = mult;
scaleX = mult;
scaleY = mult;
x = (stageWidth - kPixelWidth*scaleX)/2;
y = (stageHeight - kPixelHeight*scaleY)/2
...
}
That puts the play area in the center of the screen at the highest possible whole-pixel scale. This often doesn't fill the screen, so there's also a set of 4 black bitmaps (also children of the stage) arranged around the play area to mask it.
Arhemont: So basically all the actions are wrong. ... I would love to see this principle implemented in all of the stories.
Heh, I'm probably not going to take the moral pain that far.
Lt_Commander: [Sweet fanart]
Awesome!
Gimym TILBERT: Make it a facebook game...
Stop right there.
seagaia: Hey, could you document how you did encrypt the assets with #1
I can give you the gist but obviously not all the details. It'll take some time though. Remind me in a PM.
xclpr: [idea]
That sounds kinda cool, but the game is mostly mapped out in my head and such a feature doesn't fit well with what I have planned.
DannySpud: The omniscient supervisors make my "job" feel pointless.
I understand this point of view, but without the immediate citations the game is broken and unfun. You can try the alpha build to see for yourself. In that version you are cited but it doesn't list the actual mistake. There are some posts earlier in the devlog discussing it. I'll address the "inspector inspector" at some point in-game.
szron: Pages of a passport ... Computer system ... "Secondary" ...
I originally envisioned checking previous VISAs but, as Armageddon said, felt the complexity wasn't worth it. Also, the game originally did have a computer telex system for getting information from the Ministry of Admission. It was cut a pretty long time ago. I think there are a few devlog posts about it but the summary is that it wasn't needed after I implemented the current fingerprinting system. Finally, I think a 2nd round of interrogation would slow the game down too much.
whyareall: A suggestion that someone made a while back that didn't seem to get notice was right clicking for discrepancies, instead of having to pull up the big, screen-covering thing that blocks you from moving documents around and wastes time.
That was my suggestion . It would just be a shortcut for entering inspect mode and selecting with one click. Inspecting will always be a separate mode where you can't move the documents. I haven't implemented it yet because it's such a minor optimization that I haven't felt the need.
SliceOfDog: [bug with rejecting/denying everyone]
This'll get fixed with escalating penalties. Around 5 in one day will be enough to game-over that night.
SliceOfDog: [having a smaller rulebook that pins]
There are many ways I could make the interface more optimal but as mentioned before I'm happy with the current level of required paper shuffling. Makes me feel like I'm working. In a good way.
erikchan002: [bugs] ... Maybe a key for calling the next person in-line?
Thanks for the bug reports. I think it's important to make the player look up to the top area every once in a while to click the booth. This is mainly why I put the button there (instead of keeping it on the desk).
2013 April 27
at 07:26
I wanted to point out that whenever you have to ask someone to provide a missing document and they produce it, all of their information is always correct. I have tested this over 15 playthroughs and it is always true so far.
Yes, if there's anything superficially wrong with the papers (like a person with different, but known, names, or whose appearance is different from the picture in the passport, but the prints match), ultimately, there is always nothing wrong with them. Red herrings would be more fun.
An interesting thing I found very early is that the more errors an entrant has, the easier it is. The beta is currently limited to at-most one error per entrant. As you guys have noticed that makes it too predictable so I'm changing it to handle this case better. Documents revealed later may have errors in the final version.
Beta 0.5.13
GRAB IT HERE
Just a few bug fixes.
- No new content.
- Show helpful error when trying to run without enough OpenGL.
- Fixed some issues with continuing a game in progress.
- Fixed "Invalid News0" citation message.
- Fixed crash when continuing from day 9.
- Fixed double-detain bug on scripted entrants.
- Corrected citation penalty amount text.
- Removed Jorji and made day 3 a much more casual-friendly experience.
- Just kidding. It seems the last fix worked. No more changes to day 3.
There was one major issue I wanted to fix with this build. On some people's machines, the rendering is totally screwed up and the game eventually crashes. Turns out it was related to missing OpenGL drivers. The game now prints a useful error message in this case.
Hopefully there's nothing majorly wrong with this build as I'm hoping to move off the beta and start the push for final release.
Endless Mode
An endless mode is something I've been mulling since the beginning, and it's a common request. So now I'm committing to it.
This will be a separate mode, possibly unlocked after completing story mode. The days/entrants/rules/events will be randomly generated with some basic progression. I may or may not include the night-time money management here. Will have to test it out. This mode also might include some kind of online leaderboards/rankings/integration. Depends on the effort/payoff balance.
From Here
I've got the story and mechanics for the rest of the game mostly mapped out. There's a lot of stuff I think is cool and that I'd like to show in here. But I kinda want the rest of the game to be a surprise and am thinking to avoid posting any further content here.
Not sure how I should handle this actually. Any thoughts? At the very least, I'll respond to comments here. And I'm planning to keep a private devlog of my progress. Something I can post here after the game's release.