PKCLsoft
Where great things start…
  • Home
  • Blog
  • Money Up Credits
  • Crazy Balloons – Word List Gallery
  • Tap Times Tables
    • Times Tables Reports
    • Reviews
    • Suggestions and Credits
  • uAlertMe for iAlertU
    • Using uAlertMe for the first time
    • Network Settings
    • Other settings
    • Ready to Connect
    • Connected!
    • Configuring your Mac
  • Support
    • Crash reporting
  • Privacy
    • COPPA in the US
  • World of Hex Press Kit
Select Page ...

Blog

World of Hex, an app 20+ years in the making.

pkclsoft May 16, 2017 Announcements, App Updates, Coding, Games, Opinion, Programming, sample code

Back in the 1980’s, when I used to spend way too much time playing games on my Apple IIGS (and earlier, my Apple IIe), one of my favourite games was Fortress, by SSI.

Fortress gave me a small game board where I would fight it out against one of several computer AI’s, where a game consisted of 21 turns, and whoever controlled most of the game board at the end was the winner.

One of the things I loved about Fortress was the way the AI’s got smarter with time.  When you first started playing, it was easy to win, but after a few games, it became more challenging.  This kept me coming back to Fortress as I felt I was playing against something that basically learnt as I did.

As a programmer/developer, my mind is rarely idle, and I always have a project on the go.  In the 1994 I thought it would be neat to rewrite Fortress for the Apple IIGS, using higher resolution graphics.

I started doing this with the ORCA/Modula-2, which I had recently brought to the Apple IIGS with publishing help from The Byte Works and some connections at Apple.

As part of writing this blog post, I’ve run up my Apple IIGS environment (yes, I still have all of it) within the wonderful Sweet16 emulator and found that code:

I hadn’t realised just how much of the game I had written.  I thought I’d only written a bit of the game logic, however it turns out I’d written a lot of the UI as well, as can be seen from when I ran it.  The AI’s hadn’t been written but the basic building blocks were there.

The funny thing is, I have the code; I have a compiled binary that I can run, but I can’t remember how to re-compile the source code anymore.  I’ve got a build script there, but my memory fails to help me out.

One of these days I should bring all that code out, and store it somewhere safer.

Around this time, I got distracted and much of my home based projects took a back seat, Fortress included.  My work took me away from Apple development entirely for around 15 years.

So Fortress GS was left on a floppy disk (or two) in a box of backup floppies along with everything else.

Then, in 2012, after I’d been back developing for Apple hardware again for a few years I got the bug again, and, having recovered my entire Apple IIGS development environment from hundreds of floppies and some second hand SCSI drives (my how they’ve grown; did you notice the size of the “M2” hard drive above?), I was able revisit Fortress GS.

I ported the guts of the code to Objective-C and wrote a basic prototype to show to another developer at the time as a proof of concept.  This one was really basic, but it allowed me to place moves for both sides by tapping the screen.

I showed this to a designer I knew at the time who thought the idea was great, but suggested that it would be more interesting with a hexagonal grid rather than the rectangular one.

I toyed with the idea at the time, but I did nothing with it; I had other projects happening, and I wanted to focus on my educational apps.

Moving up to 2016, and the release of the Apple TV, I launched my latest educational app, Tap Tangram (which I later launched as Classroom Math Drills), and due in part to my failure to recognise that I’d missed my target, and the complete lack of featuring by Apple, the app never gained any traction and failed at launch.

That left me wondering what to do next, and then it occurred to me to reboot the Fortress app idea once again.  I’d also recently read a most-excellent blog article by @redblobgames about manipulating hex grids in software, so my mind was abuzz with what I could do with it.

Enter World of Hex, my latest, and final attempt to reimagine the classic Fortress for iOS and the Apple TV.

I started out just playing with the hexagonal grids code that I wrote as a port of the code provided by @redblobgames and getting the basic board working with the underlying move computations.

Once I’d done that, I sat down and brainstormed how I wanted the app to work; how the game would play and during this process, I asked myself:

“What if, rather than a simple rectangular grid of cells, we had a map of the world as a map of hexes?”

