One month from now, on 15 September 2017, the Cassini spacecraft will deorbit, entering Saturn’s atmosphere and burning up. NASA calls this the Grand Finale. This dramatic maneuver will mark the end of an extraordinarily successful 20-year mission and prevent any possible contamination of the planet’s moons.

Cassini–Huygens, of course, has been a featured probe in Voyager: Grand Tour from the very beginning. In honor of the probe’s mission ending, we’re working on one final mission pack, the appropriately-named Grand Finale. It will feature 25 new levels, the biggest set since Grand Tour. It is also the most varied pack we’ve ever done, with levels that feature scanning, depth, landers, and more.

We’ve also created a new mission type based on Cassini’s deorbit. Voyager: Grand Tour has always been about not crashing your probe, but these new “dive” missions flip that on its head. To succeed, you must crash your probe as spectacularly as possible! Since the probe cannot transmit during reentry, these replays show the resulting fireball via telescope trained on the target planet.

This mission pack is just one of the things we’re working on for this update. Voyager 3.0 will offer new features, bugfixes, and balance improvements throughout the game. Perhaps the most important is this, our new advanced aiming option:

Voyager is made to be easy to pick up and enjoy by anyone, but almost immediately, power-users began to ask for the ability to fine-tune their aim for the trickiest levels. This new option finally provides just that, allowing players to tweak the angle and power level before launch. Simply pull to aim as usual, then make any adjustments desired with the onscreen controls, and finally tap the Earth again to launch. Even better, tapping Earth again (without aiming) cues up an identical shot, allowing for easy retries on timing-based levels and encouraging experimenting with precision.

This feature will be available in the next update as an option in the Settings menu (Advanced Aiming On).

Look forward to more news on the 3.0 update soon. And best of luck to Cassini in its final days, you’ve been an inspiration to everything we do!

]]>http://rumorgames.com/grand-finale/feed/0What is a cruise? Is it good for digital nomads? Let’s find out!http://rumorgames.com/what-is-a-cruise-is-it-good-for-digital-nomads-lets-find-out/
Sun, 29 Jan 2017 21:48:38 +0000http://rumorgames.com/?p=1792Continue reading]]>Recently, we decided to try something a little different. As much as we love travel by land and air, we were curious to see if a cruise could offer an affordable, relaxing, and fun alternative to get a couple of digital nomads from point A to point B C (Argentina to Chile).

Short answer: no.

For the long answer, read on.

What we learned is that cruising is diametrically opposite to the way we like to travel. We usually shun resorts and stay in regular apartments in real neighborhoods. A cruise is basically just a floating resort, and in the little time we spent ashore, we barely got to see the fake neighborhoods, let alone the real ones.

But okay, it’s a different style of travel, less about culture and more about luxury and relaxation. Put your feet up and appreciate the finer things, right? Not so much. In every facet of the experience, Norwegian would put forward the least possible effort to meet their obligations, but would incessantly and relentlessly pitch their expensive add-ons. Essentially, what we thought was a ticket for agreed-to goods and services was actually just to get us in the door for a two-week timeshare presentation from Alec Baldwin’s character in Glengarry Glen Ross.

Even the luxuries were tacky and superficial. The cruise liked to drape itself in the soaring rhetoric of adventuring the world and sailing into the sunset. And yes, while the sun does in fact set at sea much the same as it does on land, glass elevators and steak dinners are a thin veneer of opulence on top of the rather pedestrian reality of spending two weeks bobbing around in a mobile motel. The illusion shatters quickly.

That said, things went about as well as they could have. Nothing went horribly wrong: great weather, no missed ports, no norovirus outbreaks. We were perfectly positioned to evaluate the cruise on its merits. How did it fall so short?

—

To start with, cruising is not cheap. For our 15-night voyage, two tickets for one small interior room, after taxes and fees, cost $3444. That works out to about $230/night, which is way above our typical rate on the road. But ostensibly, there’s a lot included in that, so let’s break it down by our major travel needs: shelter, food, transportation, and experiences.

Shelter
We’ve done pretty well with our housing so far. Over the last 13 months renting apartments through Airbnb, we’ve spent between $19-42/night (including utilities). In contrast, our rent when we left Seattle was around $54/night (not including utilities).

This is what $19-42/night buys us on Airbnb:

we live well

And here is what $230/night gets us on a cruise:

Food
We like food, but we don’t actually spend all that much on it. Not counting alcohol (which I’ll get to later), we have never averaged more than $20/day on food, even in places with relatively high cost of living like Buenos Aires. Together with the above, you can begin to see how easy it has been for us to live more economically on the road than at home.

we eat well

The food on the ship was rarely outright terrible, but it was never very good, either. Often our entrees arrived cold, portions were incredibly skimpy on anything tasty and healthful (one “side of vegetables” was three sad, lonely slices of zucchini, another a dozen green beans and two cubes of carrot), and nothing reflected any real care. I missed the ability to quality control my own meals far more than I enjoyed not having to cook.

pancake or placemat?

I mentioned we keep our daily food budget below $20, though sometimes we come in at much less than that. Granted, some of that is self-selecting. In an expensive city, we tend to compensate for the high prices by opting for more pasta and rice and whatever is local and cheap. On the other hand, in Thailand and Malaysia it was actually more cost-effective to eat out than to cook for ourselves. Well, on a cruise, there are no dials to adjust for frugality. The mediocre service is a sunk cost, and any hopes of improving over that low bar come with a hefty price tag.

Transportation
This is the biggie, and the tipping point for even considering a cruise in the first place. Flying in South America is extraordinarily expensive (like flying domestic in Canada expensive). Buses are the preferred method here, but 3000km by bus is a big ask for one’s brain and one’s butt. We’re looking at easily $1500 in transportation costs to hit just some of the same destinations in reasonable comfort, or $100/day in cruise terms. Still not adding up in the cruise’s favor, but if we’re going to agree to spend a little extra sometimes to see some special places, at least now we’re in the same ballpark. The question now becomes whether there’s any way to justify the enormous cruise premium.

Experiences
On this trip, the value propositions we classify as experiences fell into three major categories: ports of call, onboard entertainment, and everything else.

Ports of Call
So obviously, the main consideration for this or any cruise is the itinerary. Where does the ship go? In our case, Patagonia was a bucket list thing, one of the adventures that we really wanted to get to in our travels and were willing to wiggle a bit on our budget for. That said, of the 10 cruise highlights (Montevideo, Punta del Este, Puerto Madryn, Falkland Islands, Cape Horn, Ushuaia, Punta Arenas, Chilean Fjords and Glaciers, Puerto Chacabuco, and Puerto Montt), 3 were essentially filler: Punta del Este, Puerto Madryn, and Puerto Chacabuco were perfectly fine places to stop, but we would not have gone out of our way for them.

