2016/07/29

Unity 3D to IBM DB2 Connection Tutorial

I recently had the challenge of connecting to an IBM DB2 database via Unity. After some struggles with setting up DB2 and getting the user access all correct, it ended up being fairly easy. This quick tutorial will show you how to do it and point out some of the pitfalls you might encounter along the way.

Step 1 - Set up IBM DB2

To try this out you'll need to be able to connect to a DB2 database. I didn't have access to any so I set one up on my Windows 10 PC. Any of the DB2 installations should work fine for this, but for my task, I went with IBM DB2 Express-C. That's their free community edition. It's probably missing some more advanced features, but I really just needed a simple database set up to test the connection to. 

The installation isn't difficult, but the installer UI looks like something out of the 90s for Windows 3.1. Basically, just follow the prompts for the typical installation. You'll be asked to create a user and password. This actually creates a new user on the Windows OS. It wasn't clear that would happen at the time of installation and I probably could have gone with my standard Windows user credentials. This is an important factor to note. After setup this account that you choose is the one with default rights to create the database.

So after lots of digging around, I found out this was a problem I had and was slowing me down. Eventually, I found out that the Windows user you're logged in as has to belong to a user group that DB2 set up. It sets up two user groups: DB2ADMNS and DB2USERS. I made it so that my main Windows account belonged to both groups. This can be done via lusrmgr.msc. Right click on the Start Menu, select Run and type in lusrmgr.msc and you'll get the Local Users and Groups Manager window. In here you can select your username, right click to get to properties, then in the Member Of tab you can add the user to the user group. I think that only DB2ADMNS group is required, but I did both.

Once you get that all corrected you may also have to make some adjustments to DB2's configuration. This is done via the newly installed DB2 Command Window. I always run the Administrator version so that I'm sure I have all the access I need. Once you launch this you can run the command db2 get dbm cfg. This will print out the config details in the terminal window. If this doesn't work right away then try db2start, which starts the DB2 service. Now you'll want to change a few of these settings. specifically: SYSADM_GROUP, SYSCTRL_GROUP, SYS_MAINT_GROUP, and SYSMON_GROUP. You'll want all of these to be set to DB2ADMNS which is the user group in Windows that has full access to modify the database. Use the following command to set these:
db2 update dbm cfg using SYSADM_GROUP DB2ADMNS
Do this for each setting.

Now things should be pretty happy. You can try creating a new database with:
db2 create database YOURDATABASENAME AUTOMATIC STORAGE YES
If all is set up correctly then you should get a success message.

Other useful DB2 commands.

I don't overly enjoy working via the command line terminal so I went and downloaded IBM Data Studio. It was a pretty simple setup and I just went with the defaults. From there you can create your databases, tables, import data and run queries. One major annoyance I found with this is that when you type a lowercase name for a table or column name this program will surround it with double quotes. Which means that if you create a table named mytable then to query it you'll need to use "mytable" in your queries. Not cool, IBM, not cool. I eventually just named everything with caps, but Data Studio prepares SQL statements for you that you can edit and remove the unnecessary quotes when creating your tables. I still can't get Data Studio to create a database, so I do that by command line. Not sure what the problem is, I've even tried by running it as Administrator and even in the user account that it set up. No go. Command line, no problem. Go figure...

Also when you set up DB2 you have the option to create a sample database. My installation said this had failed, but after going in to Data Studio the database was present.

Last caveat: You'll need to make sure that your user has access privileges to the database. Do that in Data Studio via the database's properties.

Step 2 - Connect from Unity

Now that you have your DB2 installation all working fine (this took me what felt like forever) we can hop on over to Unity and set up access to the database. This part is pretty simple.

I created a fresh Unity project and added a Plugins folder to the project. We'll need to add two DLL files to this folder: 
System.Data.dll
System.EnterpriseServices.dll
Unity-friendly versions of these can be found in your Unity installation folder like this:
E:\Unity_5.3.4p5\Editor\Data\Mono\lib\mono\2.0

Of course, your directory will be different from mine, but the subdirectories should be the same. Just locate those two DLLs and drag and drop them into your project's plugin folder. I just left the settings on the marked for "Any Platform", but I've only tested on Windows so I'm not sure if these libraries will work on Mac or Linux. I highly doubt they will work on WebGL, maybe on Android, probably not on iOS (because what does? right?). 

