Do people like, still blog?

Tag Archives: appdev

It’s been a month and a half since I started attempting to rebuild my Always Taeyeon userbase, and the results have been…non-existent. I converted about 5-10 users, and I’m not even sure if those are converted users or new users that saw my posts on Tumblr/Google+ etc! This has been pretty much a failure given that I still have 100+ DAU. There’s just no motivation to download APKs and install them (with good reason, because there is so much potential for malware).

That just goes to show if you’re not on Google Play (or perhaps some other mainstream app stores), then you’re not going to be able to get traction with users.

To help me with my painful process of enabling/disabling SIM cards to switch 4G networks, I built a small Android app to do the work for me. Simmering (couldn’t think of a better name) just does one simple thing, it takes the inactive SIM card and enables it, then it takes the original active SIM card and disables it. I also added a little enhancement so that after a period of time, it will perform the reverse operation. That’s a convenience for me so that I can give my phone a brief period where it can sync and retrieve anything it needs from the cloud, before returning back to my (probably not connecting) WIND network.

Here’s a screenshot of it in action:

The app has a really narrow target audience, but I figured if I spent the time on it, then I might as well put Simmering on Google Play. It’s probably one of those apps that I will never update again.

Building Always Taeyeon 2.0 was for my benefit, but I also wanted to distribute it to other users. This was going to be quite difficult after the app was removed from Google Play. Shortly after it was suspended, I tried distributing it on other app stores like GetJar and AndroidPit, but they rejected it with similar reasons as Google Play. With this new release, I figure I would try a new strategy (because otherwise I would have no strategy).

I know I was already disadvantaged because any user would have to install the APK directly (and enable unknown sources). So the first thing I did was make the latest version publicly available on a static URL. You can always download it at The link just forwards to a Google Drive file which I can keep up to date with the latest version. Step #1 accomplished – anyone can download my app.

The second disadvantage from being out of Google Play was that users wouldn’t get upgrade notifications when there is a new version. It might be tough to get everyone on 2.0, but if I release further versions, I don’t want to have to go through that pain again. I looked at services that can automatically send a push notification when you have a new version and even thought about using the Google Drive REST API to look at the last modified date as an update check. That would have been over-engineering. Instead, I just popped a simple JSON file on the server which my app can check; if there is a new update, a notification is raised in the app and clicking on it would go to the link above to download. This solution is actually better than Google Play, because a user might turn off upgrade notification in Google Play.

Finally, the hard part is getting all my existing Google Play users onto 2.0 and this new system. Luckily, I had built in a delivery system when I launched the app to ensure that I would have periodic (i.e., daily) photos. Instead of another Taeyeon photo, I can just add an image with my upgrade “advertisement” and hope that it reaches as many active users as I can. The advertisement was fun to make, here’s what it looks like:

I recently blogged about my Always Taeyeon app being suspended and removed from Google Play. I wanted closure because…I had begun working on it again! It was demoralizing to lose my existing user base, but this was actually an app that I used frequently on my phone (I am user zero) and so I had incentive to keep improving it.

I call this 2.0, not because it has a lot of new features; but because I rethought the app a bit. It’s actually slimmer than it was before. I wanted to focus on a stream of Taeyeon photos. In v1, I had a bunch of things like a menu that showed you where the photo was from, and plans for other parts of the app. I had started working on a “Favorites” section where you can save photos and then view them later. I also had an idea of unlockable icons. In any case, I killed all of that.

I was hesitant to do this before because I was thinking about monetizing the app if it was popular. My plan was to give you a page of favourite “slots” (i.e., 9) and then if you wanted to save more, you would have to purchase additional pages. The feature request I kept getting repeatedly (via Google Play comments and email) was to add some way to save the photos, so I know users would have used that; and the arbitrary limit of 9 might have caused people to pony up a few bucks.

For version 2.0, I decided to get rid of that and just let users save any photo to their gallery without limits. Honestly, I think that’s how users would want to use my app – browse through photos, save the ones you like best, and maybe set them as wallpaper or use them elsewhere. This makes the app super easy to use. You just swipe back and forth for new photos, and long press to save a photo. But it’s a significant enough change that I think it warrants a major version bump.

