Tuesday, May 13, 2014

Mountain Climber Dev Log 05: The Peak is in Sight

Click here to play the latest build. Here's what's new:
  • A single stamina meter instead of two "per-pick" stamina meters. The idea was to simplify the UI. The meter also turns red when you're running out of stamina.
  • A new mountain is generated each game according to a random seed in the form of the mountain's name. So "Mt. Rainier" will produce the same mountain every time. You can even type in your own mountain names and see what kind of mountain you get.
  • Player movement tweaks.
  • Terrain generation tweaks. See below.

I spent a fair amount of my time on the new terrain generation for this build. I tried to find a workable range of values to randomize so that each mountain felt climbable but somewhat unique. You may notice that the mountains have a lot less side-to-side vertex warping than in previous builds. The result is that the surfaces are mostly vertical and perhaps back to feeling more voxel-like. The reason I did this was to work around a problem I'd been having with the player movement.

As I added more and more angled surfaces to the mountains, I noticed that the player frequently "bumped their head" when jumping near a seemingly vertical surface. The problem is that the character controller doesn't have very complicated collision detection, so whenever the capsule-shaped collider hits anything on its top-most portion-- even a very slightly angled vertical surface-- it counts as a ceiling and stops the movement.

I tried making the climbing picks hold the player farther out from the wall, but that doesn't solve the problem when jumping from a standstill. I also looked into overriding or ignoring the default ceiling collision behavior, but it's tricky to tweak Unity's standard character collision code.

Eventually, I looked at the problem and the amount of other work I had to do, and decided to change the terrain to no longer produce the problematic geometry. It's definitely a sacrifice in terms of cool mountain shapes, but I'm hoping it's worth the saved time and effort.

My other news is that I've set an arbitrary deadline for myself: I'll release the finished mountain climber game by the end of this month (May 31st). My hope is that having a finite amount of time to spend will help me prioritize my efforts more efficiently, like with the ceiling-bumping issue. I'm also eager to move onto new projects, so knowing that I'll be freed up to do that in June is something to look forward to.

Thanks a lot for all the great feedback on the last update. I'd love to hear your thoughts on the latest build, especially on the terrain generation. Let me know in the comments if you find any particularly good (or bad!) mountain generation seeds.

Take care!


  1. I really enjoyed this version. Making the random seed be something I can remember is a nice touch. The new terrain seems much better - there are a lot more flat surfaces now, which lets me take a breather, assess the next best path up, and keep moving. The time pressure makes it so that you have to still think relatively quickly about which path to take, and it gives some much needed inertia to keep climbing up.

    At first I wasn't a fan of the change to a single stamina bar, but after playing a bit I think it is the right call. It allowed me to get into the zone a bit more, just focusing on getting to my location, instead of the more QWOP hard-fun complexity of the last version.

    Speaking of getting into the zone, there was one big piece of the UI that was critical to me enjoying the game, but that I didn't notice at first until I failed a few times. You have a dot that appears in the center of the retical when you are hovering over a valid swing location. I didn't notice this, and it was really frustrating trying to climb, but not getting any feedback as to why I could hit at one spot over the other. I'd recommend possibly making that dot scale up, or turn green, or something when you can swing. I also noticed there was a cool-down timer, and I'd love for that to have a presence in the UI in some form, though it is probably best that it remains subtle.

    But the sum total of all those parts, once I got it, was a great loop. The second-to-second loop is swinging, "aiming" for a new valid location, waiting for the cool down timer to refill (which adds a nice tension to the mini-climbs), validating that you've found a valid hit location, then hitting the target successfully. The mid-term loop is getting from one plateau to another, with the long term loop of course being getting to the summit plateau.

    So I'm really starting to see some magic in this prototype, and I'd encourage you to keep polishing it past your deadline. I think the next layer that is missing is more unexpected elements as you climb up higher. There isn't quite enough variety in terrain or challenge to want me to keep playing new mountains, but I am ALMOST there.

    Best of luck with your mini-milestone though, it's a really neat experience so far.

    1. Thanks, Scott! Really great feedback. I feel like I'm honing in on the right balance of simplicity and information in the stamina meter and aiming reticule. Lighting up green for a valid placement is a great idea, and I feel silly for not thinking of that earlier. Dan MacDonald also gave me a great suggestion to separate the "valid target" feedback from the "ready to swing" feedback. The latter is currently occluded by the former, so you could be waiting for the pick to be ready only to discover the spot you're aiming at isn't valid once it is. Another observation that seems obvious in retrospect.

      In any case, I'm glad to hear you're enjoying the game! My current plan is to "release" the bare-bones version and then gauge reaction from there. If people are really fired up about it, maybe that'll motivate me to build it out into a larger game. The main issue is I'm excited to start on other projects, so we'll have to see!