And then I got going.

“What if, the terrain was somehow represented in this 2D map of hexes.  Rather than try to represent the 3rd dimension as a true 3rd dimension, colour the hexes to represent the terrain.”

and

“Hmm.  how many cells?”

“Earths land surface area: 150,000,000 km2”

“If we say each hex has a real world “size” of 1km, then we need to be able to map out 150 million hexes eventually.  Even if they aren’t all being used by players, we need a way to know where on the earth a hex maps to land.”

“So, what is probably easier, is to map the entire planet with hexes, and then mark some as usable land, and others as ocean, unusable land, etc.  that means a lot more hexes in the database though.  It means millions of hexes to cover the planet completely.  too many.”

“Will performance be an issue?  yes.”

And so it went; with performance an issue and no real idea at that point of how to make it all happen I went hunting for others that had build a world of hexes.  I needed to get an idea of:

  1. Could I get the basic mechanism to work on an iPhone
  2. How many hex tiles would I need to build a reasonable approximation of the Earths land areas?
  3. How would it perform if I built a model with all those tiles?

After some searching with Google, I happened upon the wonderful Hexasphere.js by Rob Scanlon.  This gave me hope.  If this could be done in a browser, then I could do it.

So I set about to port his Hexasphere javascript code to Objective-C to see what I could achieve.

This is where I started to hit upon the boundaries of my knowledge of 3D modelling and SceneKit.  I also found myself struggling with some of the math concepts involved, having to trust in these people that obviously handle it better than I.

I did get Hexasphere working, though it was extremely slow because every hexagonal tile was being implemented as a separate SceneKit node.  It did work, but it just wasn’t going to cut it for a production quality game.  At this point I was using very large hexagonal tiles, so the tie count was still quite low.  Once I increased the resolution of the model, there would be a lot more.

I ended up posting a question or two on the Apple developer forums and the Games Stack Exchange.  These helped me better understand how to improve the performance of my 3D model however I was still hitting problems in that the on-screen representation of the Hexasphere was not high enough quality.

I spent several weeks working on it and getting some great help from colleagues who knew math, and 3D rendering far better than I.  The end result of that was a perfectly rendered Hexasphere using only 4 SceneKit nodes that rendered at a full 60fps on devices as old as the iPad2.  The change was to put all of those tiles into a single model, and to colour them individually via the shader and it’s inputs.

I finally had what I needed to get on with the game.

At this point it was just a matter of bringing all of the pieces of the puzzle together and making them work well.

For this game, the main pieces were:

  • The hexasphere code
  • The Hex Grid code
  • SceneKit and SpriteKit
  • CloudKit (iCloud based database)

I’ve already spent enough time on the hexasphere and hex grid, so I’ll try to restrict the rest of this post to the hurdles I had finishing off the app and bringing it all together.

SceneKit and SpriteKit

Apple’s engineers have done a wonderful job of these two API’s.  Having developed most of my apps with Cocos2D, the transition to SpriteKit and SceneKit was pretty painless.  The primary difference for me was the coordinate system.

The main reasons I went with Apple’s frameworks this time were:

  1. I wanted to be able to render the 3D world, which Cocos2D wouldn’t do.
  2. I also wanted to branch out and learn something new.

That said, the trick was that I needed to be able to overlay my 2D game components on top of the 3D components.  After a little research I discovered that Apple had kindly given us an “easy” way to do this via the overlaySKScene property of the SCNView class.

This works remarkably well however it does introduce some problems because there are bugs in the Apple frameworks (at least, there are at the time I write this).  I found that there are some things, like animations of the SpriteKit nodes that need to be forced to be done within the SceneKit renderer thread.  It seems that Apple use a multi-threaded renderer for SceneKit/SpriteKit and some operations that you’d expect to be thread safe, aren’t.

With a lot of help from Apple Developer Technical Support, I found and fixed this problem and filed a bug report #32015449 (github project) accordingly.

