my process

Being active in a few forums, I read about how long some people spend working on their apps before releasing them. Some solo developers spend 6 months, 1 year or longer working on one app. Tweaking one aspect of the game or another until they feel it is perfect and a certain hit.

This sort of thinking reminds me of the old methodologies that were used a few years back in software development. The methodologies that were brought over from manufacturing.

In said methodology you gather the requirements from your head, from whatever you perceive is missing from the market or whatever great idea you came up with. Then you spend days and years locked up building something that nobody wants, needs or finds any use for.

In manufacturing, it makes sense because the cost to get suppliers in line, building a plant, tooling and other aspects I don’t know about are astronomical. As a solo-developer of games and apps, it doesn’t make any sense because there are fees that are re-occurring and the longer you wait the more of those fees you will have to pay. There are also little or no costs to change the game or app in mid-flight.

A few years back I thought of this great idea. What if I could make a game like 1024 but instead of joining numbers to make bigger number what if I join colors to make other colors. So instead of 4 + 4 = 8 how about blue + blue = Green.

Although I planed may aspect of the game ahead of time, I only implemented the bare minimal to get into the marketplace. From the end of planning to the release of the game took me a total of 3 months. I then spent some advertising dollars until I had enough data on how people were playing the game and how the key metrics compared to my successful game.

I realize that most people didn’t get it and even when they figured out how to play the game it was extremely difficult for most people. Apparently, I made the miss-calculation that people are more comfortable with colors than they would be with numbers. The game has other problems, but the core concept is flawed. I could have spent a year or more as a solo-developer tweaking every aspect of the game and then realize that it was not a viable game. I am stubborn and still have plans for that failed game.

This is my process: I create a list of task or features and then I prioritize them by descending order of required for release. So in my list, a feature like “help screens for gameplay” is a lot higher than “help screens for menu scenes”. After I have the list I draw a line on the list of where in this early stage I consider minimal features for release. I then decide on a release date usually 3 months to 2 months for a new game and 1 month for an update to a game.

I then work on the items on the list. Two things usually happen. The happy path is where I get to the line before the deadline. In that case, I release the game early. The not so happy path is where it is getting close to the release and I am not near the line. In those cases, I go through the items that are left and decide if I can live without them for the release. Remember the most import release features should be at the very top. At a minimal a play button, the gameplay scene with a few levels, setting up ids, onboarding process, and other key features/tasks.

I then release it and wait for feedback or observe data from the analytics package. Based on the information I get I add items to the feature/task list. Re-order them for the next release (usually in a month), draw a line on min feature for release and start working on the task until I reach the line or times up.

Some indy studios do this repeatedly. They create a game, limited release, check the data coming back and then either abandon it or make tweaks and release it to a bigger population.




The creative life

At bedtime, my wife puts on various podcasts. Most of the time, I am the only one listening to them since she falls asleep 5 minutes into them. Two of my favorites are Kick in the Creatives and Sketchbook Skool.

I don’t particularly draw, paint or do anything with a sketchbook but I have found that a lot of what they talk about relates to me and coding. The other day in Kick in the Creatives they were interviewing Koosje Koene (she is one of the founders of Sketchbook Skool) and they were talking about what to do when you just don’t feel like doing your art.

I do two types of coding. One is day-job coding. I still enjoy it but even when I don’t feel like coding I have found that just starting gets me going. I open one of the IDEs that I work in and I just start typing.

The other type of coding that I do is for my mobile apps. And if I don’t feel like coding those, I don’t really have to. I don’t really get paid. The money I make on these apps is of very little consequence to my life. If I calculate money made divided by hours spent it would be under $2.00/hour. I really enjoy coding these mobile apps, but there are days where I don’t feel like coding. Paraphrasing Koosje Koene, I feel like I have broken something that I use to enjoy.

Interesting enough the same technique that she uses to get back into her art, I also implement to get back to coding. I give it a break. I go for a walk. And in due time, I get a new idea or a new twist on an old idea and I am off to the races. I have been coding for a couple of decades now and luckily I have not broken it yet.

Another Kick in the Creatives that I heard recently was about your own personal artistic style. Sandra Busby adamantly stated that a style should not be something you look for, but it is something that develops from continuously working on your art.

I have a lot more restrictions when coding than most artist have when doing their art. Although I code for fun, what I create I want it to be enjoyed by other people. I code casual games. I like playing them and I like making them. Most casual games are vertical and important button locations are at thumbs reach. Most people play these games with one hand while doing something else. There are many other restrictions that I impose on my games based on known ways people play these games.

I also try to re-use code as often as possible: it is part of the game I play and part of the fun. Everything I create for game 1, I try to create it so I can easily use it in-game 2.