Almost a year ago, I blogged about my Always Taeyeon app and how it was growing pretty well. Then I stopped blogging about it, why? Well there was a good reason. In November of last year, the app got suspended by Google Play and I stopped working on it. If I can’t get any new users, there wasn’t a lot of reward for putting more time into it.

Now, obviously I think the suspension was unwarranted, but that’s the typical position of the “guilty” party (whether it’s true or not is another matter). The rest of this blog is basically a rant on why I don’t think I should have been suspended; I’m not angry, but it’s for closure before moving on.

What my app did is basically displayed photos that were publicly accessible within an app. That was considered IP infringment. IANAL and in the back of my mind it was always quasi-legal (more on this later), but I don’t think it is infringement. Rather, I think of it as helping people be more efficient – you could access the same photos in a web browser. Web browsers wouldn’t get suspended from Google Play.

You may argue that a user has to explicitly perform some action to view the photos through a web browser (i.e., visit individual web pages). Then my argument to that would be that my app is basically a repackaging of a Twitter feed/Tumblr blog. I could RT or reblog a bunch of photos and that would be the same as my app. Is that legal (or quasi-legal)?

In any case, the process for appeal is tough and I’m sure under additional scrutiny, they would find other reasons to keep it suspended (or worse, ban my account). Given that the app was free with no means of generating revenue, it wasn’t worth the battle. It was easier to stop working on the app.

Last weekend was the yearly Canadian Open Data Experience hackathon and I spent some time to build an entry. For the longest time, I was considering not participating; mainly because the data sets are limiting and it’s difficult to think of any interesting or innovative ideas. But in the end, I ended up competing and I think I came up with a decent idea.

My app is called Concerns of my Community and its tagline is crowdsourcing government alerts that matter to you. The basic premise is that the government publishes lots of warnings and advisories that you should know about, but there’s no way you can keep up with all of them. By using social and geographic communities, these issues can be curated so ones that are relevant to you are brought to your attention. I had to pivot slightly from this idea, because it turns out that learning about issues would decrease your mental health rather than improve it (and the theme of the competition was healthy living). To fix this, I made sure that once you’re aware of an issue, the app gives you a combination of government and private sector information to act upon it.

I’m not sure whether I will publish it to Google Play and make it available to the public. Last year I was really gung-ho about this, but after seeing the outcome for a successful app like mine, I’m not sure it’s worth the effort to polish and promote it yet.

One of the goals I set for myself for my Always Taeyeon app is to try and grow it better than A Healthier Commute. I already had a head start because the topic had more fans and audience, but I wanted the app to be “successful”. Of course, I set the normal hobby rules for the app (e.g., not paying for any promotion).

It’s been almost 2 months since I released and I’m pretty happy with the results so far. I’m at about 1300 downloads and a 4.4 star rating with 59 reviews. Obviously I want the download count to be higher, but I think I’m doing pretty well given that the only “promotion” I’ve done is post about it on a couple of Google+ and Facebook groups.

The statistics I’m most keen about now though is Daily Active Users. My app is high quality in the sense that the photos are high quality, but also in the sense that it is maintained well. So there are frequent (photo) updates. In fact, if there are new photos I try to engage with the user every day via a status bar notification. You can’t turn those notifications off – if you want them off, then you don’t care about the photos anyways so just uninstall the app. I’m not convinced that that is affecting my uninstall rate though as my install rate is a decent 42% (~570 current installs).

But does it have an affect on my DAU? I think it does. Here is a graph over time.

It is a nice trend as it is going up and to the right. I think my DAU is pretty impressive though as it is about 71% of my current installs! It’s so good that I’m kind of skeptical that the current install number is incorrect – although I haven’t released the app on other stores, maybe users are just passing around the APK.

I’m a fan of the singer Taeyeon (태연) from Girls’ Generation and on occasion I find myself on websites where her fans have posted photos that they’ve taken of her at airports, media events, etc. She actually has quite a following as it seems like there are several dedicated people who just (voluntarily) follow her around. I guess they are the equivalent of paparazzi but they seem nicer about it.

