Game Design, Programming and running a one-man games business…
Tada: hope you like the latest video :D
I was musing about how on earth to manage the people who are keen to help out translating Democracy 4 when I was pointed at this awesome website called localizor which seems to be set up to do exactly what I needed: Localizor
This is so cool. Its basically an online database for you to share the translation keys for your game, and optionally a single reference language (in my case obviously English) and anybody who wants to contribute can enter text for any of the languages you have listed. There is a cool progress bar and it also shows you which users have made the biggest contributions. Its basically awesome.
This has cool features like showing you the google translate version of any string, so I guess you can check that people are not typing in absolute nonsense (or worse, something offensive), and people can vote on each others contributions etc. I think you can ban people too, if they are being malicious. Its basically a reall well-thought out system for doing exactly what I need.
There is a free trial, and then it costs a monthly fee, but its cheap, and a no-brainer really. TBH the biggest hassle was writing the code to output all my translated data (which is in csv files, and some ini files) into the right format to be imported into their database. It works on the assumption of KEY = VALUE as opposed to some of my stuff which has KEY,VALUE1,VALUE2,VALUE3 etc, for a bunch of different columns of data.
All-in-all it took about 90 minutes to write code to dump out all my text, and then manually submit the whole lot to the website. I also need to import the nearly-done fan-made italian translation I have, and eventually write my code in reverse to slurp up whatever format the site exports to and pump those values back into my own format.
Democracy 4 is, by its very nature, a global game, and its really cool to be able to leverage all the work jeff did regarding unicode, and vector rendering and fonts so we can support some often less-supported languages. I’m especially excited at the thought of Democracy 4 in Korean :D
I’m super tired and got little sleep, but whats the point of a release-day blog post if you do it weeks later? Frankly I need sleep, and a day off. Making this game is REALLY hard, and we had last minute problems, and I actually have a minor eyesight thing recently thats freaking me out. Argggh. Game dev is HARD.
Anyway, last night at 8PM my time (why? because I’m stupid), Democracy 4 went into Early Access. We have already sold a lot of copies, we had 7,600 games played yesterday, there are tons of emails, and forum posts, lots of youtube videos are cropping up, some previews and reviews…its all very hectic.
We launched with a bad bug for maybe 4-5% of players (maybe less), which caused major GUI mayhem. Icons would dissapear, or be massive, or the wrong icon. The game became unplayable, then there was major lag. It was a mess, and the worst possible thing: I could not reproduce it on any of my PCs. Fixing a bug that has no error message and you cant reproduce is…challenging. At the time of writing I’m feeling pretty good that I’ve fixed it, within 14 hours. Thats actually *not too bad*, although it still probably dinged our steam reviews a bit. (if you bought on steam and like the game PLEASE give us a nice thumbs up review!).
I made a lot of mistakes, and I guess this is as good a time as any to confess to them. Mistake #1 was that I didnt treat every warning in my code as being serious. I was seeing some warnings about icons being sized wrong, but it didnt seem to show up on screen, and I figured it was a harmless thing when they got resized correctly before being drawn. who cares right?
Turn out that on some PCs, in some screen resolutions and in fullscreen mode… This caused MAYHEM of EPIC proportions. I just wasn’t seeing it under any circumstance in my test cases. PLUS! we had a lot of pre-EA alpha players who had not experienced this. But… yesterday 4,500 hours of Democracy 4 were played in 14 hours. No wonder stuff cropped up we had not seen before.
We converted the game to be 64 bit a few days before release (Mistake #2), which sped up the start-up time, and future proofed the game against any insane move my microsoft to ban 32bit…but this seemed to be the cause of the bug. It also stopped it running under WINE. I decided the 64 bit middleware had broken the game. I reverted to 32bit, it achieved nothing (but got us WINE back), but wasted my time in tracking down the real cause…
Eventually I think we have found whats going wrong, and here is Mistake #3. Some of our code was just blindly accepting data and doing what it thought was right. This is BAD. You should code defensively, and if you are about to draw an icon on the screen, its worth checking that the width is not -25 or 10 billion pixels wide. if it is… then somebody probably screwed up, so don’t draw it.
Anyway… this sort of thing is SUPER stressful, because we have moved from the lovable, friendly ‘community of friends’ atmosphere of my early-access players on my own discourse forums, to the terrifying confrontational angry wasteland of the steam forums, where people pull no punches. Its always fun to be told your game is rubbish, or biased, or you are a stupid/lazy developer who doesnt know how to code etc. Oh fun times!
Anyway… its out there. it was in the steam top sellers. it might still be, I’m too busy to look! And you can now get the game from us direct using the widget below, OR from steam gog or the humble store.
Democracy 4 by cliffski
At some point I’ll do a proper update with a bunch of stats about wishlists and release and all that (we had about 20,000 wishlists on launch day), but I need to deal with the huge list of stuff in my inbox first… Thanks to everybody who put down their hard earned money on buying my game, its hugely appreciated. I hope ya like it!
Voila! Hope you like it. One more update (and country…Canada) before Early Access release…
Plus we are super close to Early Access release now, so I should probably stick a steam wishlisty widget in here…