20.09.2011

Consultancy App

posted by Karsten

Seemingly, at least when looking at my blog, I have been enjoying the fruits of life lately, and stopped coding! However this couldn’t be further from the truth…

Over the summer I was commissioned by AWR, an international Christian radio station, to create an Android version of their iPhone app. A schedule app with RSS playlist creation capabilities. The app is now in beta testing and will, hopefully, soon be released.

It has been an interesting experience, as it is a more “traditional” app than my games development. It involves download of the schedule from a background server, and then several different search options based on language, time of airplay and geographical target. The geographical target search was, by far, the most time intensive to develop. It involves a scrollable map which the user can click and get a list of programs from the corresponding CIRAF region. In the end I decided to implement it by having an invisible coloured map in the background – one colour for each CIRAF area – and when the foreground map is clicked check the colour of the invisible background map at the click point, and find the CIRAF region based on the colour. Most time was spent on colouring the map, which was a tedious nitty-gritty job. Apart from that development hasn’t faced me with any real problems, and I look forward to following the download rates, but have to wait an see what bugs the testing will throw at me…

Share
27.07.2011

Ndoo – a review of the experience

posted by Karsten

I received an email with the title “Hominize Android, you profit more than Android!” some weeks ago, and I was so close at just deleting it. This is my usual response to mails that seems to be spam, however, as this mail at least had two words in the title I found quite interesting, I read it.

It was an ad for Android developers for a Chinese market place called Ndoo. I thought no harm done in contacting them, and see how that works, with the full awareness that if they would ask me for cash I’d be out! So I sent an email saying that I was interested, but wouldn’t be able to translate my apps into Chinese. The answer came almost prompt (I think they work long hours…), that they could translate my apps for free!! No cash exchange at any point! Additionally at this moment they only accept free/ad based apps, as payments haven’t been set up yet. So this is I no way spam, I think they are doing this to get the market up and running fast.

They’ve now translated the first app for me, and apart for a few glitches in communication (both from my side and theirs) the experience has been very smooth. They have also uploaded the game to the market. You can see it here. My stats show that people are downloading from it, slower than SlideME and Google, but much faster than e.g. Amazon (there you seemingly need to be an app rockstar to get downloads as there are no embedded advertising for new apps), getjar or appslib. It will be every interesting to follow the development.

I can only recommend this to other developers who might want to try something different with their apps.

Share
21.07.2011

Amazon App Store being ridiculously unreasonable!!

posted by Karsten

I have recently had 3 apps approved for publication through the Amazon with Scoreloop integration using the methodology described here. This has been a learning experience, especially when comparing with the ease of publication through markets such as App Store, Appslib, SlideME, Getjar, Ndoo and Soc.io, but I have always managed to get there after 2-3 weeks of fighting their somewhat sporadic and at times erratic approval procedure.

Today, however, it has become seriously unreasonable, and I have to use my mighty “pen” to fight back! I really do not care if Amazon decides to throw me out of their market…  (my games aren’t that popular there anyway)

Lets look at the problem, as described by the Amazon Appstore Account Team:

“Steps to reproduce this issue as it appears in this app: -Click ScoreLoop Icon. -Click the person icon in lower right -click the facebook icon and select facebook -Click Get the Facebook App for Android -Observe it lands on Android market.”

The statement is correct. This will happen. The only problem is, that the “Get the Facebook App for Android” is a link which is part of Facebook’s login page when authenticating using the Facebook API in a webview. There is absolutely no way of authenticating to Facebook connection through a Webview without seeing this!

How can they be so ridiculous? The next step will be banning ads pointing to other app stores than Amazon’s own walled garden! Just to underpin how crazy this is, just know that the game they failed here, was the paid version of Rune Escape Free, which is based on exactly the same code, and therefore also (for obvious reasons) show the link to the Facebook app. That game was approved 4-5 days ago…

I hold up my arms – I give up – This is a lost battle, even for a developer with a PhD in computer science…

Share
01.07.2011

In-Game Scoreloop Account Access

posted by Karsten

It is relatively simple to set up the Scoreloop system within a game using the ScoreloopUI interface that comes with the API download. You just follow the instruction in the docs and voilà, it works, or at least it did for me 😉

