As Okhlos enters the last stages of development, we have to do more than finishing all the game’s content, we also have to work on some features that may not be as fun or glamorous, but are important nonetheless. And at the top of that list was something we have been postponing for quite a while. Something that many devs have described as “an unfathomable development nightmare which will haunt us until the end of our lives”[citation needed]. Something called localization.

Most people think that localizing a game is just swapping strings in one language to another. And they are right. That’s all there is to is. So we swapped some strings. It was very easy. We won and now everyone is happy. End of post. Or maybe not. Replacing text is just the start. One of the most important ones, yes, but sadly not the only one and not that simple either.

The good news is that, since we are working with Unity, we didn’t have to start from scratch. What we wanted was very simple, something that takes a spreadsheet, parse it, create a dictionary and display texts based on that dictionary. Making this ourselves wouldn’t take much time but getting an existing solution would save us not only a few hours of development time but a lot of testing too. So we looked into a couple of localization plugins in the asset store, but soon we found out that NGUI, the UI plugin we had been using all along already a neat little localization system in place.

This is how NGUI’s localization rolls.

NGUI system is nice and simple. It has a parser that reads localization keys from a comma separated file, which means you can use a google spreadsheet to store the texts in different languages. Then, it creates a dictionary that can be linked to any NGUI label or be accessed anywhere via code. Just what we needed!

Soon we started working our first officially supported language: Spanish. As you may know (or figure out by reading the horrendous word crimes we commit when Pablo isn’t around to fix them) English is not our native language, Spanish is. This meant that we could translate every text we had into Spanish with ease. We will still have to check a lot of things to make sure it comes across right in every different Spanish-speaking country (which is not an easy task by any means) but we can do most of the work ourselves.

So texts got translated, spreadsheets were spread, CSVs were parsed and, lo and behold, we now have translated ingame texts!

What kind of sorcery is this !?

But, as I said before. This was just the start of the ride. A long journey was ahead, with many an obstacle to face. What were those dangers we encountered, you say? Here is a list conveniently summing them up for you!

Really Long Words (we are looking at you, German). Another typical localization problem. A button or a text box may have enough room for any of the words the game uses for a given language, but switch to another one and it is spill-out madness. Being aware of this beforehand, we made all buttons and labels in Okhlos scalable, so if a word gets too long we can easily adjusted them.

Character Codes. While you are programming, living inside the dictatorial world of the compiler, it is easy to forget that there are more characters than those in the ASCII code, and many languages. Even the extended ASCII, which adds support for most romance languages, can fall short. So it is always best to use Unicode encoding when dealing with strings. And so we did

Fonts. So your game supports UTF encoding, with a potential for thousands of characters. But what good is all that if you can only show them in plain, old and boring Arial font? This is something we have yet to deal with. Okhlos uses mainly a pixelated font called Dalek (insert Doctor Who joke here), which is pretty neat and fits the game’s theme very well, but only supports ASCII characters. So we will have to decide whether to find a new pixelated font that has all the characters we need, or modify the current font to add the necessary characters.

Procedurally Generated Texts. Texts that are generated on fly can be next to impossible to translate, and we have a couple of them in the game. However, one of them is the name generator, which generates a unique name for each non-hero unit, and since all those names are in ancient Greek(ish) they don’t need to be translated. The other is the useless skill generator, which during the implementation phase was trimmed down to more of a randomizer than a generator, so all we had to do was translate each item individually and voilà.

Graphic Texts. We always knew we had to keep them to a minimum but there are still a few instances in which we use texts that are not rendered dynamically. Because of this, we had to make a custom script (but still using the NGUI system) to replace the images when the language changes. We still need to make a different image per language but since we have so few of them is not really an issue.

Lip Syncing. Most voice effects in the game are just gibberish. And most characters don’t have mouths. So we dodged that bullet.

Begone, vile text , we banish thee!

This is by no means the end of it, we will have to deal with a lot more stuff once we add more languages but for the moment we say ciao!

Welcome back to the one and only changelog! Since last time we have traveled the world (a little chunk of it, to Brazil and back), won a number of international awards (one) and eaten many empanadas (around 100 of them) but what about the game? What new and exciting stuff have we been adding to Okhlos? Well, the changelog is here to answer that. Here is what happened …

Lots of new music and sfx

Yup, Gordon has been really busy these last couple of months and has come up with some really amazing tracks for Sparta, Ephesos and Atlantis, plus Boss Battle Music! You can check them out on Bandcamp right now!

The Agora

Imagine a place where anything is possible. Where every dream you ever had comes true. A place of infinite wonder. The Agora is not that place, but exercising your imagination is always a good thing. The Agora is the place where all play sessions after the first one will start. Think about the camp at the gates of the castle in Rogue Legacy or the village in Desktop Dungeons. It will be filled with all kind of special things that we will the unveiling soon. How soon? Soon as in right here in the next paragraph.

A sneak peek at the Agora

Persistent Heroes

Some Heroes are like diamonds, they are a girl’s best friends. No, wait. It wasn’t that. Some heroes are forever. That’s it. Some heroes may fall but they never truly die, they are the persistent heroes (cooler name pending). They are a new kind of heroes that when once you buy them will always spawn at the Agora, so they can be part of your mob from the very start of every sessions. Think about the blue chests in Lufia’s Ancient Cave. Or think about kittens. It’s always nice to think about kittens.

Philosopher Selection

Plato or Aristotle? Heraclitus or Parmenides? You can settle the millennia-long debate once and for all with our brand new Philosopher Selection Screen. Find new philosopher as you play, and then they will be available to be selected when you start a new session at the Agora!

Building Destruction FX

