Show HN: My first game, minimal procgen gravity golf inspired by Desert Golfing
astro.golf
astro.golf
I just launched this little game of mine - Astro Golf. You can think of it as Desert Golfing but in space, where the gravitation pull of the planets create some interesting levels. I think it was on an HN comment that I first heard about Desert Golfing many moons ago, so it felt fitting to post this back here.
All the levels are procedurally generated, and are guaranteed to be hole-in-one-able. I did this by computationally testing a huge amount of levels offline.
This is my first game, and I learnt a lot doing it. Happy to answer your questions! I hope you enjoy it.
Peace
Or did you have to do a bucketload of math to work out where to place things?
Lots of interesting troubles - quite a few surrounding Unity itself. E.g. they have a physics API that gives different results when run automatically by the engine at 1x speed and when you run it manually as fast as it can go. This came up because I wanted to test every level automatically offline, using the exact same physics simulation as the player would experience.
The procedural generation of the levels was also an interesting problem. I used rejection sampling to basically place non-overlapping circles in a box, but when you want to create quite a dense level this becomes very inefficient (it can be very hard to slot the final few circles in). I tried a number of heuristics and other methods to speed this up, but none of them actually improved over brute force. One of the most interesting was using Gibbs sampling - i.e. generate an initial valid level configuration, then move one planet at a time and sample from the ensuing Markov chain (basically sampling from the marginal distribution of each planet given all the others). This ~kind of worked, but was annoying for a few reasons so in the end I just brute forced rejection sampling on a beefy AWS server :)
I’m finding hard mode easier in a way. I learn something between each shot, where I don’t necessarily when I land on different planets and have to make a brand new shot. This also just keeps my motivation up. Coming into a new level in Desert Golfing I usually see some way to get the hole in one, and can evaluate less risky plans that make progress — I get very little of that in this game. So having a mode that lets me learn from each shot helps.
I think what I’d really like is a mode that resets unless you land on the target planet. Let me make the putt. The aforementioned ghost arrow would be nice too.
I do think you can actually get good at zen mode as well, but it takes a bit of practice. Having played a lot, I can usually set up the trickshot I intended and get it most of the way there - and when it doesn't, it's usually quite funny anyway. It's definitely a steeper learning curve than DG.
I'm definitely coming round to the idea of a ghost arrow in hard mode. Your idea about a shot and a putt is also very good - perhaps that could even be the default mode..
Great feedback!
Also kudos on having a Linux version <3
Some ideas that would have made it even more fun for me, though which might change the game too much from your original vision:
Ghost arrow: show what shot I played last time, so I can tweak my strategy.
Reset: some sort of gesture to quickly go back to the start, so I can tweak based on the ghost arrow.
Escape velocity: a fun part of orbital mechanics, and a way to penalize me for just using a “hit as hard as I can” strategy where the only changes I make are shot direction.
Hard mode was the most fun because getting a cool hole-in-one felt really fun. I almost missed that hard mode was even an option — the help screen says “hard mode” so I assumed that was the mode I was in, but it turns out it was the button to play in hard mode, which turned out to be a lot more fun because of the reset mechanic.
Ghost arrow is something I thought of, but I was concerned it would make the game too easy.
Reset: you can long press without dragging to reset. There's a tutorial-prompt for it, but it only comes up when you appear to be stuck in a gravity well (which can happen).
Escape velocity: I did have this initially, but playtesters found it very frustrating and preferred to see a crazy figure-of-16 through lots of planets. I understand your point of view though.
That's very good feedback on hard mode - I wonder what I can change to make that more obviously a button. I personally prefer hard mode too.
In particular, I find it much more relaxing that Desert Golf, which I think comes down to a couple of factors. The design is one – the cute graphics and colours really help. Music is another – you've done a great job there.
I think the most important bit is the gameplay though – with not showing the score constantly, I'm not as worried about trying to keep my stroke count as close as possible to the hole number constantly. The gravity dynamic also adds enough whimsy that I don't feel like I "absolutely should have got a hole in one" like I did on some holes in Desert Golf.
All in all, great job! Instant purchase from me and I think I'll be spending a lot of time with it.
Have you discovered Hard Mode in the menu? That might scratch the high-pressure itch if you every get bored of relaxing!
PS: and please tell your Desert Golfing friends!
Extremely impressed that this is your first game. There's a ton of polish in there. Love how pleasing the animation between holes is; you can just tell that went through many iterations until someone with the exact vision said "Yep, there it is".
That level transition took a lot of iterations indeed - I'm glad people are noticing it!
It says any level can be beaten in one shot. Okay challenge accepted. Give me a quick way to reset if my first shot fails. (or if there is, make it more obvious please)
I love how fast it loads and how seamless it is. I love love love games that don't have level transition screens.
Okay I think I figured out how to reset. Hold down tap when not moving. But it doesn't reset the shot count. Why not??
As for the reset not resetting the shot count: that would be too easy!
Also idea for a power up if you're so inclined: when you get a hole in one on normal mode, visualize the gravity wells for the next level or two.
I like the ghost arrow idea a lot - I'm thinking of adding that to hard mode.
Another suggestion: replay shot.i just had a hilariously roundabout hole in one. I wish i could replay it to grab a video to share (and therefore advertise your game!)
As long as the simulation is deterministic you'll be good to go.
Given a level and a list of velocities any sequence of shots should be reproducible.
This one? If so, I played it three! One of those non-AAA games I most fondly remember from my teenage years!
What was your experience with using Unity? I have been dabbling with Game Maker for the last few months and find it fairly easy to work with, but I haven't attempted anything for mobile.
A lot of these bugs seem to also go unfixed, I think with the intention that you pay for Unity Pro which gives you source code access to the engine and you can work around them / fix them yourself.
I don't think they are deliberately leaving bugs unfixed in order to up sell people though. More its just an enormous software project with an awful lot of people using it in lots of different ways. Basically an enormous surface area to try to tackle.
How does one make the in-app purchase? Do I have to complete multiple levels in an on-boarding flow first?
Edit: I found it: I needed to play 10 holes.
In Zen Mode, a way to retry a previous level would be nice, for practice and to try to get a better score, even if it's not a hole in one.
It's great by the way! I've played a bit of desert golf over the years after reading a HN comment about it, and your game is a delightful improvement =]
The first 10 levels are free (and you can replay them endlessly). To unlock infinite levels, there is an IAP for ~1.99 USD.
it also wouldn't be bad to have the previous launch vector shown