I wonder if anyone's actually shipped a game named "Placeholder"...

I wonder if anyone’s actually shipped a game named “Placeholder”…

This week, I focused on implementing Tutorials. If you’re not interested in behind-the-scenes stuff, this might be one to skip.

Even for devs tutorials are a relatively dry “feature”, but I believe they are a critical one nevertheless. This goes double when you’re trying to pull off an artsy-mobile-minimalist game.

I found this tutorial system kind of weird/fun to implement: It needs to intercept/prevent input, toggle effects on and off, change numbers around, and even provide interactive dialogs. These actions are each ordered in a script, with specific conditions required to transition to the next action.

For the time being, the BIS gameplay is straightforward enough that I think I could do a purely graphical tutorial, but soon that won’t be true. Some of the gameplay modes are considerably less intuitive, and it seems likely that I’ll need text dialogs to explain hem. So I made some, and you can see an initial example on the right.

Each dialog is an instantiated prefab where the script is filled in manually. They could easily pull text from a file at run time (obviously necessary for localization), but I’m still not comfortable with how Unity UI elements resize and reposition themselves. For now, I feel it will be necessary to tweak them manually.

The code behind the tutorials is essentially a finite state machine (FSM). Any given step in a tutorial is a ‘state’. User actions change the values of variables that are watched by the tutorial FSM, which in turn trigger various effects. The effects are quite versatile, including transitions between states; toggling on/off dialogs, media, or any given part of the UI; modifying the watched variables arbitrarily; and soon, directly adjusting the player’s data.

This is likely unnecessarily powerful for the tutorials BIS will need, but once the right abstraction was in place, the extra functionality was almost free. Yay for that.

Next week, the march towards F&FA/”minimum shippable game” continues with some polish to space travel and the mining UI. Wee!

Nothing novel, standard character selection

Nothing novel, standard character selection

Power 3 T-block about to do some damage

Power 3 T-block about to do some damage

How the T-block's power will transfer

How the T-block’s power will transfer

After-clear result

After-clear result

I’ve decided to try writing regular updates about what’s changed since the last update for BIS. I’m unsure what the right pace is, whether weekly, monthly, or somewhere in between. I’m also unsure if these will provide value for me or anyone else, so we’ll see.

I had two main goals for BIS this week:

  1. implement character persistence, and
  2. add in “multi-clear” mining functionality

Character Persistence

This goal is mostly just about shifting BIS from prototype towards proper game. Until this week, progress was lost the moment you closed the app. Boo.

This turned out to be a bit more work than expected, though it’s not surprising. Before now there has been no reason to consider that someone might load a different character, or that all the state scattered around the game might need updating.

I wasn’t planning to include that functionality, but it seems a little bit RPG-critical to me now. Now that it’s in, the game feels much more like a game. Win.

Multi-clear Mining

What’s a mining game without some materials taking longer to harvest than others? Nothing, that’s what.

In a “line clear” game like this, “taking longer” seems like it should mean you have to fill the line more than once, so that’s what I’m trying. As those tougher blocks get weaker, there will be a visual indicator of how close they are to breaking.

Each material – including the blocks you hurl unceremoniously at the ground – has two values that determine how a “full line” is processed: Power and Toughness.

Power represents how much energy that tile releases when you fill the line.
Toughness is how much energy a tile takes to actually get it to disappear (and thereby zip its way into your cargo hold).

By default, each material is 1:1. What this means is that each material is neutral, able to clear itself and nothing else.

Currently, copper and stone are 1:2, meaning they take 2 power to clear, but only provide 1. The first time you fill a line with them, all the dirt and all of your blocks will clear as you’d see in any game in the Tetris genre, but the copper and stone tiles will remain, albeit at reduced toughness (1). Clear a line there again and you’ll get them both.

To help offset this, especially as players get to high-density planets, you can upgrade the power of your blocks. Right now, this is just implemented in a “buy +1 power from the shop” way – un-fun.

So how does that help? Well, starter blocks have 1 power and 1 toughness, same as any other material. They produce 1 power each when you fill a line, and consume that 1 power so they disappear.

But suppose you upgrade your T-block to power 3. Now, when the T-block lands, in addition to clearing itself (with 1 of its 3 power), the 2 excess power contributes to clearing other blocks on that line. With 1 copper block and 1 stone block, that 2 excess is just enough to clear the entire line in one go. Nice.

In a future update, I’ll add ways to let skilled players magnify the power of their blocks through clever placement and timing, more on that soon!