One year ago, I released You Have to Win the Game. I thought it would be fun to take a look back at the development of that game and everything else I’ve been up to since then. Fair warning: this is going to be really self-indulgent, self-congratulatory, self-serving, self-etc. I’m also going to discuss ending spoilers. You’ve been (fairly) warned.
Author Archives: J. Kyle Pittman
Gallery
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/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.
Jump Tuner
I made a little HTML5 app called Jump Tuner inspired by my last unfinished blog post.
http://www.piratehearts.com/jumptuner/
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.
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/YHtWtG_EGA.zip
Pink! Pink! Bento Machine released
I just finished my entry for A Game By Its Cover 2012! It’s called Pink! Pink! Bento Machine and you can download it on the project page.
Pints of procrastination
Updated my games page and added a separate page for compo entries? Check.
Didn’t do any work on my AGBIC entry? Check.
Guinness? Check.
Three things
I updated YHtWtG to version 1.01 today. Previous versions should update automatically, and there is also an updated installer on the project page.
The changes to v1.01 include:
- Added new options menu called “Game” which has a few new game-specific options.
- Added the option to disable the CRT simulation. In this mode, the game will be stretched across the entire screen or window with no regard for aspect ratio.
- Added a handful of options for adjusting the CRT simulation. The brightness of the monitor border can be adjusted, and the border can be toggled off completely. The reflective glare can be adjusted as well.
- Added an alternate control mode for down-jumping. In this mode, you hold down and then press jump to jump down.
- Added an icon that appears anytime the game is saved. This can also be toggled in the game options menu.
- Blocked off exits to rooms that weren’t supposed to be accessible.
- Updated decorations in a handful of rooms.
- Finished code-side localization support. Not yet functional for end users, though.
- Disabled anonymous stats collection.
I also compiled a world map. Be warned; it contains spoilers if you haven’t finished the game yet!
Finally, I finished parsing anonymous user stats for the first two weeks’ activity. In this time, I collected stats from 2933 unique users across 6419 reported sessions. The complete report is available here, but here are some of the highlights (cont.):