It’s also important to note that, while we may technically visit a lot of destinations, a day in port is a terrible way to experience a locale. For one thing, we get next to no time to actually walk around. We were typically parked for about 8 hours, but the usable time was much less. The majority of our stops were not docked but anchored, and required a ferry boat (or “tender” in cruise parlance) to get to shore. Let’s say we arrive in port at 7am. “Tender tickets” are distributed starting at 6:30. We would in line as early as possible (and frankly, there wasn’t really a line to speak of since nobody wakes up at 6:30 on vacation). After the quick succession of privileged numbers were called (high-ranking reward program members and the like), the rest of us passengers had to wait for the paying tours to get their rides out of the way. Remember, we all paid for this trip with the promise of getting to see the same places, but those of us who would rather guide ourselves (or anyone who wanted to save 50% buying their tour on land) can stuff it I guess. Sometime around 9:30am we might actually hear our first-round number called, but even at the front of the line, we’d end up getting bumped a couple of boats as stragglers for the official tours cut ahead of us. By 10am we’re finally on the ferry, riding 20 minutes to shore. Last tender back to the boat is at least a half hour before departure, which leaves us… 4 hours? Nowhere near enough to enjoy it in any meaningful way.

Still, there are a few places that we legitimately would have trouble reaching affordably on our own (Cape Horn, The Falklands, the fjords). And luckily, we’ve already made plans to revisit two of our destinations “full-time” (Montevideo and Punta Arenas) and give them the attention they deserve.

Onboard entertainment
Okay, so most of our time is spent on the boat itself, surely there’s plenty of stuff to do every day?

You’d be surprised. As I said, everything on the cruise is designed to wring money out of you. Here’s a snippet from a typical day’s schedule:

Of the 36 things on this list

9 explicitly and transparently cost money

8 are sales pitches or implicitly cost money

5 are unhosted gatherings that cost the cruise nothing

3 are “weather permitting,” which on a cruise in Patagonia means “not happening”

Ignoring the ones that are euphemisms for babysitting, that leaves us to pick between trivia, some light cardio exercise, and napkin folding. The “how the ship is run” talk was interesting, though. I don’t just mean when some native Spanish-speakers (justifiably) complained how non-bilingual everything was for a South American cruise. One of the higher-ups let slip that the crew demands (and gets) much better food than the passengers do. Are you kidding? I would have traded everything on our menu for something with a little spice!

There are just so many missed opportunities here. We did have a very international crowd, why not language classes and conversation nights? I love learning about the places we go, why weren’t “port talks” about the history and culture of the our destinations? Instead we got thinly-veiled sales pitches for overpriced excursions. ALWAYS BE SELLING!

And it’s not the staff’s fault. I’m sure company policy ties their hands in terms of making the best of it. The hosts for these events often joked about their nonexistent entertainment budgets, unavailable or non-working equipment, and prizes of “cheap plastic crap.” But, why? Why was “having fun stuff to do” a complete afterthought? I mean, I know the answer – free entertainment doesn’t make the company money. ALWAYS BE SELLING!

Anyway, this is clearly not good for morale, and it showed. Nobody really seemed to care about their jobs. One minor but telling example: about 2/3 of the way through the cruise, one of the entertainment options was a screening of Star Wars: The Force Awakens. The sea was pretty rough that day, and the roiling swells would cause the stage curtains that backed the projection screen to, every five seconds, sliiiide across the stage to the left, then sliiiide across the stage to the right, eliciting a scraping noise like pulling a shower curtain aside. Every five seconds, for the entire 2 hour 16 minute runtime. At any point, anyone on the staff could have run up there and secured the curtains (as they were during live performances), but nobody cared, so nobody did. We just got to put up with a fun new shower-curtain-themed soundtrack.

Everything else
Fine, well at least we get to take a load off and relax. Think of all the great privileges that are included* in our fares:

Don’t have to cook (um, I like cooking?)
Don’t have to do laundry (kinda… aside from the free towels, laundry service on the ship is incredibly expensive, so we actually did in fact have to hand-wash a significant number of socks and boxers to make it through the journey)
Don’t have to do dishes (okay, this is nice)
Don’t have to make the bed (haha, like we make our bed)

Also, included is a strong term. Norwegian actually charges $27/day extra, ON TOP of the $230/day for our tickets, as a “service fee” to tip the housekeeping, restaurant, and behind-the-scenes staff. Normally, I’m all about tipping. I mean 20%+ on everything, no excluding drinks or tax funny business. But damn it Norwegian, how about you pay your staff a living wage and I’ll tip when they go above and beyond? Especially since I have no way of verifying this fee even goes where you say it does.

Bonus Category: Work
I hesitate to include this, because for most people, a cruise is intended to be a purely recreational affair. On those merits, I still believe it falls short. But it’s also important to detail why, for our purposes as digital nomads, a cruise ship is a terrible environment to work in.

Few suitable workspaces
The only ones I was able to track down were the following:

Our cabin

Internet café

Lifestyles room doesn’t exist, now the photo studio

Library

Conference room always “reserved”

Observation lounge

As tiny and depressing as our cabin was, we of course tried to spend as little time in it as possible. Unfortunately, the “internet café” was really just a couple of tables in the atrium outside of the main lounge. Since the lounge hosted almost every event, this made the entry area one of the more heavily-trafficked parts of the ship – not great for focus.

Also of course, everyone else on the ship wanted to get out of their cabins too, which made the two “quiet” spaces – the library and the observation lounge – very popular.

The one on the left was our cruise ship’s lounge; the more-impressive, a passenger ferry in Estonia

No internet
Well, technically there was internet available on the ship, and as the Internet café’s name suggests. It was just prohibitively expensive.

Distractions
People, noise, activities, waves. A crowded ship is simply not an ideal place to get work done.

—

But Kevin, a cruise is supposed to be a vacation! Aren’t you just complaining that what it was and what you wanted it to be were two different things?

Yes. Absolutely that’s what I’m doing. But more than that, I’m hoping to dissuade any likeminded travelers who, as I once did, may be harboring fantasies of a stint of nomading on the high seas. That may well be possible, but a cruise is not the answer.

We’re not whiling away our grandkids’ inheritance over here. Our savings is our runway. Every dollar we spend frivolously is one less we can invest in our businesses, or use on future travel, or put toward a house. That’s not to say we don’t get to enjoy ourselves, just that we need to prioritize. As with the rest of our journey, we constantly have to balance our goals of making progress on our endeavors, saving money, and experiencing interesting things. In this case, the ticket itself was a major splurge, and in trying to eke out some enjoyment from what that bought us and resisting the calls to spend more, it felt like every day we were at war with our own vacation.

I could see how things would be different for, say, people with mobility issues (who may have no other way to get to some of these places), or families traveling with children. I mean, I was once a teenage boy myself. There is definite value to an endless buffet from a parent’s perspective! But for an able-bodied, childless couple like ourselves, I absolutely must recommend against a cruise.

