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 ...

Category: App Updates

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!

-1426Days
-22Hours
-22Minutes
-56Seconds

"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.

iOS 8, Continuity and Handoff, an example use case.

admin November 18, 2014 Advice, Announcements, App Updates, Programming

It’s been a busy couple of months since Apple released iOS 8, the new iPhone 6 and 6+, Yosemite and … hold on, this post is supposed to be short.  If I list everything that Apple announced, I’ll be here all day!

On with it.  Since Apple’s big event, I, like most other active app developers, have been very, very busy.  I’ve been working away at a new app for special needs education, and a complete rework of my first special needs app, Dollar Up.  I’ve also had to update all of my apps to be sure that they work on iOS 8.

As if that wasn’t enough, I’ve also written another new app called 9 Letters which is due to launch this Thursday, the 20th of November.  9 Letters is all about letting the inner word searcher go mad.  If you like Scrabble™ or Boggle™, or just about any other word game, I think you’ll like 9 Letters.

One of the really neat features of iOS 8 and Yosemite is Continuity.  I love it; it brings to the Apple devices a wonderful synergy where they work together to become a single powerful tool that anyone can use.  No more do we have to close a document, save it somewhere special and then reopen it on another device in order to continue our work.  We can now just Handoff the document, in it’s current state, from one device to another.

When I was nearing completion of 9 Letters I realised that the game would benefit from this neat feature in iOS 8, so with a remarkably small effort (Apple really made the process very easy) I added Handoff to 9 Letters, and I love it.

Now, when I am on the train home from my day job I can play a game of 9 Letters on my iPhone, and then handoff the game to my iPad when I get home.  It really is great.

Below is a short video I recorded tonight that tries to demonstrate just how great this is.  I hope you enjoy it.  I also hope that other developers get behind Apple with Continuity and all it offers; working with computers and mobile just got even easier.

Reaching out...

admin April 16, 2014 Announcements, App Updates

lesson4_ukDollar Up is now just over 2 months old.  As a developer I’m especially proud of this app, not so much for what I’ve done within it technically, but for what the app can do for people.

The main reason I wrote Dollar Up was to help out.  A teachers aid/assistant wrote to me and asked if I was in a position to write some apps for Special Needs students.  Whilst I wasn’t able to do everything she asked, I was quite excited at the prospect of writing an app that had the potential to really make a difference.

So I came to an agreement with the teachers aid who provided a lot of input into the initial design and layout of the app that I would build it at no cost to her or her school, and provide her with as many copies as she needed.  I got to own the app itself, and consequently any proceeds from sales.

Over the next 3 months I spent most of my development time (which means spare time as this is not my main job) putting Dollar Up together.  My understanding was that there was a genuine need for an app that helps to teach basic money skills to people with learning difficulties such as Down Syndrome or Autism.

This was to be my first foray into Special Needs education.  Over that first month I learnt a lot about what makes an app easier to use for people with special needs.  Make buttons bigger, allow students an option to retry a question, etc.

One huge lesson was that my perception of what people can grasp and understand was centred around my own experiences.  That is to say, I had no comprehension of just how much I take for granted in this world.  The simple fact that some students couldn’t be expected to grasp or learn concepts like numbers over 10 rocked my world.  More than one night I’d get an email explaining this sort of thing to me, and I’d turn to my wife, shaken and unable to get on with the programming.  It takes time to absorb this sort of thing for me.  Whilst I’m by no means the smartest guy out here developing apps, I’m so used to being able to do these simple things, that comprehending just how ignorant I am of those around me left me more than a little upset.

This learning experience did one thing; it galvanised my desire to do this app, and do it well.  I wanted to make a difference, to help fill a gap in the app store, and provide Special Needs teachers around the world with a tool they could use.

In the past, with one notable exception, I’ve done all of the work on my apps; the code, the artwork, the sounds, everything.  I work to a shoestring budget.  Some say that my apps suffer from this; that if I spent the thousands they do on artwork I’d do better.  They may be right.  With Dollar Up, I decided to use my little income from the other apps in my portfolio to pay for voice work, and some artwork.

Initially Dollar Up was just for Australia, but it became clear that there was a demand for it in other countries as well, so I started researching where to get permission to use images of coins and banknotes from other countries.  In some cases, like the UK and Canada, this proved to be a long process involving a number of emails and in one case phone calls to sort things out.  Eventually I had the permission I needed.  I never set out to make much money from Dollar Up so it was important that the various institutions understood that.

At release, on the 7th of February, Dollar Up supported 7 lessons with 5 currencies (Australian, US and Canadian Dollar, UK Pound, and Euro).  A week later, I added a 6th currency (New Zealand Dollar) because I’d heard via @TheAppyLadies that there is a strong Special Needs community there.  Since then, there have been 2 more updates, adding at least 9 new features the most recent of which is the ability to extend the app using the iPad’s built-in camera.

During the last few weeks prior to the first release, I distributed Dollar Up to over 30 beta testers around the world.  This was invaluable, not just for fixing things and improving the app; it showed me that people really were looking for an app to help them teach their students or children money skills.  It heartened me and confirmed to me that I had done the right thing taking the time to write Dollar Up.

On the day the app was released I remember having a coffee with my wife.  During that coffee my phone was buzzing away with messages and tweets showing support for the app.  It was an affirming moment for me.

In all of this my expectation was that by supporting all of these currencies I would see some interest from the key markets of Australia, US and UK.  Whilst I included the Euro as a currency, I didn’t expect a lot of interest from Europe because the verbal/audio feature of the app is English only.

One thing to note; if you work with currencies other than “Dollars”, don’t let the name of the app put you off .  If you select Pounds or Euros as your currency, then the app will intelligently use the correct terms through all of the lessons, both on screen and via the audio prompts.

