Showing posts with label appstore. Show all posts
Showing posts with label appstore. Show all posts

Thursday, November 20, 2014

A Little Help Would be Awesome!

Hi friends!  So if you have a little time to help out a struggling indie game developer - and you have an iOS device - I would really really appreciate it!  My new game Space Bot Alpha is out on the App Store, and *just got a feature at 9th position* in worldwide paid strategy games.


Its make or break time for my bid to be an indie game developer.  My app store feature only lasts a week, and thus *I have only that 7 days* to turn that exposure into actual success for our little heroic Space Bot.


What do you need me to do?

1) Find Space Bot Alpha on the App Store of your iOS device, or failing that on your iTunes by: App Store > Featured > Categories > Games > Strategy > Paid -- or -- by typing in the search box "Space Bot Alpha".  There's also the button on this page.

2) Play the preview video and check the screenshots and see what you think!  I'd love it if you'd play the game if it looks like fun.  I have a couple of promo codes if the $1.99US cost is an issue.  If it doesn't look like your thing, well, thanks for reading so far!

3) Share! If you get through 1) & 2) above then please please share.  The game has a built in sharing feature that takes a screenshot whenever you win a level, and tapping the share button on the score screen allows you to tout your victories on Twitter, Facebook and SinaWeibo.

4) Review!  This is sooo important to me.  Please please review!  If you liked the game, go and add a review by hitting the "Reviews" tab on the Space Bot Alpha page on the App Store.  Genuine reviews from players are huge for helping App Store browsers decide to spend their hard-earned coin. Note that the option to review is only available if you get the game.

5) Write a blog post, online review or even just talk about your experiences playing the game.  I have to be a publicity seeking firefly right now, so any bit of extra buzz is great!


6) Follow / subscribe / like on the Space Bot Alpha Google+ page.  A Facebook page is coming soon.

So, well - thanks for reading!  Got questions?  Check the FAQ or post below.

FAQ

If you were on Android...

I'm a one woman coding team, and while I'm currently working hard on the Android port and have early builds working already, what I have right now available is the iOS version of the game.  If that fails in the App Store its possible the Android build will never eventuate.  Right now I need to hype the iOS side of things to pay for ramen and rent, so I can keep working on the Android build and the next update.

Great about your feature, why do you need us?

Yes, its great that Apple has featured the game!  Being at 9th position for paid strategy games is a huge deal.  It means I have a chance.  But that exposure means nothing if those folks browsing the new strategy games in the next week never wind up getting the game.  This is where *reviews and a good vibe on social media* come in.  Convincing those browsing folks to be Space Bot Alpha players is critical right now!

Couldn't see the Preview Video?

For some reason Apple uses the iPhone 4"/3.5" shots for the iTunes desktop, and since I only recorded game play videos for iPad, iPhone6, and iPhone6+ that may be empty when you view the game listing.  I'm on it - will be fixed for the next update.  In the meantime you can see the video on YouTube (embedded above) or on the Space Bot Alpha website.

Found a bug/crash!

Ah, the joys of being a solo indie developer!  Its really hard to test all corner cases on all devices and I'm already aware of a few crashes and niggles.  If you have time to report them you can do so on the support page: http://www.spacebotalpha.com/support - also I should get reports sent to me from Apple.  I'm already working on the next update to the game which will have some fixes in it for these issues.

Can't Afford It!

I know, by the time $1.99USD gets translated in to local money it can be a bit of sticker shock compared to other online buys.  Especially if you're between jobs or otherwise doing it tough.  So, here's some promo codes:
  • M6TPRJPY6969
  • 9EH97PENY74T
  • KTXKATNE73AM
If you use one please comment below so that other folks don't get the cold shoulder when they try it on the App Store.  Also, if you try a code and it doesn't work - maybe someone forgot to record it below, so if you could comment below on that too it would be super cool!

I don't have Time!

Its a problem!  Me too.  :-)  Don't worry about reviews or the other stuff if you have no time to play, or its not your thing, as what I am really after is genuine player feels for the game.  I would not ask that of you, so if you have no time I totally understand and you're off the hook!  Maybe someone you know does have the time so feel free to share this post!  Pass on the hype!


Thanks for Everything!

I could not have got here without my amazing Producer, business partner, hubby and best friend Raymond Smith.  He has put up with my tantrums, fits of despair and interminable 7 day weeks to get Space Bot Alpha to where it is now.  

My very close friends (hi Kahni especially) also have been a huge rock of support - so thank you all.  Also a big shout out to my folks Maxwell and Shirley Smith for being encouraging with this crazy game development effort.

