1. Prison City
  2. News

Prison City News

Localization Customization is Here!

[h3]From lead developer Programancer:[/h3]

Something with Prison City I had implemented a while back was the ability to import your own localization file if you know what you're doing--kind of a back door to adding languages! I had secretly hoped someone would figure out how to do this obscure thing, but there have been a couple of requests from the community to let them provide some localization, so it seems appropriate to equip you with the knowledge to do this! The base file is already included in the latest version of the game on Steam, so if this is something you want to do, this guide will point you in the right direction!

Please note: This is something that, while supported, is more of a do-at-your-own-risk thing and was never meant to have wider support outside of development and tinkering, so be aware there may be behaviors, oddities, or even crashes you experience if this isn't done correctly. We'll cover that at the end of this guide.

So first and foremost, go to the game’s installation directory, and find “dialog.dat”. This is the file that houses all of the in-game text across all languages. Make a backup of this file!

Included in the latest build of the game is dialograw.csv – it’s a comma-separated list of the contents in dialog.dat, along with notes. As long as this file is in the installation directory of Prison City, the game will use that for the game strings, and it will also create a new dialog.dat in %localappdata%/PrisonCity with the encoded contents of the csv that we can move to the installation folder after you’re finished, but isn’t entirely necessary.

Open up dialograw.csv in a spreadsheet editor like Excel or Google Sheets, and take a look at how it’s laid out:
  • Dialog ID on Column A
  • Internal Notes on Column B
  • Language Data starts on Column C, with Row 1 containing important metadata, and Row 2 being the language name

So to get started, we will ignore the metadata row for now (we will go back to that later)- just copy the default English metadata string (“0|0|0|0|0” without spaces), and go straight to the first vacant column of the CSV. This will be your new localization column. On the file included, it’s column N!


Go to Row 2, and enter your language name. This is what’s displayed in the “Language” menu. From there, just go down the rows and localize each chunk of text.

You’ll notice for some things, there are special characters in use.
  • ☁ is for dialog cadence. When the game sees this in codecs, it’ll add a delay to the text typing
  • \n is a linebreak
  • {0-9} is a variable that is replaced by the game while it’s running. Usually lives, or other stats
  • For the Tutorial strings, [hang], [jump], etc are strings that are replaced by buttons. It is important that these have a space before and after them. For example, “This is the [hang]button” will not work. It needs to be “This is the [hang] button”.

Once you have everything localized, run the game and navigate to the Languages menu. You should see your new language at the bottom of the list!

Do note however that this menu will seem a bit odd if you’ve only added only 1 new language, and it will not scroll appropriately if you navigate downward. The “Back” button is hidden behind some UI flare, but is still usable. Adding an additional language solves this!
Now that you’ve set your new language, it’s time to do the hard part- making sure it all fits and doesn’t suck! This is where you make adjustments to strings and get everything to fit.

BUT WAIT! BEFORE YOU DO THAT! What about that metadata row we mentioned earlier?
This is an important part of making sure things fit. In column B Row 1, there’s a note for what the metadata does: lang group|menu size offset|dialog size offset|dialog delay|ignore dialog width rules

Each one of these values changes how the text will display, and they’re defined with a numerical value. For example, default English is 0|0|0|0|0, which means each of those values is 0 (default). Here’s what each value does:
  • Lang Group
    - This determines if the dialog will need to use the smaller font (1) or not (0) for UI elements
  • Menu Size Offset
    - This will expand in pixels the length of the menu option bars
  • Dialog Size Offset
    - This will expand in pixels the width of the Codec Dialog text area
  • Dialog Delay
    - This will change the default wait time for typing text. Languages without spaces will type very quickly, so this is important to increase just for readability.
  • Ignore Dialog Width Rules
    - Important for languages that don’t use spaces. Normally strings will break based on line width on spaces, however with this set to 1 the game will no longer try to check total width of the string, and instead let you add manual breaks or spaces to force a break

If your language doesn’t display correctly before you’ve changed these values, take a look at the other languages and see what their values are and try those out! It can take a bit to get it just right, but if you have strings that still don’t fit, it might be time to adjust the localization a bit!


And that’s all there is! If you’d like to finalize your loc, feel free to move the generated dialog.dat from %localappdata%/PrisonCity into your installation folder and move or rename dialograw.csv, however this isn’t totally necessary.