So that about covers everything, feel free to turn away now. But there were a few observations that didn’t fit in the rest of this article, so if you’re still enjoying the ride, relax… there’s more!

—

Other things we hated:

Other people. Man, I sure do love living alone with my wife. A cruise really seems to bring out the worst in people. Little old ladies would bowl over someone else’s grandkids if it meant being one spot further up in the buffet line. People would grossly argue with the staff about having to sanitize their hands. And what is it about today’s political climate where everyone thinks we need hear their poorly-researched opinions? I had always heard that it was rude to talk politics or religion at the dinner table, but I guess that advice skipped the boomer generation.

Lines, lines everywhere

Newlywed game. Oh, how naive we were. Way early in our voyage, when we still thought the cruise could be fun, we volunteered for the newlywed game. Actually, we volunteered for the middlewed category (yes, we’ve been married for that long), but because we were younger than every other volunteer by at least 20 years, we ended up playing the newlyweds. Ah well, it was a bit of embarrassing fun, and we got a free bottle of bad champagne as a thank-you.

It turns out they replayed that damn show constantly. Two weeks of, “oh hey, you’re the newlyweds!” We couldn’t stand watching the TV anyway because it meant more time in the broom closet cabin, but once we realized channel-surfing meant endlessly reliving that nightmare, we pretty much gave up. We should have gotten wine bottle residuals for how often they reran it.

Bad customer service (before and during cruise)
Twice, we attempted to reach out to Norwegian guest services before we set sail. First, I contacted to explain our situation as nomads and that I had a kitchen knife with me, and that I would be happy to arrange for them to hold onto it. I was supposed to get a reply within 3 business days. No response.

The second time, as it started to dawn on us we might not like living in a broom closet, I emailed to inquire about any available room upgrades and their cost. I was supposed to get a reply within 3 business days. No response.

Spoiler alert, when we got our bags dropped off, they’d opened mine, rummaged around in it, and left a note that they “discovered” a “prohibited item” and would be “confiscating” it until the cruise was over. Which is exactly the kind of privacy violation and misunderstanding I’d reached out to avoid.

Their alcohol policy was similarly condescending. To make sure you buy their $8 beers and $15 cocktails, Norwegian is incredibly strict about outside alcohol. I mean x-ray your bags to make sure you’re not smuggling in a pint of hooch in a rum-runner strict. We knew this going in, so made sure to take advantage of the best deal on the boat, the $15 “corkage fee” for bringing your own wine aboard. We could pick out some incredible Argentinian wine from Mendoza for $5-10, bring it on for $15, and spend half as much as buying an identical (or more likely, much worse) bottle onboard.

Of course, this didn’t win us any favor with the staff. Whenever we brought bottles on the ship, we were always clear and explicit that we were doing so intentionally, NOT smuggling them. Yet as soon as the bag goes through the x-ray machine, “Sir, there are wine bottles in here.” “Yup, I want to pay the corkage and bring them onboard.” *they glare* “Wait over there for someone to come down.” Cue waiting 10 minutes in the Zone of Shame while the compliant passengers shuffle by and avoid eye contact. Why is only one person on the ship authorized to fill out the corkage purchase slip? Better yet, why do we have to wait for them to show up from the other side of the ship – shouldn’t he be, you know, around during the boarding process? The only time the corkage fee even comes up?

And finally, the endless service fees seemed really underhanded. Everything onboard that cost money automatically adds 18% gratuity to the price AND has a line for tips. Maybe hoping inattentive people will double-tip? Our tickets included a couple of meals at the specialty restaurants, and we had to pre-pay the gratuities on those dinners even before we boarded. Yet every receipt we got had big empty tip lines that just screamed “cheapskate” if we left them blank. I’m all for rewarding good service, but given every other way Norwegian price gouges, I’d really like to see some proof that money is even going to the crew. Even then, I’d like more control over recognizing good service. Not that I didn’t appreciate the huge amount of effort that went into pouring that watered-down pre-mixed cocktail into a glass packed to the brim with ice, Mr. Bartender, but I’m not sure the way you pissily hucked it my way qualifies as “above and beyond.”

And I never did get my free commemorative ship pin!

Notes:

To be fair, our only cruising experience so far is with Norwegian. We heard from other passengers that some of the alternatives (other companies, river cruises in Europe, boutique cruises) differed quite a bit. Norwegian seems to follow the budget airline model – advertise a low price to draw you in, but after all the hidden costs are factored in, the meager savings hardly outweigh the corners cut. A trip with Ryanair might be worth the headache if you’re on point with an e-ticket, no checked bags, and a short flight. Stretching that ALWAYS BE SELLING, treat-the-passengers-as-cattle attitude across 15 days is where it really grates. Even so, what Wikipedia calls the “a la carte” model seems to be pretty standard for all but the highest-end lines, so much of my criticism is probably valid beyond our limited experience.

The exception to the sub-par entertainment was the Amber Strings, a Polish string trio that often played a set of classical and popular songs at the end of the day in the observation lounge. Going up there to read a book and listen to Bach as a nightcap was by far the most elegant and relaxing part of the cruise. Dziękuję!

Moreover, we did actually have some positive experiences on the cruise. We met nice and interesting people, some of the crew were very hospitable to us, and we really did see some amazing things we otherwise may never have. But in the grand scheme of things, was it the best way we could have spent that money? Absolutely not.

The towel animals were pretty cute, though

Whew! Now that I’ve got that out of my system, it’s time to get back to work.

About 2½ years ago, I started a new job that limited how much I could work on independent projects (let me tell you, not a fan of policies like this). Still, rules are rules and Voyager, along with my other projects, was put on ice. It was in fine shape at the time, so there didn’t seem to be any harm in leaving it in cruise control.

About 2½ months ago, everything had changed. I was my own boss and beginning the Latin American leg of our journey. BuildDown had shipped, other projects still too green to talk about, and I was looking for a quick win. Voyager was an obvious choice. Problems that had trickled in while I was hands-off grew larger and more serious. The solutions were relatively straightforward… they just needed doing. There were also neat ideas I’d been sitting on for years that I regretted not having in there. A little bit of love would go a long way, so my course was clear: I was going to turn around an update to Voyager, and I was going to do it fast.

But what were those problems anyway, and where did they come from?

Plugins

From the very beginning of the project, I was wary about plugins. It takes a lot of trust to delegate so much of my game’s functionality, stability, and user experience on a (potentially slapdash) piece of software from a business whose whims and goals may only loosely align with mine. Until recently, relatively little platform-specific functionality came baked into Unity, so plugins were the only way to support the features I needed: ads, in-app purchases, achievements/leaderboards, and analytics. When I exhibited Voyager as part of Indie Prize at Casual Connect USA 2013, the place with mobbed with startups pitching plugins for those services. I was loathe to entrust my game to a company more concerned with getting their big exit than actually providing their service, so I stuck to the biggest, most-popular and well-supported names in the categories in the name of reliability. It worked, at the time.

