Tuesday, January 16, 2018

Billy Carts (Back on Track Part 2)

Last year I wrote that I had finally wrapped development on my Ultra Dash game and was diving back into Billy Carts.

Well, a few other things popped up and in the time between then and now I made a new iPhone/Apple Watch app and put together a major update for Ultra Dash while Billy Carts languished...

Skip and Save is my Apple Watch app and will be coming out the 24th of January. It's an app that lets you track skipping treats to help you save for something special. You can pre-order it now by clicking this link. You can also read my blog post about making the app here.

Ultra Dash is an arcade endless runner I wrote in Swift. The game didn't set the world on fire, but I felt like there's something fun in the game so I wanted to do one last update to see if it can find it's audience. The update will be out in February.

Now, with all that out of the way, I can honestly say that Pete and I are back on track with Billy Carts!

So, what is Billy Carts you ask?

Well, it started out well over a year ago as a down hill endless racer, inspired by Faily Brakes. It's our first Unity game together (though not our first game as Pete and I had previously worked on TY the Tasmanian Tiger, Flight of the Amazon Queen and other games in the past) and we wanted to make something fun and distinctly Australian.

But now that we've had some time away from it (and with an improvement in my Unity skills and confidence) we've decided to change the game play a bit while still retaining the unique Aussie theme and racing elements.

So with the start of the new year Pete and I have ripped the game apart and reset it to make it something a bit more unique. My goal is to share our process of building the game and to do more frequent and smaller blog posts to show off our progress.

The first thing we've done is to change the environment from an endless down hill runner into an endless open world explorer. Previously the game created a series end to end tracks that appeared in front of the player - now we're using a 3x3 grid of square titles to create an open space that reforms around you as you race around the world.

First pass of 3x3 grid that is built around the player.
And this is how it looks in game. There are no props yet - I took out the trees, rocks, etc. to focus on the track generation.

Open world with new skybox.
One thing I want to do is to try out new stuff as we build the game, so the design is fairly light on. It's procedural and you collect stuff while avoiding obstacles and rack up a score - but what else can be done to make it feel great? This is what I aim to find out. I'm sure there will be a lot of missteps and travelling down the wrong path, but that's the fun of making games, right?

As well as the development work-in-progress updates I'd also like to talk about some of the decisions we've made in developing the game. In particular the Australian aspect of the game. As I mentioned both Pete and I worked on the TY series (I co-created, designed and wrote the script) and I have an affinity for making Aussie games. I feel like there is so much richness to explore, but I've only made two Aussie games and want to make more. This is something I'd love to talk more about.

I hope you'll join Pete and I as we try and make a fun game!

- Johnno

Sunday, December 03, 2017

A New Watch App

[UPDATE: You can pre-order/download Skip and Save here - https://itunes.apple.com/au/app/skip-and-save/id1318698486?mt=8]

I upgraded from my 3 year old Series 0 Apple Watch to the new Series 3 with LTE and I love it. Having worn the original Watch for the last 3 years I've noticed huge improvements in speed and accuracy (especially Siri) with the new model. The heart rate sensor has improved, the battery life is amazing even when it gets a hammering from workouts and phone calls.

Anyway, I was so smitten I had to make something for it.

As I've mentioned before I'm developing all my games in Unity from now on. It makes sense as a) I can go multi-platform, b) there is so much more support/tutorials/help available for Unity and c) it makes 3D development so much easier.

But an app is different to a game, so I feel I'm technically not breaking my promise to myself to focus on Unity for game development :-)

So what is this app? It's called Skip and Save and comes out of my habit of giving up the occasional treat and making a mental note that I just saved money in order to buy something else at a later date. I know, it's a dodgy way of budgeting, but it works for me.

I figured this would be a good process to make into an app and it seemed perfect for the Watch where the ideal apps are very limited interactions that take no more than a few seconds.

Building the Watch App
The Watch app development environment in Xcode is really nice. And laying out an app is super easy - so much easier than laying out an iPhone app as I would later discover.

You know have the ability to mix SpriteKit and SceneKit with regular screens. I used this to add ticker tape particle effects when you successfully skip and save money, and cool firework effects when you reach your goal.

I wanted to use as much of the Watch as I could, so I added in Siri voice recognition, Scribble support and support for all the different complications that the Watch has. I also made sure that the Watch could communicate back and forth with the iPhone version.