However, I wanted to implement a feature in one of my games Rune Escape where I had to check the current in-game currency account, and based on that either show ads or give the user adfreedom within the game. (If this sounds difficult to understand, just download the game, it really isn’t)

I had quite a lot of problems implementing this feature, and I thought that others might benefit from the solution to my problems!

The solution lies in the Scoreloop Core API. What ever you do, do not try and do it by changing the ScoreloopUI code. I tried to do that, but you cannot be certain that the account is correct. The account there is maintaining the integrity, seemingly, for the UI, and not for “hackers” like me. What you need to do is to use the com.scoreloop.client.android.core.controller.UserController object to access the account. This is a little dubious as it is deprecated, but ChallengesController isn’t, and it is performing a similar job accessing challenges instead of the user account, so I assume it is OK, and the documentation doesn’t suggest any new method for accessing the account info.

In order to start the process you should get a UserController and load the user, I do this in the onCreate() of the game’s main Activity:

UserController myUserController = new UserController(this);

myUserController.loadUser();

The argument of UserController accepts a com.scoreloop.client.android.core.controller.UserControllerObserver, so the Activity should implement this interface:

public class GameActivity extends Activity implements UserControllerObserver {

(Alternatively you could do this in a separate class)

loadUser() access the Scoreloop servers and load the user account details. Once it has that it will call public void requestControllerDidReceiveResponse(RequestController cont) and you can now access the information through Session checking which Controller made the request through cont. For  instance this way you can access the balance of the user’s account:

if(cont instanceof UserController) {

Money m = Session.getCurrentSession().getBalance();

float fMoney = m.getAmount().floatValue();

//and do stuff

}

There are quite a few different Controllers available through the Scoreloop Core API and they all work this way, which is great. The only problem is that if you user the game’s Activity class as the Observer for all of them, they all will call requestControllerDidReceiveResponse and that could become a right mess, therefore if you have more than one Controller make sure you check thoroughly what you receive using cont, or alternatively, create Observer objects for each individual Controller – that keeps it clean!

If something goes wrong while the Controller fetch the data from Scoreloop the method public void requestControllerDidFail(RequestController arg0, Exception arg1) is called, and you can do whatever you need to do in that situation. (inform user, what ever…)

 

That’s it, this is all you need to do! I hope this will help someone…

Share
30.06.2011

BoB Speaks Chinese

posted by Karsten

Thanks to the good people of Ndoo, who runs an Android market for the Chinese market, I’ve now had my BoB game translated into Chinese! Or at least I hope it has, as I can’t read it myself… 😉

They are now going to distribute it to that Market – I hear it is big – so I hope it will bring in some good download stats…

They are also translating the Rune Escape game.

Here is a screenshot of BoB in Chinese:

You can’t test it yet yourself – unless you get it from Ndoo which I can only encourage – as I haven’t yet updated it.

Share
30.06.2011

Amazon Market not allowing Scoreloop Social Market – Solution

posted by Karsten

I’ve tried to have Android Apps been accepted to Amazon App Store with the Scoreloop Social Market, but was recently turned down in another game because the Social Market contain links to outside markets, i.e. Android Market.

This is not a unique experience as many people have reported similar issues (both acceptance and non-acceptance) due to this. Therefore, as the Samaritan I am, I thought I’d show how you remove the Social Market from the Scoreloop user interface. I don’t like doing it, as I believe I get a few downloads that way myself, but in times of trouble I believe this is one of the reasons why Scoreloop provide the source code to the developers.

Ok, the solution:

1:

Go to com.scoreloop.client.android.ui.ScoreloopManager and add

void setShowSocialMarke(boolean show);

to the interface.

 

2:

Go to com.scoreloop.client.android.ui.StandardScoreloopManager and add

private boolean showSocialMarket = true;

to the class.

 

3:

and add

@Override

public void setShowSocialMarke(boolean show) {

this.showSocialMarket = show;

}

 

4:

surround the line

description.addShortcutDescription(R.string.sl_market, R.drawable.sl_shortcut_market_default, R.drawable.sl_shortcut_market_active);

in the method

private ScreenDescription createScreenDescription(final User user, final Game game, final boolean useCached)

with a conditional on showScoialMarket, so that it reads:

if(showSocialMarket) {

description.addShortcutDescription(R.string.sl_market, R.drawable.sl_shortcut_market_default, R.drawable.sl_shortcut_market_active);

}

5:

Add the line:
ScoreloopManagerSingleton.get().setShowSocialMarke(false);

in your game Activity in onCreate()

6:

in method public ScreenDescription createEntryScreenDescription() in the line

description.setBodyDescription(new Intent(getContext(), EntryListActivity.class));

change to

if(this.showSocialMarket) description.setBodyDescription(new Intent(getContext(), EntryListActivity.class));

 

That’s it, this does the trick! Hope it helps you! Even though I really hate to shut these things off…

 

Share
28.06.2011

Rune Escape

posted by Karsten

I’ve been testing my adfreeable concept and it looks to be very addictive, especially when comparing user stats with my other game BoB.

I’m creating a pure Ad supported version and a Adfree paid version for Amazon market and the Chinese market Ndoo. I think that these two markets are more suited to these versions than the adfreeable version, and it will be an interesting venture to see if that produces similar user stats!

Share
28.06.2011

When Extra Security isn’t Secure

posted by Karsten

Two situations have recently sprawned a certain level of annoyance in my otherwise secure online presence. I devised a fairly secure system 5-6 years ago, where I have an algorithm from which I create my passwords depending on certain features of websites/services that the password is intended for. This has two major benefits, I have about 2600 different kinds of password that I use, and yet I can always remember them.

No need to write it down anywhere, yet being pseudo unique.

But recently certain developments have meant that this is system is broken, and I end up with a less secure system!

Let me explain. The first is a pretty trivial website “Behind Blackboard” which I use on a very irregular basis. Today I needed to use it, and they wanted me to update my login credentials. Part of this included me to know my email and my institute Blackboard number, which luckily I have in an email.

This resulted in an email with a temporary password. First time on the site and this needs to be changed, and this is where the problems arise. It needed to be:

  • Between 8-12 characters
  • Contain an Upper Char and a lower Char, a Number and a “Special Char” (@£$%_&*^ and so on)

Now this is not very important information that needs super security! It is only protecting the help and documentation of Blackboard, an eLearning system, most of which is freely available anyway, and I’ve only needed to log in 3 times, as far as I remember! So I have hard to write it down – D@mn silly, that is what it is! Now it is less secure as anyone who can find the slip can login!

They do provide an “If you have forgotten the password, answer these questions” option, but the questions where stupid, and I had to make up answers for at least two of them. Really, think about it, would I trust Blackboard with information which could grant them access to my bank’s usual security question, NO! So I had to make something up there as well….. I will not be able to remember these either…..

This brings me to my second part of my rant! My bank, HSBC, is changing they security measures to include a digital “random” number generator gizmo, that you need each time you want to login to their site. Is this more secure than before? NO! Now any opportunist will be able to steal a physical object to pose as me, and if they can spook it (either by being clever and hack it, which is possible, or just observe me using the keys) then they can as easily as before log in to my bank account!

The only “benefit” here is that I now need to bring the gizmo around with me and use it to log in. Will I do that? NO! So I will, effectively, not have online banking! This is one of the things that I need, as banks are NEVER open when I need them to be! Therefore I fear, Dear HSBC, that you might loose a customer soon…

Ranting Karsten!!

Share
Tags: ,
23.06.2011

Patents – US really should sort out their mess!

posted by Karsten

Just to show the ludicrous patent situation as reported by The Register.

Starting with an attack of 132 patents, Oracle had to cut that to 21 to make to “judgable”. Choosing those that we can assume are the ones they would suspect were most likely to win in court, of these 17 have already been rejected with prior art etc., leaving 4, that are still up for debate in court!

What would happen if they attacked a “small” provider like HTC or similar? They’d cut a deal before even having cut it down to 21 not to mention to 4 – this has happened so many times!!

This is *NOT* promoting innovation, rather the opposite only benefiting the solicitors, and the end users suffer.

I can kind of understand patents if they constitute real investments in innovation, but sorry, more often than not this isn’t the case in US. They are so easy to obtain, and then the legal battles have to sort out the mess, in a situation where the company with most cash usually persists and win, if not the legal battle, then the settlement battle…

Oh, and don’t get me started on software patents!!!

Share
Tags: ,
14.06.2011

Android Game Tutorial – The Games

posted by Karsten

This blog is created, so that people can add (using the comments) their own games, which they have made, based on / inspired by the Android Game Tutorial.

Share