Friday, October 28, 2011

Halloween pumpkin juggling published to intel appup

So it looks like the little Halloween game we made has been published on the intel appup store.

It is listed here:
http://www.appup.com/applications/applications-Halloween+Pumpkin+Juggling


Friday, October 21, 2011

Getting into the Samsung store

So, I registered for the Samsung app store 'thingy' the other day.

Samsung have a number of platforms themselves, not just one platform.  Including Bada, Android, Tizen, and windows mobile 7.  They have tablets, TVs, laptops, mobile phones... and probably other things too (maybe internet fridges?).

It seems most of the platforms support web apps of some sort.  Either through wrapping with phonegap (Bada, Android, win7) or just accepting an archive of the files.

Once joined you can distribute free apps through there.  Which is quite lovely really.  They have their own advertising program, and I'm not sure if you're allowed to do In App purchases with them.

It seems for TV, you can only distribute to the US.  Not to other places around the world.  No idea when or if that is going to be possible.  Yes, their SDK does include support for 3D content.  After speaking briefly with someone(I didn't get their name) at a JavaScript meetup I found out you can try out apps on your own TV/DVD player without having to release to the store.

In order to sell applications, you have to submit a bunch of company paperwork - and sign over your first born child*.  They don't currently charge you join though, which is nice compared to some other programs.


* may be a joke.

Thursday, October 20, 2011

Android developer store, problem. No problem.

So, I've got my app working on Android.  It's not even all that slow.  Ok, it is a little slow.  However the new webkit upgrade in Android 4.0 should get it going fast.  Note that Android 4.0 has approximately 0% of the android users on it at the moment - since they haven't really released it yet.

I had to get touch events working with gamejs, which wasn't all that hard.  I had a little chat on the mailing list, about it, then implemented it not long after.  I will send a pull request soon to that project soon.

I'd like to do a phonegap implementation of sound for shitsound too, but haven't got around to that.  This should get around the html5 Audio issues on the android browsers.  But the game is pretty much ready.

So now that it's ready, I went to sign up to the Android market place so that I could try and release the application.  I went through the signup process, and paid my $25USD.  I even got sent a receipt.  But then something weird happened.  I followed the link, to try and login... but it just sent me back to the signup page again.

The help suggested I try all sorts of things, including just signing up again with another credit card... and if all that fails finally to send them a support request.  So now I'm waiting on the famous Google Support to get back to me to fix up my account... or so I thought.

I tried one more time, but this time with another browser.  Somehow it had gotten my personal account mixed up with my business account.  So I cancelled the registration that got mixed up, and then reapplied again after cleaning cache and clearing cookies.

So anyway... long story short, my Android Market account seems to work now.

I linked up my google checkout account to it - the same one I used for the google chrome web store.  Then it told me I can now sell apps on the android store.

So now I have to actually try and release this game, and get it through the validation process.  Luckily I heard the android validation process is really quick.

Monday, October 17, 2011

notes on chome, and android.

One thing I forgot to mention was that my flash sound for chrome did not work after uploading to the chrome web store.  I made the change at the last minute to use flash for sound, because chrome sound was bad for me.  Of course, a change made at the last minute will be a bug!  Luckily the bug was reported to me, and I fixed it quickly.  This made me glad that the chrome webstore allowed very fast updating.  I can deploy updates there as quickly as uploading to a website.  It also made me remember the importance of testing from the users perspective.  Always check you changes on the live version that people use, rather than just on development servers or simulators.  You need to get into the users shoes and experience it the same way they do.

I did a quick port to android, and tested it on my Advent Vega tablet with android 2.2.  Surprisingly the game ran fairly well.  There were a couple of modern javascript features I was using that did not work, but I quickly found those bugs (html5 data attributes was the main one).

I also needed to add touch support to the game, since so far it only works with mouse and keyboard.  You can play it with the mouse emulation that the browsers support by tapping on the screen to move the player around.  However it would be much nicer if it worked by dragging your finger around.

I have an android environment setup from some previous projects, so I'll be doing that port next.  I'm only going to release it for very modern androids that have a fast enough browser in it.  Canvas and javascript have changed so much in the last year, and last years android just isn't good enough (neither is todays really... we wait for android 4 for decent graphics and audio support).  The other point in favour of releasing on android next is that publishing to the android market is a very easy thing to do.

I'm not sure about doing an iphone port yet, since Halloween is 13 days away - and I am doubtful I could get it through their store acceptance process in time.  But I'll make the decision on which store goes next after the android port is done.

I decided to up the $ amount for the Ludumdare October challenge, since the game has made over $1 now.  So my next personal challenge amount is now $1000 in October.

beta testing intel appup apps

So, I've been going around in circles the last few days with the validation our app on the intel appup store.

The support people escalated my request, and it looks like they have fixed a problem with the validation program.  It looks like their automated validation program had a bug.

In the mean time I've gone through the beta testing process.  This is where you can send your app to some beta testers and ask them to test for you.  If they already have the intel appup installed on their computer, your app appears in their "My Apps" section.  Then you can click on it, to try and download+install.

Just like the Mac OSX Application stores, if the download fails halfway through the system fails.  This is 2011 mind you, so you'd hope that people had figured out that internet downloads could possibly fail, and might need resuming.  Especially on mobile netbooks which are using unreliable 3g wireless internet connections.

As far as I can tell, there is no automated feedback collecting system in place.  Which means you will need to manage that feedback yourself.  Either by emailing your beta testers or using your own in game beta feedback forms.  If you're going to be releasing on multiple platforms, you'll want to create your own beta testing process anyway.  Since not all platforms make feedback easy, or possible at all.

It took me quite a while to actually download anything on their store.  Even small programs took a while.  I guess they are having connectivity issues with their download servers.  A 0.42MB app took over 10 minutes and multiple tries to download successfully.

The apps the html5 encapsulator by intel creates all include their own web browser.  Which means that every app is at least 10MB big, not even including your app data.  This is compared to other platforms, you mostly only need to include your actual data, or have a thin wrapper - like phonegap - which doesn't take up too much space.

Anyway... fingers crossed it passes their validation process soon.

Friday, October 14, 2011

'Halloween Juggling Pumpkin' published to the chrome web store... I think.

Well, I clicked the publish button, and it seems the 'Halloween Juggling Pumpkin' app has been published to the chrome web store.  I'm quite happy that it is up!

Here is a screen shot of the menu screen.

Well, that wasn't too hard to do after all.


Here is a screenshot of some game play.

Here is the lovely store URL it gave me for the store: https://chrome.google.com/webstore/detail/ndnpdjgfifincamlnbidkagoljbiagcb

This was way less work compared to the intel appup store, which I'm still having issues publishing it. To be fair, their store is still in beta for html5 apps.

encapsulator app 'binary validation failed' no other details.

Just got a rejection notice for my intel appup app, with 'binary validation failed'.  There were no other details, which seems to be typical for this program.

I've sent them some messages for more information, so I'm expecting a few days of waiting before anything happens.

chrome audio sucks

Chrome Audio is worse than firefox, safari, and internet explorer Audio.

There are cracks, pops, and sounds cut short.  It seems there's also not many sounds that can be played at once.

Luckily I can use jquery.shitsound and soundmanager2 to prefer using flash audio over a javascript bridge.  This has a slight delay compared to firefox/safari html5 Audio, but is better than the built in chrome Audio.

Thursday, October 13, 2011

export scripts for app

So today I've been writing a couple of export scripts for my October challenge apps.

I set the config in the main html file using html5 data attributes.  Then read that config on app startup.  This seems like a fairly easy way to customise the app depending on platform.  My export script selects the correct html for each platform on export.

I have to create the correct data sets for each platform.  The right sound formats (ogg, mp3, wav), and the right sized images (From 1080 HD to 320x200 screen).  As well as select the correct fonts.  I can't just include all the assets for each platform, since there are size restrictions.  As well the source, full sized raw data can be over 5GB for one app (for my content heavy app).

Then I have to package them up depending on platform, with manifest files and other strangeness.  Or I need to zip them up in a zip archive.

I'm not completely automating the process yet.  I'll wait to see if the apps get any traction before investing time in complete automation.  Completely automating releases is essential for supporting lots of platforms.  Without it, your whole time can be spent releasing, rather than making the apps better.

Wednesday, October 12, 2011

Signed my app with certificate, and submitted for validation again.

So, I managed to sign my app and submit it for validation on the appup store.
It took at bit of messing around, converting certificates, and installing lots of microsoft software, but eventually got my msi signed, and submitted to the store.
That made me happy.  Now I’m off to drink wine!

Intel appup progress. Got certificate, looking forward to webkit upgrade.

Well, some good news on the intel appup front.
I finally managed to get my certificate, so I should be able to now sign my apps to upload.  Unfortunately I used firefox to download the certificate, which means that I need to convert files in order to get into the microsoft fomat needed for code signing.  So I’d recommend anyone else use IE8 to save that hassle.
As well, I’ve been reporting my problems with the webkit they use in their forums.  They just gotten back to me, and say they hope to use the latest webkit (which should include a year of webkit bug fixes and feature additions).
So now, I’m going back to trying to submit my app again.  I hope that it gets through!

Tuesday, October 11, 2011

chrome web store

We’ve started to look into distributing our app via the chrome web store.
I’ve signed up for a developer account, and started reading the documentation on how to publish apps.  So far it has been easy.  All of their forms have worked, and so far the documentation is easy.  This time I’m trying to do as much of the administration up front.  Things like validating my account and setting up payments.  Only after that works will I actually attempt to publish my app.
Let’s hope it’s easier than the intel appup program, which I’m still not able to publish my app through.

Monday, October 10, 2011

Applied for certificate, thinking about what to do next?

I got an email back from Comodo about the code signing certificate, and now their form works.  Then I had to submit my company certificate, and then have to wait for up to 2 days to get the certificate.
I probably should have realised I needed this certificate before, and applied earlier.  Oh well.  For some reason I didn’t remember this was needed.
Next I’ll begin packaging it up for the google web chrome store, so maybe we can sell some on there too.  I don’t think that will take all that long to do.
Finishing the iOS port might be hard since I’ve noticed the performance of JavaScript and canvas on old iOS devices is terrible.  I could just make it available for iOS 5, and the latest iphone 4 phones though… they might be fast enough.  I’ve been exploring possible optimizations for it too.  So I’ll see how that goes.
I’m in the same situation with the android port.  The current web browsers on there are fairly garbage for canvas performance, so I’d need to do some performance work before it would work on there.  Making it available on the latest versions of Android is also one possibility.  I know an android application is likely to be accepted faster than an iOS one, so that might sway me to release there first.
A Mac application is also possible I guess.  For that I’d need to figure out if there is a UIWebKit wrapper that is easy to use, and quick to integrate.
The other option is to finish the other intel appup app I have in development.  But porting this game to other platforms seems easier I think.  Once the whole process is done I’ll have an idea of how long the other app would take to do for the appup platform.

Saturday, October 08, 2011

Battling Intel Appup submission

Well, I managed to prepare my app for submission to the intel appup store.
I first had to figure out bugs: Sound doesn’t work. Also fonts don’t work. This was very disappointing considering that I’ve been working with a musician on sound effects and music. So we’re not able to use any of that work we did until they fix sound. I even tried to use a flash based sound player, and use the embed tag. None of it worked.
Also the lovely font we selected does not work. Trying to use a font-face crashed the browser completely. So instead I had to use ‘Arial’. arg.
I’m not sure what sort of html5 games and apps they expect if fonts and sounds aren’t working?
It seems they are using a 1 year old webkit implementation, so I hope they will upgrade their encapsulator soon. One year in web browser years is about 70 human years.
Anyway, we decided to submit the app anyway. The font makes it look a bit ugly, and without sounds it looses a lot – but at least the game play works.
Then I filled out a few pages of forms, prepared images, wrote copy, and did all sorts of guff so that I could upload the app. For some reason they required silverlight or google gears to upload the file (weird). Not sure why they couldn’t use a normal html upload form, or even a flash upload form.
Anyway… all that got done until I had to apply for a security certificate to sign the files. I fill out another form of my personal details, press submit and I’m greeted with a great error message: “An error has occurred. -1″
Oh well. Sent off an email for support, and now I wait.
Finally blocked after a couple of long days and nights – stopped by the error “-1″.

Friday, October 07, 2011

EULA we can use? (End User License Agreement)

Hi,
got my app up to the packaging stage now…
Does anyone know of a decent (End User License Agreement) EULA we can use for our games?  If you know of ones we can use please leave a comment.
cheers,

Thursday, October 06, 2011

I'm in

October came around, and I started working on a game.
It’s javascript/canvas based, instead of my usual pygame. But, I’m using gamejs which uses the pygame API, so I feel pretty much at home.
We got most of our new graphics and sound into the game today, and all of the game play is done.
It’s not running fast enough on my ipod touch 2g, but I think with some work it could be playable. So we’re aiming to release on the various web stores first. Then perhaps improve things for the mobile platforms.
I had to work on improving a sound engine I call jquery.shitsound, or just shitsound for short. Which uses various web browser sound APIs to work. I’ll have to get it using the phonegap framework to play audio too, since html5 Audio on mobile platforms is simply broken.
We’re in, I should say. Since I’m doing a collaboration with Spencer Sternberg ( http://www.spencersternberg.com/ ) video game audio and music productions.
The second app I’m working on next after this one is released I’m doing as a Powered By Bees production ( http://www.poweredbybees.com ). It’s less game related, and more content related, but I still think it will count for this October Challenge.
Thanks Ludumdare!  This October competition has really given me a big kick up the backside.

Sunday, October 02, 2011

Server Side jQuery - ssjquery

I've got a new server side jQuery project up.  It's an extension on some ideas and projects over the past couple of years.  It uses the node.js javascript interpreter, and node libraries like jsdom, and htmlparser to do all the work.  It can be used within various projects that are not javascript via a command line process or a web service.

This is what the pipeline looks like on the server side.
json + html + server side jquery => rendered html

Instead you can run it on the client side so you don't need a server for development.
json + html + ssjquery run on client first before other scripts => rendered html

A webservice creates the json, and your server side jQuery scripts populate the html.  Think of it as an industrial strength templating language that millions of front end developers know how to use.

Here are my server side jQuery slides I gave at the reject.js conference in Berlin last week.  It wasn't a great talk, but I think it's helped me understand a little more on how to explain the concept to people.  I purposely did not put any code in that talk, so I'm providing it here.  Instead I concentrated on why you'd want to do it.  I might try and write up my talk notes as a separate blog post.

Here is the project page: https://bitbucket.org/illume/ssjquery

There is a python buildout script which downloads node.js, and all required libraries into a directory ready to run (with the npm package manager).  In there it creates a bin directory for the bin/ssjquery script for the command line version and bin/ssjqueryServer for the server version.

As a bonus, I also install the uglifyjs binaries, and coffee script binaries - but they are not required.



Here is how you run the python buildout...

$ hg clone https://bitbucket.org/illume/ssjquery
$ cd ssjquery/pythonbuildout
$ python bootstrap -d
$ ./bin/buildout
$ cd ..



Here is how the command line script ssjquery is called to output rendered html.

$ cd js/example/ 
$ ../../pythonbuildout/bin/ssjquery ./ server.json index.html jquery.js yourServerSide.js yourServerSide2.js > renderedHtml.html


Here is the ssjqueryServer script which listens as a webservice to render html.

$ cd js/example/ 
$ ../../pythonbuildout/bin/ssjqueryServer ./ server.json index.html jquery.js yourServerSide.js yourServerSide2.js 
Server running at http://127.0.0.1:8124/ try url: http://localhost:8124/?basePath=./&serverJson=server.json&serverJs=jquery.js,,,yourServerSide.js,,,yourServerSide2.js&templateUrl=index.html

That runs a web server which renders the files for you.  It's a bit quicker than calling a process each time you want to do things.  There is a possibility of embedding the javascript interpreter inside python (or php/java/etc) too.

Structure of html

The structure of your html is something like this:
  • include jquery
  • include code which will be used on server side and client side.
  • include server side jquery, and run it if have not processed it server side.
  • include client side jquery
There is a minimal index.html example here if you want to see what it looks like.

This lets you use the same html in either server side processing mode, or client side processing mode and the results should be the same.