I mention the restrictions and the re-use of code because I believe they limit the range of possible styles. That being said if you look at my games and if you could look at my code for these games you will see a pattern. A style. As Sandra Busby stated in that podcast if somebody saw one of my art pieces and they knew me,  they would probably know that I created it. I feel the same way about my apps and my code. And if you look at apps I have not upgraded in a while and those that I have you will see an evolution of that style. Not a style that I decided ahead of time and forced upon myself, but a style that evolved from continuous practicing of my craft.



Multiple AppId support for IwGameAds.

I have used IwGameAds for a while (I didn’t write the original code). One of the great things of using it with Marmalade  is that you can write your code once and ads appear everywhere you deploy it.

I use 2 ad providers, and I usually set up the platform as Android since IwGameAds only supported 1 appId per provider. This meant that whatever device is presenting the ads, it would always shows up as Android on the ad console. It also meant that such as ads for Android games would show up on Blackberry devices.

I made some small changes to the code to accommodate multiple appids per provider. You can get the version with my changes in my repo.

To add the extra appIds you can do it when creating the mediator:

Example 1:

// Create Inner-active ad party and add to the mediator

CIwGameAdsParty* party = new CIwGameAdsParty();

party->ApplicationID = “Default when it doesn’t match any of the others.”;

party->IOSAppID = “iOS AppId”;

party->BBAppID = “ONX based blackbery devices App Id.”;

party->AndroidAppID = “Android App Id.”;

party->WP8AppID = “Windows Phone 8 App Id.”;

party->Provider = CIwGameAds::InnerActive;


Example 2: Not all the appIds have to be provided it would just use the default when the others can’t be found:

CIwGameAdsParty* party = new CIwGameAdsParty();

party->ApplicationID = “Default when it doesn’t match any of the others.”;

party->IOSAppID = “iOS AppId”;

party->WP8AppID = “Windows Phone 8 App Id.”;

party->Provider = CIwGameAds::InnerActive;


Example 3: You can also use it without a mediator:




Self Hosted WordPress – Smart Kids’ Apps

Since I last wrote, I have created one Tic-Tac-Toe with Zoo animals app and so far have it in multiple stores (but that is a story for another day).

In the process of trying to figure out how I could get more exposure for my app, I found many sites that feature app reviews. I looked at a few, and decided why not try to create one for myself (in typical Adrian fashion).

From the beginning I wanted to use a content management system, since I don’t have the time to recreate the wheel. Doing a search on Google will show dozens in every platform and development language imaginable.

I was one of the original testers for the 1and1 PHP/MySQL servers in North America. And as such, I have a very generous plan for very little money. I have used it in the past to host many websites, including my wife’s very successful parenting board (at its peak it had hundreds of uses and thousands of pages servered an hour).

After spending half a day looking at PHP/MySQL options I came across Redaxscripts. Fast, slim and nimble; it is very impressive. While looking at their performance charts WordPress was second or not far behind every test. Couple that with the fact that I couldn’t find many full fledge templates available for Redaxscripts: I decided ultimately to use WordPress.

Since this blog that you are reading is hosted on, I decided to do the same for the Smart Kids’ Apps blog. I soon found that for some of the things I wanted to do it would not be possible or too expensive to do them here. This is especially true since I am already paying for a hosting package at 1and1.

I have known people who have done self hosting WordPress sites, so I figured how hard could it be. I went to the site downloaded the installer, configured my hosting provider, bought a domain, bought a template (i am not a designer), downloaded a few plugins and in little over four hours in 2 days I had the site up and running.

The Smart Kids’ Apps site might not be perfect, but it took me a fraction of the time and effort than the last time I tried to do something similar (I was in love with Ruby on Rails a few years back).

What have been your experiences with self hosting WordPress? Have you tried anything else?

Doing something useful with my domains.

It has been over 10 years since I have held (and I can’t honestly say that I have ever had a purpose for the .net/.com domains, other than one of them hosting my e-mails. At one point I uploaded a collection of pictures to a postcard flash-based display widget (no other words to describe it). I love taking pictures of flowers, and at the time I thought the postcard display was very neat (I think I still do). I was not able to see my postcard flowers on my phone or iPad, since sadly Apple doesn’t support flash on iOS devices. I thought of looking for or writing a similar application in HTML5, and at the same time I was wondering where I would write my random thoughts about technology that I was playing with.

Originally my blog in the .org domain was going to alternate between me talking about wine (go and read my ignorant wine rantings if you want) and talking about technology. I just didn’t feel it was right for me to talk about wine on one post (something I know very little about), and then switching over and talk about technology in the next.

So here we are. I am now pointing both .net and .com domains to this blog. I have removed the flash-based postcard picture display widget (it is actually still there if you look hard enough). The wine blog stays where it is, and I plan to write in this one only about my tech musings.