Its tough being an indie developer with no marketing department and no AAA budget.   So thanks again, and wish me luck!

Wednesday, October 29, 2014

Space Bot Alpha

For the past six months I've been working on a touch device game called Space Bot Alpha.  Here's a video.

Late on Wednesday evening I pushed the final release candidate binary to Apple's App Store review pipeline.  If you want to check out the game I'm expecting it will go live around November 5th.  Doing a review, article or LetsPlay?  Ping me on Twitter and I can get you a access.

Whoa. What a totally weird feeling.

After 2013 and working really hard on Ethex2080 only to realise that I'd need a team of 2-3 people as well as me, and another 12 months to get it done, this year has been all about getting my feet on the ground and shipping a video game.

Now, I proved to myself I could do it, and even if your tastes in games are not aligned to space ships and strategy/puzzlers I hope you'll agree with me that the level of polish and completeness is pretty good for a solo indie developer's first published game.  I'm reaching around and patting myself on my back right now.  But its also weird after pushing so hard for so long to break thru and ship this thing.

Yes, I'm really pretty happy with how Space Bot Alpha has turned out, and although its the end of this stage of the Space Bot Alpha story, as the plucky little guy still has lots of work yet to go with Android releases, level packs and other stuff.  So no relaxing just yet.

But I have to say I'm really excited about what this uncorks for me going forward.  Pushing a build isn't everything: I know that.  If no-one likes the game, and no-one plays it then I am going to have to seriously rethink what I'm doing.  But I did a lot of testing and I've seen people have fun with it.  I've even had some fun with it myself which is pretty amazing considering the times I wanted to just throw my dev tablet across the room in frustration at some stupid bug.  I think this, right now, will be the moment I look back on as when my game development career kicked in to high gear.

In December I'm heading to the UK for a holiday and that'll give me a chance to reset my head.  In 2015 I'm planning to make a new game.  In October 2015 at PAX and GCAP I'm going to turn up there and belong; I'm going to have 2 published games under my belt.

Wanna know more about that new game?  Subscribe here and I'll dump some concepts in coming weeks and months.

In the mean time thanks to everyone that was so supportive and appeared just when I was on the ragged edge to say some nice things and keep me going.  I want to give a particular shout-out to my friends at Disparity Games, Nic and Jason and the rest of the Stark clan; and also +Cameron Owen and +James Bowling of AttractMode Games for making me feel like a real game developer.

And, hey - what are you doing just sitting there!  Go check out Space Bot Alpha!

Wednesday, March 26, 2014

Getting a Qt/C++ App in the Mac App Store

Short story: yes, despite what you may have heard getting a Qt/C++ application into the Mac App Store is possible.  Its not simple, there are some traps but my app, Plistinator, is proof it can be done even the new world of Mavericks with its increasingly more stringent sandboxing regime.

Update: 29 June 2015 - with Qt 5.4 the macdeployqt application has greatly improved and not only has many of the bugs fixed, it also can help with the actual signing.  I've left the links to scripts and patches on here, but you likely will not need them all.

Mac App Store?


Do you really want your app in the Mac App Store?  If  you can, in my opinion - yes.  The cost in terms of Apple's commission is very reasonable since you get
  • fulfillment
    • download to an end-user's hands in exchange for zapping their credit card
  • licensing
    • get a license receipt for the app so you can deal with usage issues
  • handle reviews, charge-backs, upgrades
    • charge-backs and other post-sale customer issues are a part of e-commerce
  • captive audience
    • App Store is on every Mac
Doing all these things to a commercial grade is Hard(TM).  Sure you can use PotionStore and dump some binaries on Amazon S3 but are you ready to take the phone calls if your instance goes down after the credit card is billed, but before the download is served up?

Matt Gemmell has written an excellent article on the pro's and con's and I agree with pretty much everything he says.  My conclusion was that I wanted to go with the Store still, but I also sell my other versions outside.  If you are not sure about the App Store read it and see where you fall on the issues he raises.

I want to clarify the licensing thing: licenses are not DRM, licenses are not evil, Open Source has licenses.  In the App Store drafting the legalese of the license is done for you, so you don't need to hire a lawyer for that.  When the packagemanager installs it from the store the app is receipted, with the system storing its license key automatically - you don't need to do anything to manage that.  If you want to check the license key (Apple calls it a receipt) you can use their API.

By way of comparison, if you use CocoaFob what you can do is create your own keys and make a nag screen to enter the key if it has not been receipted for that installation.  You'll need to store the receipted key into some prefs file yourself.