Anyways, instead of visiting all of those sites, or other fan sites on my computer, I wanted an experience on my phone similar to what I can do with Instagram; which is the ability to just open an app when I’m bored and scroll through photos. I decided to build one, and I called it Always Taeyeon

The concept of Always Taeyeon is a “firehose of HD photos, updated automatically”. Basically, I used public APIs to grab the latest high resolution photos, and then display them in the app. I also wanted to make a rich photographic experience. For example: everything is edge-to-edge, the are minimal distractions (a menu button appears when you scroll), and the menu is real-time blur of the photo you’re looking at.

The second thing I wanted to do was to use as little text as possible. My thinking was that the target audience wouldn’t actually be English speaking people, but people in Asia (Korean, Chinese, Japanese, etc). Unfortunately, it’s hard to get away from using some English. Here are some screens where I had to use English

For the first screen, I had to convey that you could swipe left for more photos. In English, it’s easy to explain; but I also added a little animation if you stay on the screen which would swipe 40% of the screen and then animate back. Hopefully users will get that hint! I also embedded photos into my notifications to help explain to the user that there are new photos.

The app is pretty small so far, but it’s something I’m interested in (and hopefully some people around the world are), so I might keep working on it for awhile (unlike some of my other apps)

I’ve always marveled how startups and Kickstarter campaigns can come up with great videos about their products. I just don’t have the video chops or the tools to make videos like that! Unfortunately, I had the opportunity to make a couple of videos for A Healthier Commute as part of the things I need to do for the CODE Hackathon.

It was very difficult and a big pain. Making a video is harder than making the app, especially because I am nowhere near happy with the outcome. Here’s my first video:

I feel I have good branding and slides, but everything else is tough. It’s tough to control the phone and talk at the same time. It’s tough to get your message down in the minimum amount of time. And it’s tough just to assemble the video together.

Certainly I wasn’t happy with this video, but at least I had something to pass this gate.

Next, I was asked to produce a 15 second video. Not only is that not a lot of time at all, there was a collection of information that must be in the video. Here’s what I came up with:

I think this video is better than the first one. I spent more time thinking about my message and how to cut it down so it’s more concise and direct. 15 seconds isn’t a lot of time, it’s half a TV commercial! But this video still took about 4 hours to make.

Then I started working on version 2 of my teaser/about video. Here’s the result:

Each video is better than the last, and for this one I had spent a lot more time thinking about the positioning and how to convincingly present my argument. I’m happy with the message. However, I’m still not happy with the video itself. I actually wanted to do a bunch of different animations for my slides, but I just don’t have the tools to do it (I don’t have Powerpoint/Keynote either!). I suppose if I had a slick presentation I could do a screencast and then record it; but ideally I’d want some software where all the images are objects that I can animate around (sounds like some Adobe product).

It’s important to be a designer (or have a designer hat) when building. I’m better at graphics now. But with the advent of YouTube, it’s important to have video skills, and I have neither that or the right tools!

When I revived my Monopoly Deal project (for the second time – first time here), I decided to scrap most of my Android code that I had built before. The reason for this was three-fold. The Android API has moved forward since I started, and I have learned a lot more about how to do UI effectively. Finally, I was not satisfied with how I abstracted the UI layer from the game engine so I figured I would just start from scratch.

I kept the UI design for some parts, especially the cards (although I re-wrote the code so that it is cleaner), but threw the rest out. I’m working on it bit-by-bit and finally finished adding the designs for normal and wildcard rent cards (see below). I’m not too happy with how the normal rent card looks so I might change it.

So far, I’ve spent most of my time working on the bank. The functionality of the bank is pretty straightforward. It needs to:

  • Show the cards and total in the bank
  • Allow changing of the top card (as opponents can see it)

I made the bank a slide out overlay that shows the cards. To move a card to the top, you can drag and drop it, and there are some nice animations around that.

I had a problem though, which is when a player has a lot of cards in the bank. I couldn’t let the user scroll the screen because a touch event would kick of the drag and drop. So I made all the cards stack up to fit on screen. This has the convenient side effect of making it look like a stack of cards.

Finally I added a little randomness in the stacking so the cards are not flush – just a little visual treat.

