James Randall Musings on software development, business and technology.
8-bit Golf

You can download the app from the App Store.

I have super fond memories of playing early golf games on the BBC and PC. My very favourite is a game called Holed Out!! on the BBC and on which I spent many hours playing with my mum. But I also enjoyed the PGA games on the PC and played C64 and Spectrum games with friends. Though they were more into football. Recent golf games leave me a bit cold - its the simplicty of the early games I like.

Driven by nostalgia for that I created 8-bit Golf for the Mac and iOS. Which is slightly misnamed as it also includes a 32-bit graphic style - Holed Out was also available on the Archimedes and had this beautifully crisp graphical style which I couldn’t help but try and emulate here. Was so envious of Archimedes owners back in the day. Just wonderful machines.

The game itself uses 2D rendering - its just Core Graphics and SwiftUI, though I kind of regret the Swift UI usage on Mac as its proven to be a bit of a pain. But anyway… it works. I saw this morning that a user has reported an issue with lag - I suspect its Swift UI. It shouldn’t be too hard to shift the game parts away from that - its the designer thats really wedded to Swift UI - and I might have a crack at that.

There are some basic 3d calculations in their to position things. The landscape is drawn as polygons and then each “game object” (tree, player, flag, ball) are rendered individually into a Core Graphics layer and then it basically depth sorts those layers to present the display. Then as the ball moves into the distance it just moves it back down the array as it passes each object. Which I thought was a fun little hack.

According to its GitHub it took me about 5 months to create with a couple of breaks in that process. I’ve got a handful of updates to make and a few new courses to add but as ever time is my enemy!

Its free but not open source. I am planning on releasing the source I just want to do some cleanup on the repo first.