1. icon for News
  2. icon for TCHOW

News

Friday, March 29, 2013

Rktcr: Beta3 and the Paths Computer

I am discovering that deciding when to release a beta of Rktcr is all about balancing imperfections. There are the rough edges I know about -- e.g. the missing lab functions in previous betas, or the relatively thin writing in the scripts -- and the imperfections that my testers invariably find -- e.g. blank screens and crashes on Intel GPUs.

The first kind of imperfection slows me down -- makes me want to take longer between betas so I can add "just one more thing." But the existence of the second kind of imperfection pushes in the other direction. Adding many new features and then finding a bug gives one a much larger amount of code to review.

I'm releasing Beta3 because of both kinds of imperfection. I've added a significant new feature -- the paths computer -- and I think I've worked around or solved a few antialiasing bugs I introduced in Beta2.

The Paths Computer

If you are one of the lucky(?) few who have been playing Rktcr, you know that the world can be confusing. Infuriating even. The connections between zones are complicated, and the game doesn't provide a map. To be clear:

This is by design.

(And that's why the paths computer is off by default.)

However, if you want to give up on thinking for a while, you can turn that 'ol beast on and it will act like a GPS -- pointing you to the fastest path it knows of that wins the game. It draws on both the par times built into the levels and on any paths you've completed with the current team.

More Level Styling

It's getting to that point where I want to convince people that Rktcr is an interesting game. Which -- in part -- means prettying up the levels a bit. This beta includes a first pass on that styling, with a low-key green geode style going into all previously unstyled passage levels, and a (actually rather ugly) draft of a blueprint-y style going onto the challenge levels.

Planar Map Refinements

I wrote some planar map code a while back to help in translating SVGs (with their attendant annoying fill rules) into nice OpenGL-drawable meshes. I ended up working with integer coordinates in the map code because it makes things like exact line-side tests a heck of a lot more feasible.

Unfortunately, the kind of detail I was putting into sprites was running up against precision problems, leading to some jagged edges on small features. So I revisited the code and pushed my hacks just as far as I could. I think the results are good; however, sprites have about 40% higher polycount than before. Almost certainly something I will need to revisit ... again.

Friday, March 22, 2013

Rktcr: Beta2

Rktcr beta2 has been released to testers. Along with the improvements to path select mode and the additional costumes that I mentioned in my last post, this beta brings several changes (big and small) to rktcr.

I highlight the big visual changes below. One big change that isn't so easy to screenshot is that I've revised the controls. It used to be the case that one could either play with explicit time control (with keys to play/rewind) or with constantly-running time (with keys to adjust speed). Feedback from my testers (thanks folks!) indicates that nobody plays the second way; so I've removed continuously flowing time (I keep the keys, but now they adjust a speed multiplier for play/rewind). This means that -- for the first time ever -- you can rewind in slow motion; this is actually more useful than it would initially seem.

Memories Board

One of the most visible changes in this beta is the addition of the memories board. This notice board has scraps of paper posted for every cutscene you've seen, and allows you to re-watch them. It's not a core gameplay feature, but it's nice to have.

New Challenge Levels

I created four new medium-difficulty challenge levels "ledge", "bound", "levitate", and "checks." They aren't terribly devious, but they are certainly fun to figure out.

Gem Adjustments

Gems now draw in a sparkly way, have their final mineral names, and make a "ting" sound when picked up. Actually styling them based on their minerals remains for the next release.

Friday, March 15, 2013

Rktcr Update: Path Select Mode and Drawing Things

Rktcr continues to progress, though somewhat slower than last week, as I've been spending a fair amount of time on SIGBOVIK submissions.

My focus this week has been path select mode and the creation of additional content.

Path Select Mode

The draft of path select mode in beta0 and beta1 has a few glaring problems: it's hard to know when you are in path select mode when there are no paths available, it's tricky to tell which path you have selected when there are paths available, and it's unclear what the path you have selected actually does (i.e. where it goes, how long it takes, and if it gets gems).

Above, you see the updated path select mode. The selected path is now textured and animated -- it's really hard to miss with the extra motion cues. Additionally, the destination portal for the selected path is shown open, and the time (and any gems) for the path are displayed in the customary way in the upper left. I also added a very clear message for when there are no paths.

Content

For the first time ever, the shorter characters are sporting costumes. I haven't made very many yet, but it's good to see them clothed. By the way, the above is from a mode that generates spirals of random characters -- I hacked it together a while back to make a box shot for Desura (which I hope to begin using to distribute my beta builds to testers).

I've also been doing some writing for rktcr -- I started a second plotline, and did some edits on the first based on tester feedback. This is harder to illustrate with a screenshot (and gives you less to discover when you play). Rest assured: it's happening.

Friday, March 8, 2013

Rktcr: Beta One

A productive week has elapsed since my release of the Rktcr's Beta Zero. I am pleased to be able to release Beta One to testers. In this post, I'll highlight the changes this week of effort has brought to Rktcr.

Overall, my todo list is shrinking and rktcr is getting better. I need to balance my time between refining graphics and gameplay and building new levels and sprites. This week skewed somewhat to the former, and I hope to skew my next week of work somewhat to the latter -- it would be great to get some costumes on those other two characters, for instance.

Challenge Files

The biggest change this week is the addition of three filing cabinets of challenges to the lab. A challenge is a special level where the goal is to grab all the gems; it stands alone, disconnected from the world.

Thus, challenges are good for highlighting basic skills and maneuvers. Indeed, the left cabinet contains twelve fresh zones that cover everything I could think off offhand.

Here's a quick playthrough of all the basic challenges:

The challenge filing cabinets also store zones that were too difficult or orientation-biased to feature in the main game. I've included four such zones in beta1, but I expect the number to grow:

I've also reserved a filing cabinet for challenges that, quite frankly, I'm not sure are possible. Maybe my testers will have better luck:

Gameplay Refinements

I also slightly refined the gameplay on two points. These aren't big changes, but they make the day-to-day a bit more pleasant.

First, portals only open when the vehicle is entering or leaving a portal, or when the left mouse button is held down while the pointer is over a portal. This avoid a lot of visual clutter, while still allowing you to check (with the mouse) where you are headed.

Second, I added the ability to instantly rewind to the portal the vehicle entered through by double-tapping backspace. This can help avoid long stretches of holding the rewind key when you realize your current approach to a zone isn't working. It also adds a nice symmetry to travel: going forward is enter (to path select), enter (select path), enter (travel); going backward is backspace-backspace (rewind to portal), backspace (travel back).

Graphics Refinements

The level win and lose markers were glaring and contained duplicated information. They also used a different sprite loading system, which I wanted to factor out in favor of having all my artwork be SVG. So they are gone, replaced by simple pictures.

Also, disruptable platforms and gem shields are now tinted in the wave-making pixel shader. This eats two fullscreen draws, but framerate doesn't seem to be suffering on my (admittedly high-end) development machine.

Et Cetera

  • Team names and progress shown in menu.
  • More graceful gfx mode setting, included windowed fallback.
  • Default res is now 1280x720.
  • Set the window title to "Rktcr".
  • Now works without e_levels (might save some first run startup time).
  • In-game sound is now muted during cutscenes.
  • Engine sound no longer plays when rolling time forward at exit portal.
  • Include partial paths in the ticks/gems summary.
  • Recalling now properly resets journey info.
  • Fixed bursts showing as gems in overlay.
  • Adjusted the styling on the zone 'choice'
  • (Probably) Fixed a tricky race condition in the audio system, which could cause a crash when leaving the lab to go to the team menu.
  • Added more claims (this means better world gen).

Wednesday, March 6, 2013

Rktcr Beta Zero: Gameplay Video

In my previous post about rktcr, I talked about the new features of beta0, and included some screenshots. However, this doesn't give you the complete picture. Of course, neither will a video -- you really have to play it yourself -- but it certainly gets closer.

Neither the graphics nor the sound are at their final targets, but they are close enough to give a flavor of what I hope to achieve. Certainly, there is a serene beauty to the game in slow motion.

Also, note that cutscenes trigger when gems are first picked up; however, I had already gotten these gems in an earlier run. I'll include a little dialog in my next video, so you all can see how that looks in action as well.

The Video

A PR Note

At this stage of development, things are starting to happen quickly enough that I can post weekly (even twice-weekly) updates. If you think rktcr looks cool, please help spread the word!

Monday, March 4, 2013

Rktcr Beta Zero is Here

This weekend, I finally put together the first beta release of rktcr, which I'm calling beta0 (note, that's a zero; this font isn't great about differentiating). I sent out beta0 to a my (alpha) testers; I will probably be looking add 5-10 more testers for the next release (stay tuned).

It's great to finally be at a point where I can label releases as betas. For me, this means that the game is complete, if unrefined -- that every piece of the experience is there in at least some form. This isn't to say that the game is either code-complete (there are a lot of refinements to make) or data-complete (more levels, stories, and characters are always nice).

In the remainder of this post, I describe the big changes I needed to make over the alpha releases.

Team Persistence

In rktcr, you play as a team of four: three people and one vehicle. In the alpha releases teams were basically placeholders -- two were automatically created on startup, and no changes were ever saved. In beta0, teams are full-fledged -- you are always playing as a team; teams remember all sorts of game state; and team members appear in-game.

Also, I've been slowly adding more character components, so teams can look more varied than ever.

Cutscenes

Teams are perhaps most evident as the chattering stars of cutscenes. I like this speech-bubble style of dialog, as it allows for some visual pacing in the dialog sequences.

While the code for cutscenes is reasonably complete, I still have to write a fair amount of dialog. (I have ambitious targets for the finished game.)

The World

In the alphas, difference segments of the world ("zones") were independent. With this release, zones are linked together into a world. This is made graphically evident by portals that spring open to show the zone on the other side -- it's a nifty little effect, though I need to refine exactly when it is deployed.

The portal effect is quite beautiful in motion, as well.

The Lab

Finally, now that the zones are linked into a world, your team needs a place to start. I call this base of operations "the lab". The goal of any game of rktcr is to design a journey for your vehicle that takes it from the lab, through the world, and back to the lab (with 14 gems collected).

As you can see above, the lab has several functions other than simply being a start/end point. The implementation of these functions remains for a future beta release.

Et Cetera

Of course, there are many other changes (big and small) that went into beta0 -- too many to really go into any detail on. And, while I have a huge TODO list left before I can get to a final version, the end is at least in sight.

Thursday, January 10, 2013

Rainbow - Post-Mortem (Part 3)

These posts tell the story of rainbow, my LD25 entry. In part 1 and part 2, I talked about ideation and the initial push to a working prototype. In this part I will talk about the refinements and polish I added to reach the finished version.

Sunday Morning: Sound

My Saturday prototype didn't have any sound, so I started out Sunday fooling around in Reason.

I decided to make the background music from a pair of loops (a dull "background" loop and a sparkly "rainbow" loop), which would be mixed according to level state. This seemed like a good option for getting some variability out of the music without having large downloads or making long tracks.

I additionally built some chords for when peons are enlightened, and a little arpeggio for when the rainbow starts.

Note: I took this screenshot on my mac laptop; however, I actually did the music stuff under Windows. This also meant that I had the chance to find a few OS-dependent bugs (most of the dev work was done under Linux).

To get the sounds into the game, I exported various tracks from Reason (selectively muting), then loaded them into Audacity where I trimmed and exported to ogg.

This is much the same workflow as I use for sound in rktcr. It's not very automated, which I think is something of a problem; but it certainly isn't one that I was going to solve during a time-limited game compo.

By noon, I'd added the last (crucial!) sound feature, muting:

I could have just turned off my speakers, but that would have interfered with listening to spotify in the background.

Sunday Afternoon: Polish

Going into the afternoon, I knew I had something that resembled a game, but there were many things that could be improved. I was pretty sure I wouldn't get to all of them, so I made a list and prioritized.

The first thing I added were peon textures. These tied the in-game experience to the intro and outro screens:

As you may notice, my first pass didn't actually change the peons' expressions, just their color. The fading turned out to be easy to add (~10 minutes more work), so I got that in next.

From there, I turned to the rainbow ends. I knew there needed to be some way to tell apart "live" rainbow (that could grow further) and "dead" rainbow (that had -- say -- enlightened a peon). My first attempt was to add fade-outs:

These turned out to be a bit too subtle, as you can see.

So I added sparkles:

I like these because they are higher-contrast than the fade-outs, they clearly indicate where the end of the bow is, and their motion makes them very easy to spot.

At this point, it was around 13:40 in the afternoon. There was a potluck I wanted to go to which started at 5pm; and I was treating this as my unofficial (early) deadline. So I didn't want to start any big changes on the game.

Unfortunately, I still wasn't quite satisfied with the way small rainbows controlled, and this was going to require a rather large chunk of refactoring to fix. Fortunately, the refactoring went better than I'd hoped and I had smoother small-bow control by 15:00.

As a bonus, the refactored control made it easy to draw sparkles that actually showed were controlled rainbows would be going:

This brought me to around 15:20, with the main game basically finished. Since I still had a chunk of time before the potluck, I added some animation (jumping/tipping peons) to the intro and outro screens, and drew additional title cards for these scenes.

At 16:30, I noticed things were no longer working in Firefox and had a 15-minute bug-hunt-scramble. I got the code up on my web page, figured out how to submit, and made it to the potluck by 17:30 or so. (Other times in these posts came from commit messages, the potluck arrival I just have to guess at.)

Final Thoughts

I think I did a good job on this project of picking something with a small scope, and getting it into a working state quickly. I also think I made the right choice by avoiding javascript frameworks and instead working directly with the default HTML5 APIs. This probably cost me some cross-browser compatibility, but it also saved a lot of reading documentation and fixing other people's bugs.

There were some ideas -- e.g. an overworld map to show level progress, color filters, mirrors -- that I could have added given more time. Specifically, the lack of an overworld makes it hard to know how long the game is, which is the biggest problem with the final version. There are also smaller things -- like optimizing the rainbow drawing -- which I would like to have done for perfectionism's sake, but weren't really required to make things work.

During development, I worried that the game was too easy. I had one of my neighbors play the first prototype, and they confirmed my suspicions. The player can see exactly where the rainbow will go, and there is no time pressure in planning its path. I wanted to fix this by having the rainbow constantly grow, but never got around to it. I guess I'm sort of glad that I didn't, as many of the comments on the contest page for the game talk about how hard it is.

Of course, these comments are wrong.

As a procedural note, I'm glad I sat down and rated a bunch of games (my brother helped by sitting with me and offering second opinions). Not only were there some real gems in there, it also meant that rainbow got rated a bunch of times. It's great to get feedback from so many people, and I'm flattered that folks found the game innovative.

Moving Forward

I find that I like this mechanic, and would enjoy producing an extended version of the game. However, my priority at the moment is rktcr.