The Blog

Next Metro Nexus Timetable for iOS and Apple Watch Features

Next Metro from Central to Monkseaton stations

Apart from actually wanting to have a Timetable App (download) that looked good and worked well for the Nexus Metro system in Newcastle, it was also a good excuse to try out some new technologies and test out features added to iOS9 and the Apple Watch. Here’s a breakdown of the some of those features and how they’ve been implemented.

Next Metro Main Features

Complications

Complications get their name from the traditional watch industry and mean anything on the face that isn’t the (main) time. I like to think of them as glances as you glance down at your watch to see them. Now Apple also has Glances, but they’re a forgotten, (at least miss-named) feature of the watch. It’s not a glance if you have to swipe through 5 screens to get to it. We do have a glance for Next Metro, but it’s not something that gets used much.

Despite their name, Apple watch Complications are supposed to be easy. In fact, they’re not. Well they are, but they aren’t at the same time. There’s a bit to understand to get them working in the way you intend and a fair few methods that need to implemented correctly to get them working. It would be a whole blog post in itself to explain, but the important stuff is:

  • The start time for the next complication is at the end time of the previous event, not the start time for the event, important to counting down to the Next Metro.
  • Implement every callback and request (there’s a lot) otherwise your complications will stop working after a period, like when the initial returned events run out
  • Complications can be updated based on users location and external events, so keep them current
  • There is a limit as to how often you can update a complication, although its undocumented, so update only when you have to. It’s also expensive, battery wise so think about the user too. We update the Next Metro complication when a location update triggers a jump to a new journey. It’s not as responsive as it should be, but works most of the time.
  • There’s nothing saying that each complication type has to show the same information, you can customise the amount and even what you show per complication style. That way two complications can be shown simultaneously on a watch face from your app showing different information
  • Use NSDate.distantFuture() for getTimelineEndDateForComplication if you have events that never end (like a Metro Timetable).
  • It’s not possible to combine TextProviders using Swift (as of writing). Use this Obj-C workaround for now if you want say a CLKRelativeDateTextProvider combined with CLKSimpleTextProvider.

3D Touch Shortcuts

The ability to jump to a place in an App from a shortcut on its icon is one of the best new features of the iPhone6S + iPhone6SPlus devices (just behind Live Photos). It can really speed up your access, from making a quick phone call to diving right into writing a new email. Next Metro has this feature implemented but takes it further. We order your journeys based on the distance from the start station and use this information to update the 3D Touch shortcuts to link you directly to your nearest journey. This feature is not something we’ve seen being used very often, or well, but used correctly it takes the shortcuts to the next level of immediacy and relevance. To do so, simply update UIApplication.sharedApplication().shortcutItems when you get an update (location or information). Here’s a full guide to how to get this working.

Searchable

The final ‘cool’ feature of Next Metro is the ability to search for your journeys as they’ve all been indexed (CSSearchableIndex.defaultSearchableIndex().indexSearchableItems) and NSUserActivity when you are navigating the App so terms like ‘metro monument’ or ‘next central’ will show up in your search results and allow you to deep link directly to the journey within the Next Metro App. The next stage for this is to update the content with the next metro information in real time to make it even more useful.

Northumbrian Water Audience Award Prize Winners!

NWL Baltic

We’re chuffed to have been awarded the Northumbrian Water Audience Award for their Innovation Game challenge. The prize was fiercely contested by the region’s games and entertainment companies and Fluid Pixel’s entry ‘Water Jam’ won over the employees of Northumbria Water for it’s social and fun ideas.

Game Concept – Water Jam
Using familiar match-3 puzzle game mechanics employees are challenged with levels that have been created from situations colleagues will face during their daily work. Each level has a target to reach that is based around the roles within the organisation that were involved in solving a problem. At its most simple level a problem could be solved with one employee, which would make the level solvable by only matching one type of colour/shape that represents that job role. A more complex level would be created from say a water leak. The engineer who solved the final problem might also have had to rely on further engineers, but also call centre agents, support staff and a number of other roles. That level’s target will be reflected by this mix of colleagues involved and create more of a challenge to complete. Although the game will be seeded with some sample scenarios, each employee with be encouraged to add their own scenarios, which become levels for other colleagues to play and compete against each other.