Another issue related directly to the use of overlaySKSCene was an incompatibility with the tvOS focus engine (it basically doesn’t work).  I ended up having to port a focus engine I’d written for Cocos2D on tvOS and enhance it to work with World of Hex.  I’ve also filed a bug report for this issue: #30628989 (github project).

Apart from this, SceneKit and SpriteKit work a treat and have made my life so much easier.

CloudKit and iCloud Integration

Once I’d decided to expand the original game beyond a single game board, and to allow people to play games in a world of game boards I needed a way to store the game boards in the cloud so that everyone sees the same thing.

When I started to develop this idea my family and I were enjoying Pokemon GO for the novelty it provided.  As a user, one of the things I really didn’t like about Pokemon GO was the way it forced users to either associate our existing Google account with the app, or to create a brand new Google account just for the game.  There were other options, but they all involved forcing the user to log into a specific account, just for the game.

So I looked at Apple’s CloudKit which is just one part of the whole iCloud service layer that Apple has been building and developing for years now.  One of the beauties of CloudKit is that for every person using an iPhone or iPad that is logged into iCloud, an app integrating CloudKit will just work because there’s no explicit login required.

This is what I wanted.  On the whole, the CloudKit integration was very straight forward and it does just work.

I really enjoyed the ease with which Apple have allowed us to define our database structure via the CloudKit dashboard, make changes and even migrate those changes from development to production environments painlessly.

If there is one thing that I found lacking it is that in the dashboard, there is no way to simply remove all existing data without also wiping the database model itself.

Conclusion

World of Hex has grown far beyond what I originally set out to write.  It’s nothing like my original attempt back in 1994 on the Apple IIGS, and even my really early brainstorming of last year differs somewhat from what I’ve built.

One of the reasons I build these apps is for the challenge and to keep my active mind busy.  I certainly don’t make much of an income from them (though, mind you, I wouldn’t complain), so there’s a lot of satisfaction in having an idea realised and released into the world.  Yes it can be crushing when it doesn’t take off, but, as I mention in the credits scene within World of Hex (can you find it?), “Never Give Up”.

Learning some of the quirks of Apple’s frameworks has certainly been a challenge.  Cocos2D has been wonderful to work with over the years, and in some ways it’s more mature and easier to work with than SpriteKit, however SpriteKit’s deep integration is hard to pass up now that I’ve learnt it.

SceneKit offers some pretty amazing functionality from my point of view.  I remember, as a teenager back in the early 80’s having a book with some algorithms for 3D line art animation that blew me away at the time.  Being able to draw a model in your fave modelling tool, drop it into Xcode and have it on a device screen in minutes is insanely great.  For developers out there that think its tough work creating an app, you have no idea how spoilt you are.

If you’ve read through all this, then thanks for staying till the end.  It grew somewhat longer than I’d planned.

Here it is, my World of Hex.  I hope you take the time to have a game, and that you enjoy it.

World of Hex is now available in the App Store. 

 

World of Hex launching on the 11th of May 2017

admin May 2, 2017 Announcements, App Updates, Games

After a lot of work, my new app, World of Hex is almost ready to launch.  I’ve set the date as the 18th of May 2017.

You can find a basic press kit here: http://www.pkclsoft.com/wp/world-of-hex-press-kit/, and the app page here: http://www.pkclsoft.com/wp/app/world-of-hex/.

I’ll update a little more as the day gets closer!

-1381Days
-21Hours
-35Minutes
-17Seconds

iOS Image Asset Size Calculator

admin January 30, 2017 Advice, Coding, Images, Programming

I’ve been working away on my latest app, and was just creating a new piece of artwork for the splash screen. When I did this, I wanted to start with the iPad Pro 12″ and scale down within Photoshop to maximise the quality of each asset size.

For all of my other assets, I had started with the iPad for some stupid reason and got my math all confused.

So I went hunting for a guide, and found an old site from Ben Lew of Pi’ikea St. It was a little out of date, plus I really wanted to calculate the sizes using the iPad Pro as the starting point.

So I took Ben’s page and popped it into a spreadsheet. The result is available below for download. I’ve also taken a screenshot so that you can see it easily.