Taking the destruction of invaluable buildings to a whole new level. Roque thinks the effects can still be improved but they are awesome as they are nonetheless!

Kaboom!

The Encyclopaedia

The lives of the most eminent heroes, gods and mythological beasts all summed up in one convenient place. As of this version we now have the all mighty encyclopaedia in place! Find monsters, buy heroes, unlock their entries. Gotta catch’em all!

Continue

Because now that we are adding more and more levels, it comes kind of handy.

Mouse is here

I was going to add a nifty gif showing how we now have a custom cursor that fades in when you need it and fades out when you don’t, just like Spelunky does. But gifcam hates me so I will just leave that to your imagination (again).

Extreme Make Over: Ephesos and Atlantis

This could very well be an update on its own, so I won’t spoil much but I’ll tell you they just keep looking better and better.

Boss Battles v 2.0

Boss battles have been an issue for some time. They lacked something… More enemies! We’ve added a small system that spawns enemies throughout the battle based on certain conditions. This not only makes the combat more epic, but it also adds a new level of dept,h as you now have to divide your attention and your resources between the boss and the stream of enemies. It is something that still requires some playtesting and fine tunning but it is already proving to be a nice improvement. Plus, it also solves another problem we had: endless battles. Until now you could hide from the gods and keep on playing with a very small mob for ages, but no more. If you do that now, the horde will eat you alive in no time.

Buffing Up the Morale Stat

Turning the Heroes up to 11

Once again, this is still a work in progress and we may write an update on the subject on the near future so I won’t say much, but let me tell you that some things were done and elevens were reached.

The Sprite Batcher (and other optimization)

Premature optimization is the road to perdition but sometimes you can’t help it (or it is not premature anymore), so we optimized a few things. Among them, the sprite batcher may have been the most important one. Each time you render a material in Unity it issues a draw call to the graphics API. Texture atlases and static batches are the most common way to deal with this, and that is what we have been doing from day one. However, due to the way ingame sprites are handled in Okhlos we couldn’t use the default sprite batcher. We had to take matters into our own hands and we finally did, customizing the hell out of that sprite batcher to suit all of our kinky needs. The result? Less draw calls! So sexy!

More Configuration Settings

The config window is slowly getting filled up. We’ve added a couple of graphic settings, and handful of game settings and the ubiquitous sound settings. There are many more to come but it is already starting to look like a proper config window.

And bug fixes!

Fix one bug, add two more!

And thus we reached version 0.5.0. It has been long way since the birth of Okhlos. 2,317 revisions. 456 files. 41,510 lines of code. Countless Monty Python jokes. But here we are, with lots of stuff still to come but getting closer and closer to beta.

But where are the new cities? The new enemies? The new heroes? The new gods?

Well, some of them are already implemented, some others are in the works, but will soon read more about them right here at your favorite dev blog. So stay tuned for future updates!

As you might already know, a few days ago Okhlos won the Best Gameplay award at the Brazil Independent Games Festival (mandatory weekly braggin). This was huge news for us. We spent almost a week in Brazil, São Paulo, and enjoyed the heck out of the festival. We are working on update about our whole experience there but that is not what I want to talk about today.

At around the same time we got back home, local newspapers picked up the news, which is also awesome. As expected, they gave a nationalistic twist to the news. “Argentina Wins Videogame Award”. So far, so good. The thing is that one the news outlets that posted about it is the second largest newspaper in the country, with a print-run in the hundred of thousands and over a million online followers. As you might expect, there were tons of comments everywhere. We got lots of nice comments and words of encouragement, but, at the same time, some people started trash talking the game. And not just the game itself, but also pixel art and independent games in general.

Why the hate? You can argue that internet will always be full of trolls and haters, but on the subject of these comments, our friend @antennariagames said something that made a lot of sense: “[…]I want to emphasize (again) that the comments here are not criticism of the game, it is not about “you always get criticized” (which is true), but it’s about that there are too many people who think they know about videogames because they play them, but they don’t know about the existence of an independent movement, and they don’t know to evaluate it in terms of expression, only in terms of production. An independent game to them is garbage, and when it gains artistic relevance, and even economic relevance, it might seem so absurd to them that they end up banging their heads against the wall because they can’t cope with the idea that this movement exists and it is something real (get out of the tupperware effect)”.

So, we are totally OK if you don’t like our game. We are totally cool if you hate pixel art and don’t even want to try the game. We don’t pretend to exercise a homogenized taste. And we deal with negative comments in the best possible ways. But some of the comments here were so ridiculous that we had to do something. So we took the best ones, and we put Monty Python characters in it.

Now, before reading the comments, keep in mind that:

A) We didn’t reply to any of these messages. We let the love flow.

B) This is not about taste or aesthetic choices.

C) The game is not available yet, so none of these people played the game. They only watched our (year old) trailer.

That being said, here are the comments’ highlights!

For the young ones, this is a screenshot of a colecovision game. As you can see the comparison is absurd. I don’t use so much magenta. Nor black.

July 03, 2015 – Sao Paulo, Brazil– Coffee Powered Machine is thrilled to announce that its game, Okhlos, was chosen from among 700 hundred competitors from all over the world as the winner of the Best Gameplay Award, at the Brazil Independent Games Festival.

Brazil Independent Games Festival (BIG Festival) is the largest one of its kind in Latin America and the third largest in the world, with almost 700 hundred submissions this year from countries from all around the world. Of the games submitted, 50 were chosen to be showcased at the festival. Last night, during a ceremony in Sao Paulo, 9 awards were presented, and out of the 5 finalists in the Best Gameplay Category, Okhlos arose as the winner.