How has the game been designed to help employees think about their colleagues contributions?
The game asks the employees to think about the total contribution of the whole organisation to do their job, rather than just their immediate role. Employees are given a simple tool to record any task they might perform, which includes attributing contributions by their colleagues, either by role, or by individuals if appropriate. These tasks are turned into procedurally created levels that use the mix of roles as the target points for the level. By creating ‘levels’ they have to use their on job experiences and consider how the contributions of others allow them to accurately carry out their roles.

How has the game been designed to highlights the scale of effort/ number of people involved in solving a problem?
The levels include information on the job/problem that it relates to. so that any employee who plays the level has this information. A short version of this is used as a preamble to the level, with the longer version, including more detail provided once the level has been completed. The difficulty of the level will be an indication of the scale of the problem that was solved including the amount of people involved. Comments can be made about the involved employees, whether any further people would have been involved so that this can add to the conversation and encourage thinking about the scale of the involvement of employees to solve any problem. Levels can be rated on their accuracy for the number and types of people involved by other players.

Soapbox Race Party Development Starts

We’re working on a new project! A party race game for the Apple Tv.

There’s a development blog set-up where you can track development progress or if you have an Apple TV and want to request a Beta Invite, then please sign-up.

ASTEROID – Vision Test

Here’s an introduction to the ASTEROID project the team has been working on:

On TV #OurCreativeNorth

Fluid Pixel and the team have been featured on TV. A program dedicated to the North East have picked us out as their creative business of the week.

See the interview with our director, Stuart along with artist Gareth and programmer Paul below:

Our three minutes of fame are between 10:10 and 15:20.

Apple Watch Impressions

Having used an Apple Watch now for a week now here are some initial thoughts.

The battery is fine. I’ve never been close to using it during a day, even after an 18 hour day of regular usage it kept 25% charge.

The watch communicates with the iPhone to do pretty much every task (at least until Apple releases the new update to be announced at WWDC next week). When this communication doesn’t work for whatever reason, nothing works; Siri, 3rd party apps, apple apps, they just constantly ‘load’ waiting for the phone to respond. It doesn’t happen often, but when it does it’s rather frustrating. The problem seems to be worse when the iPhone has a low battery, but that could just be coincidence.

The email client only shows limited text from emails, no fancy images or remote content, although most emails have some content that can’t be shown no the device. The watch currently shows a warning for every email that it can’t display fully (most of the them). We got it the first time, no need to waste a screen every email.

3rd party apps are pretty raw. Yes apple don’t allow you to do much, but most have reduced the functionality a little too far. I’d quite like to read more than a few lines of a BBC news article, not all of them, but some; why not let me? Although these limitations aren’t related to the 3rd party apps. The calendar app shows you your next week’s schedule, if you want more it prompts you to reach for your phone, annoying.

Workout tracking works well, but the resulting data isn’t very useful, even with the activity app on the iPhone. We’re still looking for an Up equivalent (maybe Up) that shows it in a nicer way.

Force touch takes a bit of getting used to, there is a tendency to close the menu with a second force touch rather than a tap on an icon by accident, especially after a heavy workout! It’s also not used consistently, even within Apple’s own Apps. Most of the time it simply does nothing.

Siri on the whole is strong and strangely seems better than the iPhone equivalent, however there’s no way of correcting a message and you still have to tap to send (at least we couldn’t work out a way of telling Siri to send or cancel a message) so requiring a second hand, when one might not be free. Generally not enough can be done with one hand, a few more commands that Siri understands would come in handy.