In Photoshop, something Ben taught me to do a few years back was to create a layer called “default”, and, in order to get Photoshop to export the various layers in my file as appropriately sized assets, add the sizes as percentages along with folder names.

For me, assuming my originals are for the iPad Pro 12″, this means I give my ‘default’ layer the name:

"default 15.63% iphone/@1x, 31.25% iphone/@2x, 46.88% iphone/@3x, 37.5% ipad/@1x, 75.00% ipad/@2x, 100.00% ipad/@pro"

Similarly, where the originals are for an iPad Retina, the default layer would be called:

"default 20.8% iphone/@1x, 41.7% iphone/@2x, 62.5% iphone/@3x, 50.0% ipad/@1x, 100.00% ipad/@2x, 133.33% ipad/@pro"

You can download the spreadsheet below.

artwork sizes – PDF

artwork sizes – Numbers

artwork sizes – Excel

Push Notifications for uAlertMe to live on via Parse on Buddy.

admin January 7, 2017 Advice, Announcements

 

As some may be aware, the Parse service is to be shutdown on the 28th of January.  Parse gave developers 12 months to sort ourselves out and find another place to host our data, and drive our services.

I’ve been using Parse for a couple of years now, to provide a push notification service to my uAlertMe app.  I was looking at removing the app from the app store, and discontinuing support, because I couldn’t find a cost effective way to keep it all running.  uAlertMe is an app that sells perhaps 200 copies a year, so there’s not enough income to cover monthly service fees.

Then, late in 2016 I saw a message on one of the local developer groups that Buddy had established a relationship with Parse, and were providing a wonderful migration tool to allow us, in a relatively pain free manner, take our data from the existing Parse service, import it into Buddy, and (hopefully) sit back.

Now I’d have to say that it wan’t quite that easy.  Because I jumped on board pretty quickly, and because I wanted to use the Push notification system, I was wanting to use features that hadn’t been completely polished.

So, with some really terrific support from the kind folks at Buddy, I worked on getting everything working, and as of today, iAlertU and uAlertMe are happily talking via Parse on Buddy.

So, if you still haven’t migrated your Parse data, and are wondering what to do, you have 21 days (as I write this) remaining.  Get on over to Buddy and get the process started.

2016 Christmas Discounts

admin December 26, 2016 Uncategorized

discounts-christmas2016

Sort of late posting this here (it’s been on FB and Twitter for a week now).

I’ve discounted most of my educational apps till the end of the year.  This is a great opportunity to pick up some great educational apps for those iPad and iPhone gifts:

Please like/share and if you purchase, please rate/review the app.

Tap Times Tables $2.99 -> $0.99

Math Plus Minus $1.99 -> $0.99

Classroom Math Drills $2.99 -> $0.99

Tap Tangram $2.99 -> $0.99

Money Up! $14.99 -> $4.99

Sight Words Balloons $2.99 -> $0.99

Spelling Balloons $2.99 -> $0.99

 

Apple, accessibility and iMessage stickers

admin November 30, 2016 Advice
Heros and Villains Stickers

Heros and Villains Stickers

You know, I think Apple and their incredible focus on accessibility is amazing. My daughter and I are currently waiting for Apple to review our first sticker app, called Heroes and Villains Stickers.

My daughter put all the artwork together, all drawn on her iPad using the ArtStudio app, and I did the “programming” bit (though programming is a stretch given Apple have made it so easy to put a sticker app together).  This project is a labour of love for her, as she’s a real fan of the characters she’s drawn.
 
As we put it all together I realised that all those stickers had names, and that those names actually have function and meaning as you put the sticker app together.
 
Sticker Properties

Sticker Properties

When all was ready to submit, I got my daughter to go through all of them and name them with text that reflected the meaning of the stickers.

That has paid off in the final product as with voiceover turned on, tapping on a sticker causes the iPhone to read the name of the sticker out loud.
 
This is terrific as people with impaired vision can enjoy the stickers too, and send them to people that can see them, knowing that the sticker means the right thing.
It is details like this that make it easy for me to continue working with Apple and their ecosystem as I know that when Apple talk about inclusivity, they mean it.