Some considerations:
  • Not all characters/glyphs are supported. There are something like 15,000 characters supported by the game fonts, but there are some limitations, and many I’m not aware of!
  • If you set the in-game language to a new language you’ve made, it will save that language index to your game data. In most cases, it’ll revert back to English, however keep in mind that the game may crash if you delete the assigned language from the dialog file, and you’ll need to either manually edit your save file in %localappdata%/PrisonCity or restore your new dialog file and set your language back.
    - Cloud saves are also enabled on Steam, and this language index WILL go to other devices you have Prison City installed without the updated dialog file, so keep that in mind. You’ll have to add your dialog file to those devices manually.
  • If you decide to revert back to default languages, make sure to get rid of the generated dialog.dat that’s located in %localappdata%/PrisonCity, as it can conflict with Prison City’s active dialog file without dialograw.csv in the installation folder.
  • It’s important to use the special characters where appropriate, or they won’t display correctly. For example, you can’t use a button tag (“[jump]”) in anything other than tutorial text boxes.

And that's a wrap with this update! Be sure to give this new localization feature a try in Prison City--available NOW!

Follow Retroware's publisher page to stay up-to-date with all our games, news, and more!

https://store.steampowered.com/publisher/retroware

The Devious Doctor

The notorious Doc Diver reigns over his security zone filled with mutated monsters! Eliminate him to end his ghastly experiments!


Get a glimpse at what to expect in the fight against Doc Diver!

[h3]1. Rising & Falling Water Levels[/h3]
Throughout the fight, the sewer water levels will fluctuate. If the water rises to the ceiling of the Warden room, Doc Diver will swim above the ground and drop bombs! Attack him while he's above you and destroy any bombs before they detonate! If the water level is low, Doc Diver will run across the room instead! And be aware of the bullet projectiles fired from his pistol; jump over these bullets and keep up the pressure on the Warden boss.


[h3]2. Brain Huggers Dropping In![/h3]
When the water levels reach the ceiling, sometimes Doc Diver will use the sewer tunnels to temporarily escape. Expect two Brain Huggers to jump out from two tunnels! Dispatch them and wait for Doc Diver to appear again.


[h3]3. Bubble Streams[/h3]
While Doc Diver is cowering away in the sewer tunnels, he'll pop out of a hole and activate a series of underwater jetstreams that'll force Hal upwards to the spiked ceiling! Keep away from these to avoid getting propelled vertically, and destroy any more Brain Huggers that may show up!


[h3]4. The Doc Returns[/h3]
When Doc Diver comes out of hiding, he'll repeat his attack cycle by swimming across the room, shooting bullet projectiles, and dropping bombs. Jump over or destroy the bombs he drops and take down the Warden!


You can face Doc Diver in the Sewers security zone in Prison City--available NOW!

Follow Retroware's publisher page to stay up-to-date on all our games, news, and more!

https://store.steampowered.com/publisher/retroware

Nominate PRISON CITY to the Steam Awards!


In the words of lead game developer Programancer: "Prison City is a game with a very retro ethos- It's really difficult, but once you start taking the time to learn enemy patterns and level layouts, you'll see it's consistent and pretty easy to navigate.


It's like seeing the Matrix code and knowing what to do intuitively- but who has the patience to figure that out?!

Sure, we have plenty of difficulty customization available to make it a big time baby game, and we absolutely believe the game is worth playing through on ANY difficulty at least once!"

Nominate Prison City as the "Best Game You Suck At" in the Steam Awards!


Be sure to follow Retroware's publisher page to stay up to date on all our games, news, and more!

https://store.steampowered.com/publisher/Retroware

Sinister Sewers

Deep with in the Sewers security zone, the evil Doc Diver continues his nefarious experimentations! It's time to put a stop to his schemes and find out more about the truth behind Prison City! But to get to him, you'll have to navigate through a host of his deformed creatures and more Techno-Terrorists!



[h3]1. Mutated Monsters![/h3]

In the Sewers, you'll encounter a new type of enemy: Muties! These large, hideously deformed creatures of superhuman size and strength are FAR from being heroic. In fact, they're practically mindless from all the experimenting done on them! Now, they'll stop at nothing to prevent Hal from reaching Doc Diver's location!


You’ve seen them before, you’ll see them again! These rascals are rife down here in the Sewers, and you’ll even find some hatching from eggs! Brain Huggers typically hang out around sewage pipes, so you’ll want to check your six when sliding through them!


And like their previous encounters, Brain Huggers will keep on jumping at Hal–hoping to devour his brain! Eliminate these vile mutations as you press forward through the security zone!