After a long hiatus (more than a year!), I started working on my Monopoly Deal clone again. Lately, I have been building a couple of small apps for fun, but the scope is generally small. Plus, I don’t put any effort in promoting them so they don’t get any traction considering there are so many apps in Google Play now. I actually ended up unpublishing most of my apps from Google Play because I no longer want to work or maintain them.

The problem with most of my apps is that they are dependent on an external data source. I either have to cache/process the data on my server or I have to screen scrape directly from the source. With both of these methods, if the source data changes slightly, I’ll have to update my code again otherwise the app no longer works. I’m too lazy and usually don’t care enough after “completing” the app. Some apps are better and use a public API, but even those get deprecated after awhile.

So to prevent the upkeep required and to prevent random one-star reviews, I just unpublished a bunch of my apps. Quality over quantity right?

Also because of this, I’m more interested in working on a deep, complex app that doesn’t have data dependency. My Monopoly Deal clone fits this void as it works offline (no network requirement), and I know there is an audience who will want to try it out (based on what I did with Condado).

I spent a lot of time this August working on Android stuff. I revived Condado and started working on it some more, instead of my Monopoly Deal port (which is quite a ways off). I fixed some long standing bugs reported by the community and updated some of the infrastructure to use more current APIs. The point of which is to produce a version that can be played on tablets properly without having to duplicate or rewrite the entire UI. It’s a bit of work, worthy of a major version bump, and I’m still not done; but I’ve been putting an hour in every day or two to move it along.

We saw some respite from the hot weather in August, with a week of downright cold teens and low 20 temperatures. Then the heat came roaring back at the end of August. The days have also become shorter, so hopefully the cool temperatures are not that far off.

We finished our Korean course this month as well. We had to do a group presentation/skit which we put together as a video, and then took the final exam. That was pretty easy and I ended up with an A+! But, it honestly wasn’t very difficult to get a very good grade (and yet there were people supremely worried about passing).

This month has been a boring month for hockey. My hockey Twitter feed has been dull and full of non-hockey related news. Free agent signings have been rare, with only several contract extensions. The majority of this is a reaction to the impending CBA nightmare, where it looks like players will be locked out next month.

The other big event in the news was the impending contract situation between the Ontario government and the teachers. But it looks like that will extend into the school year before a resolution is found.

When I was working on Condado last year, I started building an Achievement framework into the game (as well as a couple of achievements). However, I never ended up releasing this functionality because of a silly thing – I didn’t have the chops to draw achievement icons or badges to match each achievement! So that functionality was shelved until I could procure some graphics.

I like the idea of achievements, maybe because I’ve been trying to unlock achievements on my XBOX360 for every game I owned; but if I think about it from a design point of view it makes a lot of sense. Achievements help to:

  1. Encourage users to explore and try new areas which they may ignore (because it’s a more difficult concept/strategy, it wasn’t described in the help/tutorial, or because they don’t have any other incentive to)
  2. Provide additional goals to work towards once the game has been completed or mastered. I think this is particular important for a game which doesn’t have a story.
  3. An opportunity for some puns or fun

For Condado, I wanted to add some achievements where the user would have to think and learn about card combinations, and enter into some more uncommon scenarios. But of course, I could think about it all I wanted yet I couldn’t implement it because I didn’t have any graphics!

Then I realized that I don’t really have to have specific icons. I could just give generic rewards. So I broke up the achievements into difficulty. Easy are the ones that reward the user for learning the game, Medium are the ones which are a bit fun, and Hard are the ones for specific scenarios; and just assigned them to bronze, silver, and gold stars. Here’s what it looks like to receive an achievement:

I also like the idea of knowing that there are secret achievements, but not knowing exactly how to obtain it. I can’t make all the achievements like this because then the user might get discouraged; but I added a couple of secret achievements, with appropriately leading titles, just to spice things up. These are the most enjoyable achievements to make, and here are a couple I like:

When I wrote Condado, I hardcoded the orientation to portrait mode, mostly because it reduced the variables that I had to work with when it came to laying out items on the screen. So for a long time it only worked this way:

Which was perfectly fine when most people have phones, but now there are a lot of tablets out in the world and people end up playing Condado like this:

