Better Text Typeout in Unity

Text typeout, or the “typewriter effect,” is a popular way to spruce up text delivery in games. It’s pretty simple to add and can be done in just a few lines of code. The common Unity implementation probably looks something like this:

    public Text label;
    public float timeBetweenCharacters = 0.15f;
    private IEnumerator TypeoutCoroutine(string content)
        var index = 0;
        while (index < content.Length)

            this.label.text = content.Substring(0, index);

            yield return new WaitForSeconds(this.timeBetweenCharacters);

At some interval, advance a counter up to the length of the total content to display. Assign a subsection of our content, from 0 to the current index, to the Text component’s Text property. Repeat until the whole string is displayed.

But while this definitely gets us a working typewriter effect, it’s not perfect. Words that expand past the bounds of the Text component while animating will suddenly jump to the next line.

This mid-word wrapping simply looks wrong. Continue reading

Postmortem: Space Battle Zero

Three months after my first Ludum Dare, I came back ready for more in LD 43. As I guessed in my last postmortem, I decided against the restrictive compo this time (48 hours, everything from scratch) to take advantage of the more relaxed rules of the jam (72 hours, 3rd party assets allowed). This freed me up to focus on design and programming instead of asset creation. The theme this time: “Sacrifices must be made,” and my entry: Space Battle Zero.

Anyway, I’m going to try something a bit different with this postmortem. Instead of attempting to frame it in terms of what went well (or not-so-well) on the development side, I’ll focus more on following the thread of design through the process. Start with breaking down the original concept, then cover how the design evolved during prototyping and the process of paring down the scope to meet the deadline, while maintaining as much of the vision as possible. And finally, I’ll go over what I’d change about the game if I were to continue developing the idea knowing what I know now.

Continue reading

An honest guide to getting your Ludum Dare game rated

or, “What do you mean I have to market?”

Ludum Dare is not like most game jams in that it’s not over when it’s over. Finishing and submitting your game is actually just the beginning; after that, you need to market. You may have (and probably did!) make something really cool in just a weekend, and that’s great. But if you don’t find a way to get it out in front of people, nobody’s gonna know about it but you.

Looking back at the Ludum Dare 42 statistics, fully one-third of the entrants failed to crack 20 ratings, and therefore did not get their game scored. Some of them probably weren’t interested in a rating at all, and were just doing the jam for fun. That’s fine! But part of the appeal of Ludum Dare is the scoring. If you want to be part of that and are just at a loss for what you’re doing wrong, the answer is probably either a beginner mistake about your game’s presence on the website, or a failure to properly market it.

Part 1: Common mistakes

First, here are some of the most frequent errors new users make, and the simple improvements you can make to get your game noticed.

No cover image

This is the single mistake most likely to make people overlook your game. Here’s a snapshot of the None filter on a random day. A big chunk of the titles with no ratings at all simply do not tell me anything about the game. How’s that supposed to pique my interest? Why would I play gray box #3 over literally anything else?

Luckily this is an easy one to fix. Take a picture of your game. Scale and crop it to 640×512. Upload it. You’re done!

Still struggling? That’s okay. One quick-and-dirty trick you can do to make a nice cover image is to turn off your in-game UI, take a screenshot of something interesting in your game, then overlay your game title in an image editor. Alternately, if you’ve already put some effort into a pretty title screen, you can use that in a pinch (again, just hide the buttons and stuff).
Continue reading

Tales from the Back Burner: Stack

Sometimes we learn more from our failures than our successes. In this series, we’ll take a look at some of our projects that didn’t pan out, and see what lessons can still be gleaned from them.

What was it?

Stack could be pitched as an innovative brawler-style free-for-all about hoarding, hauling, and hurling super-powered stacks of blocks. Think Super Smash Bros. crossed with NES pariah Bible Adventures. Wait, where are you going? I swear it’s better than it sounds!

The setting: a 2d platform-littered arena

The cast: 2-4 players vying for control of a limited supply of valuable blocks

The objective: collect stacks of blocks and carry them back to your goal. Meanwhile your opponents will do anything in their power to collect them first. Luckily, blocks are good for more than just scoring points – many have powerful offensive capabilities, like the rocket and flame blocks. Each match is a chaotic struggle between collecting as many blocks as possible, and expending blocks to prevent your opponents from doing the same.

How’s it play?

Players scramble around the stage, picking up blocks and carrying them in a large stack over their heads. As a stack grows, it becomes more unwieldy, and blocks at the top are at risk of falling off if the player runs into low platforms (not to mention providing a bigger target for attacks from other players). Individual blocks can be tossed in to a goal for individual points – even from far across the stage, if nothing else gets in the way – but running into the goal with an entire stack earns the player a big “touchdown” bonus. These differing incentives (large stack = lots of points, small stack = agile and less vulnerable to attack or mistake) provide plenty of opportunity to develop and refine strategies, react to counter-strategies, and develop personal mastery of the game.

