Month: November 2017

2. From “It’s working” to “It’s fun” – Fine-tuning the gameplay

(For the other parts of my “Lessons Learned”-Series, click here)

You can buy a Violin on Amazon for around sixty bucks. According to the user reviews, this instrument is not even bad and you’ll get what you expect: It has four strings, it comes with a bow… it’s working. Still, people pay thousands of dollars for a handcrafted violin and rightfully so: Those instruments are carefully constructed, they sound better and they are more fun to play.

The initial version of Letteral was like a $60 violin: It still needed a lot more craftsmanship and a lot more fine-tuning.

Boosting your luck

In Letteral’s very first prototype, the letters on the board were assigned randomly and all letters were equally likely to appear. Of course, this can lead to games with a lot of Js, Ys and Zs which isn’t a great experience, unless you are into spelling Icelandic mountains or Klingon swear words. So, the very first change I made was to give each letter a weighted probability, the weight being equal to the frequency in which the letter occurred in the game’s language. As I was aiming for an international audience right from the start, I designed the app so that it would be easy to add languages later.

Naturally, by adjusting the frequency, the gameplay became much better instantly. But there was a new problem: In English, for any letter there is a chance of almost 27% of it being a T or an A and only a 0.01% chance for a Z or X. So now, there were lots and lots of Ts and As, all of them demonstrating: Just because something is realistic doesn’t mean that it is also fun.

My first intuition was to reduce the chance of getting the more common letters and to boost the frequency of the more uncommon ones. However, this brings up another concern: Vowels.

Vowels… You can’t form an English (or German or French) word without them and I was wary that this change would leave me with too few of them on the board, especially as the game progresses. As completed hexagons are filled with new letters, there is a chance that players would quickly take over the hexagons with the “easier” letters (aka. vowels) which then would be filled with more uncommon letters, eventually leading to a board with very few vowels and, once again, lots of Klingon swear words.

The solution I came up with is a bit more elaborate: The algorithm that randomly generates letters keeps track of the letters it recently selected. The more recently a letter was generated, the less likely it is to be chosen again. For example, if the list of recent letters is “AMDE” with A being the most recent one, for the next random letter, the chances of getting another A would be reduced by 75%. For M the likelyhood is reduced by 70%, for D by 65%, for E by 60% and so on. That doesn’t mean that you never get two As in a row, it just means that it is much less likely to happen. But as the chances for any given letter “regenerate” over time, it is unlikely to get stuck with a board of unplayable letters.

All in all, this solution works nicely, creating boards that feel natural to their language and still feature a wide variety of different letters.

Not all tiles are created equal

When you play Letteral for a while, you will notice that some tiles are more valuable to you than others.

The 3.5 tiers in Letteral


While the grey tiles are part of just one hexagon, the blue ones belong to two and the orange ones to three hexagons. The orange tiles with a * (aka “Tier 3.5”-tiles) play a very special role: Just by blocking all four of them, players block all hexagons on the board. Since for the first months of development, the game didn’t take this fact into account, these four Tier 3.5 tiles were often randomly filled with letters that are common in the given language (As, Es, Ts…). This made it very easy for one player to block all four of them, essentially preventing his opponent from ever scoring. This could result in long stalemates which obviously aren’t great for anybody.

The solution for this is easy: While Tier 1-tiles can be filled with any letter, Tier 2-tiles will never get the three most frequent letters of the current language. This threshold is increased to six letters for Tier 3 and all the way up to ten for Tier 3.5.

Not including the ten most common letters of the language might seem like a drastic step. However, I started with much smaller numbers and just kept increasing them after months of playtesting. In combination with the previously described weighted randomness, the boards now lead to fun and fluent games. The charm of all of this is, that most players won’t even notice how much is happening under the hood. Or did you?

More Pröblems

Except for English, all other languages in Letteral (Spanish, German, French and Danish) feature diacritics like Ä, É or Ø. When implementing the different languages, I had to decide on how to deal with these special characters. The most obvious solution would have been to just incorporate all of these as they are, displaying them with their respective frequency. However, especially for French, this would have increased the alphabet’s size from the regular 26 letters to a whopping 42 letters. With so many different letters, it is much more difficult to find words and, thus, games take longer to complete.

At the end, I opted for different solutions for different languages. With French and Spanish, it is not uncommon to mitigate the diacritics anyway, especially when you are texting. Thus, I replaced all of these characters with their basic latin letters in the underlying dictionaries, reducing the alphabet for these two languages to 26 letters.