It was a simpler time

By 2015, nearly all of them were dead or on life support.

The first to falter was Google Play Game Services. Unity natively supported basic leaderboard and achievement functionality with their Social API, but only for Apple’s Game Center. Feature parity on Android required the use of a 3rd party solution. The plugin I selected was not maintained and fell into disrepair, suffering stability issues on newer devices or versions of Android OS. It was quite the professional embarrassment to talk about the game as part of a PAX Dev panel on science-based games, only to have someone approach me after the conference to show my game crashing on start-up.

Eventually, after setting out on our journey, I got around to fixing it. I was hoping that in the last few years, the Social API would have expanded support beyond a single platform, but unfortunately that wasn’t the case. Honestly, achievements and leaderboards have diminished a lot in importance since the heyday of Xbox Live, so I understand why doing so wasn’t a priority. Weighed against the work required to integrate an alternate plugin (however long that would last) and the pressing need to fix, I gambled that social wouldn’t be missed and just removed it entirely.

While I was in there getting my hands dirty, I noticed some exploratory work I’d done on a new mission type, one that I’d had at the back of my mind pretty much since the beginning.

Foreshadowing

I closed the project, published the fix and moved on. But the long-dormant seed was stirred.

Ads

The next issue came when this email landed in my inbox: “As you may know, iAd Workbench for the App Network will be discontinued…”

I did not know that! So the primary ad network on one of the two biggest platforms in the world was going away. Now what? I considered my options. I had a decent experience working with Unity ads on BuildDown, but they only support interstitials, and I wasn’t going to shoehorn that in at this stage in the game. I could try putting Admob ads on the iOS version, then all the platforms would be united under one ad network. But as I looked back over the data from the last few years, I noticed something interesting. Ad revenue has been falling for a long time:
It used to make up an about-equal component of revenue as IAP on iOS, and an even bigger piece of the pie on Android. But that had changed. Right as impressions were peaking:
Revenue per thousand impressions (RPM) fell though the floor:

Banner ads simply weren’t earning their keep, and hadn’t been for a long time. What was I doing, letting these things affect the user experience of my game for a pittance?

Meanwhile, in-app purchases were still holding their own. New people tried the game every day, and a respectable number were gracious enough to show their support with a mission pack or probe pack purchase. I decided to pull the plug on ads entirely, fully supporting the game on content alone. It would be the first time I’d released a game for profit without the cushion of advertising. And it would further cut the number of troublemaking plugins by one.

The unceasing march of technology

As one last shameful dig, Apple had slapped an embarrassing “<This App> May Slow Down Your iPhone (The developer of the app needs to update it to improve its compatibility)” warning on any apps that hadn’t been updated for 64-bit support. Yeah yeah, I got the message.

—

So there was my backlog, the must-fix operations. But there was another dimension to consider.

Upgrades

The update wasn’t just about removing problems. I wanted to add something, to give those folks that had supported the game over the years a reason to check back in and play the game anew. Removing ads and getting rid of crashes are important (critical, even), but they’re not exciting or inspiring.

The coolest thing I could add, of course, would be more content. Especially if I could include a new mechanic fans have been clamoring for since the beginning. I wanted to add the ability to land on the surface of an alien world. Immediately after making the requisite fixes, this was my top priority.

Additionally, I’d felt like the “Probe Variety Pack” was a bit thin on value. It was intended to be a cosmetic change only, and to be fair nobody ever complained about the purchase, but I wanted it to be more substantive. My answer was probe powers – unique abilities for each probe that change the way the game played. New Horizons, with the fastest launch speed of any probe in history, can launch up to 10% faster than other probes. Rosetta spent more than two years orbiting Comet 67P/Churyumov–Gerasimenko, what better craft to gain a gravity tractor bonus on the “disaster” levels Apophis and Comet ISON?

Speaking of those probes, a lot of science has happened since Voyager: Grand Tour launched in 2013. Rosetta’s entire comet-orbiting mission happened between the launch of Voyager and this update. Juno just reached Jupiter. And New Horizons breathtakingly fulfilled its mission, flying by Pluto on July 14, 2015. Those pictures were used to create the new, much more accurate surface texture for the planet.

Before and after: amazed and thrilled to be so wrong!

Finally, even though the games are worlds apart, I wanted to do a little something to promote BuildDown within the Voyager community, a crossover of sorts. My wife suggested a tie-in spacecraft, the blockiest one there is: CubeSat. We’d learned a lot more about them over the last year – many of the countries we’d visited had only recently launched their first satellites thanks to the relative affordability and accessibility of CubeSats.

Cuuute

Just as Mariner 2 was a reward for rating the game, I could give away CubeSat just for trying BuildDown! I also added Hayabusa (which was originally intended for Voyager 1.0 but cut) and ExoMars (which both launched and reached Mars in 2016, and included a lander sub-mission, making it an ideal fit for the lander expansion). Both eventually became part of the BuildDown promotion.

—

I’m happy to report that I accomplished everything I set out to do on that list. Of course, there were compromises made in the name of scope. Lander levels are a new feature, not a new game, and might seem simplistic to the crew that landed Curiosity. But that replay of a probe settling onto the surface, mountains gaining depth and extending out over the horizon… definitely earns the mode its keep.

Finally, there were some things not on the backlog that came up during the project. While implementing the lander level replays, I made some adjustments that improved the replay experience even for standard flyby levels, like adding background stars and the Sun, and a tweak to the camera so that it aims for a good shot even from the night side of planets.

What Went Well

The biggest leg up I had was the sheer amount of groundwork I laid for this expansion that was simply waiting for me to capitalize on. I had art assets, bits and pieces of an object model, UI work in place… easily 10-15% of the foundation was ready from the word go. That made progress swift and rewarding, resulting in a positive feedback loop that made the work seem lighter.

Updating the project for the latest version of Unity and removing troublesome plugins was relatively pain-free. The code in this game isn’t quite as sophisticated as my recent projects – there were plenty of GetComponent calls everywhere after the project updater worked its magic, and I had to fix some obsolete API calls, and everything is still done through polling instead of being event-driven. Still, it worked fine on the newer version of the engine, and with fewer plugins to worry about, stability was good.

The asset I use for my planet shaders had preliminary support for planet tessellation, even in the version I was using three years ago, which was critical to implementing lander levels in a timely fashion.

My Path Predictor tool was especially useful for turning around a new set of levels quickly. It helped that I had a decent bank of ideas to try out, but it acted as an effective force multiplier for my design efforts, quickly providing feedback that made iterating on and honing in on fun and challenging missions incredibly fruitful.

Plot a course… for success!

It required only minor tinkering to get back up and running after several breaking changes (e.g. the object model, differences in the physics simulation). I feel that if Voyager were profitable enough to warrant full-time attention, it would not be that great of a leap to extend the tool with machine learning capability to further automate the generation of numerous and varied missions.