Which is not so great. Redesigning a layout hasn’t been at the top of my priority for awhile, but I figure it’s time to do it now (along with making things size better on larger devices). I’ve started on splash screen first and really like how it turned out.

(btw some people volunteered to translate Condado in French and German so now you can play in those languages too!)

I’ve been having a problem recently because there are too many buttons on the screen so they don’t fit horizontally. I’ve resorted to make them scroll in a row, which doesn’t look very good. But if I lay them out vertically, they have more than enough space. It almost makes me want to make the default layout landscape!

This July continued the warmest summer I can remember for a long time (but AC lifestyle is still in effect). We started the month by going on a road trip to Pittsburgh with some friends. The original plan was to go to Grove City for shopping (although we just went last Easter) but we ended up spending more time in Pittsburgh (which I had went to in 2007. We visited a lot of the same places as my first trip, but it was fun to go with friends.

After we came back, I felt like I spent most of the month looking at, choosing, and listening to music. I started buying MP3s from Amazon and continuously scour their site due to free credits and sales. I’ve also taken advantage of my Korean course and started listening to KPop. I’m both surprised and disappointed at the quality of KPop, but there’s still a lot of artists and songs to go through.

I’ve also slowly started a project at putting my photos on Picasa. Maggie pointed out to me that you actually get unlimited storage if you upload photos less than 2048px, which means I can use Picasa to solve my problem. The drawback though is 1) I have an incredible amount of photos to go through, 2) Google will automatically notify anyone (via email) if you tag them in a photo. Well these are growing pains hopefully.

Finally, I stopped working on Monopoly Deal and started working on Condado again. I decided to go back to it because I’ve been getting a couple of emails about it, and there have been a couple of bugs that cropped up. Hopefully I will also spend some more time next month and update the UI so that it works better on tablets.

I’ve been making some progress on Monopoly Deal, although I’ve mostly been concentrating on the game engine itself. I’ve gotten to a stage where I’ve implemented all the different cards and rules in the game, so the game can be played.

But to test, I needed some way of playing the game (and playing against someone). To get there, I made a couple of cheats.

First, I threw together a “dumb UI”; basically it’s a command line version of the game but it serves to display the current state in the game (i.e., your hand, your and other players’ board) and will accept your actions and react to them (such as asking others to pay your rent bill). Even though it’s ugly, it actually works quite well and is of course much better for testing than having no UI at all.

I also started work on an easy AI player. The logic for them is pretty straightforward, with just a few simple rules such as bank money before playing properties, charge rent when it’s worth it etc. Basically how you would play if you were playing Monopoly Deal for the first time.

Surprisingly, the first full game I played against the AI, it beat me! It actually did a neat thing, by playing Sly Deal to steal a property and complete a set, then played Deal Breaker to steal my completed set. Although that makes the AI sound better than it is because at the time, I wasn’t playing to win the game.

I’ve started working on my Monopoly Deal port after a long hiatus. It’s still a long way off from being complete (or even playable), and I’ve had a think as to why this is the case.

Making a game involves a lot of parts, and if I spend a few hours working on it, I feel like I haven’t made a lot of progress. I think this is because I’m working on a little bit of everything at the same time! I think the core aspects of bringing a physical game into the virtual world breaks down like this:

  • Modelling certain aspects in code:
    • the physical attributes, such as any cards, the playing board, and anything else that comes in the box.
    • the players themselves and their ownership of things in the game, such as their cards, money etc
    • the actions that a player can take, and any reactions from opposing players
    • the game mechanics themselves, such as who can take turns, when the game ends, etc
  • The user interface
  • The AI of NPCs

And that in itself is not the entire game itself, there are some tertiary tasks such as:

  • Any graphical elements in the user interface
  • A tutorial to help users to learn the game
  • Statistics from gameplay
  • Achievements

So all in all, a lot of work in many areas, although that second list is optional. Though unfortunately, I’m still working through the first list.

I haven’t been doing any on-the-side Android stuff much lately, but I did publish a new app yesterday. This one’s called I’M IMPATIENT and it fills a very specific (and annoying) niche for me.