[h3]2. Techno-Terrorist Grenaders and Gadgets[/h3]
As expected, the Techno-Terrorists have stationed several Grenaders and some mechanical obstacles down in the Sewers to protect the Warden. You'll find regular Grenaders, Buzz Drones, along with Security Eyes--leave no traces of them behind!




[h3]3. Eww! Sewer Water![/h3]
You'll have to go through multiple areas filled--either partially or completely--with sewer water. Just...don't ask us how Hal can remain standing and walking upright (as a certain contact in the zone will state, he's "a ripper legend!"). When jumping inside submerged sections, Hal will rise and fall at a much slower speed, so be mindful of any obstructions (or enemies) that might get in his way when landing!


You can infiltrate the Sewers security zone in Prison City--available NOW!

Be sure to follow Retroware's publisher page to stay up-to-date on all our games, news, and more!

https://store.steampowered.com/publisher/Retroware

Back with the Music Man!

[h3]Do you have a favorite track in the game?[/h3]

Matt: You know, if I had to pick, I tend to lean towards the ones that are just crazier or the ones that are faster or more chaotic, so I kind of like boss battles a lot in that regard. And, in fact, boss battles are my favorite tracks for writing games. So, "Combatants" is definitely one that I would say is up there--that's just the regular boss battle in the game.



[h3]Did you stay within chiptunes or did you feel like you had to expand past that for some parts of the music?[/h3]

Matt: When I got the call to write this game as a Game Jam, it was just pure NES music, but when I got the call to do the full score, I knew I wanted to do something that was bigger than just chiptunes. So what I did was I wrote the NES music to be the center of my mix. After that, I ported everything from my tracker projects into my actual digital audio workstation, so I could start applying some of this gear I have surrounding me to try and take it to another level.



So, what I wanted to do--the protocol I came up with for Prison City--was I wanted to make sure the drums sounded way bigger than on the NES, because the NES drums, while I love them, some random guy that hasn't heard NES music since he played Contra when he was a kid, or even some young kid today, is probably gonna be like, "It sounds a little flat," you know? It's not really--it's just happening, so you have to apply those enhancements very carefully because, if you go too hard with it, you ruin all that nostalgia that people have. And if you don't go hard enough, then the people who have the HD memory won't really gel with it.

I started adding an extra layer on top of the NES music, so I wanted that NES music to stay in the middle, stay thick, stay nostalgic, and then start adding some extra layers so that people could really gel with the track--no matter the system they're listening on.



[h3]What advice or insight can you give composers who may be just starting their career creating gaming soundtracks, or just scoring in general?[/h3]

Matt: If they're already writing music, they're already ahead of the curve. It's like a muscle--you have to keep working it out. You gotta get pumped; you gotta get jacked, so never ever stop writing, even if you're writing 30-second tracks. You know what a good technique for young composers is: Just try and finish that track, even if it's 30 seconds long. Just give it an ending or try and have it fade out. Like, try and just work that muscle out like finishing a track and the more you get used to doing that, the more you can have all these little bits and pieces that you can use later on, too. If you're just writing music on your own, especially if it has an ending, it's way harder to go back and write an ending into a track like, "Oh, I've moved computers, and I have a new operating system now." So, practice finishing your tracks, even if they're little bits there.



As for getting into the game industry, I think it was a bit of luck and a bit of just pure, raw, deranged perseverance. If you're that type of musician, it'll happen for you. The industry changes every week, and you have to actually watch and learn as much as you can about what developers are going through, and what the game industry is going through. As a composer, you need to be networking with absolutely everyone; network with streamers, network with developers. I would say create a spreadsheet right now of all the people that you could potentially contact, so that you can see it, because you need to start visualizing what that networking looks like and not just keep it in your head and be like, "I think it'll all work out." And one thing for sure that I learned is to have a social media presence and always be putting out content, even if it's not music. Then, make video content, as well.

I know that sounds very counterproductive, but if you're good at creating a thumbnail, that's one leg in the door, so you need to become kind of a jack-of-all-trades if you want to start promoting yourself and getting into this industry. For young composers, the good news is it's always changing and if you're young right now, you probably know more than I do. It's a struggle for me to figure out what the hell are people doing now on the internet. It's the price we must constantly pay.



Wanna listen to Prison City's soundtrack for yourself? Both the game AND soundtrack are available NOW!

Follow Retroware's publisher page to stay up-to-date on all our games, news, and more!

https://store.steampowered.com/publisher/retroware