Finally, improving replays was an easy win. I already had everything I needed in the game: starfields, an aura effect for the sun’s corona, the camera images generated at runtime from the flight data. A few new planet textures, ramping up the camera noise, and an improved algorithm for calculating the camera look target made old replays look better than new in no time.

What Went Not-So-Well

That preliminary support for planet tessellation? It was very preliminary. I had the basic ability to define a heightmap a planet and a few knobs to tweak for scaling detail by distance and processor budget. The developer had wonderfully continued to support and advance the asset (I know, I still use it in another prototype), but over three years there were many breaking changes, and I simply couldn’t afford the risk of upgrading in this case. That meant I had to make difficult tradeoffs in order to get lander levels to work. Cloud layers were okay, but atmospheres had to go (so if you’re wondering why landing on Venus looks awesome but Earth’s sunsets look a little… missing, there you go).

Voyager’s camera is pretty neat, and is quite capable within the confines of the game. But, it was built very specifically for the needs of flyby levels. Landing is a different beast, and the hybrid I had to Frankenstein it into for the needs of those new levels is, at best, a hack. I love going back to old projects like this, because it reminds me not toto think long and hard before I compromise on modularity and extensibility just to make something work.

Likewise, there were some assumptions built into the game, object model, etc that limited my choices in the expansion, preventing things like lander levels with moving targets, multiple-target disaster levels, and more. Sometimes constraint can be the mother of invention, and I like what ended up in the mission pack, but I’m not thrilled with the amount of good ideas left on the table because technical debt made their implementation infeasible.

There were also changes in physics engine between Unity 4 and 5 that just barely screwed up the simulation the game was built on. I ended up having to fudge the timing slightly to get it to behave as expected.

What Went Neutral

The UI package I used for Voyager was made obsolete by the engine’s “new” system (circa Unity 4.6), which I’ve used for all my subsequent projects. But the cost of retrofitting would be too great. What was there is a little clunkier than I remember, but more than good enough to get the job done. It helped that there wasn’t a ton of UI work involved in this update.

The unchanged Social API made it easier to keep in leaderboards and achievements on iOS than to take them out, but for all intents and purposes I consider them deprecated. The new level set does not support them, and I finally added an option to disable Game Center for those people that had no interest in it and were annoyed with dismissing the little popup every play session.

Rapid response, 2.0.1

On December 15th, Voyager 2.0 went live. After the frenzy to get it out onto the store, I had some time for more subtle issues to sink in. The new icon was too dark on my default (energy-saving) screen settings. The splash screen was a little wonky on iOS. There were minor bugs here and there that were missed before release.

I also wanted to work in some more feedback on the lander levels, and was able to turn around a solution – a combination speedometer/warning light – under the wire for submitting to the stores before the holiday break.

Three days later, 2.0.1 was live and I was finally done.

Bonus Android update, 2.0.1 (2)

Well, almost. While perusing reviews on both platforms, I noticed some of the early responses to the new version made reference to a continued problem with excessive permissions. The game was asking for permission to control the phone and make calls, which granted, seemed excessive. In any event, without ads in the game it wasn’t even required. I quickly issued a fix that removed this permission and all was right with the world.

]]>http://rumorgames.com/voyager-2-0-from-drawing-board-to-device-in-under-2-months/feed/5Work from Anywherehttp://rumorgames.com/work-from-anywhere/
Wed, 21 Dec 2016 14:00:22 +0000http://rumorgames.com/?p=1343Continue reading]]>One of the reasons the digital nomad lifestyle is such a good fit for us is that making games solo is pretty location-agnostic. As long as I have my computer and electricity, I can develop. Throw in a solid internet connection and I’m happy. Once those basic needs are met, the biggest challenges are trying to approximate a good work environment, and maintaining a healthy and productive work-life balance.

Ergonomics are usually non-existent; an ironing board makes a decent makeshift standing desk

Most rentals are aimed at sightseers, so dedicated workspace is vanishingly rare. We’re usually left to fend for ourselves when it comes to managing ergonomics and comfort. Many throw pillows end up as temporary desk chair upholstery, and our first walk through a new apartment includes testing any torso-high surface for standing desk feasibility. Likewise, a minor nuisance like nearby construction or street noise can be torture when trying to concentrate on a challenging task. It definitely pays to give extra attention to complaints about noise levels in apartment reviews.

Sometimes lucking into a real desk, other times settling for a bar counter

Also useful to consider is the necessary equipment, and how travel influences our needs. In addition to development requirements (more power = good), weight is a key concern, as is not attracting undue attention at airport security or in less affluent areas. So thin, light, and powerful, but also modest, and flexible enough to handle unforeseen issues, too. Not a small order!

Computer
Before we embarked on our journey, I weighed those factors and settled on a new Surface Pro 4. In some ways, it has been a perfect choice; in others, a bit of a letdown. First and foremost, it does a fine job as a game dev machine. It’s light and thin, reasonably capable, and the touchscreen has come in handy on several occasions for art and test needs (admittedly not as often as I hoped it would). It’s been more flexible than I’d imagined – though I rarely use it as a tablet, it often serves as a laptop, monitor, or media center.

On the other hand, though it runs my own games perfectly well, it struggles with other people’s (Mini Metro is no trouble, but Cities: Skylines is a bog and No Man’s Sky refused to even start). It’s bad for actual lap-top use (the kickstand digs into my legs). And in the weird, traveler-person-problems category, the vents are ideally sized for tiny ants to disappear into – a genuine concern in the tropics. All told, I don’t regret the purchase, but I do wish it were less flawed for its cost. Given another chance, I may have gone with a Surface Book, MacBook Pro, or Razer Blade Stealth instead, but there’s always hope the next iteration will be a better fit for our exacting requirements.

Finally, my wife holds on to our older Macbook Air, which, although on its last legs (Danielle insists the Malaysian heat did its battery in), is sufficient for her needs and for me to occasionally commandeer for iOS builds and deployment.

Mouse & Keyboard
In addition to the Surface’s keyboard cover, which is perfectly adequate, I brought along my older Bluetooth mobile keyboard. I actually tried to get rid of it before we left, but I’m so glad I didn’t find any takers. Light and flat and with excellent battery life, it has earned its keep many times over. It’s so nice to be able to take what is basically a laptop, pull it apart (mounting the tablet portion at eye-level and keeping a keyboard and mouse at comfortable arm height), and end up with a desktop-like rig as needed.

I also have a Surface mouse – very nearly, but definitely not, the perfect travel mouse. It’s comfortable and lightweight, and in a genius piece of UX, flattening it out for transport also turns it off. But it also has a “virtual” scroll wheel, which is basically a sensor that is supposed to detect one finger moving but in practice detects somewhere between 0 and infinity. I give it NaN scrolls out of 10.