I think the worst app that I use regularly is the Facebook app. It is very poor because every time you open it (unless you’ve opened it 5 seconds earlier), you have to wait 30 seconds for it to load your news feed. It has “improved” in recent versions, but it already has a horrible rap in my opinion. While waiting what must be hours of my life away, I’m always wondering why is it taking so long; is it downloading full resolution versions of all the photos on your news feed and then resizing them on your device? or is it because my network connection is not working correctly?

I don’t know the internals of the Facebook app, but I can check the latter – so I built I’M IMPATIENT as a tool I can switch to for 10s and have it monitor the network traffic in real time. There are a lot of apps that measure your overall data usage (for billing and quota purposes), but I couldn’t find one which will show my current, detailed usage.

I actually started working on this app in January, just putting the groundwork together to get the traffic data. Then I lost interest and the source code until earlier this month (well I never did find my original source). The app itself is fairly simple and didn’t take a long time to put together – at least the initial version; I’ll have to pretty it up and put more bells & whistles in when I feel motivated to do so.

One of the comments I had received about Condado was that it was difficult to tell when card(s) were selected. The mechanism that I had used was to push up all selected cards slightly – I think this worked fine if you had a small (i.e., phone-sized) screen, but if you were playing on a tablet then I could see how the slight indent may not be too noticeable.

I was also frustrated with a small bug here, where if you unselect a card, the card would not be lined up with the original cards anymore. For some reason, x + (-x) does not equal to 0!

For these two reasons, I am changing how selected cards are depicted in my new game. Instead of changing the location of the card, I’m going to do something simple and just dynamically add an overlay onto the card. Here’s an example:

I think the red checkmark makes it abundantly clear what cards are selected; although I might change it to the game’s icon in the future (once I decide what it should be and draw it!)

With development on Condado winding down, I’ve been thinking about what I should work on next. I’m still interested in making board games because I enjoy playing them myself; although I’m a bit tired of trying to make a competent AI. Because of this, I was interested on making an improved version of Dominion for Android (there is already one, but it only has two expansions and the UI is not the best). However, after some research, it seems like that project has been revived and there is active work on it, so I don’t want to spend time to duplicate effort.

Instead I’ve decided to make a themed game that is similar to Monopoly Deal. As I was working on Condado last year, I already had a desire to make a version of Monopoly Deal. But, it’s too hard to try and work on two major projects at the same time, so I left it on the backburner. Now, it makes more sense to work on it!

Last weekend, I woke up with an idea and embarked on a weekend project. Nah I didn’t build a shed or anything, as most of my ideas are geeky – it was YAAA (Yet Another Android App). This one is a bit offball, I decided to make an app where you could learn Chinese. It’s basically a glorified (well actually “scaled down” may be a better word) flash card app, and it’s entirely focused on food items.

The actual “flash card” capability of the app, and underlying database was easy to do – I finished it in a couple of hours. But I’ve spent a lot more time on figuring out what Chinese characters to add (mostly thanks to Google Translate, Wikipedia, and an Asian Legend menu). I spent an even longer time drawing.

Flash cards by themselves are pretty boring – you need a strong motivation to WANT to learn to use it. I also didn’t want to add a silly score mechanism to make it a “game”. I ended up adding badges to unlock on various occasions or combination of actions. Hopefully the mystery around the badges will cause people to use the flash cards more.

Of course, I’m not a graphic artist, so the badges themselves are difficult to create. To do this, I started experimenting with Isometric Pixel Art, which is pretty easy if you don’t have any artistic talent. Here are the first badges I created:

Now I just need to decide and draw an icon for my app before I can release it.

Before I started working on Condado, I had ideas of making an Android client for Urban Dead. I didn’t really pursue it because there was no API, and frankly I’m tired of screen scraping.

Well I did start making it this month, although I’m not too excited about it. I just put up a basic framework so that it would work, and then published it on the Android Market. I’ve gotten a couple of bad comments about it, because of bugs and lack of functionality, but those are just annoying because the users obviously didn’t read the description saying that it was a technical preview!

I think this might be a long term project to add all the little parts of the game into the client; perhaps when I’m more enthusiastic about the idea. But really I just wanted another game where I could start up and play for 20 seconds while I’m waiting. That’s a perfect scenario for playing as a zombie in Urban Dead. I can start it up, walk around and chew on a couple of things.