For German and Danish, things are a little different. You wouldn’t replace an Ö or an Ø with just an O, the usual replacement, for example in crossword puzzles, is OE. However, the E is already the most common letter in both languages so I didn’t want to make it even more important. Also, selecting two tiles to essentially get a single letter feels out of place for a game like Letteral. Therefore, I decided to incorporate all of these letters (Ä, Ö, Ü für German and Å, Æ, Ø for Danish) into the game’s alphabets. Only for the German ß, I replaced it with an SS since otherwise, I would have to display a capital ß, which most people – even Germans – don’t even know exists. Also, ß is a very infrequent letter and most Germans don’t know when to use it over a double S anyway, so the replacement feels natural. And remember, I’m German, I should know. 🙂

One more thing

The final tweak to the gameplay I introduced only days before submitting Letteral to the App Store. In fact, it is the second last change I made to the code.

My very last commits


For two years of development, the first player in a match had the whole board at his disposal. I always felt that finding a word in 28 letters was a bit overwhelming and the feedback I received during beta testing confirmed that. While I had played with the idea of reducing this number, I was hesitant to do so because I feared yet another rule would make the game more complicated for newer players and ultimately put them off.

Eventually I wrote off these reservations. When you start a new game of Letteral now, the six central Letters will be blocked for the first player. Having played with this for a while, I think the rewards greatly outweigh the risks here. Apart from reducing the number of letters for the first player to “only” 22, this new rules comes with another upside: The first player always had a slight advantage over the second one. He could choose the first (and probably) best word and in some cases, he was able to score before his opponent even got a chance to interact. Blocking the six central tiles greatly reduces this advantage and makes it impossible to score a point in the first turn.


So, that’s all there is to say about gameplay. I took you along on my journey from a rough idea to a polished game. Next week we will be talking visuals. I’ll share with you how I, as somebody who always hated arts classes in school, approached the UX design for Letteral.


1. The evolution of Letteral

(For the other parts of my “Lessons Learned”-Series, click here)

Sometimes, the best ideas come to you at the unlikeliest times. The idea for Letteral came to me at 1:30 a.m. being very tired and yet unable to sleep…

As long as I can remember, I love board games (Being German, that’s probably in my genes…), especially the strategy heavy ones, like Agricola or Tzolk’in or Puerto Rico. And ever since I owned my first Palm PDA (a Clié PEG-SJ33) and discovered Popcap’s Bookworm, I’m also a big fan of word games. So it shouldn’t come up as no surprise that games which combine elements of these two genres, like Letterpress or Nimblebit’s fantastic Capitals, are right up my alley.

The game that I imagined at 1:30 a.m. was quite different from the one that you can now download from the App Store, but it was a a start. How it grew into the Letteral you know and (hopefully) love, you can find out here.

The Premise

Two years ago, I was looking for an app project that I could work on in my spare time and that would be the creative outlet besides my regular job as a mobile developer. This came with a couple of conditions:

  • The app had to be good enough so that I could put it on the App Store one day
  • Having worked on a Tumblr client for my last project, this time I wanted to make a game
  • The project was to be small enough so that I had a chance of actually completing it
  • Although I’m a fairly experienced with UI-Design, most three-years-olds are better at drawing than me, so the game’s visuals had to be simple enough

Combine all of these stipulations with my aforementioned love for word- and strategy-games and out came the idea of creating a two-player game which combines word knowledge and strategy. My 1:30 a.m. idea wasn’t Letteral though, it was something much more rectangular:

The idea was the following: Players take turns finding words in the 25 letters. You were able to use all letters, no matter if they belonged to you, your opponent, or if they are still neutral. When you find a word, you’ll take ownership of all its letters. In order to score, you’ll need to own all five letters in any of the five rows or columns. After scoring, all tiles in this row/column would be filled with new letters and become neutral again.

Refining the idea

This game, which I tentatively called 25Letters, already sounds a lot like Letteral. However, after taking a Saturday to create a quick prototype, I quickly realized that it had two major issues:

  • You had ten opportunities to score (5 rows & 5 columns) and each one required five letters. It turns out that players almost always scored in their turn, making the game fairly benign
  • Especially with scoring happening so quickly, there was no real element of interaction. Players would play side by side and not with (or rather against) each other