An early Watch build with a bar to show progress,

An updated version with a ring to show progress.

The first version of the app used force touch to access the options to setup your savings targets and to reset progress or undo a skip. From my own experience with other Watch apps I found this to be very unintuitive and often hid away key features. So I tried having a paged app that the user could swipe to  other pages to see more commands. This didn't feel good in practice either.

The final look of the Watch app. A single screen.

I settled on having a single screen app with buttons on screen to show more options to set targets, undo skips and reset progress and another information button to quickly see your targets.

I also tried out a number of images for the buttons and settled on a mixture of my own designs and those from the Font Awesome 5 set.

Building the iPhone App
As much as I love my Watch, the reality is the market for Watch only apps is still fairly small, so I needed to make an iPhone companion app. So I began the fun task of using Xcode and interface builder to create the app.

Storyboards for Watch apps are awesome. The way stack panels work is great, and you can overlay controls and even add a SpriteKit/SceneKit scene under a view - which lets you create some great layouts that can do awesome stuff in a simple and intuitive way.

The iPhone version is a little more complicated. I couldn't mix SpriteKit and standard views so had to rely on Core Animation to create the effects I had previously done in SpriteKit. So the knowledge I had from making games sadly couldn't be applied which meant I spent time having to learn new systems.

I also found creating responsive views a lot more complicated than in WatchKit and struggled with simple things like making my stack view contents remain at a fixed size. I'd end up with a mess of constraints that I would have to delete and start over again. Luckily RayWenderlich.com released a Udemy version of their training videos which included sections covering the very stuff I was struggling with - like stack views and how to use keyboards with scroll views.

One thing I did do with the iPhone app was to use vector images instead of pngs. They worked out really well, so I went back and updated the Watch to use vectors as well.

The original iPhone app had a light design.
Original iPhone design

I asked for some feedback on social media and got some great advice. Brent Helsop, a local developer gave me some great feedback and so the final version changed to better match the visual style of the Watch version.

Final look iPhone version

Time Spent
I worked on the app part time - spending up to 2 hours on any given day on it. I had a fully working version on my Watch within 8 days.

All up it took me 34 days of part time development to build the app - 10 days for the Watch (2 of that learning how to make complications), 22 for the iPhone and 2 days for iTunes Connect setup, screen shots and asset creation.

Launching It
The next stage of the story is how do I market it and what do I charge for it?

I've devoured the complete series of Under the Radar podcasts for some ideas as well as read lots of articles from other app developers. Being a game developer I have very little idea of how the app world works and these resources have been invaluable.

I've decided to price the app as free with banner ads from AdMob. I did try out interstitial ads (which I know do way better than banners) but it just felt wrong. They work well in games, but in my app they were too intrusive. My thinking on going free is that the people who want to give up something to save money are probably not the sort of people to shell out real money on an app that they've never heard of before. So being free gives them a chance to give it a shot.

With the app done and price set to free I have to reach out to the folks who would love to use my app. That starts now as I wait for the app to launch early in January 2018.

The good news is I can get back to making games in Unity while I do my app marketing.

I'll let you all know when Skip and Save is live in the new year!


Monday, May 01, 2017

Learning Unity

I've been slowly wrapping my head around Unity. As I posted last month I took some time off developing Billy Carts to do a number of Unity tutorials and learn more about C# and the Unity way of doing things.

Things are progressing well and I'm starting to "get" Unity. My biggest problem at the moment is not knowing if they way I am solving a problem or implementing a system is the right way or the best way. The Unity tutorials, forums and google are certainly a help and I realise that I just have to plough forward and make stuff. I can always refactor my code later :-)

To help in my quest in getting a full understanding of Unity I've taken some advice from an old friend and am building a small game in Unity that is essentially a homage to an already existing game. Not quite a clone, but a game that has a very specific set of mechanics that I can emulate.

The reason for this is that I don't have to think about the game design and can focus on solving how to implement the mechanics and systems using Unity. Not having to think about the design of a mechanic but instead focus on implementing it is really accelerating my learning.

The game is simple and I've got the first stages of it up and running. I've given myself just over a month to complete it - which will probably end up being many times longer - but the goal is to take a game from start to finish so I can be exposed to as much Unity has to offer as I can.