Now that's all done we can finally get to my favorite part: code!
For a test I simply created a new MonoBehaviour class and attached it to an empty GameObject in my scene. The code below provides an example of making a simple query and reading the results as strings. For a real integration of this you'll want to convert the results to useable object types. A good example of this can be found here. For my purposes it was just good enough to prove a connection worked. And here's the code:


That's it. Hopefully the code is self-explanatory with all of the comments. I've set up a repository of this you can grab from GitHub that has a simple UI so you can do a full build and test it out on various machines or modify it to your own purposes. Check it out here.

I hope this saves someone from the many headaches I encountered over the past few days of trying to get this to work. There are a lot of outdated examples on the internet and none specific to Unity. Next up I have to test this with some other database management systems (DBMS) such as MySQL, SQLLite, Oracle, and SQL Server. Should be a fun time setting those up!



I was testing this for an additional feature of an app I'm working on called vuzop. It is a data visualization tool that allows you to view your data in 3D or with a VR headset. Check out more information on vuzop here.

As always,
Thanks for reading!


2016/07/22

Long Time, No See

Hi, everyone!

I noticed a blog post is way overdue. Please forgive me, I've been super busy.

"What have you been up to?" you ask.

Well, unfortunately, no new games from Napland Games itself (though I have many in the works), but I've been involved with a bunch of cool projects that have kept me quite busy.



My main project right now is called vuzop. It is a virtual reality data visualization tool. It can read in data from a database and create interactive visualizations where you can fly around to explore the data as it moves in real-time, sped up, or slowed down. It's target toward enterprise, but could be used in a variety of fields to explore data in a new and exciting way. You can see a demo video and more info at vuzop.com.



Another fun project I've been working on is Eddie The Yeti. A cute endless runner with beautiful Hannah-Barbera style characters. It's been released on Google Play, but we still have plans for more levels and features. Play it here.