dollarupsalesbycountryWhat has surprised me the most is that the UK has proven to be the quietest.  As the graph to the left shows, the US is by far the strongest market, but the UK falls into the bucket at the bottom.

Sales haven’t been huge, but I never expected them to be, and it’s not why I wrote the app in the first place.

I had however thought that the spread of sales would be more uniform.  My hope with this post is that by telling the story of the apps development, I can try to give it a human side.  I’d very much like to reach more people and schools with Dollar Up; I want it to help.  If people don’t know it’s there, they can’t use it and it can’t help.

If you represent an English speaking school that uses, or wants to try the “Next Dollar Up” method to teach money skills then perhaps “Dollar Up” can help.  If you’d like a promotional copy of Dollar Up to try, please write to me at support@pkclsoft.com.  Explain which school you represent, what your needs are and if I can I’ll help out with a free copy or two.  Of course, I only have limited numbers of these so I’d really prefer to provide them to schools where the potential to reach more students is higher.

 

 

 

 

A new Money app for Special Needs Education

admin January 26, 2014 Announcements, App Updates

I’m pleased to say that I’ve just submitted to Apple for review, my latest app.  This app has been written at the direct request of an Australian teacher to help her teach her students the “Next Dollar Up” technique.

Below, I’ve included a youtube video trailer for the app, just to whet your appetite.  If you’d like to know more about the app, please contact me for some information via the support page.

Goodbye Game Centre

pkclsoft August 31, 2013 App Updates

Game Centre integration is on the way out for two of the PKCLsoft apps.

Today, updates for both Tap Times Tables and Math Plus Minus were rejected by Apple.

The reasons given were that both apps have links that can take the user out of the app. With the new “Kids” category that is coming out with iOS 7, any apps that want to be included in that area have to meet new, tighter rules.

One of those rules is that your app can’t have links that take the user (the kid) out of the app, unless there is a “gate” that can typically only be opened by a parent or adult.

As the kind people at momswithapps.com have pointed out here, there are different ways to implement a “gate”.

Now I can understand where Apple is coming from, so I’m acting accordingly. I’m removing Game Centre from both apps completely.

I don’t want to leave it in and put a “gate” there because it just doesn’t make sense from the kids point of view. If all s/he wants to do is look at his score, then asking for a parent to open the gate doesn’t make sense; it’s unwieldy.

So, the question I asked myself (and this was also asked in a way by Lorraine at momswithapps.com): “Does Game Centre really add any value to the apps?“

When I look at the apps in Game Centre, the number of players is only a small proportion of the total number of people that have downloaded the apps so perhaps it’s not such an important thing.

Encouraged by this, and also driven by the need to correct the issues for Apple, I’ve acted to remove Game Centre.

If you use either of these apps, and are upset by this, please let me know. If there is enough demand, I can look into adding it back in, in the future, and add a gate.

What are your thoughts?

An interview about Hiring an App Developer

admin January 10, 2013 Advice, Announcements, App Updates, Games

I short while ago, the kind people at GoPayment.com asked me if I’d like to be interviewed about hiring an app developer.  The end result of that has been posted today, and can be read here.

Yesterday, both of my Math apps received a minor update in the App Store.  The changes were really very minor, but a part of my desire to maintain and support those people that have bought the apps.  If you are one of those people and have some feedback, please let me know if there’s something you’d like to see added or improved.

Another piece of news is that my new app, Claustrophobic has been submitted to Apple and is awaiting review.  I’l really quite excited about this app; it’s a real step up for PKCLsoft, and I’m hoping that people are going to love it.

A lot of thought has been put into the game concept, the sounds, the visuals.  There’s still a lot more I want to do with the game, and I have a plan of added features, new game twists, etc.

Whilst it’s not available yet in the store, you can see some video of the game by visiting my YouTube channel at: http://www.youtube.com/user/pkclsoft

Ove the next week or so, I’ll be posting more game play videos to give people a feel for the game.  Once it’s available, players will have the ability to share their games via the built-in Kamcord feature.  I’m really looking forward to seeing how people play, what strategies they use, etc.

Watch this space!

 

uAlertMe goes Social!

admin October 19, 2012 App Updates, ualertme iphone

With the recent update to iOS 6.0 and the beautiful iPhone 5, it became necessary to update several of my apps to work with the new screen size.  Whilst Apple

did us developers a huge favour by ensuring existing apps worked on the new phone, the “letterbox” effect detracted from the experience of owning an iPhone 5 in the first place.

When I updated uAlertMe, I took the opportunity to not only increase the screen size, but to revamp the look altogether.  It now sports nice new retina artwork for both the iPhone 4/4s and the iPhone 5.  In addition to this, I also thought it would be great to add some new features that have been long coming.

The most important new feature was social integration.  I’ve always wanted users to have the ability to post or tweet the images received from the Mac running iAlertU, and iOS 6.0, with it’s deeply embedded support for both Twitter and Facebook, made this a natural addition.

So now, wherever you can see an image or screenshot, you will also have a handy tweet & post buttons allowing you to do just that.  Just remember to tell your iOS 6.0 iPhone that you have a twitter or facebook account.

>iWeb Duplicate Image Optimization - an update

admin October 20, 2011 App Updates

>A friendly user has noted that my optimizer tool was being a little severe.  Any menus created within iWeb with rollovers would end up not working after optimization because the rollover images were being optimized, placing them where the javascript Apple provides can’t find them.


I’ve just uploaded a new version of iWebIO that should address this.


Have fun.

123»

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

Copyright © 2012 pkclsoft.com. All Rights Reserved