Blue Window: post mortem

Posted by (twitter: @TyrusPeace)
December 8th, 2014 8:22 am


My entry, Blue Window, is submitted for the compo and playable here.

This was my most relaxed Ludum Dare dev cycle yet! A lot of things went right for this, but the biggest one was that I was in “content production mode”, just designing levels, by the end of the first day. I naturally did end up coding up some new toys for the last few levels a few hours before submitting, though ;).

Day 0

I got all self righteous and puffy about the the topic, so I set out to do something in 3D despite the implied design restrictions. I’ve seen a good few other entries with “one screen in a 3D world” concepts, so I’m not exactly breaking the mold here. I’m pretty happy with the concept, though.

I had a prototype of the rendering working in a few hours:

Unity’s RenderTexture and using different layers for objects that were only visible via the screen were most of the work here. The rest was spent fiddling with the overall art style and the screen camera’s rendering settings to make the screen’s contents look unique/different from the rest of the world.

I had a go at making the screen’s texture size dynamic based on your screen resolution and bailed once I had unexpected aspect ratio problems. Fortunately, I think having pixelation in there helped it look more like an in-game object, rather than just some magical hovering portal.

My chief focus for the first night was getting the actual crux of the game design implemented: being able to click on the screen while it’s up to activate/deactivate otherwise invisible objects in the world.

This involved raycasting from the mouse world position for the player’s camera until it hit the “blue window”‘s screen, and then using that to find the pixel coordinates of the clicked location in its texture. Then I figured out the world position of that texture coordinate in the blue window’s coordinate system, raycast from there, and figured out what the user was hovering/clicking.

It ended up being a fairly late night, working from about an hour after the 7pm announcement time to 2am after a fairly late and strenuous day of real-world work. It was a great start to Ludum Dare, though!

Day 1

I accidentally left my alarm on and woke up at 7am. That sucked.

While inspiration carried me pretty late into the first night, I’d definitely had a long week leading into this, and I felt it waking up the next morning. I stumbled and bumbled through until I could get my footing. I managed to test the physics of what I’d implemented and then Chipotle finally opened. This really just involved making those pillars physics objects and then fiddling with the logic for that activate/deactivate label *a lot* so that it would stay somewhere comprehensible once things started moving.

By 7pm I’d gotten vertical fog and respawning working, stuck a bunch of hanging text into a level, and had a mostly functional tutorial.

I’m pretty slow at implementing vertical fog for someone that spends so much of his free time working on a game about clouds.

After coding the level exit logic I then moved on to designing the next two levels.

bluewindow-exit bluewindow2bluewindow3

On designing puzzles:

From the designer’s perspective I’ve always had a hard time with puzzles. It’s very hard to not see *every* bit of progress that the user makes in a game as “move forward, click on things until progress is possible, repeat”. Naturally, that’s not how I want the player to feel.

I tend to just see through the design of my own game, so I concentrated on making things fun, pretty, and with relatively obvious but explorable game mechanics leading into a bit of player education before any challenging stuff. Basically,  I gave up designing fancy puzzles and blew things up instead.

Day 2

I spent the first half of my last day fiddling around with GarageBand, making a song to play to. Then I finally managed to write that “resume playing from the last spot you were at before the level loaded” script that all of my Ludum Dare entries have desperately needed. When reading the docs on the playback time I was fetching warned that compressed streams could be off by some amount of time. Perfect! It results in the music stuttering and/or glitching when you respawn sometimes. I like the effect.

Actually, I probably spent most of that morning tearfully singing along with Rivers and Roads. The dog didn’t seem to care for it, but it was a pretty good way to reboot.

After taking time out for a rather nice lunch with my parents, I figured I’d had a nice long break from all of that coding stuff and dove back into it to make a new obstacle for the last few levels of Blue Window:

I made a normal boring “1 beam, no spinning” version of this as well, but naturally the spinny 4 beam version of the death beams was the most exciting one. That was done by 2:30, leaving me 4.5 hours until submission time to actually use the thing.

I’d set a goal of doubling my level count on the last day, and I managed it! One level each for introducing single beam and spinning quad beam lasers, and then one last level with a ton of lasers and a bunch of spheres to drop while running downhill.

bluewindow4 bluewindow5

Last minute “crises”:

  • My lasers killed performance! They did a lot of raycasting to figure out where to end the beam… and I just had left a debug print in there. Deleting it fixed everything. Hooray!
  • My lasers couldn’t detect players while they weren’t moving. They have a collider for most other situations, but that tends to break down if it’s moved into the player rather than the other way around. I added a hack to that raycasting bit to detect players as well.
  • There was no way to exit the game. How do I always forget that? I slapped my keyboard until I had an Application.Quit() getting called for escape key down events.
  • The last level is kind of a pain in the ass to beat and it started quite a bit harder than that, so actually testing the thing in my jittery Ludum-Dare-finishing state took a stupid-long time.

And that was my Ludum Dare! I should go to work now. After that I’ll have a fun evening playing your games! Great work, everyone! It was your posts and progress that kept me inspired and on task throughout this.

Blue Window on Ludum Dare



One Response to “Blue Window: post mortem”

  1. benmcnelly says:

    I just learned about “RenderTexture” during this Compo (as I needed to render a camera to a texture and just hoped unity could do that) and it had my head spinning with ideas. I love what you did here, reminds me of an oculus demo I tried the other day. Very well done!

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]