Apple's new MacBook Pro Series

admin October 30, 2016 Advice, Opinion

I’ve been waiting to see what Apple would announce this week.  I’ve been hoping for an excuse to upgrade my 2013 MacBook Pro (with retina), partly because I’d like some more storage (It’s amazing how quickly a 256GB drive gets filled once you start developing apps), and because my eldest is about to start University next year and I thought upgrading would mean I could give her my more than capable existing MacBook Pro.

img_4707-1At the moment, she’s working with my original MacBook, a 2009 white unibody MacBook which, as can be seen, has had better days.  It still works a charm, though it’s been running hot, with all fans howling for a year or two now.

So, like everyone else working with a MacBook (Pro), I was keenly awaiting the refresh of the line this week.  The rumour mills are pretty accurate these days, so we already had a fair idea of what to expect as a minimum, however to be honest, I’d been hoping for more.

I’d also been hoping for a realistic move forward from where I am now, and I really don’t think Apple have provided this.

Dongles Everywhere, it’s the future man…

Last year I saw the new 12 inch MacBook released with it’s single USB-C port and quickly wrote the device off as a waste of time.  The lack of a separate power connector, and specifically, a MagSafe power connector was to me a huge step backwards.  The smaller screen size made it doubly less attractive.

When I think about buying a new computer, I like to think I’m buying something that will allow me to continue from where I am, and transition over the next few years to a point where I’ll be ready for the next transition.

With the 12″ MacBook, and these new MacBook Pros, this is not the case.  If I were to upgrade to one of the new MacBook Pro units, none, repeat, none of my existing peripheral hardware would be able to connect to it without these stupid, ugly white dongles.

Here is an image from dailytech.com showing the mess Apple is moving us towards (this for a 12″ MacBook, but you get the idea):

macbook_port_accessories_wide

 

Every day, I connect to my MacBook Pro via the standard USB connector, various iPhone or iPad devices, other devices to charge, external drives for backup, and so on.  Other people have more than I do.

If I were to ‘upgrade’ to one of the new MacBook Pros, I’d have to find a way to connect all of these devices via a USB-C port.  What’s more I’d need to purchase a number of these ugly white dongles (why can’t I get them in a colour to match the MacBook I’ve just hypothetically bought?) if I want more than one plugged in at a time.  Apple ‘kindly’ gave us 4 USB-C ports on these new MacBooks but that just encourages us to purchase more dongles.

Pricing

Note: OK, I’ll be quoting Australian dollar amounts here, but they should be indicative of other markets.

Here in Australia, the starting prices (it’s not even worth looking at the spec’d up prices, really) for each of the 3 new MacBook pros are as follows:

13″ MacBook Pro (no Touch Bar): $2199

13″ MacBook Pro (Touch Bar): $2699

15″ MacBook Pro (Touch Bar): $2999

Apart from the Touch Bar, there are some other subtle (or not so subtle) differences, the main ones being the speed of the CPU and the amount of storage.

Now, like many of you, and certainly, many iOS developers who, contrary to popular myth, aren’t living the high life off app sales, those prices just aren’t viable to me.  My current MacBook Pro was bought as a refurbished unit from Apple, and it’s probably the way I’ll go next time now that I’ve seen these prices.

screen-shot-2016-10-31-at-9-47-34-amApple are basically saying to me, “Hey Peter, we understand you can’t afford our sparkly new Touch Bar MacBooks, but you can always buy the new MacBook Pro without the Touch Bar.  It’s only $2199!“.

My answer to this is that for that amount, I’d be buying a MacBook with the same amount of storage, a slower CPU, less connectivity, less expandability (I currently have a 128GB SD card in the SD card slot to expand my storage economically), and for more than I’d pay for a newly refurbished 2015 MacBook Pro with twice as much storage (see image to the right).

 

 

No thanks Apple.

I love your hardware, and I really enjoy the ecosystem you have created.  My family is well and truly committed to Apple tech too, but this time around, we’ll be avoiding your new MacBook pros.  If there is a new MacBook to be bought, it will be one that we can use now with the peripherals we have now.

 

 

 

