Palagpat Coding

Fun with JavaScript, HTML5 game design, and the occasional outbreak of seriousness

Hmm, on second thought...

Monday, June 17, 2013

I think instead of making Saturday my weekly update here, we might as well say it'll be Monday, since the last several have all fallen on Monday anyway. :-P

Last week, I wrestled with the idea of doing a fork of the Breakouts project, given that I pretty publicly said on Twitter that I was going to do so in June. Well, reality sunk in shortly thereafter, when I realized that it's already the middle of the month, and my Tangle game engine isn't really capable enough yet to really tackle a Breakout clone. Soo...

Tangle needs a more robust answer for handling user inputs. Right now, the InputManager class can handle keyboard events of various stripes, and that seems to be working pretty well. But there's no mouse or touch support yet, and there's a whole class of target browsers (i.e. mobile ones) that I can't reach until that's in place. So the game I choose to tackle this month is going to force me to finish that capability, which will incidentally force me to finish the next entry in my Let's Make a Canvas Library blog series:

a simple snake game
Yeah, Snake.

Snake is simple, yet enables me to play with all kinds of different input vectors: keyboard, mouse clicks & gestures, touchscreen tap & swipe, et cetera. Seems like the perfect choice.

Decisions, decisions...

Tuesday, June 11, 2013

I'm on the road this week, so missed my scheduled Saturday blog post. This isn't that post, though (it's only about half done, and I'm not likely going to finish it tonight)

What I am going to talk about, though, is what my project is going to be for this month's project in my One Game A Month (#1GAM) commitment.

When I (reluctantly) put a fork in Quilt at the end of last month, I sat down and did a little brainstorming about what should be next. Like most hobbyist coders, I have a bunch of unfinished projects lying around that I intend to pick up again to finish "at some point." Part of my hope for #1GAM is that it kicks me in the rear end and motivates me to finally finish those. So that's where my list started:

  • Blak & Bloo
  • Prince of Pixels (a tiny puzzle platformer / homage to the original Prince of Persia)
  • Muggins (card game I learned from a friend years ago)

All three of these are partially done, but none of them are really completely fleshed-out yet. Plus, if I'm going to revisit and finish any of them, I'd like it to be with the latest version of my Tangle game library, so there will be some necessary re-plumbing in each case.

Then, I remembered a conversation I had on Twitter last month:

So, yeah. To put this in a bit more context, my idea was to make a TangleJS version of Breakout for the TodoMVC for game engines. The only problem with that idea? It's going to be TONS of work. Here's an abbreviated list of the game library features that Breakouts is designed to compare, with checkmarks next to the parts that Tangle already has:

  • collision detection ✗
  • sprite animation ✗
  • sound effects ✗
  • tiled backgrounds ✓
  • menus and scene transitions ✓
  • player input ✓
  • text rendering ✓
  • mobile support ✗

That's an awful lot of ✗'s, especially since we're already a third of the way through the month and I've barely started! :-/

So, anyway, that's where I am. We'll see how things progress the remainder of this week, and reassess this weekend. I'd really like for this whole #1GAM thing to actually motivate me, not depress me.

One Game Down

Monday, June 3, 2013

So, that was May.

I actually shipped something, even though I didn't get everything done I would've liked. Actually, I spent all my spare cycles last week trying to get touch events added to Tangle's InputManager, so Quilt would have mobile support, but I ran out of time without getting it fully functional. Sigh.

That also meant I didn't get many more levels added to Quilt (it currently sports 8, and the difficulty curve is a little too exponential... level 7 should be around 10 or so, and level 8 shouldn't come in until 15 or 20), nor did it get the level-reset command I wanted to add, even though that would have been like 10 minutes of work. At most.

I may still sneak that one in, in fact.

The Importance of Moving On

I read Jeff Atwood's blog, Coding Horror, pretty regularly, and even though I don't always agree with everything he has to say, this post left a pretty strong impact on the way I approach software development:

At the end of the development cycle, you end up with software that is a pale shadow of the shining, glorious monument to software engineering that you envisioned when you started.

It's tempting, at this point, to throw in the towel -- to add more time to the schedule so you can get it right before shipping your software. Because, after all, real developers ship.

I'm here to tell you that this is a mistake.

Yes, you did a ton of things wrong on this project. But you also did a ton of things wrong that you don't know about yet. And there's no other way to find out what those things are until you ship this version and get it in front of users and customers.

So, yeah. Quilt's out in the wild now, and if anyone wants to submit feedback on Github, Twitter, or G+, I'll accept it.

I'll also keep tinkering, because that's what I do. But it's time now to turn my attention to June's game for #1GAM.

More on that soon.

Quilt, the De-Tangler

Monday, May 27, 2013

Quilt and TangleJS symbols intertwined I'd said I was going to post something new here every Friday night. Then I went out of town on a house-hunting trip, and things got kind of busy. So... I missed blogging this past Friday, but what I did do, is get Quilt to the Minimum Viable Product stage, meaning it's online and you can play it, even if all the mechanics have yet to be ironed out.

Play Quilt, my #1GAM entry for May

The cool thing about working on something new that's not a blog post or Tangle tutorial is that my Tangle game library actually grew as a result of something I needed for this project, instead of me having to deliberately grow it by design. That was kind of a "duh" moment for me, actually: for the past year or so, my blogging here has gotten a little wrapped around the axle of the Let's Make a Canvas Library car, so to speak, and I didn't have the spare attention to work on anything else, or really to even work on Tangle as much as I would like. Now, in the past 2 weeks, I've put together a game (albeit a simple one), and Tangle has organically grown in the process! So, yeah. I should've been doing it this way all along, methinks.

I'm not finished with Quilt yet; there are a few more features I think it really needs to be "done" (mobile support, more levels, and level-reset command top the list), but to honor the spirit of One Game a Month, when May's over, I'm going to stop tinkering with it and move on to the next game on my backlog. :)

In my next post, I'll try to talk in more detail about Quilt, and the changes it prompted me to make in Tangle.

What is Quilt?

Thursday, May 16, 2013

Quilt logo

Last week, I mentioned that I had joined the One Game a Month challenge. For my May game, I decided to dust off the not-quite-finished Blak & Bloo (I still need to write up that whole experience and why it ultimately failed), and reuse some of its code with the latest improvements I've made to my in-progress Tangle game engine. The idea I came up with is to eliminate physics (which turned out to be more of a pain than I expected), and make a simple pattern-matching game.

I'm calling it "Quilt", and you can follow my progress here. Next week, I plan to blog in more detail about my approach, and how I'm going to avoid the Blak & Bloo problem.


Friday, May 10, 2013

I'd forgotten how busy working from home can be. That, coupled with the fact that the stuff I'm working on is pretty fun (more on that soon, I promise!), means that recreational coding has taken a back seat these past few months. :(

It doesn't help that my next entry in the "Let's Make a Canvas Library" (LMACL) series is way too much to cram into a single post, and I've been having a lot of writer's block over how to break it up.

Sooo.... here's what I'm doing about it: I joined the One Game a Month challenge. Like its founder, Christer Kaitila (aka @McFunkypants), says on the site: "Starting a game is easy. Finishing a game is hard." Hopefully this very visible commitment will give me the swift kick in the rear that I've been needing. I've got a couple of half-finished games on my back burner, plus a simpler one that I think might help me detangle (heh) the code roadblock I've hit with LMACL and TangleJS. I also plan to blog at least once a week, on SaturdaysMondays, to report on progress. Otherwise, it's back to making games and not so much on the talking about making them. :)

Wish me luck.