I think a nag screen is a good way of dealing with the license key entry issue, because you can just have a "Later" button and if the person has torrented your app they can click "Later", or when they're ready "Buy" to go and get a key.  Without this a person could have a copy of your app and never realise they were even supposed to pay for it, or if they do have no way to complete a transaction to "buy" the app.  License keys give you this.  It means torrents become another marketing channel for you, instead of a dead-end to any revenue from your app.

For my app store binaries I just decided not to bother with checking receipts.  If I get the feeling its becoming an issue I'll deal with it then.  For my Windows binaries I absolutely want to do license keys so I do that with CocoaFob.

Sand-Boxing your App

Before you start to build the .pkg file that you'll be pushing up for App Store review, you'll need to make sure your code is sand-boxing compliant.  I love this article by Cocoa-in-the-Shell which is not so happy about Mac sandboxing.  :-)

I used Qt 5.2 which includes the latest fixes to Qt and also has specific Qt for Mac features.  It seems to work well with Mavericks.

In the Digia article (which I suggest following as a general guide) it seems your only problem is the preferences file location, and the storage of cache files.  As of Qt 5.2 you really don't need to worry about these things.  Just make sure that you have lines like this in your main.cpp:

QApplication::setApplicationName("Plistinator");
QApplication::setOrganizationDomain("smithsoft.com.au");

and Qt will put your preferences and settings in the right place.  Make sure your apps bundle id in the Info.plist file match this.  If you use the new QStandardPath API in Qt you'll get the right paths to things like caches and file stores.

As the Digia article says you may use the Qt File open dialog so that the user can by inference provide permission to access any files that your app wants to open that is outside the sandbox.

The issue with this is that the Qt file dialogs return a QString which means you cannot save the Security Scoped Bookmark.  Converting the QString to an NSURL does not fix this, because the original URL has magic pixie dust embedded in it so as to make the bookmark and the QString returned does not preserve that.

To fix this you'll need to build a small Qt C++ wrapper for NSOpenPanel and NSSavePanel which presents the dialog to get the users response (and sandbox permission) and then saves the Security Scoped Bookmark.

Note that in the case of the NSSavePanel, if the file has not been written to (because you got a name to save a file to but there's no file there yet) you will not be able to save a bookmark.  My workaround is to write a file with a single byte in it as a placeholder, then save the Security Scoped Bookmark, then return from the wrapper and save the users file by over-writing the placeholder back in your main app code.  See my gists for some ideas.

Times you'll need the Security Scoped Bookmarks are:

  • recent files menus
  • opening the last edited file on relaunch
  • re-displaying a directory view after relaunching the app
basically any time you need to open a file or folder that you did not have the user open via a dialog, and can not now logically display an open file dialog for.

How to Build your App for the Store

Follow the pointers in this excellent article by the folks who are now behind Qt, Digia plc.  There are a few gotchas and wrinkles, but unfortunately doing a complete step by step tutorial is not really possible for me right now, and making it very specific would mean it was out of date when Qt or Apple change something anyway.

Here are the gotcha's I am aware of (read the Digia article):
  • I suggest using bash to create a build script
    • instead of trying to put the signing into your pro file
  • Setting flags for debug symbols via your "myapp.pro" file
    • Qt mkspecs are a bit off and I had to patch them to get it to work.  
    • See this Qt-Project bug report for my patches
    • You can probably get it to work more simply by hard coding the switches
    • Use my qmake line as shown below in your build script
    • I create a "appstore" stanza in my .pro, used to switch on App Store specific code
  • Building - as per normal 
  • Running macdeployqt
  • Extract the dsym with the utility
    • see below
  • Sign the macdeployqt bundle - if it helps using my script here
  • Run the productbuild command to create a signed package of your app
    • see snippet below
It's not obvious where the dsym file should go.  It needs to be right next to your app, for productbuild to find it, that is

ls $BUILD
myapp.app/
myapp.app.dSYM

Here is my qmake line from my build script:

qmake $SRC_DIR/${DEV_APP}.pro CONFIG+=release CONFIG+=x86_64 CONFIG+=force_debug_info CONFIG+=appstore

Here is a snippet from my build scripts for making the package:

/usr/bin/productbuild \
    --component $TMP_APP /Applications \
    --sign "$PKG_SIGN_CERT" \
    --version "$VERSION_NO" \
    $PACKAGE

Hope that all helps.  If you get stuck feel free to post a comment here, and I will try to assist.  I'll feel especially motivated to help if you tweet or G+ my little app for me!  :-D

Thanks for reading!