Writing a tvOS app using Cocos2D

admin March 2, 2016 Advice, Coding, Programming
So, I’ve been working on the tvOS port of Tap Tangram (due out, March 17!) and have a few observations. As some know, I like to use Cocos2D for my apps; it gives me a huge degree of flexibility for building the UI and doing what I want in the app.
 
One of the things I’ve been doing in apps for the past year or so is providing a lot of configuration options for the player, and what I’m finding now is that the UI I typically build for this on iOS just doesn’t work on tvOS.
 
playereditor

Tap Tangram Player Editor

For one thing, the focus engine on tvOS does not like to play with non UIKit buttons and so on. If I have a name field which tends to use UIKit under the covers, I end up with a single UIKit object on the screen, and the rest are my own Cocos2D buttons and switches.
Now, back before the new Apple TV went on sale, I put a lot of time into producing a focus engine for Cocos2D that mimics Apple’s engine (you’ll find it in the tvOS branch of Cocos2D v2.2 here).  It works really well, and I’ve used it in both GALACTOBALL and Tap Times Tables.  It’s not quite as clever as Apple’s one, but it works quite well and has a flexible API.
I’ve updated this API to work with the latest version of Cocos2D, and have been integrating it into Tap Tangram, however on this player editor, tvOS won’t play nicely because it wants you to do everything it’s way.
The end result is that the UITextField is given focus by tvOS even when I don’t want it to.  Apple, for reasons of their own have made it really difficult to control the focus engine in our user interfaces.  It’s all UIKit, or no UIKit, unless you can find some tricky workaround.
In this instance I have not been able to find a work around that is satisfying.  It feels clumsy.
So what to do?
Write a brand new UIKit Player Editor, that’s what!
After mulling over my nice UI and wondering how to squeeze that tvOS square peg into my Cocos2D round hole I realised that even if I got it to work, my UI just didn’t make as much sense on the TV.  I look at those switches, and I want to flick them.  I look at the slider and I want to slide it.  On tvOS, this just doesn’t make sense because it’s not a touch interface even if you are using the Siri Remote.
So I decided to start from scratch, and write a basic UIKit UI for the player editor.
As soon as I started to lay it out I discovered that on tvOS, some of the user interface features we know and love, are missing.  There is no UISlider.  There is no UISwitch.  How was I supposed to put a toggle switch on screen if Apple haven’t given us one?  I took a look at the Settings app on the TV.  Pretty much everything is done via tables.  Toggles are simple table cells that when clicked, toggle their state.
I can do that for all those switches, but what about the slider?  Well, at the moment, it looks like I will have to implement this as a cascading picker so that when the user clicks on “Maximum Value” it will change to a simple picker.  It means less flexibility for the user, but ease of use.
The up shot of doing it this way is that I no longer have to worry about the focus engine because tvOS will do everything for me.  The down side is that I’m going to have this screen (or two) that although very functional and easy to use, it will not look in any way consistent with the rest of the app.
In summary…
So, either way I have to make compromises.  Do I stick with my own look and feel, and find a way to make it work, or do I take the “easy” path, use UIKit and accept that it just won’t look as nice (in my opinion)?
I’ll continue to experiment as I move forward.  Unfortunately, the main game screen of Tap Tangram is a really really complicated combination of scrolling areas, buttons, and tangram pieces that can flip, rotate and be moved.  I can’t take the UIKit approach there, so whatever I do on the Player Editor screen, I’m still in for some fun.

App Development tools - What I use.

pkclsoft April 25, 2015 Advice, cocos2d-iphone, Coding, Programming

I’m about to embark on a collaboration with another developer.  We want to create something new and fun.  One of the first things to crop up is the tools that we use.  In the interests of documenting what I use, I thought I’d write it as a blog post for all.

One of the amazing things about software development is that we developers can be very passionate about what we use, and how we use it.  Some developers love getting their hands dirty by doing all the hard stuff themselves.  Some like the ease of point-and-click programming (and there are some of that wouldn’t call that programming, but we’re probably being snobbish).

