Yesterday’s post talked about Loopy Dash having a dead-static menu and needing some extra action to catch the attention of first-time players. My other current game, Impossible Rainbow Road, had the same issue. The initial screen (main menu) looked like this.
In my latest update 3.8, I wanted to see how much action I could incorporate. Thanks to Unity’s cool RenderTexture feature I was able to embed the actual running game — live action! — in the menu. Unity rocks.
It’s important to note that the game is actually running.1 The action isn’t pre-recorded as you might think from this small sample. I had to use a straight track or else the ball kept falling off! My initial idea was to make the menu show an instant replay of the user’s last run, but that turned into more work than it was worth at the time.
1. A camera follows the ball (same as in the game) but with its target
texture set to a RenderTexture object that can then be displayed
as a RawImage in the UI.
I’ve been pretty good about updating my two apps 1 with improvements and bug fixes, but not so good about updating this blog. It occurred to me that the release notes for the updates would provide good material and motivation for blog posts. Starting that now.
I made a small update of Loopy Dash to 1.7.1, on the Google Play Store first. My goal was to add a bit of curb appeal. The stats suggest that many people download the games, give them a quick look and discard them if nothing catches their attention.
My games had a static initial menu as can be seen in the screenshot. Not bad but nothing moving or shaking.
I made the ball roll as if it was moving down the track, with an occasional random side-shake and sound as if it collided with the guard rail.
My other goal was to encourage people to leave a rating. My database shows 1,587 unique users in the two months that Dash has been out, but there’ve been only six ratings and one real review. I added a please-rate-me panel.
It pops up when you start your fifth session, and never again. It merely makes it a little easier to leave a rating.
1. Yeah, only two apps now. A few days ago I unpublished Chucklehead (making only
a few pennies, kind of embarassing) and also the paid versions of Impossible
Rainbow Road (making a dollar or two a month, not worth keeping up to date).
Back in mid-July I had two games out there — Impossible Rainbow Road and Chucklehead — and they weren’t needing any more frills. I was pondering what to do next. I’d spent a year on Chucklehead. (Well, a calendar year shared with my day job… more like a half year of real time.) It was making no money. (Oh well. It looks silly now but at the time it was just something I had to finish. I learned a lot.)
I wanted to try one more game if I could do it quickly, say in three months. I started thinking about Rainbow Road and the reasons why it didn’t do better. I decided to do another quick rolling-ball game but without the silly little one-point boxes. To me they’re not the fun part of the game (the long jumps are), but not many users were figuring that out.
I wanted to use only tilt control — much easier steering than tapping.
I wanted it to be easier to start playing, not so impossible for casual users.
I wanted it to be more competitive, a race against a clock like a 100-yard dash.
And with leaderboards.
I wanted more interesting tracks with hills, curves, gaps and loops.
Therefore the track had to be a fixed repeatable course, not randomly generated. With a relatively short length, around 100 meters. You’d loop back over the same course several times, as much as you can cover in one minute. The result was a game called Loopy Dash. *
I beat my self-imposed deadline by one day. (Yay me.) Loopy Dash was on the two app stores on October 24th. Loopy Dash on the App Store
* When the name came to me I wasn’t really trying to follow the 2-&-1-syllable tradition set by Flappy Bird, Crossy Road and Cliffy Run… but the tradition helped to make the name stick.
One of us was play-testing Impossible Rainbow Road last night, doing pretty well on the Easy difficulty level with a score of about 100 points. At the end we were rewarded with a congratulatory message:
First, it surprised me that someone had achieved 23,046 points! Wow. I don’t know who did it but I feel like sending them a T-shirt or something. (The leaderboard doesn’t bother collecting the person’s name and doesn’t track the exact location. All I know is that the person was in the general vicinity of Denver. The person was using the new tilt control technique which makes staying on the track a lot easier but still, 23,000 must’ve taken a lot of tilting.)
Second, it occurred to me that some players might be a bit confused to hear that they’re in the top half when their score is a small fraction of the world’s highest. I looked at the leaderboard database which has been collecting scores for about a month now. For the Easy level the distribution looks like this:
It’s a highly skewed distribution. The highest scores (above about 200) were achieved by only one person each, giving that long tail to the right. Most of the scores are bunched up below 100 points as can be seen in the close-up on the right. The 50th percentile (the median) is at about 75 points. That’s why a score of 100 can be in top half of the world’s players but still be far below the world’s highest score.
The leaderboard collects scores across all devices (iOS or Android), from the free or paid versions, from any location. That 23046 really is the world’s highest score. (For now.)
Here are the distributions for the other two difficulty levels.
Thanks for the votes. However, last night Jeff came up with another idea. I call it a diagonal face-off. Whaddyathink?
The icon that I need to submit to Google Play has to be 512×512 pixels. I don’t think it ever gets displayed that big… they reduce it to whatever size they need. The store listings seem to show about 130px which is the size I’m showing here. On a device it’ll be as lot smaller of course.
I’ve been working on my second game for a year and a quarter now! Well, I still had a day job during most of that, so call it six months of normal work. I’m planning to release it to the Google Play store in the next few days. Right now I’m trying to pick an icon for the game and I’m putting up a few possibilities to get reactions from family and friends. Whaddyathink about these?
I’ve made another release of Impossible Rainbow Road to Google Play and Amazon, and submitted it dfor the third try to Apple. The significant feature this time was an improvement of the options panel. A user, Michael Stroh, suggested:
“One thing that I think would make the game even better is if instead of having the sliders to adjust liveliness and road difficulty, just have three set difficulties i.e. Easy, Normal, Hard. And then save high scores for each difficulty. My room mates and I all play the game, but we can’t really brag to each other about our high scores because our settings might be different.”
Great idea. The new options panel looks something like this. (Well, actually, it looks exactly like this.)
I also made a few minor performance improvements, hoping they’ll make the game less “glitchy” on older devices. Such as:
* Pre-allocate the pool of boxes and track sections, so that they don’t need to
be created when the game starts. This fixes a noticeable glitch on the first
* Reduce the resolution of the rainbow textures on the boxes and track. I was using large high-es (1024-pixel) textures before.
Finally, I moved the pause and rewind buttons down on an iPhone 6. When I tried to play the game on my new iPhone 6 in the usual single-handed orientation, my thumb couldn’t reach the pause button. Now I look explicitly for a 6 and I move the buttons down about 20% of the screen height. If I had a 6-plus, or knew anyone that did, I’d handle that too.
I shipped a major upgrade of my Impossible Rainbow Road game to the Google Play store. I almost said my little game but it’s starting to have some heft. The two main features I added (both suggested by user reviews) were:
1. A set of cool backgrounds, or “skyboxes” in Unity lingo. They look a lot better than the old amorphous gray fog.
The one on the left shows an aerial view of the sea. Sometimes I swear the water sparkles as I rotate the view. The one on the right is a space cartoon. Both came from the Unity Asset Store. No artistic talent from me… although I am kind of tempted to try to make my own skyboxes with real-world photos.
2. Touchpad control. One user really didn’t like the tap-left-right control technique. (“It sucks.” One of the kinder reviewers actually.) I added a touchpad technique that lets you leave your thumb down and swipe from side to side.
Other smaller fixes were:
A user from Sweden gave a 1-star review with, “You can fly across the track.” Part of the problem was that the ball’s origin was a little above the track surface, so it came down and bounced right away. I fixed that and gave the ball less of an initial kick-off. (I’m getting the feeling that the users don’t want the game to be quite so impossible.)
A large set of sounds to give some variety when the ball collides with a box. Before it was always the same boop-boop-boop. Now there are 15 sounds and I vary the pitch randomly and the volume according to velocity, so it sounds different pretty much all the time.
It was possible to score a good-jump bonus twice if you rewound time.
Someone said there was a bit of a glitch when the ball collided with a box. I optimized the collision code.
I moved the pause button down to mid-screen, to make all the controls reachable with one thumb. (As long as you’re not on an iPhone 6 Plus?)
I fixed a loophole that allowed playing the game without ads merely by disabling your network, like by turning on airplane mode. An error will appear, “Can’t connect to network!” (I’m starting to lose my interest in ads anyway, moving toward a paid version. I resubmitted the app to Apple just now, only as a paid version, so I can compare the two.)
I was a little nervous about adding the backgrounds (skyboxes) because I couldn’t test the feature on a lot of small low-memory phones (although I did acquire a used Samsung Galaxy Reverb for testing)… so I’ve made the feature optional for now. The Options screen now looks like this:
I’ve received a lesson in humilty. Not that there’s anything wrong with that.
I released an update (1.5) of Impossible Rainbow Road to the Google Play Store last week. I was proud of the new features, mainly the Options screen. It was an answer to a couple of reviews saying that the road was too difficult or the ball was too light.
I also addressed another review which said that the camera behaved badly when coming out of the rewinding state. I fixed it by removing the smoothing of the camera movement. Hey, it worked great on my new Nexus 7 device. Unfortunately it made the camera act like “one big glitch” on most other devices. Ouch. My revenues dropped overnight to a quarter of their previous high. Oh well… there goes my daily large latte.
I’ve just now updated the game to 1.7. I’m hoping this will make it stable so I can let it rest for a while.
P.S. I also added object pooling which I should’ve done from the beginning. It turns out that creating and destroying hundreds of objects is a bad idea on a mobile phone. Now I don’t destroy the objects (the boxes and track sections); I simply deactivate them for later reuse. This might please the one die-hard user who said he saw odd behavior after he got to a score of 400.