I quickly found a solution for the lack of interaction: If all letters that you use for a word become blocked for the next turn, players have the opportunity to interfere with their opponent’s plans. After I implemented this change gameplay was significantly better. But the first problem remained, it was still too easy to score.

One way of solving this would have been to increase the boards size to 6×6. This makes it harder to take over an individual row/column but has problems of its own. First of all, having 36 letters available is just overwhelming. Secondly, finding words by itself should be a challenge and thus rewarding. With so many letters at your disposal, the real questions is which words you can not form. So nope, increasing the board’s size was not an option.

The solution came to me, when I remembered a game I played a lot in the very early days of the App Store. Unfortunately, I don’t remember its name but it played a bit like Bejeweled, only that the tiles where triangles and you had to create hexagons of one color in order to score (Update: @jonclayden helped me out. It was Frenzic!).

I was fairly excited about this idea. A word game based on triangular tiles felt more original anyway and I was optimistic that it would solve the problems the 5×5 approach had. So, I spent another day to create another prototype.

Now, this looks much more like Letteral, even the colors were already there. Summarizing the rules:

  • Two Players take turns finding words
  • All letters in a word turn the player’s color
  • Additionally, if a letter was used in a word, it becomes blocked for one turn. So the other player won’t be able to use it in his next turn
  • When you manage to take over all six letters in a hexagon, you’ll score a point
  • After scoring, all letters in the hexagon are replaced by new ones


I immediately noticed that the gameplay now felt pretty good and that it was more challenging to score. There are eight scoring opportunities (aka. hexagons) on the board and they now require six letters. While it is still possible to fill a whole hexagon in one turn (by now, there is even an achievement for it) it is much more difficult and subsequently really feels rewarding. Another positive side effect of the new board is the fact, that some letters are more important than others now: While the letters on the outer borders of the board are only part of one hexagon, the letters in the center belong to up to three hexagons, making them strategically more valuable.

Thus, the basic concept was in place and it stayed unchanged until today. The gameplay wasn’t final though: Only after a lot of testing and many subtle changes it became what is is today. I’ll talk more about the fine tuning next week!



0. Lessons Learned – Introduction

After two years of caring and breeding, my game Letteral finally hatched today. I originally estimated that it would only take me 12 months to develop the game… then 18… Now, it has been 24 months and it could have been a lot more if it weren’t for the fantastic community of iOS developers who is sharing their questions, thoughts, and knowledge on the internet.

I learned a lot while developing Letteral. Of course, I became better at stuff I already knew, like UI design and general programming. But I also had to dive into topics I never worked on before, for example, GameCenter, Amazon Web Services or advertisements. This knowledge should not go to waste, so I’m going to publish a series of blog posts in which I’ll share my experiences with you. A new post will be up each Friday. I haven’t yet decided on all the topics that I’m going to cover, so if there is anything you are particularly interested in, please let me know!

Table of Contents

Upcoming Topics

  • Monetization
  • Amazon Web Services
  • Marketing without a budget
  • The iOS App Store
  • And more…

Who is this guy?

My name is Philipp Schlösser, I’m an iOS developer from Braunschweig, Germany. In 2010, during my time at university, I decided to get into iOS development. Becoming an app developer, a profession which didn’t even exist two years earlier, was an exciting prospect! As a) I wanted to work on a real project and b) the official Tumblr client was fairly bad back then, I started developing a Tumblr client of my own. After developing it for two years in my spare time (I originally estimated that it would only take me 12 months to develop the app – You might see a pattern here…)  “Bloggn” hit the App Store by the end of 2012. Although my app turned out to be pretty good, by then the official Tumblr app was not only working nicely but also free. So, as you can imagine, Bloggn’s financial success was… marginal, to put it mildly. Of course, it is long gone from the App Store but you can find some last traces of it here or here.

Honestly: Even though it is hard to imagine today, it was quite a good looking app in 2012 🙂

From all of this, I learned two things:

  1. It might not be that easy to become an App Store millionaire after all
  2. Developing for iOS is a real joy

It was mainly due to the second realization that in 2015, after finishing university, I started working as an iOS developer for a local, medium-sized IT-company. My job of back then is also my job of today although, having dipped my toes into Android- and even Xamarin-development, I now call myself “mobile developer”. Yet, almost exactly two years ago, I felt that something was missing from my job: As my company is mainly doing contract work, I was missing the creativity and the feeling of working on something that is truly my own. And so, Letteral was born…