On Gaming’s Culture of Complaining

So there was that thing that happened with Fez II. I’ve been trying to encapsulate why exactly this bothers me so much (besides the obvious I wanted to play Fez II), and I think its coincidence with the Vahn story helped to crystallize my thoughts. Kind of. This is still a little bit of a disjointed ramble, but hopefully there’s something worthwhile in here.

Continue reading

You Have to Use the Skill

volver_yoloSo I might’ve gone a little bit mad this morning and implemented a new extra-hard permadeath mode in YHtWtG. Dubbed “YOLO mode” after this tweet, this difficulty setting disables all checkpoints and saving and causes you to lose all progress when you die.

On the upside, you get a sweet pair of “deal with it” shades.

So…have fun with that? I guess?


I was bored so I made a thing.

Gallery is a lightweight app that cycles through all* the images in a folder and displays them to a window. It’s like one of those digital photo frames except it’s only for Windows PC, because that seems practical.

Download: http://www.piratehearts.com/builds/Gallery_v_1_2.exe

  • v1.1 adds a Knuth shuffle. I may make this optional in a future version, as it currently re-shuffles each time it iterates through the folder in order to pick up any new files that have been added, which means there is some chance of repeating the same image twice in a row.
  • v1.2 fixes colors wrapping at the edges of the image.

I didn’t build an installer for this one so I don’t want to hear any complaints about missing D3D DLLs or whatever. Just get the latest DirectX version if it doesn’t work.

EASY MODE: Just drop the executable into any folder and run it. It will cycle through all* the images in that folder.

ADVANCED MODE: Create a shortcut to the executable and update its Target as follows:

“…\Gallery.exe” path=”c:\wherever” width=1024 height=768 time=6 fade=2

Path can contain spaces but must be encased in double quotes if so. Default is the folder containing the executable. Gallery will cycle through all* the images in the specified folder.
Width/Height control the size of the backbuffer. By default, this is 1920×1200. This is constant regardless of the size of the window. You may wish to set this to your monitor resolution and then maximize Gallery to go fullscreen.
Time/Fade control the total time each image is displayed and the time spent fading between images, both in seconds. Defaults are 12 and 3 seconds respectively.

Very large images may make Gallery choke. You’ve been warned.

*In this case, “all” means “all the formats normally supported by D3DX,” which includes .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, and .tga. Sorry .gif, better luck next time.

Super messy, embarrassing, partially broken source code is available here if anyone wants to make fun of it: http://www.piratehearts.com/gallery.cpp (C++, requires D3D9 libs)

You Have to Edit the Game

I’ve made the first steps towards supporting level creation/editing in YHtWtG. The latest patch enables this option, and I’ve also updated the installer at http://www.piratehearts.com/TheGame_Install_2012-12-20_17-22.exe for new players.

I should note that these tools are extremely rudimentary and have a number of known bugs that I never bothered to fix, but they’re the tools I used to build and ship the game, so that’s something.

Continue reading

Jump Tuner

I made a little HTML5 app called Jump Tuner inspired by my last unfinished blog post.


The control points can be clicked and dragged to change the movement speed of the sprite and the shape of the jump, and the pseudocode will update correspondingly.

If I feel inspired, I might add support in the future for variable height jumps, multiple jumps, air control, etc., and maybe also a mode where you can test the settings firsthand instead of just watching it. And maybe the option to change the sprite image or add a background image or edit the units or whatever else seems practical.

Deriving the mathematics of jumping physics, Part 1 of ?

This is a rough draft of the first part of a chapter of a book I’ll probably never write. It’s obviously not done yet (needs lots more pictures) but I felt like publishing it anyway.

[Blah blah blah blah blah jumping is important because GAMES, blah blah.]

We’ll start by looking strictly at jumping strictly as a case of projectile physics.

Continue reading

words words words

I just patched You Have to Win the Game to fix a crash bug in a previously undocumented engine feature. I had intended to launch the game with this functionality originally and only discovered in the weeks following its release that it was broken, and I just now got around to fixing it. (Turns out it was a ridiculous facepalm of a one-line fix, of course.)

Anyway, yeah, YHtWtG now supports localization! All text in the game and UI can be translated into other languages. Here’s how it works:

Step 1. Dump the string table

Run the game, open the console with the tilde (~) key, and enter “dumpstrings”. This will create a new folder “Localization” in My Documents (see my previous post for this location), and it will generate a subfolder “English” inside. The “English” subfolder will be a number of text files containing key/value pairs in the format “SplashText=Localization provided by [YOUR NAME HERE]”. (This defines is a string with the key “SplashText” and the value “Localization provided by [YOUR NAME HERE]”.) These files contain the entire localized text of the game. (Some strings, such as the room titles in YHtWtG, are not localized, but most of them are.)

Step 2. Create a new folder with localized files

Copy the “English” subfolder and all its contents to another subfolder, and rename it to the language of your choice (e.g. “Pirate”). For each file in the new subfolder, rewrite the values but not the keys. For instance, in the line “SplashText=Localization provided by [YOUR NAME HERE]”, “SplashText” must be left as it is, but “Localization provided by [YOUR NAME HERE]” should be translated into the target language. Note that if any strings are omitted from the localized files, or if any localized files are completely omitted, the default English strings will be used instead.

Step 3. Specify the localization folder to use when playing the game

Open the Config.ini file in the Config folder and specify the language in the Language field. By default, this will be blank (“Language: “); if specified, it should match the name of the new subfolder created in step 2 (e.g., “Language: Pirate”). The game will look for this folder and its contents inside the Localization folder when loading strings.

Aaaaand that’s really all there is to it! To share your localized files with other players, you can just zip/unzip the entire subfolder. The “Localization” folder is only created when it’s needed (e.g., by the “dumpstrings” command), so you might have to add that manually to use a language set if it doesn’t exist yet.

I should also note that my fonts only include the basic Windows-1252 character set, so there’s no support for crazy Unicode characters or anything like that. Maybe next time.

You Have to Mod the Game

Good news everyone! I made an EGA tileset for You Have to Win the Game for absolutely no reason at all! Now you can experience the game that critics are calling “free” (RGCD), “[a] platformer” (Jay is Games), and “a free platformer” (TIGSource) in stunning 6-bit color!! You’ll be the envy of all your friends who have time-traveled to the future from the very early 80s and haven’t yet seen what modern PCs and consoles are capable of!

To install it, just unzip these bitmaps directly into your local YHtWtG Mods folder. This folder is located somewhere inside My Documents, for instance “C:\Users\[YourName]\Documents\You Have to Win the Game\Mods” on Windows Vista. (Also don’t put these in a subfolder, else the game won’t recognize them and you’ll still have CGA graphics and be sad.)

HERE IS THE LINK CLICK IT CLICK IT: http://www.piratehearts.com/files/YHtWtG_EGA.zip