I've also been spending all of my free time learning JavaScript and have completely revamped our website and merged in my portfolio page to a new, more modern and interactive site. It has videos, slideshows, crossfade slideshows, responsive navigation, and even a cool sound effect. I hope you dig it as much as I do! It's now easier to find some of my interactive portfolio pieces that you can play with right from your desktop browser. Check them out at naplandgames.com/services-game-dev.php, I think my favorite is the Model Exploder... or maybe Oh My Marbles (I swear I'll finish development someday!).

Beyond that, I've started focusing on tutoring Unity 3D a few months ago. I've had quite a few students making a variety of interesting projects. It's very cool to have a chance to see the ideas of fresh new developers. And it keeps me challenged and on my toes. Every session there seems to be a new challenge that I need to find a quick solution to. I'm really enjoying it. Soon I hope to offer group classes. The syllabus for the first 12-hour class is done, but there's still a bit of work to do!

In the meantime, I'm re-dedicating myself to writing blog posts on a more regular basis. It's easy to fall behind! I was writing for Clean Source Code, but unfortunately, the site owner could not continue to pay his dues and I did not have a chance to salvage my posts. And regrettably, the Way Back Machine didn't catch the site and archive it. So I've been a bit discouraged by that. Enough of my excuses. Expect more posts soon!

As always,
Thanks for reading!

2015/10/16

For the Love of Unity

As many of you might know, I've been switched over to Unity for a year now, almost exclusively. In the past year I've had the opportunity to work on a variety of projects as a freelancer. This has given me a chance to check out a few different development tools such as Game Maker Studio, Cocos2d, and Xamarin. Out of all of the packages I've tried none of them come close to Unity. It's clean, professional, stable, patched and updated to new tech frequently, easily extendable (the editor, Android/iOS plugins, etc), it easily ports to a bunch of different platforms, and there's a HUGE support community surrounding it. I can clearly see why it is one of the top game development tools. If you can't tell, I'm very happy with it.

Unity VS Toolbox is Born

Earlier this month I updated to Unity 5.2 which now comes with an installation of MS Visual Studio 2015 Community Edition (VS). I've been using VS 2013 for a while and built up some tools and templates in it, but they had become messy. So this gave me the opportunity to do some cleanup and build some other tools that I've been meaning to do. So I started a new public project on GitHub called Unity-VS-Toolbox. VS has the ability to create custom toolboxes. In this project I made a toolbox full of text snippets for each of the MonoBehaviour events. UnityVS Tools (the extension that connects Unity to VS) comes with something similar, an "Add MonoBehaviour Event" wizard. I always found this a bit clunky and it doesn't have the MonoBehaviour events in order of execution. My toolbox can be pinned open in VS and has the MonoBehaviours in order of execution. So, not only is it a functional way to add the event to your code, but it works as a quick reference too!

After making the toolbox I decided to keep going and share some of my other VS settings with the community. I've added text snippets for most of the MonoBehaviours and a few handy templates. The text snippets allow you to simply start typing the name of a MonoBehaviour event and Intellisense will automatically create a method stub for you. Unity VS does something similar via a hotkey, but I find this much more fluid. The templates I put up are pretty bare-boned at the moment. They include an editor script, scriptable object, the standard MonoBehaviour, a MonoBehaviour singleton pattern and a template of a MonoBehaviour singleton class. I hope to add more patterns as I find use for them in my games. I've just begun exploring programming patterns to help expand my programming knowledge and further speed up my development process.

Unity Design Patterns is Born

I also created a GitHub project called Unity-Design-Patterns. The goal of this project is for me to explore the various programming design patterns detailed in Robert Nystrom's Game Programming Patterns and make an example usage case in Unity. I feel this is a good way for me to learn more about design patterns and hopefully show other less-experienced developers a way they can be useful in Unity. So far I've only had a chance to explore the Command design pattern. It's pretty useful and one of it's main uses is that you can "record" and undo commands easily. It does have some caveats, though. You can read about these in the wiki page for the project. Next on the list is the Flyweight pattern. I'm having  difficult time finding a good example to make for this type of pattern since Unity handles a lot of heavy lifting like this in the background. I could skip to a Singleton pattern, but I want to be able to describe a solid specific example of when to use them so that I can debunk some of the hatred that surrounds them. This project is a lot of fun and a good challenge for me as it gets me to think more about structures. I'm already seeing that I use some patterns without really knowing what they are and I can now take this opportunity to define them in a better structure.

Other Unity stuff

Also on GitHub I have started posting Gists of some scripts that I make. One very useful script I put up is MasterCam. This script takes the settings of the main camera in the open scene and applies them to every main camera in every scene. It saved me a bunch of time in that project because we ended up changing camera settings many times. I'll be putting lots of useful scripts up there as a I come across ones I use or make that are general enough for community use. 

Finally, I've updated my Unity editor extension, Mobile Store Screenshot Helper, to be even more handy with a custom inspector that allows you to easily manage screenshot sizes (save and load to XML), and I improved the compatibility to be for Unity 4.6+. Last month we had great sales on the extension and I hope these improvements help to continue that trend.

In my next blog post I hope to tell you all about our next game. Right now I'm trying to decide between 2 prototypes. In the meantime I'm having a lot of fun "tinkering" with both.

As always, thanks for reading!

PS - I'm joining the team at CleanSourceCode.com as a blog contributor so I'll be writing more often and writing more about Unity there. Check us out on Facebook at facebook.com/cleansourcecode or on Twitter at @CleanSourceCode!

2015/10/01

Gravitone!


Finally, the day has come! Gravitone is now available on Google Play!

I apologize for all of the delays. I've been wrapped up in a number of client projects over the past few months and just haven't had the time to finalize Gravitone. After a short vacation I found some time to finish it up and I'm pretty happy with the gameplay.

Gravitone is an endless arcade style game that reacts to the music and has a simple goal: Push all of the orbs into the vortex that matches their color. However, things aren't that easy! The vortexes are shrinking and the orbs are not cooperative. Blue orbs are slow, white orbs are not, red orbs repel from their vortex, and green orbs spin. As soon as you get all of the orbs into their vortexes a whole bunch more pop out! Watch out for the Replicator that makes the orbs multiply. To help you groove your way to the top of the charts there are Time Stops, Vortex Expanders, Gravity Boosters, and Tractor Beams. The orbs and vortexes groove to tunes that you can select from your own music library.






Perhaps the most challenging part of this game was the player input (mobile input is hard!). I wanted it to feel like the orbs are alive and struggling against your finger, but not frustratingly difficult to push them around. After a ton of fine tuning I finally found a happy medium and I think it feels pretty good.

One of my goals with this game was to utilize Unity physics in a unique and abstract way that I'd never seen before while keeping the gameplay as simple as possible for mobile devices. All you have to do is push the orbs around with your fingers and tap on the powerup bar when you want to activate a powerup. It feels quite intuitive and is quick to learn.

Since the gameplay is typically pretty short (less than a couple of minutes). I wanted to give our players lots of reasons to come back. The game has leaderboards in Google Play and Facebook to encourage competitiveness and it also has a bunch of meaningful achievements. Almost all of our achievements are tied to unlocking a feature of the game. For example, if you get a score of over 500 you'll unlock the Vortex Expanders. I also provide the opportunity to unlock these by using coins you have collected by playing the game, watching video ads, or purchasing them directly from In App Purchases.


Next I have a bit of work to do before I can release it on iOS. Apple's push to have developers submit apps with 64-bit support means that we have a bit of work to do in updating the SDKs used in the game. I also need to write a plugin that will provide access to the music library on iOS and I'm not particularly looking forward to writing an Obj-C plugin.

At any rate, I hope that Gravitone is fun to play and that you find it is a unique gameplay experience. I had a lot of fun making it and I've learned a lot in the process.

As always, thanks for reading!

PS - Sudoku In Space t-shirts are now available! Check it out on Amazon!



2015/03/01

Adventures in Alternative App Markets Part 2

This is a continuation of a previous post which can be found here,

With Sudoku In Space we tried out many new things. Among them were multiple language support, a bit of paid advertisements, and distribution among various markets. Multiple language support was quite painful, but I think for Spanish it was well worth it as we have had some fair success in Spanish speaking countries. I'm not sure if our popularity in those countries is natural or more due to running a Chartboost campaign in those countries and they have a very low Cost Per Install. Japanese and Korean were not so much worth it. We've found that it is really difficult to break into those markets and I don't really think that Sudoku In Space is appealing to that demographic.

Our adventures in distribution turned out to be a mixed bag of results. For the most part the stores were pretty easy to publish on. There were a few exceptions which I mention in the previous post. In short, most were not worth the effort even as minimal as it was. The only one that stands out is SlideME. SlideME is one of the most popular markets we published on and they even gave us a featured spot which boosted our downloads quite a bit. Being featured by them is apparently pretty common, which is awesome because it gives many developers a fair chance at exposure. I'd highly suggest that an Android app is also published on this store. The effort was minimal and the return was pretty good.

On to the numbers!
I wanted to compare our results with those of Arturs Sosins as best as possible. I'm not sure if he was featured on SlideME so our numbers may be skewed in that way, but overall his app did much better than ours. It could be that it is more accessible as it is a casual game and not a puzzle game. Another major challenge was that AGK only supports IAP via the Google Play store. So we opted to publish 2 versions of the app on each store that blocked Google Play IAP. This was very painful and has led to 0 sales this way other that on Amazon. I have since tried to convince the developers of AGK to include OpenIAB support for Android which would give access to just about any IAP store. The numbers below are for the free version of the app only.

MarketsMonth 1Month 2Increase0%totalxGP
SlideMe377152(225)(60)%52948.09
GetJar011 1 10.09
Google Play7546(29)(39)%12111.00
Opera000 0 00.00
Socio FREE473 1 111.00
Amazon FREE077 7 70.64
Aptoide FREE341 0 70.64
Mobogenie10(1)(100)%10.09

As you can see, SlideME was by far the top market. Note that none of these markets had any paid advertising until after these dates. I'd also like to mention that these numbers are from Chartboost's recorded installs of our games and not from the sites themselves. Very early on we noticed a huge discrepancy between what the sites were reporting as downloads and what actually turned into installs. All of these markets were subject to this issue and I can only explain it as: There are bots clicking the download links. These markets have limited device ID tracking and don't seem to do a post install check, but only a link click. The other possibility is that users are downloading but not installing or cancelling. This seems pretty odd, especially for a game that was under 15MB at the time. There also could be things like download corruption and device compatibility issues. Ultimately we have no way of knowing, but we do know that what these store report is completely erroneous.

You may notice that this list is extremely trimmed from the previous blog post. So many markets were huge duds. They were riddled with download issues, only allowed payments via wire, were unresponsive to questions, etc, etc, I should also note that with Aptiode they offered us some free marketing credits, which was nice. Unfortunately, it turned out to equal about $1 per install and that was the only time we had installs through them. So if you're interested in pay about $1 CPI for non-guaranteed installs, that's the place for you...

Since this time we've done our first paid marketing campaigns with Chartboost. They all turned out just fine. We bid for $0.50 per install and that's what we paid. Most of the installs went to Spanish speaking countries because the bids there were lower on average, but if we wanted to wait we could likely have shut that off to focus more installs on the US / English speaking countries. Since the game is fully translated to Spanish, we didn't worry about this. We've had a lot of good reviews for the game and will still continue to work on making it visible, as that is the main problem (so many Sudoku games).

Sudoku In Space has just recently received coverage from NewsWatchTV.com. You can view their video review of the game here:

Also we're excited to announce that Sudoku In Space is one of Android Headline's top ten Sudoku games! Pretty sweet. I'm glad Allen is getting some attention and I hope this helps introduce Sudoku to many new people who wouldn't have tried the traditional grid and numbers style. The full article on that can be found here.

Soon I'll be talking about our next game, Gravitone. It is an arcade style game where you collect orbs by pushing them into their respective vortexes all the while the vortexes are shrinking and the dots are fighting against being put in their place. The whole game reacts to music and has some really interesting graphics. It is our first game with Unity and I'm having a great time using their tools. We'll finally have a game with all of the features we want like Facebook, Google Play, and Game Circle leaderboards and achievements, IAP in all of the markets with OpenIAB. We'll be able to share screenshots for bragging and all sorts of things we could never have done with AGK (without spending months extending its functionality and learning C++). We also hope to be able to publish this game as an online Facebook game. It should also be available via the web and if I can figure it out we can do Linux as well as Mac and PC, and maybe even Windows Phone 8. Stay tuned for more info on that.




2014/12/02

Sudoku In Space 2.0!

We've made a lot of improvements to Sudoku In Space based on the awesome suggestions we've had from our users. The app has been very well received and we believe it is worthy of the extra time we've spent on making it as perfect as possible. We've had great reviews from sites and from our users. Here's a small sample:
  • "If you’re looking for a new way to play Sudoku, or if you've never played before because it hasn't appealed to you, try this. You might be pleasantly surprised, like I was! Score: A"
    Nerdy But Flirty
  • "...pretty much blows the traditional paper and pen version out of the water. With this version of Sudoku you'll be treated to all kinds of fun and vivid colors, music, sound effects, and graphics, something you're probably not used to when it comes to Sudoku."
    App Picker
  • "Sudoku in Space is the sudoku game for people who thought they couldn't play sudoku!...If you've always struggled with learning how to play Sudoku or you’re looking for a new way to play, you’ll definitely enjoy Sudoku in Space."
    In Our Spare Time
  • "My Go-to Game!! Before this game, I had never played an electronic version of Sudoku. WOW!! The format for this game allows you to switch between Numbers with Colors, or just Colors.(I like Just Colors, as it helps me to see patterns easier) The format for "penciling in" those spots that you are unsure of is perfect for not confusing you as you narrow down the right option. Also, Sudoku in Space has so many challenging stages to beat that I have been playing a few rounds a day, and have barely made a dent them!! This game has so many well thought out features, it has surprisingly become a part of my daily fun." - 5 out of 5 stars - Loren Marvin (via Google Play)
  • "I have been looking over the market place for three years for a simple, non-adfilled, non spyware junk color Sudoku game and despite there being 50 some odd apps out there, they all sucked. This app has a simple interface, a notation function, several hundred puzzles of varying difficulty, and a decent interface. I can't believe it took 5 years of android smart phone dominance to get such a simple game in the market, but Napland Games has finally delivered." - 5 out of 5 stars - Ryan (Amazon App Store)
  • Innovative and Compelling Design ★★★★★
    by Dan_T_C - Version - 1.01.04 - Oct 16, 2014 (iTunes App Store)
    Sudoku in space has an atmosphere like no other, making an otherwise boring mathematical game visually pleasing and mentally stimulating. The substitution of colors for numbers makes the concept of sudoku much more evident and easy for a large variety of players to understand! The animations are fantastic - you can actually see lines drawn to confirm the validity of your answer, which will effectively explain your success or your error. The large amount of levels provides for hours of gameplay at varying difficulty settings. I strongly recommend this app for younger sudoku players and amateurs!


So, what's new in Sudoku In Space version 2? Tons!

  • We've added a cute and fun story of Allen the Alien's adventure through space. It's your goal to solve puzzles and collect items to help him get back home to Andromeda Prime. The story extends beyond that in a second chapter. You'll have to play to find out what happens.
  • We took a lot of the graphics and polished them up to make them shinier and have more character. Most changes are minute, but you may notice that the numbers are a bit easier to read.
  • We added some more music tracks. People responded really well to our selection of Adi Goldstein's music. So we added some more of his beautiful tracks to the mix. 
  • Another awesome improvement we made is that you can now switch to "speed input" mode. Our initial mode of input was geared toward newcomers to Sudoku and we believe it works well for them. However, it can be a bit slow and tedious for more experienced players. So now you can switch on speed input and you stay on fill-in mode, pencil-in mode, or clear mode and you can change colors however you want. So if you know where all the greens need to go just select fill-in mode (the green check), the green color button, and then keep tapping the cells on the board you want to fill in until you're done! This has cut my personal time by about 1/3. I think many of you will really enjoy this feature.
  • We've also added a bunch of more puzzles. Everyone gets 300 more puzzles for free and we put in puzzle packs that you can buy. The puzzle packs each contain 300 more puzzles. One pack for each difficulty level other than beginner. 
There are also a lot of little improvements that will make your Sudoku playing experience even more enjoyable. You'll have to play to find out what those are though! 


We've had a lot of fun making Sudoku In Space and love seeing so many people getting enjoyment out of it. Now we just need to climb the charts so that others can find the game more easily! In that regards please share the game with your friends. Your support means a lot to us. Links to all of the stores can be found here: www.NaplandGames.com/SudokuInSpace


Now we're off to the next project which will be my first game built using Unity 3D. They finally have their UI system available and I've really been enjoying it. Even with my limited experience the UI system in Unity will save me a ton of time. I've been playing around with it and it took me about a day to set up a really good standard template that has UI and features I regularly need. 


I'll also be starting work on a big update to Wordspionage soon. We plan to add chat, quick match, and a few other options that have been on the list for a long time. If you're interested in helping beta test then please contact me.


I hope everyone had a safe and fulfilling Thanksgiving holiday. We're so stuffed all we can do is play Sudoku In Space and Wordspionage.


Thanks for reading!

2014/11/01

Adventures in Alternative App Markets

This past month I have been focusing a lot on getting our latest game, Sudoku In Space, on as many app markets as possible. I found this great article on Gamasutra, by Arturs Sosins, detailing his experience and stats for downloads on a variety of Android markets. And I realized we were really missing out on a lot of possible exposure.

Unfortunately, our installs have not yet been as many as what Arturs experienced, but his game, Sushi The Fish, is casual-arcade whereas Sudoku In Space is a more niche puzzle game (although we're trying to push it into the casual category more). I'll make a full report of our experience in January when we have enough numbers to make comparison to Arturs' numbers and I'll be using Google Play downloads as a baseline factor so that we can do a more meaningful comparison.

Here's Arturs' numbers for a quick reference:
MarketsAfter Month 1After Month 2Increase%
Slideme1548181927117.5
GetJar866943778.9
Vodafone128325197153.9
AndroidPit387638100
Opera2932310.3
TStore24431979.1
Soc.io181915.55
Google Play175336211.8
1mobile111219
Insyde63024400
Amazon51914280
Applandic2200
AppsLib1100
Camangi1100
Yandex5500
Nokia101000
Appsberry2200
andapponline0000
aptoide0000
mobogenie0000
cnet0000
Total:27113392+68125.12



On to the experience!

We found that most of the stores do not offer an experience for the developer that is anything near what Google Play offers, a couple come close. We started working on the list from the top. One of our main challenges is that Sudoku In Space offers IAP through Google Play and only some of these stores will allow it, but most will not consider your game for promotion if you do so. I tinkered around with AGK's java setup and found that it would take me a long time to set up OpenIAB (an alternative SDK that allows you to easily set up IAP for a bunch of different stores). I asked the folks at AGK if this were a possibility anytime in the future and they hope to look at it after v2 is completed. Since I couldn't wait that long we decided to release 2 versions of Sudoku In Space on the stores, paid and free with ads. Currently we only offer ad removal as an IAP, but very soon we are expanding the game to have more puzzle packs which will require more IAP and similarly drive up the price of the paid versions.

The next challenge was getting information from many of these markets so that we could use a deep link URL to link players directly to the paid version of the app in the same market that they downloaded the free version from. Some sites offered up this information readily, some responded to our question by email, some I figured out on my own, and some still have yet to reply after 2 weeks. Interestingly, many of them use market:// URL schemes exactly like Google Play, so that made life a little easier, though I think I'd rather they used their own URL scheme to ensure that the player is directed to the same store that they downloaded the free version from.

Now we've got 2 versions of the app and I've weeded out the stores that fail to give any response to emails. Next up we needed to determine how to get paid and set up payment info. This weeded out a few more stores for us because, apparently, our bank doesn't accept international wire transfers (who would have thought?).

Stores unresponsive to emails:
Vodafone, AndroidPit, 1Mobile, Camangi, Andapponline
Stores that only pay through international wire transfer:
Vodafone, T-store, Yandex

The biggest losses are Yandex and T-Store which are both fairly large markets and we were hoping to use T-Store to help us with our distribution in S.Korea as the app is fully translated into Korean. T-Store was very responsive to emails.

With a few stores removed from the list and information on how to deep link into their market apps we started down the road of getting the app up on as many stores as possible. First we started with GetJar and Opera because they were very easy. The websites are barebones for the developer portals, but they work. So far our download experience on both sites has not been great. The sites report any clicks to the download links. So what we thought were 100s of downloads turned into very few actual installs. I can't explain this. Our permissions are bare minimum and the APK is under 15MB. So why would folks click to download but never install? Unfortunately, we'll never know, but it appears GetJar and Opera get a lot of junk clicks. I'm glad I got these two first because I was not using unique app IDs for Chartboost for each store so that we could accurately track installs. I quickly factored that in so we had more accurate analytics, but I left GetJar and Opera builds alone for the sake of time and Google Play provides enough information so I can compare later.

SlideME
After those two I started working on the other stores. SlideME was a pleasure to work with and we are fortunate enough that they started featuring our app about a week after we uploaded it. From Oct 24th to Oct 28th we've seen an average of about 50 installs per day from them. Their site reports quite a few more downloads, but we're focusing on installs because those are the ones that will earn us money. Their support has been responsive to our questions and putting the app up was pretty simple.

Soc.io
This store has offered us really nice support. Unfortunately, I still can't get their upload forms to work. They seem to think it is something to do with my ISP, but I don't know how my ISP could be causing their forms to show images from their website header in the fields where it should be showing my screenshots I'm uploading... At any rate, they eventually offered to submit it manually and we're now waiting on their review.

Nokia
This site is well documented and really needs it because their site is a bit confusing. All in all it was not hard to figure out and get our app up there. They are pretty slow to do their QA review. We uploaded on the 16th and it is now 12 days later. If we exclude weekend days then it is 8 days. They say it will appear on the store 5-7 business days after QA review. Trying to wait patiently...

Aptoide
Support from Aptoide has been very responsive, but we've had a lot of issues. We went through a certification process which I had hoped would improve our desirability to their users and speed up the publishing process. Their forms were confusing. They show multiple language support and although your images disappear from the form when changing to a different translation you cannot upload different images. It took a week of back and forth with their support to finally get the app to show up on their market app. It is still showing that one of the screenshots is missing. Also the app has been published for a week there and still has yet to see a single download. They've given us some market credits to spend on their promotion / ad campaigns. Hopefully that will result in something as this one was a lot of effort.

Mobogenie
Easy upload. They don't appear to do paid apps. Still waiting on email response from them about that or if we can use Google IAB. I'm imagining we can, but I like to confirm. They offer a free promotional package worth "$20,000" if you implement their SDK, but they don't give you the opportunity to find the SDK anywhere and don't respond to emails. We'll see how it goes.

CNet
This seems more like a marketing site to advertise your app than it is an actual Android market. No downloads after a week. The good thing is that it is easy to put up your app. Just add the Google Play link and it is there. Seems like you either need to get an editor's review or pay for advertisement to get anywhere. Even massively popular games like Plants vs. Zombie 2 has only 1,800 downloads via CNet. Pretty much every game that has downloads there has editors reviews. Interestingly one of the most downloaded apps is 1Mobile which is another Android market.

Appseeq
Real easy to set up. Again this seems more like a site that you need to advertise on to get anywhere. This only links to Google Play so it quick and simple.

In January I plan to follow up on this article with some hard stats and a baseline comparison to Arturs' data. At this point I'd say that every Android developer should at least be putting their app up on SlideMe. It seems to have a lot of reach and visibility for small fries like us is actually possible.

Until next time!
Thanks for reading!