Sunday, May 25, 2014

Mountain Climber Dev Log 06: What's in a name?

Download the latest stand-alone build for PC or Mac. Or if you prefer, play in your browser. By the way, I don't have a Mac and I'm not really familiar with how best to distribute downloadable Mac builds, so I just zipped up the .app folder that Unity spat out. Please let me know how that works for you.

Changes in this build:

  • Implemented and styled the main menu.
  • Added a pause menu triggered by the "escape" key.
  • Reverted to the two separate pick stamina bars.
  • Iterated on the crosshair and stamina UI.
  • Experimented with an alternate "auto-hang" climbing style.
  • Added an altimeter.
  • Miscellaneous tweaks and bug fixes.
A week to go until my self-imposed deadline, and the game is coming right along. I styled the UI and added some simple fading transitions between screens, and it's already feeling much more like a "real" game.

Implementing and skinning the Unity GUI components was a lot less painful than I'd expected. I'd heard how limited the standard Unity GUI components were, but for a simple game like mine, they actually seemed pretty easy to use. Keep in mind that I'm coming from years of Flixel development, which required a lot of manual GUI work. I still plan to try out NGUI if I attempt a more GUI-heavy game, but for the time being, I'm glad I got a chance to try out the standard components and form my own opinion.

I switched back to the "per-pick" stamina bars so I could separate out two pieces of feedback that were previously both signaled by the crosshair: whether a pick is ready to use and whether the targeted surface is within range. The crosshair UI is now solely for reporting if a targeted surface is within range. Each pick's stamina bar now darkens when it is attached to a surface and brightens again when it is free and ready for use. I also added a pulse effect on a pick's stamina bar at the moment it impacts a surface. Hopefully this makes the climbing feedback easier to use while playing, but I wouldn't be surprised if I end up iterating on it one or two more times.

In response to some player feedback, I played around with a different climbing mechanic, which I dubbed "auto-hang." With auto-hang enabled, the player doesn't have to click and hold to keep a pick attached to the wall. Instead, they just click to attach the pick and click again to detach and attach to a new location. It makes the game quite a bit easier and consequently diffuses most of the tension. Ultimately, I decided it wasn't right for the game, but I left the functionality in as a debug menu option, so if you'd like to try it out, simply pause the game using the escape key and enable auto-hang.

I'm getting pretty sick of calling this game "the mountain climber game", and with a week to go, it's high time I settled on an actual title for the thing. My current ideas are mostly just cribbed from online thesaurus searches and mountain climbing glossaries:
  • Pinnacle
  • Ascent
  • Summit
  • Peak
  • Acro
As you can tell, I could probably use some help in the name department. If you've got any suggestions, I'd love to hear them in the comments.

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!