Me?  I’ve been around long enough now to have got my hands dirty on a  whole bunch of things over the years.  I started out with AppleSoft Basic on an Apple IIe, and progressed through a whole suite of tools and languages until the Apple IIGS was discontinued in the mid-nineties.   I could go on about those days and the years between then and the current “App” development wave, but that’s not what this post is about (if you want to hear more about the “good old days”, then let me know via comments; if there are enough then perhaps I’ll take a stroll down memory lane).

I won’t attempt to compare what I use against what others use here; this is simply a write-up of what I use, and briefly, why.

I would like to point out though that this post is probably best for other developers, or budding developers.  I will use terms and jargon here and there that won’t mean much to non-developers.

Programming

Perhaps it’s something to do with my age and where I’ve come from, but I like coding by hand.  Don’t get me wrong, I’m happy for an IDE (Integrated Desktop Environment) to do some simple stuff for me, but for a lot of it, I’m more than happy to type things out from scratch.  The act of typing in code, even what might be template code to others, connects me with what I’m doing; it’s an opportunity to construct the tapestry as I work, to think as I type.  Having a lot of it done for me means that typically, I’m allowing the tool to dictate limits and sometimes, it’s own design, on what I am creating.  Coding by hand means that the limits are my own.

For iOS App development, my coding environment of choice is Apple’s Xcode.  This is a terrific, free, IDE that comes with absolutely everything a developer needs to code an app and submit it to the App Store.  Now I say everything, and it’s true, but in reality there are things like images, icons, sounds, documents, etc that also help to make up an app, and creation of those falls to other tools.

Xcode is freely available from Apple at: https://developer.apple.com/xcode/downloads/

Apple has traditionally encouraged the use of Objective-C for all development.  Most developers either love or hate Objective-C.  I actually enjoy it as a language.  When Apple introduced Swift in 2014, I was a bit surprised.  I knew that lots of people don’t like Objective-C, but I didn’t think people would be so happy to see a replacement.  Swift has so far managed to fail to capture my attention.  I have no desire thus far to change; Objective-C works, and works well.

App User Interface

Apple, for the iOS environment pushes it’s own UIKit and I’ve used this in several of my apps.  It works well, and it’s very powerful.  I don’t however like to use UIKit for the educational apps, and games that I create.  For these I have used Cocos2D.  I’ve been using Cocos2D since it was version 0.99.  It’s now up to version 3.3.  Most of my educational apps use version 2.2 of Cocos2D, though future apps will most likely use version 3.3 or later.

If you want a copy of the Cocos2D version (based on v2.2) that I use, visit: https://pkclsoft@bitbucket.org/pkclsoft/accessiblecocos2d.git

This GIT repository contains an entire Cocos2D project that I put together to demonstrate the use of Apple’s Accessibility API in conjunction with Cocos2D.

Going forward, Cocos2D is now integrated into a new IDE called SpriteBuilder, which is freely available at: http://www.spritebuilder.com, SpriteBuilder provides a very powerful environment that allows you to design the UI of your app in a way that can be built for both iOS and Android.  I have yet to test/try the Android side of things, but feedback from other developers who have used Apportable which has been integrated into SpriteBuilder, has been very encouraging.

To build an app starting from SpriteBuilder, for both iOS and Android, you will need the Apportable Xcode plugin, available from: https://store.spritebuilder.com/products/spritebuilder-android-plugin-starter

SpriteBuilder creates, from your design, and entire Xcode project that you can then add code to, and build for submission to Apple.  They integrate well, and the powerful thing is that once you open up the Xcode project, you can forget about SpriteBuilder if you choose and hand code the rest of the app.  I really is, for me, a good blend of the two.

If I’m building a UIKit app, then I do everything in Xcode.

Code Management

When I first started working with Xcode, I used “cvs” to manage and control the various versions of my code.  It worked well, but in the years since then, the development world has moved on.  These days, the trendy choice is “git”, and for me, it’s a good choice.  It works well in a local environment, and I’m able to set up remote environments so that I can easily backup my code to a file server, or the cloud.