Accessories
My wife and I each picked up a new phone before our journey, one iPhone and one Android, to cover the most important cross-section of mobile test needs (as well as to have the broadest access to app stores around the world). I added an Xbox One wireless controller along the way for PC/console development; unfortunately, I picked it up just before the Bluetooth-enabled version came out, which means I have to carry an unwieldy and unsightly dongle around to use it. We also purchased a DisplayPort/HDMI adapter to give ourselves more entertainment options on apartment TVs that are often lacking in anything entertaining.

Can’t complain

Internet speed and reliability varies wildly by country. Romania has famously good internet, and the reputation is deserved. We enjoyed download speeds of 50-70 Mbps in Bucharest. Playa del Carmen likewise deserves its reputation, this time on the opposite end of the spectrum (not actually slow – fast enough to support video streaming in fact, but unreliable in that the connection would drop out every 20-30 minutes). Unfortunately, this isn’t usually captured in AirBnB listings or reviews, so we’re basically at the mercy of chance as far as connectivity is concerned. One of my excuses reasons for not dev streaming from the road yet.

The sea, she beckons

Working for myself, motivation has never been a problem. I mean, I make games because I love to make games! Additionally, I try to make sure I have more than one project on the back-burner at any one time, so notwithstanding certain self-imposed deadlines to finish this task or that, I can easily switch gears if I find myself stuck or excessively frustrated. So my default state is to lean harder on the work part of work-life balance. The pendulum has swung in the other direction now, though. Every place we go, we’re overwhelmed with new and novel things to see and do. We constantly have to relearn how to strike a balance between living like locals and being tourists, experiencing our destinations to the fullest. Unfortunately, there’s no easy answer or universal solution. Sometimes we can convince ourselves that we’ll be back someday; others, we take advantage of opportunities to explore at the expense of our backlog. All I can say is that, all told, I’m happy with the choices we’ve made. Hopefully that continues to remain true.

]]>Voyager: Grand Tour 2.0http://rumorgames.com/voyager-grand-tour-2-0/
Sat, 17 Dec 2016 16:30:59 +0000http://rumorgames.com/?p=1677Continue reading]]>In addition to all the other fun stuff we’re working on, we decided to do something fun to celebrate the end of the year. Voyager: Grand Tour is getting its biggest update ever, including our first content update since we launched! What’s included?

New lander levels, improved replays, and more

The highlight of this new update is the Touchdown mission pack, which features 20+ new levels, including a new type of mission where the objective is to land a probe on the planet surface.

Reach drop zone, release lander, navigate gently to surface

But it’s not just new missions. Everyone benefits from this update, with new probe-specific special abilities (including new free probes available just for rating the game or trying one of our others), upgrades to replays (now probes are smart enough to look for an interesting shot even on the night side), and tons more fixes and improvements.

Finally, we’ve dropped all paid advertising from the game. If you enjoy what you see, we’d love if you’d purchase our new levels and keep playing, but we’re no longer forcing anyone to pay to get rid of banner ads.

Special thanks to our fans over the years who supported us and offered up their valuable feedback. We always listen, and we are so grateful. Thanks for playing Voyager: Grand Tour!

Voyager: Grand Tour 2.0 is out now on iOS and Android:

]]>BuildDown, Rebuilthttp://rumorgames.com/builddown-rebuilt/
Wed, 14 Dec 2016 14:00:25 +0000http://rumorgames.com/?p=1398Continue reading]]>Part 3 of a discussion on the development of BuildDown. For design decisions, read Part 1 and Part 2.

Coming from a software engineering background and with some WPF on my resume, I’ve long preferred the MVVM pattern to Unity’s more laissez-faire component approach. Don’t get me wrong, components are great. The trouble comes when trying to organize one’s code with some semblance of separation of concerns, since Unity mixes business and presentation at nearly every level.

There have surely been countless pixels spilled on this paradox. My impression is that for many, the choice seems to boil down to capitulating to bad practice, or completely beating Unity into submission: some combination of physics proxy, startup sequencer, singleton, “MyMonobehaviour” with “MyUpdate” called by “MyUpdateManager,” tool-prescribed workflow e.g. define a model and generate codebehind, etc.

With BuildDown, I aimed squarely for a happy medium. Build an event-driven, model/presentation-distinct architecture where the cost was low and return on investment was high, but leverage Unity where it made sense. For one, it made implementation that much simpler. And realistically, I’m not about to jump ship for another engine anytime soon, so saving myself some minor future refactoring was hardly worth the headache or heartache of fully platform-agnostic intermediary layers and proxies muddying up the codebase.

I used the MVVM pattern as a guide, splitting the code into model (pure C# classes with atomic operations and no presentation knowledge), view model (Unity scripts that translate Unity I/O into model operations and vice versa), and view (sometimes simply represented by Unity Transform or Renderer components, sometimes a UI-interfacing specialist component).

Simplified UML representation of core elements

The most important objects to look at are the table and the blocks. To begin, TableViewModel handles touch input, listening for pointer down/move/up messages and determining which block is being manipulated. This gives me power and flexibility in interpreting inputs, and is much more lightweight than subscribing the possibly dozens of BlockViewModels to touch inputs individually.

Based on those inputs, TableViewModel will call methods on its model, like Move() and TryMerge(). The Table model is a purely mathematical model of the playspace; its function is to manipulate Block models (mostly adding or removing blocks or modifying their positions). Actually, the Table model requests new Blocks to add from the IBlockProvider, the implementation of which (UnityPooledBlockProvider) handles Unity-specific instantiation and pairing block models and view models.

The Block model simply contains the individual block’s state – color, position, etc. The BlockViewModel is bound to the mutable state variables and relays changes to the relevant Unity components, for example, responding to a BlockPosition change event by updating the Transform position. This relationship is powered by observable values (née bindable values, renamed to more accurately represent the observer-observable relationship, and to free up the “binding” term for a future implementation of true data binding).

From the touch event received by TableViewModel, to the method call updating Table, to the property change on a Block raising an event that BlockViewModel interprets to update its Transform, the entire end-to-end process is extremely event-driven. In fact, only about a dozen scripts in the whole project even implement an Update() method.

Most of which are single-instance GameObjects or temporary effects

This centrist approach to blending MVVM best-practices with Unity’s expectations and demands served me well on BuildDown, and has been an important foundation for my approach to subsequent projects. Of course, not all game models are so simple and platform-independent, and on a future update I will detail my struggles reconciling this philosophy with a much messier, physics-based model.

]]>Digital Nomad – Year Onehttp://rumorgames.com/digital-nomad-year-one/
http://rumorgames.com/digital-nomad-year-one/#commentsWed, 07 Dec 2016 18:31:08 +0000http://rumorgames.com/?p=1563Continue reading]]>Today marks the anniversary of the day we departed* from our home country to live abroad for an extended and indeterminate amount of time. Six months ago, we’d lived in six different countries; since then, we rounded out our stay in Romania and added seven more – Ireland, Hungary, Poland, Estonia, Mexico, Peru, and just recently, Argentina. We’ve traveled 63437 kilometers, more than 1½ times around the entire Earth. And now that BuildDown is released, I’m excited to talk soon about some of the other projects I’ve been working on. But today, a look back.

