Lost along a dusty stretch of highway, this proud town once boasted an opulent hotel, a vibrant business district, and the state’s largest pillow factory, but now stinks of a desperate longing to be what it once was.
A body has been found in the river, bloated and pixelated from the decay of a death come too soon. Agents Ray and Reyes arrive and are immediately suspicious of each other’s intentions, then a couple of pigeons show up and start talking about the signals and it only gets weirder from there.
A cursed clown, a bitter heiress, and the ghost of pillow salesmen join the story and add their own complications.
Play and switch between all five characters as you explore the vast, strange, and manipulative world of Thimbleweed Park while unraveling a dark and humorous neo-noir mystery.
Solve puzzles dreamed up by the brains of Ron Gilbert and Gary Winnick, creators of the original point & click adventure game, Maniac Mansion.
Coming in early 2017 to Windows, Mac, Xbox One, and Linux. iOS, Android, and other platforms will follow soon after.
Behold the latest trailer for the game to be henceforth known as Thimbleweed Park in all the lands.
We've now entered the next phase along our wonderful journey to release a game, and it's called Text Lock.
A few weeks ago we entered content complete, where all the art, animation, puzzles, and music were in the game and no more could be added. Text lock means all the text is now final. We've made all the last minute edits, additions, and now we're stuck with what we have. No more text changes.
The text in the game started out like this...
A few months ago, I ran a series of python scripts and we got this...
Each line was wrapped in a MACRO, identifying who said the line and unique text id. The text ids are set to 0, because they have not been extracted into the text DB yet. We lived with this for few weeks, making any changes to the text we needed.
There is also code in the game that displays a warning if it encountered any text that hadn't been wrapped with the MACROs (the python program missed a few lines due to formatting).
Last week, I extracted all the text from the game, turning the lines into this...
when the final python program was run, adding the text ids, a .tsv file (Tab Separated Values) was written out that looks like this (don't be fooled, the actual file is 11,000 lines long)....
The translators then translate the text in the .tsv file and the game loads a different file, depending on the language.
The text MACROs are pretty simple.
During preprocessing phase, they take the ID and the TEXT and merge it into a string...
The advantage is the text is still a simple string, easily passed around the code. When a sayLine command is called in the engine, it extracts the ID and looks up in the text DB and display the translated line.
Starting next week, the MACRO will be replaced with this...
All the text is removed from the preprocessed version of the code, so when the game ships, all the text has been removed, but it still stays in the source to make it easy for us.
We have several macros to help the translator and also to make script extraction for voice recording easy:
Text wrapping can get complex. but we need it this way to extract scripts for recording. If the game wasn't voiced, we could get away with just a TEXT macro, or maybe just the character ones to help the translator, but since the game is not only voiced, but has five playable characters, all who might or might not be saying the same lines, it gets complex.
Now that everything has been extracted and numbers, the file is off to Boris and he's started the German translation. In a couple of weeks, I'll hand it off to the other translators. I wanted to use Boris as a test case, to make sure everything was working before we had five people doing translation.
Like content complete, text lock is an important milestone. It's not only important in that it gives us a goal to push for, but it's also important just from the point of discipline. We could make art and text tweaks forever and each one would make the game -1% to 1% better. There comes a point where you just need to stop and that is what these milestone are for. They are saying, it's time to move on.
Now, occasionally, we will come across a line of text that NEEDS to change. If it's just a typo or spelling error, we just make it since it doesn't affect the translators or the voice actors.
But if it changes the meaning of the line, or a new lines MUST be added, we have the following process.
The first step is to talk about it, make sure we really need to add or change the line. The second step is to see if there is an existing line that will work just as well, or at least 75% as well. The final stage is to change or add the line, but we mark is as follows...
If this is the only place in the game the line was used, we'll leave the text id. If there are other places that still need the old line, we'll reset the id to 0.
At some point a few weeks from now, I'll rerun the extractor and pull all the lines that have "**" and send them to the translators. If voice recording has already happened, they get add to the lines for the pick-up session.
And that's all there is. Making games is easy.