For code version control using “git” I used SourceTree, by Atlasssian.  SourceTree is available for free from: sourcetreeapp.com  It’s a great tool, very powerful and integrates beautifully with a cloud based service called BitBucket, also by Atlasssian.  I use BitBucket because I can create unlimited private repositories for free, and it’s very handy for sharing code with other team members.  I use SourceTree on my Mac to manage daily commits of code, and then push those commits to the cloud or a file server periodically so that I have backups.

Artwork

For a lot of my apps, I’ve created most of my own artwork.  Until late last year I did all of this using a free app called “GIMP“.  It’s a great tool, and for people, like myself, who work on a very low budget, it works well.  It’s cross platform and there’s even a version on iOS called ArtStudio (though they don’t call it GIMP, when you look at it’s feature set, and menu structure, I’m convinced that’s it’s built from a GIMP codebase).

With the new version of Money Up, I moved to the Adobe Creative Cloud suite, and Photoshop.  Whilst I enjoyed GIMP and became proficient using it, I now really enjoy the power provided by Photoshop and the higher quality outputs achieved by using Vector based shapes for the drawings.  GIMP is a raster based editor, and as such, is unable to export cleanly scaled images in the same way.

Sound and Music

Before I mention the tools I use on my Mac to edit sounds and music I want to mention two websites I use to source most of my sounds and music:

incompetech.com – This is a wonderful site by Kevin MacLeod who shares a vast library of his original royalty-free music.  I’ve used a number of pieces from this site; the ability to browse using a terrific filter makes life much simpler.

freesound.org – This site is a powerhouse, full of sound recordings.  Be careful to observe the licenses attached to individual recordings.

For most of my sound editing, I use Audacity, a free and yet, very powerful sound editor.   When I needed to clean a large number of sound recordings for Money Up however, I used Audition CC, part of the Adobe Creative Cloud suite.  For me, it’s not as intuitive as Audacity however it’s very capable, and some things are easier to do.

I always export my sounds as “AIFF” files, but I don’t use those within the apps that are submitted to Apple.  Most apps don’t need high quality sounds, especially for simple sound effects.  What I do, is run a short script over all of my “AIFF” files, to convert them to “CAF” files which take up less space, but still sound just fine on an iOS device.

This script comprises:

#/bin/sh
FILES=`find . -name \*.aiff`
for F in $FILES;
do
  DF=`basename -s .aiff ${F}`
  echo "Converting ${F} to ${DF}.caf"
  afconvert -d aac -f 'caff' -b 65536 "${F}" "${DF}.caf"
done;

Video Creation

I’ve previously written here about how I create my App Preview videos.  Here is a link: http://www.pkclsoft.com/wp/creating-an-app-preview-my-way/

"Money Up!" released, and "One More" is no more...

admin January 7, 2015 Announcements, App Updates

Today, after what has seemed like an eternity of waiting (it wasn’t but it seemed like it), Apple kindly approved the latest update to “Dollar Up”.  The app is now called “Money Up” and it has taken on a whole new look.

With the invaluable help of Ben Lew of Pi’ikea St, the app has been completely revamped.  The user experience is smoother, and to top it all off, now sports 5 wonderful, friendly characters:

roguesgallery

From left to right, they are: Grace, Sparkles, Ted, Zilla and Pirate Joe.

For a brief preview of the new Money Up, watch this video:

“One More”… is no more…

For those people that have purchased “One More” in the past and would like to enjoy the new Money Up app, I’m willing to offer a free promo code for Money Up if you can provide me with proof of purchase.

One More was originally created in an attempt to make Dollar Up more “searchable” for people in the UK that might have been put off by the icon and the word “Dollar”. Now that v2.0 has been released, and the emphasis on the “Dollar” has been taken away I’ve elected to discontinue “One More”.

As I said above, if you’ve previously purchased One More, then please send me proof of purchase (either a receipt from Apple, or a screenshot of the main menu) via email to support [at] pkclsoft.com and I will send you back promo code for Money Up.

1234»...Last »

You can add widget to "blog" widget area by going to Appearance > Widget

Copyright © 2012 pkclsoft.com. All Rights Reserved