Tunnel Racer lacks a story. This is something I’ve known and intended from the start. Why are we in a tunnel? Why are there giant neon panels that explode? I don’t know! You decide! But I’ve always wanted something there to hint at something more – maybe there actually is a reason we’re down here, racing through a tunnel in all kinds of oddly-wireframed craft.
So in this version I’ve introduced something to run from – a giant explosion. If you sit for too long without picking up a booster, it’ll catch you and kill you. (Suddenly there’s a very good reason to pick up those boosters.) Obviously the effects are early, and there’s absolutely no balance to the explosion catch-up rate (it’s a constant, so it’s easy to outrun), but it’s something I can play with in the future.
This version keeps the level mechanic, but my plan is to remove the individual levels in favor of an “endless” style where you just keep running as long as you can, like any of the “endless running” games out there (e.g., Canabalt). The next version will remove the levels, and I’ll include more detail about how the explosion and everything works in that post.
Aside from that, I’m working on fixing some bugs with the movement. I think I’ve got things sorted (I haven’t been able to reproduce the bugs I’ve been fighting), so I’m hopeful that things are working properly. I like the way it feels right now; the ability to shift back-and-forth between two lanes introduces some new dodging techniques that work really well and make some impossible gaps only nearly-impossible to maneuver through.
There are also a ton of new bugs introduced with the new explosion stuff, but for the most part everything still works fine.
After playing the iOS build a bit, and armed with feedback from friends at PAX, I’ve come up with some additions to Tunnel Racer that really improve the game. This version contains many more updates than previous versions, so this post is a bit long and image-heavy.
Spawn Patterns This is something I’ve had in the back of my head for a while, but I had been holding off on working on it. One piece of feedback I’ve been getting since the start is that it’s often too difficult to dodge the X panels. The spawning algorithm has always been random, so sometimes that happens, and I always wrote it off and thought, “it’s supposed to be hard, that’s why you have health.”
This version introduces spawn patterns, which will occur randomly while playing. There are currently 6 patterns:
Tunnel Fills the tunnel with X’s except for 1 to 3 clear lanes. Clear lanes start with a booster. It’s easy to spot from a distance.
Spiral Creates a path that spirals along the tunnel. Each ring of the spiral has 3 “safe” spots with points, speed, or health. The other 5 lanes have X’s. It’s harder to tell a spiral is incoming, but the slow progression makes it easy to follow.
Wall A solid wall of X’s 3-5 lanes wide. This one is hard to balance, so it might get scrapped entirely. This pattern causes most of the “that’s impossible” moments in the game.
Split A wall of X’s that blocks a single lane and splits the tunnel. Easy to spot and very easy to dodge.
Rings There’s a small chance for a “ring” to spawn, which puts the same panel on all sides of the tunnel. Rings are never bombs. They’re usually points, but there’s a chance they’re boosters, and a very small chance they’re health.
Random Spawns panels at random, like it used to.
Patterns can also modify the chance that another pattern follows them. Right now, I’m experimenting with having a higher chance for a spiral to start after a tunnel (in one of the “safe” lanes). I’m also tracking which lanes are “safe” after each pattern fires, so most patterns will attempt to give you a safe path to follow. It’s not 100% yet, but it seems like there are fewer times when you feel like you were forced to take a hit.
New Level Mechanic It was suggested that levels end based on distance instead of speed, so I’ve updated some graphics and modified levels to have a set distance you must travel before ramps appear. Boosters have an exponential effect on speed, so the faster you’re traveling, the harder the game is but the quicker you’ll progress to the next level.
Since the end-level trigger is now determined by distance, I decided to replace the ramps with a “finish line” ring:
Not sure how I’m going to explain the jump, though.
Point Panel Icon I finally came up with a simple icon for the point panels – a diamond. It might still change by the end, but I think this is a good icon for signaling value (without it being a coin).
New point panel
Achievements Achievements aren’t in the game yet, but I’ve been thinking up some achievements and I’ve got a good list of achievements to add. For iOS, these will be handled by GameCenter. If I publish on Steam, they’ll be Steam achievements. Elsewhere, I suppose I’ll just have to add an in-game achievement manager.
Here are a few I’ve thought up and categorized:
High Score – Achievements for high scores.
Lifetime Score – Achievements for lifetime scores.
Levels – Achievements for level milestones.
Unlocks – An achievement for each ship.
Total Damage – Achievements for lifetime damage taken.
Single-Game Damage – Achievements for damage taken in a single game.
Special – Achievements for performing specific actions.
Most of the categories are fairly basic, but the special achievements are where I’m going to have fun. The special achievements may require a bit of luck – if certain patterns appear, they may force you to pick up certain panels that disqualify you for a special achievement. Just throwing out some ideas:
Sunday Driver – Remain at the slowest speed for an entire level.
Thrifty – Complete a level without picking up any points.
Autopilot – Survive 60 seconds without moving.
NASCAR – Complete a level using only left turns.
Immortal – Reach level 10 in Sudden Death mode.
Don’t Fear The Reaper – Reach level 10 in Doom mode.
Speed Freak – Reach level 10 in Turbo mode.
Lead Foot – Reach level 10 in Accelerator mode.
Some of these names are corny, but they’re not locked down, and you can see where I’m going with these.
Other Stuff I updated the ship selection section on the main menu. I think it looks a lot better now. At the very least, it shows all the ships, so there’s that. I also finished naming all the ships and added the names to the menu.
I tried changing how turning works, but scrapped most of the work I had done because nothing felt right. I want something smoother, but I also like the tap-to-turn controls I have now.
So, now that all that’s said, here’s the link to the new version: Tunnel Racer v21a
There are still a few issues with some of the movement changes I’ve made (it acts funny sometimes), and there are a few bugs with patterns (and a big one where it’s possible to miss the end-level finish line and never be able to complete the level), but it’s still playable.
There’s no new build tonight, just NEWS. I finally got around to renewing my Apple developer license, and I upgraded my Unity iOS license for Unity 4. I wanted to put Tunnel Racer on my iPhone and iPad before PAX (to play with while I was there), and it turns out it worked perfectly. I was surprised.
The best part is that no changes are needed from the version I run on my PC. The controls and UI just work, so there’s nothing special I need to do to make it run on iOS. This is great because it means I don’t have to worry about making changes every time I deploy to iOS. Even the text boxes I added for the testing panel work fine. They’re number-only entries, and on the iPhone, the numpad keyboard pops up. It’s pretty incredible how smoothly everything works.
Oh, and to top it all off, Tunnel Racer runs at 60FPS on my iPhone 4S and 3rd-gen iPad, so it’s as smooth there as it is on my PC (when running in the web player and capped at 60FPS). Framerate is something I struggled with constantly on BattleGrid, so not having to worry about it with Tunnel Racer is refreshing.
And now it’s off to PAX on Thursday to figure out what needs changing. I might even ask some strangers to play it. (Probably not.)
SimCity has been dominating my free time lately. I’ve spent a few hours just waiting for servers over the past few days… So that’s why there hasn’t been an update in a few days.
But on to this update. I haven’t changed much. All I’ve added is a new “testing” section to the main menu, that lets you turn on invincibility and override the ship speed settings. This is gearing up for an iOS build that I want to take with me to PAX, so I can play with settings while I’m there and maybe come up with some adjustments for when I get back. I also want to see how everything feels on a touchscreen device.
Tonight’s build introduces a new “Doom” mutator, which slowly eats away at your health over time. Health pickups are spawned more often, and bombs are spawned less often. It still needs some balancing (I think it’s a bit too easy).
With this mutator, I also decided to group the mutators so the mutually-exclusive ones can’t be activated together. For instance, you can’t enable both “Accelerator” and “Turbo” anymore, or “Sudden Death” and “Doom”. They’re effectively divided by what they modify – currently just speed and health.
I’ve also added a new UI effect when you’re damaged, and I may have found the source of the level switching bug. I can’t be certain, but I found a place where I was missing a “Level Complete” reset, so it might be fixed. No promises this time.
That’s all for tonight. I’m off to fight with the SimCity servers until I can actually play.
I think I’ve got the bugs from last night sorted out, but other than that, not much has changed tonight besides a new effect on the level transition text.
EDIT
I lied. Apparently the level bug is still there, but I still can’t make it happen reliably; so I can’t figure out what’s wrong or how to fix it. Hopefully I’ll accidentally fix it somewhere along the way.
More work on the levels today. A message pops up telling you what level you’re entering, and you get a 1000-point-per-level bonus (e.g., 2000 points at level 2) with each level. The number of X panels also increases with the level, and starts a bit lower at the first level. You also get a score multiplier for each level (e.g., x2 score at level 2). I might need to adjust the scoring multipliers if scores start to get out of hand. (I was able to get over 100k points using the best ship in turbo mode… I don’t know if that’s an issue.)
I apparently managed to break (or not test) a few things in this version, though. There’s still a UI bug where the speed and score UI will keep shaking (as if you’re about to die) after starting a new game. And apparently if you retry, you can’t progress levels anymore… Which is weird. (For now, you can just refresh the page to start the game over.) I can’t get those bugs fixed tonight, so they’ll wait for tomorrow.
Minor fixes to the levels mechanic in this version – the countdown timer only starts once you’ve reached max speed, and you only have to survive for 5 seconds (it’s OK if you hit the X panels now). I’ve also fixed a few problems with the end-level boost not always kicking in. (I think I’ve seen it still fail, but it seems exceedingly rare now.)
That’s it for this version – I didn’t get a lot of time to work on it today.
This version sees the introduction of one new ship model (the 2HP, 8 Speed ship) and the beginning of work on levels. The way levels currently work is that you have to reach max speed, then survive for 5 seconds without hitting any X panels. After you’ve survived 5 seconds, ramps will start to appear.
The new “Jump Panel”
Hitting a ramp will launch your ship into the center of the tunnel, where it will boost past any remaining panels in the level, then land at the end. At the moment you just sit and hover for a bit until the next level starts, but there will eventually be a transition between the levels.
88MPH
Right now, switching levels does nothing but give you a break for a few seconds. When complete, each level will add to a point multiplier and increase the difficulty.
There are some bugs with this new stuff. Most importantly, when launching off a ramp you won’t always zip past the remaining panels. I’m not sure exactly why (haven’t stared at it long enough), but it’s somewhat minor for now. There are also some issues with the new UI elements (sticking around longer than they should), but again, it’s fairly minor.
The 5-second no-X requirement may be a bit strict, so I might have to make it “survive 5 seconds”. It was originally 10 seconds, but while trying to capture those shots above, I died so many times I decided to cut it in half.
If you want to check out the new stuff, try playing with the “Turbo” mutator on – since you start at full speed the 5-second countdown begins immediately.
EDIT
Yeah, I think the no-X requirement is a bit tough… That will probably be coming out later. There’s also seems to be significantly more bombs in this version. That will change, too… Once I add in the difficulty changes between levels.
And it looks like the countdown timer starts with the level, even without turbo mode.
I think I’m finally getting closer to having the lane shift speeds acceptable. Overall, the changes are slower than they were, and the changes between speeds are much lower, but it feels about right for both the slowest and fastest ships, so I’m happy.
More good news – I figured out why the lane shifting was suddenly stopping when you hit an X panel. Turns out it’s because of a poorly documented action in PlayMaker, which was accidentally catching my rotation action and killing it. Now that I know what I’m doing, that’s been fixed and it’s back to working properly.
So, in this version, the speeds are better, the lane shifting is fixed, and I’ve made some changes that should result in better control. I also tweaked the bounding boxes on a few of the ships to make it easier to shift between panels.