The blocks themselves are a blank slate on which to paint an array of surprising and delightful gameplay concepts. It starts simply: a vanilla block is worth one point; a gold block is worth many. But throw a fire block at an opponent and they’ll burst into flames, periodically shedding blocks off their stack until the fire is put out. A direct hit from a rocket block will blast the entire stack out of an enemy’s hands. Hit a seed block with a water block, and it’ll suddenly grow into a vine that provides a convenient ladder to higher platforms. A well-lobbed milk bottle block will drench an opponent, attracting a swarm of hissing cat blocks, tying them up and causing them to drop their stack (cat blocks can also be picked up and thrown, but they don’t like it and will try to escape!).

What went wrong?

Stack was incredibly fun to design and showed a reasonable amount of promise as a game concept. The reason I decided not to move forward with it had little to do with the idea and everything to do with competitive analysis. Couch multiplayer games are already a well-served market segment. Even putting aside AAA heavy hitters like Smash Bros., Steam is littered with quality indie offerings like Towerfall, Ultimate Chicken Horse, and countless others.

What’s more, even with full confidence in my ability to compete on quality, the fact remains that the segment itself is very challenging in terms of market size. Titles cost just as much to bring to market, but in all but a few cases only one person has to buy the game in a group of friends for everyone to enjoy it. A few more might shell out based on an enjoyable experience at a game night, but most players would be happy with a few fun play sessions and quick to move on to whatever the new, exciting release was. This means these games tend to have a short tail.


  • An interesting idea doesn’t necessarily mean a viable product
  • Competitive analysis is a critical component of the decision-making process. With limited bandwidth to work on ideas it’s important to dedicate time only to the ones that offer the best chance of success
  • Study the size of a potential market. Lots of competition doesn’t always imply a profitable segment. Red oceans are red from the blood of competitors, not customers after all

Voyager 3.3 and beyond

We’ve not forgotten about the venerable Voyager: Grand Tour. Recently, we released our 3.3 update, which improves the game in the following ways:


This was a project we started with the 3.2 update last month, finally ready for a full rollout. Voyager is now officially available in all 5 EFIGS languages: English, French, Italian, German, and Spanish. The choice is still optional, but now that we’re reasonably confident the new translations don’t break anything we’ve enabled system-language detection by default, prompting players to switch to their preferred language, and updated our store presence and screenshots.

Rewritten UI

When we first started work on translating Voyager, we ran into a ton of issues thanks to the game’s reliance on an obsolete UI framework. We decided it was finally time to drag Voyager into the modern era and upgrade it to use the same UI backend as all of our other projects. This allows us to more easily maintain the game going forward, and gives us a more solid base to build new features off of. It also allowed us to craft a more responsive design that looks better on a wider range of new devices.

Improved tutorial

Voyager’s tutorial has always been a little lackluster, thanks in part to a well-intentioned but ultimately misguided effort to avoid using text as much as possible. Now that we’ve committed to localization, it made sense to scrap the image slideshows (nobody paid attention to them anyway) and develop a true interactive tutorial to onboard new players.

Changes to replays

This is more of a fun easter egg than a full-fledged feature: all the in-game probes launched after 2005 now have “digital cameras.” What does this mean? Well say goodbye to image grain and noise, and say hello to pixels!

This adds a bit more tradeoff in choosing the right probe for a mission, and gives some personality to the individual probes. Especially Juno, which now shoots lower-res shots than the others to justify its flavor text in the probe-select menu. But we still love you, Juno!

Continue reading

Postmortem: Introvert vs. Extrovert

On an unexpectedly-obligation-free weekend in August, I decided to take a crack at my first Ludum Dare. I’m no stranger to game jams, but this was a different beast altogether. Taking part in the Compo meant I would be responsible for hand-creating 100% of the code and assets in my game. It was going to be a busy 48 hours.

From my vantage point in Central Europe, Ludum Dare 42 kicked off on 11 August 2018 at 12:00 AM. I stayed up to catch the announcement of the theme – running out of space – and… went to bed. The opportunity to sleep on my idea and wake up refreshed and ready to be productive gave me a huge boost that a few dreary-eyed hours of programming would not have. And after two solid days of work – with healthy breaks for rest, food and sleep – I ended up with a nice little entry.

Continue reading

Grand Finale

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!

Voyager 2.0: from drawing board to device (in under 2 months)

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?

Continue reading

Work from Anywhere

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.

Continue reading