*Actually, the anniversary our “lost day” – we left Chicago December 6 and landed in Chiang Mai December 8. Long flight, long layover and international dateline!

We remember Southeast Asia most fondly for its food and Southern Europe for its wine, but if we had to pick a theme for our time in Eastern Europe, it’s how the region’s low-cost and tumultuous reputation belies an impressive grandeur. Bucharest and Budapest are beautiful cities with long histories and gorgeous architecture. We’d been told many times that we were going to love Krakow (and we did), but we were much more impressed with Warsaw. Few cities had suffered though as much in the past, or are advancing as quickly in the present. But perhaps our favorite was Tallinn. Lucky enough to survive with its old-town intact, it was also very much modern and alive in a way that Dubrovnik and Krakow weren’t. Rather than feeling like a living museum, Estonia is building a robust tech industry and modern skyscrapers without ruining its historic charm. Add in a beautiful maritime setting and just enough of that Northern European sense of personal space we didn’t realize we’d missed and it ended up an especially memorable stay for us. In conclusion, Eastern Europe is a land of contrasts.

Vodka in Warsaw, Cloudburst in Transylvania, Old Town Walls in Tallinn, Trinity College Library in Dublin, Playa del Carmen, Accumulated Currency, Peruvian Treasure in Lima

As digital nomads, one of the things we have to consider in our travels in visa time. We get a maximum of 90 days (every 180 days) in the Schengen Area, so after we left Spain, we had to spend at least 90 straight days outside the area to “reset” for our following three-month stint. Hence eight weeks in Croatia and four in Romania, but we needed to find one more, and settled on a vacation of sorts in Ireland. It was a great choice, and despite being a little pricey for our needs on this particular trip, we’d definitely visit again.

Twice as much time travelling = twice the SIM card collection

After our haphazard near-year criss-crossing Europe, we wanted to try something new for this next phase. Partially to cut down on transportation costs, and partially to give ourselves a chance to learn more than a couple words of the local language, we’re focusing on just Spanish-speaking Latin America for a while. We started teaching ourselves back in August using Duolingo, and upped our game a bit in Mérida by taking an intensive one-week course at a great language school. Yo solo hablo un poco español, pero yo estoy mucho mejor que en otros paises. We’ve already had plenty of interactions with folks who spoke little to no English, so it was a wise investment to make. Buenos Aires has admittedly thrown us for a loop, though; the accent and lingo are pretty unique for South America (lots of Italian influence), so we feel a lot worse at it here than I think we actually are.

After Argentina, we’re looking forward to stays in Chile and Uruguay. We’ve both grown a bit weary of chasing the summer, and after this one ends (basically our third in a row), we are excited for a bit of the Southern Hemisphere’s temperate take on autumn. After that, we’re not sure where we’ll head. Maybe the cool mountains of Ecuador or Peru, maybe some other far-flung corner of the globe we haven’t thought of yet. The only thing we can be sure of is that it’ll be a surprise, and it’ll be an adventure.

]]>http://rumorgames.com/digital-nomad-year-one/feed/2BuildDown, Monetizedhttp://rumorgames.com/builddown-monetized/
Thu, 17 Nov 2016 16:05:00 +0000http://rumorgames.com/?p=1396Continue reading]]>Part 2 of a discussion of game design decisions made for BuildDown. Part 1 is here.

BuildDown is a simple, action-oriented game, which made it somewhat challenging to figure out how to monetize. There are no levels, so I can’t exactly sell more content. The mechanics are not friendly to puzzles to force such a content model, either. Instead, I had to weigh the various popular approaches to see which played best to the strengths of the game.Purchase
The simplest solution would be to just sell the game. Unfortunately, reality is not kind to up-front purchases on mobile. When even free games are a dime an infinity (and infinitely more likely to be passed over than played), the only developers who can get away with asking a customer to buy a game sight unseen have either a lot of positive media or a feature on the App Store, and I couldn’t count on an expensive PR campaign or a miracle.

Life Model
Create artificial scarcity in gameplay time, then sell it back to the player! At its worst, this is a transparent and devious way to exploit the sunk-cost fallacy: compared to losing a bunch of progress, that in-app purchase looks mighty good. I find this model more than a little disingenuous, but there are lessons to be learned from it. Forcing a player to walk away for a while can make them less likely to burn out, and by putting value to an in-game resource, you can incentivize desired behavior (share our game with 5 friends!) in exchange for that resource.

Advertising (Banner)
This was the model I used for the first iteration of BuildDown. Unfortunately, I leveraged it poorly, even for the time. The ads were only on the title screen, so as not to ruin the gameplay. Of course, players spend next to no time on the title screen, which translated to next to no impressions. (To add insult to injury, some players still complained about the ad placement!)

Anyway, today banner ads are essentially extinct in games. Nobody notices an ad during anything compelling, let alone is so captivated (and willing to context-switch from a gaming mood to a buying mood) they click away from what they’re doing and convert to a sale. There might be a tiny amount of room for awareness ads (soda, cars) rather than sale ads (buy car insurance now), but those campaigns simply do not pay very well, and sellers now (fairly) price their eCPMs with very low expectations.

Finally, because conversions are so low, banner ads only reward one metric: volume of impressions. Of course, all ad returns scale with traffic, but there are ways to integrate better, smarter, and more targeted ads that can pay well even without top-of-the-charts reach.

Advertising (Interstitial)
From my first interaction with them, I hated interstitial ads. I hated being pulled out of the gaming experience against my will, often without warning. I hated sitting through an unskippable (probably excessively-long) commercial for something I didn’t care about. I hated them so much, in fact, I’d usually drop any game that subjected me to them without a second thought.

But, it doesn’t have to be that way. I like games! Relevant ads can be a positive experience, introducing me to content I wasn’t aware of and might even love. While poorly-done interstitials pull me out of the game I’m playing; well-done ones could immerse me in the potential of whole new games. That’s why I eventually fell in love with…

Advertising (Rewarded Interstitial)
A well-done rewarded interstitial is not just accepted, but maybe even desired. It acknowledges the relationship between the customer, developer, and advertiser; that is, I’m getting something for you watching this ad, so you should get something, too. (You know, besides getting to play this game I poured my blood, sweat, and tears into for absolutely no cost to you.)

But the best part is, they’re optional. The relationship is transactional – watch an ad, get a prize – but it’s not a prerequisite for enjoyment of the game, and the player retains the autonomy to make that decision for themselves.

In the case of BuildDown, our prize is experience (called ModXP). It’s earned fairly and generously just by playing. The interstitial advertisement is an optional accelerator, increasing the experience reward but in no way punishing the player if they choose not to do so.

Experience earns the player coins, which are in turn used to unlock…

