Yatzyblocket, a web app

I have created my first web app for iPad: Yatzyblocket.se
Go play! Or if you are interested in my process of creating this app, and some of the thoughts I have about it – stick around.
The idea with Yatzyblocket (The Yatzy Pad) was to create an iPad app to keep Yatzy-scores. There are several Yatzy-apps available already but they all includ the complete game, with dice and everything. All I wanted was the functionality of the actual pad, with some small extra functions to make the game more enjoyable to play. Who likes to play Yatzy alone? There is something to be said about the tactile qualities of real dice. The family game feeling and board game-qualities of Yatzy are lost without them.
all or nothing
Deciding what is automatic (handled by the app) and what is left for the user to do has been one of the harder things. There were two general directions to go as I saw it.
- A heavily structured experience with a lot of built in functionality. This could include dice, preventing “cheating” and giving loads of feedback and indicators of progress in the game. This would be a lot more controlled and “game”-like.
- A more unstructured experience, more like the one you get while playing real Yatzy. By allowing the user to do with the app what they want, in whatever order they want. This could leave some more wiggle room, for different rules and ways of playing.
technology
My initial idea was to create a native app, but I realized that html5 would be more than enough. The fact that I know nothing about coding native iOS-apps also influenced my decision. The only real argument against making a web app is that the “Add to Homescreen”-interaction lacks all discoverability, elegance and ease of the real app store.

expectations
I decided to go with the second approach. The biggest problem with that is in the expectations. I have already gotten reactions like “Look. I could put 1000 into a field”, implying that it is broken. Or “Where are the dice?”.
Of course you can write 1000 with a pencil on a regular pad but that would never occur to anyone. The fact that this is an app on a computing device changes the expectations in some way. Perhaps we have been conditioned to expect apps with as much functionality as possible?
I think that you get used to more open ended tools and appreciate them for what they are once you have gotten to know and experience the limits of what they chose to do. Once your mind has wrapped around all the functionality the limits can be freeing. I figure that reaching this stage, of knowing the ins and outs of the app, will take a lot less time when it is limited in scope. I think that this is the reason why it often feels better to write in text editors rather than bloated Office-software. When the formatting options are not there you focus on the words alone.
building it
This is the first programming project of mine that has relied on javascript. It has been a great learning experience and I have had to not only write, but rewrite, a lot of code. Up until now I have been a bit afraid of using javascript because I thought I din’t know how to program, but now I really enjoy programming with javascript.
As the functionality started to fall into place I focused a lot on ui-performance. I managed to take the whole app from sluggish to well performing by rewriting the CSS. I have not noticed any performance issues on the javascript-end but I am sure there are a lot of improvements possible there.
Specifically I sacrifized text-shadows and several semi-transparent objects that were overlapping as it was heavy for and iPad 2 to render. I can only imagine how horrible it would be on the original iPad. The looks didn’t justify making it slow. I am perhaps overly sensitive to laggy interfaces from my days of playing Quake III Arena. A game where anything below a solid 120 frames per second is unplayable.
My user testing has been limited to playing a lot of Yatzy which has been very helpful. I have often ended a game with 10-15 new notes and ideas for improvements and fixes.
swipe on
I have used some swipe gestures as well. You can swipe left to cross over a field, and swipe right to erase the contents of a field. I think that the interactions work well enough, but the lacking discoverability of these gestures is something I have to adress.


for the future
There are other features that I would like to build too. I am thinking about sound effects. I would like to optimize images for retina screens. I would also like to look into offline caching techniques. It would be useful if you didn’t actually need internet access to be able to use the application. I would also like to bring more life into the application with small animations and other enjoyable ui-improvements.
Anyways. I thought it would be better to just release it and work to maintain and upgrade it over time.