Getting out my phone has become a real pain and I begrudge doing so when the watch should be able to handle the task. It was surprising how quickly this paradigm shift happened and I certainly find myself doing less on the phone.

Haptic feedback is subtle and I’ve not tuned into it yet so still miss some messages. Phantom taps is also a thing, (perhaps caused by the missing notifications worry) be interesting to see if both these settle down with time. I didn’t have the problem of too many notifications that some have as I’ve both been selective about what apps I install on the watch, slowly adding them, but also had many services to pull rather than push before anyway. Interestingly now the mental capacity required to interact with say an email has reduced I don’t mind getting these notifications so much. Not sure whether that’s just a novelty that will wear off.

All in all it’s been a positive experience so far, and with the promise of a lot more control for developers and an major new update for the Autumn, things are only going to get better.

SpriteKit iOS7: An Introduction

We’ve been using SpriteKit for some projects recently and wanted to document it’s use as a retrospective. SpriteKit is a 2D “game engine” that is very simple to use, but at the same time complex creations can be crafted.

When it was first announced we used it for an initial App for kids, Peek-A-Boo so when we had an idea for a new game we turned straight to SpriteKit.

Some of the drawbacks to using SpriteKit mean you are limited to targeting devices running ios 7+ and you can’t (easily) port your product to Android, but for ease of use and speed these compromises are worth it.

SpriteKit for Prototyping
If you have an idea for a 2D game then SpriteKit is a great tool for getting something up and running very quickly. You can use its easy to use animation and sprite systems and combine them with the input control provided by gesture recognisers.

Audio
Sound in SpriteKit is also very easy and slots nicely into the Action engine. Sounds are added to nodes and run as an action just like any other. It means they can be combined into an action sequence, or played independently. Importantly, sounds can be flagged as instantly completed, or following actions can be forced to wait until the sound has completed, meaning you don’t need to worry about the length of the sound.

Art Style
For Monster Tower we wanted to create a hand drawn style to give it some character. Initially Gareth, our talented artist turned to his Wacom and did what he does best. The results looked interesting, but lacked soul. So Gareth whipped out some old school Crayons and paper instead. The results were great, suddenly the game came to life. We wanted to try and push the style further so tried using SpriteKits inbuilt sprite sheet animation action to give the characters some movement. Gareth redrew the same sprite a few times and we animated between them. Initially the difference between the frames was too much and it look jarring, but with some trial and error with both the assets and the frame rate we got a result we are really happy with.

Fonts
A problem created with the animated texture approach for the style was that suddenly anything that wasn’t dynamic looked out of place. Although we ignored the text for a while, for lack of a good solution, eventually it stood out too much and needed to be tackled. We explored creating our own font, but found some good free hand drawn fonts we were able to use. Some of the things we tried to blend the fonts in included changing the colours of the SKLabel, randomly adjusting sizes and positions of the text along with changing the strings from capitals to lowercase on a timer. Changing the case of the text worked best, but still looked odd as everything was changing at the same time just didn’t look “right”. Eventually we had to bite the bullet and do away with straight SKLabel nodes as they weren’t flexible enough and we created our own variation. These consisted of an skspritenode that had many sklabelnodes, one for each character of the string. This meant we can loop through and adjust the individual characters position, size and case independently to create movement that is more fluid and fitting for the style of the rest of the game.

To finish the effect off we did go in and adjust some of the font characters to polish the effect off. We ended up with a flexible system that could replace any text throughout the game.

Happy Christmas 2013

We want to wish all friends and supporters a wonderful Christmas and New Year with a sneak peak of a new game we’ve working on that is going to be released in 2014!MerryChristmas 2013

Phil is famous again

We’ve been involved in a project with Big Ambitions to encourage young people to get into the software industry. As part of the campaign Phil has been interviewed on life inside Fluid Pixel featuring our new office.

Take a look at the video below:

Fluid Pixel from Steffi Orme on Vimeo.

Test BubblePix embed