Modifiers
One of the things I struggled with in earlier iterations of BuildDown was how to keep the game fresh over time, how to let it evolve and grow, when the core game didn’t really change from one session to the next. Modifiers add that necessary extra dimension to the game loop, empowering players to remix the game to their tastes every time they play.

Each modifier has a special effect that changes some rule of the game. Some modifiers exist to incentivize new strategies. Automerge worth 2x as many points will have players keeping a closer eye on falling blocks and building their flicking reflexes, while multiplier for merging blocks of the same color can turn a mad dash for merges into a juggling act of setting up potential merges and then hitting them hard all at once. Others, like more powerups (self-explanatory) and save (basically a get-out-of-game-over-free card) make the game friendlier to personal high scores, rewarding players for sticking around with more carrots and fewer sticks.

Modifiers provide an opportunity to change the game, but by themselves don’t necessarily encourage experimenting with new and different combinations. How do I make sure players don’t just keep picking the best ones over and over, producing the same stale loop? Our old friend artificial scarcity! Cooldown timers are used to prevent the player from reusing a modifier immediately after using it.

This also gives a second opportunity to monetize, as players can opt to watch an ad to skip the cooldown timer on all modifiers. This might seem a little cynical, like the cooldown timer only exists to wring impressions, but making the timer “pay” to skip actually serves an important purpose. By associating something of value (an awarded interstitial) with the cooldown timer, we communicate that the time has a defined value, just like in-game experience. A player could choose to skip the wait as many times as they like, but by putting a cost to the action, they’re more likely to respect the wait and try something new in the interim.

The length of each cooldown is based on multiples of typical play session lengths, so a short cooldown will become available after about one round, while a slightly more powerful modifier might take a couple of games to reset. Because they don’t all reset after the same amount of time, there is an incentive to unlock a large stable of modifiers to choose from, and more opportunities are created for players to try and discover interesting and serendipitous combinations. And how do players build their stable? Play the game more, earn more experience, and watch more ads!

So, does this monetization approach accomplish everything I wanted it to? It’s still to early to tell. It might in fact be too unobtrusive; the first time I submitted BuildDown to the App Store, Apple rejected it because they couldn’t find any ads! Hopefully, fans of the game have no such trouble.

]]>BuildDown, Redesignedhttp://rumorgames.com/builddown-redesigned/
Tue, 01 Nov 2016 23:35:19 +0000http://rumorgames.com/?p=1360Continue reading]]>Part 1 of a discussion of game design decisions made for BuildDown. Part 2 is here.

One of the first projects I wanted to tackle on the road was to revisit BuildDown, the first game I ever released. I thought it would be relatively easy to rewrite in Unity and have access to the broader mobile market. But there was another reason; the original was something I was proud of, but I always felt like I had left something on the table. Rebuilding it on a new platform was an opportunity to reinvent it, both in game design and software architecture, and to exercise and refine those muscles for future projects.

The basic premise of the game is to merge blocks of the same color into new blocks, which can in turn be merged until they reach an inert state and cannot be merged any further.

Those inert blocks must be lined up along the bottom row to make them disappear.

There’s something I find really compelling about this core mechanic. It combines the pleasure of addictive and soothing micro-tasks (“mindless” repetitive actions, like popping bubble wrap), with the basic human propensity for organizing or tidying up: creating order from chaos, satisfaction with a job well-done, and things fitting perfectly into things.

But repetition breeds familiarity, and familiarity breeds contempt.

These simplistic actions are not in themselves challenging. As the pace of the game quickens over time, keeping up with them can be a skillful endeavor, but not really a strategic one. They need to be balanced by an opposing force – something for the player to make decisions about – or they become uninteresting very quickly.

For the previous iteration of the game, that opposing force was pause time. Players would earn pause time by merging blocks and, when when activated, earned a multiplier for every merge performed while time was stopped. That did indeed introduce an element of decision-making. Do I merge this now or later? And strategy as well, in arranging the board for maximum payoff while paused.

Unfortunately, it was too easy to min-max. The incentives rewarded one winning strategy: building up pause time while tediously arranging a board full of merge opportunities, then “springing the trap” and manically collapsing everything to rake in huge point scores.

Pretty satisfying to pull off the first time, pretty boring after the first hundred. Like the base ruleset, there is opportunity to improve on execution, but not necessarily method. The fact that there was really only one viable strategy made the illusion of choice short-lived. With little new to learn, the game was easy to master and forget.

I’d also like to digress for a moment to talk about the game’s difficulty curve. Constantly-increasing difficulty is almost as core to BuildDown as merging blocks. It provides both a necessary element of challenge, as well as the impetus to draw an otherwise endless game to a close. But on the other hand, it’s incredibly stressful, which can be off-putting. Nobody likes to be overwhelmed and defeated. This stress can be mitigated, but it requires a periodic reprieve – an ebb to the game’s flow. Pause time provided this to a limited extent, however imperfectly. First, pause time provided its own stressor with the rapid-fire challenge in maximizing score production. Second, as soon as it ended, the player was right back in the weeds, fighting for their life. The only break came with a side of unproductive guilt; not an ideal solution! I knew even at the time that I wanted a way to make the difficulty curve more sinusoidal, perhaps by providing a mechanism to go back a level in difficulty, instead of exclusively and relentlessly forward. The idea didn’t fit well into the limited set of interactions possible in the game at the time, but it’s one I would revisit in time.

After getting the game running on this new platform, my “first 100 days” trajectory was clear: I had to repeal and replace pause time.

Enter powerups. Now, I don’t take credit for inventing the idea of powerups. Rather, the epiphany in BuildDown is in how the player interacts with them. Tapping a pair of blocks merges them, but to activate a powerup, it must be held. Everything about the game is geared toward moving forward as rapidly as possible; powerups ask, what if we don’t? Suddenly, the moment-to-moment choice becomes much more meaningful. Would we trade a moment of that progress, perhaps risking calamity, for some greater reward?

To add another layer of consideration, merging a powerup block into a white or gray state lowers its activation time. These fast-activating powerups become incredibly valuable in the late game, which means the player might end up spending energy plotting ways not to merge them. Additionally, powerups can activate one another, which allows for combos to be arranged by lining up powerups in opportune ways. With powerups, a desert of decisions has become a fertile field.

Finally, there are the diamonds. Merge a powerup all the way and it becomes a diamond block. Diamond blocks cannot be activated; at this point, they’re inert. When diamond blocks are removed as part of a row, though, they’re added to a tally. Collecting three drops the level by one. In this way, unused powerups can be “spent” on a reprieve in difficulty. This mechanism allows the player to forgo short-term points for breathing room and potential future progress. It’s a relatively minor spin that ends up making a big difference in the pace of the game and putting even more weight on every decision of how to interact with powerups.

That wasn’t the end of the overhaul, though. BuildDown still needed a business model. I’ll get into the monetization strategy, and the higher-order reward loop that feeds into it, in the next post.