I’ve been thinking how to monetize my Android apps. I know that it will never replace my day job in terms of revenue, and that it’s more of a hobby; but it would be great to get some disposable income from the time and effort I put in.

My original thought was to have a donate model. If you liked what I did, then you can donate some money. This could be a couple of formats:

  • A Paypal-esque link
  • A donate version of the app (which sucks because then I would have to maintain two copies of the code)
  • A donate key

I’d like to provide some incentive to donate, which would be added functionality, so a donate key would work the best since I could have a single code base and then provide a small download that would unlock the functionality. I could even add the key as an app on the Android Market and distribute it that way.

That was the model I was thinking about for awhile, and it’s good for long tail revenue. Another idea has been kicking (heh) around my mind lately though.

My thought is to build apps through a patronage program. Such a thing exists, although it’s generalized – Kickstarter. How it works is that you set a funding goal, and you have 30 days where people can commit to funding your project. If you reach or exceed your funding goal, then you get the money to do your stuff, otherwise no one is worse for wear. There are a bunch of other incentives and so forth that you can read on their site.

I think this would be a good mechanism for me, because my apps are generally niche market ones, but I try to make it great and of high quality. The problem I have is that the numbers on Kickstarter are too big. It would be great to get thousands of $$$ for my work, but I don’t think that that is reasonable. I’d rather make 5 apps that get funded for $300-$500 each. I guess what I need is a micro-Kickstarter.

Through a couple of forum threads, the Android market reviews and email, I’ve received some comments about Condado. I was able to group a couple of them together and solve them:

  • Difficult to swipe across boards on high resolution devices
  • High resolution devices could show a mini view of your opponents board
  • Score text is too small

Plus I was already unhappy with how I put the game scores into a small corner at the edge of the board – although I didn’t really see an alternative because there was not much space left in the UI to put this information. I wanted to put more information there (such as deck and discard information) but had to make some tradeoffs like using acronyms and removing spaces. Basically not a good solution.

I finally solved it by adding a popup. I still have each players’ scores in the bottom right, but now if you touch it, you will get a popup with more detailed information.

I also fit a row of each players’ board on the popup. You can see what types of buildings they have and whether they have produced a good or not. If you want to see what the buildings actually are, there is now a shortcut button to bring the board into view.

It actually looks quite nice, because the squares with rounded corners bring a nice contrast to the slate theme.

San Juan isn’t a simple game. Actually (German) board games in general aren’t that easy to learn because you typically have to go through 10-something pages to learn the game mechanics. It’s not something you can just pick up and play. That fact basically kills the demographic for Condado because my target audience would be (% of people who enjoy German-style board games ) x (% of people who know how to play San Juan) x (% of people who own Android phones) x (% of people who hear about Condado) which would equal to about 50 people in the world.

My success would improve if I could teach people how to play Condado. That’s still a tough task because I don’t think you would want to squint and read 10 8.5×11″ pages on your phone! In the initial versions of Condado, I just included a weblink to a PDF of the rules, and provided a tutorial on how to use the UI. Thereby limiting my audience to people who knew how to play or wanted to read a PDF. That’s maybe 60 people.

I knew the next step was to include the rules in Condado, so I started writing up a more concise version. One good thing about a computerized version of the game is that the user doesn’t have to understand all of the game mechanics, the game will just do it for them. So they just need to know the premise and then learn through experimentation in the game environment. I fit the rules into about a page of words (which still ended up being 8 pages in Android world!) and went about implementing it.

As I was doing this, a thought hit me and I realized that I could make the rules interactive. Just prior to this, I added some functionality where a game could be saved and loaded. By leveraging that functionality, I could let the user play in a custom-built, deterministic scenario to learn the major points of the game. Great idea, I should pat myself on the back for that. And so I implemented it into Condado.

The tutorial is still mostly words that the user has to read through, but at certain points in the tutorial they will jump into the game and be forced to play through several actions. Then at the end of the tutorial, they can continue with the rest of the game if they wish.

I guess it’s just like a tutorial level in *real* games, but it’s cool that I could actually implement it without entirely breaking the game engine.