I'll post some screen shots and more details soon!

- Johnno

Monday, April 10, 2017

A Unity Refresher

This week I decided to take some time off developing Billy Carts to focus on honing my Unity skills and learn more about the Unity editor. I have to admit I'm quite rusty from the time I spent away from Unity focusing on finishing up Ultra Dash, my Swift game.

And, despite having made quite a few games in my time, I'm not too proud to admit that I have a bit to learn still when it comes to Unity!!

So, rather than slogging on with Billy Carts and constantly googling "how do I do this in Unity again?" I've taken on the task of redoing some tutorials and going over some Unity resources.

As well as the excellent tutorials on the Unity site, I've also started redoing the tutorials from Ben Tristem's Learn to Code by Making Games course on Udemy.

Easy to follow video tutorials that will get you up and running in no time.

I'll also be revisiting his Game Physics - Introducing Gravitation & Rotation in Unity course to get the physics parts of my brain back into shape.

A great course to get your head around physics.

Redoing these tutorials is not only giving me a quick refresher in Unity but it's also exposing me to things I missed the first time around - like neat little short cuts and useful  keyboard commands.

My other source of reference for the next few days is the excellent Unity Games by Tutorials by the raywenderlich.com tutorial team. 
Unity Games by Tutorials book cover
These are great books to make sure you get off on the right foot.
Ray Wenderlich makes some great books that you can either buy as books or as PDFs and the cool thing is they actually update them as things change. The Unity Games book for example, has recently been updated to take into account new stuff in Unity 5.5. 

While I like to have physical books as reference next my computer to leaf through, the knowledge that the PDFs won't be out of date within a few months is a good consolation.

What are your favourite Unity learning resources? 

Any must have books or online courses that make learning Unity a breeze? 

Let me know!


Thursday, April 06, 2017

Back on Track!

So, Ultra Dash is done and dusted. Its approved for the App Store and is waiting for release on the 12th of April. I managed to do a few more minor tweaks in the last week, adding back the watch video functionality that I had removed previously.  I figured that launch time is when I'll get most traffic and it would be stupid of me to not have the option to let players watch videos to earn coins and unlock new characters and levels faster.
I added back the ability to watch video ads to earn coins!

I've also done an update to Snappy Word, adding a new game mode and fixing some crash bugs that I found using the crash reports that users submitted.
Sort mode is a new addition to Snappy Word

Now I'm getting used to programming in C# again after using Swift for the last month or two! I'm sure it won't take long to remember to keep adding semi-colons at the end of every line...

In much the same way that having time away from Ultra Dash helped me look at the game in a new light, having the break from Billy Carts has given me some new thoughts on the game.

The game play right now is very similar to Faily Brakes - you steer your cart as it careens down the hill avoiding stuff and collecting coins. It's a fun formula that has done extremely well for Spunge Games!
Billy Carts is currently a down hill runner
Given the power of Unity and the ability to rapidly prototype stuff and change things like camera angles and lighting it would be remiss of me to not take advantage of this and try out some new ideas.

First thing I'd like to try is changing the procedurally generated hill to a procedurally generated plane, so instead of just rolling down the hill, how would it feel to drive in any direction? This would change the end game parameters which are currently stay on the track and avoid stuff - and might make the game feel too easy - but it's something I'd like to do.

I did a prototype of something similar before Christmas and it scared the bejesus out of Pete and myself. The prototype relied on building an entire world (mocked up by grey cubes) which would have meant lots of unique art assets from Pete.

But in the meantime I've had some ideas on other ways to do it that wouldn't require building an entire unique world - so I'm going to see if this new approach works. It may well suck, but I have to try!

My approach moving forward with Billy Carts will be to take a more organic approach to trying out stuff, seeing what works and following those "fun" paths. I'm painfully aware of feature creep so I will attempt to stick to the core pillars of:

  1. Avoid stuff
  2. Collect coins
  3. Survive as long as you can to rack up the most points

So please join me us as we go on this slightly altered journey to seek out new fun.

Given my experience with beta testing using TestFlight for Ultra Dash and Snappy Word, I definitely want to start testing as soon as I have something playable. So if you're keen, send your Apple ID email to support AT redspritestudios DOT com.

- Johnno