JavaScript learning review

Posted on March 21, 2012 | 4 minute read

As I’ve gotten over my jetlag I’ve been ramping up the JS work again. There are now two projects to work on and I won’t be posting much about the second one specifically, but will still be writing about the general JavaScript learning progress as well as posting Gwen updates.

I guess now is a good time to reflect on my progress thus far. I started learning how to build HTML5 and JavaScript games late last year. Since then I’ve finished one small project and made awesome progress on another one (Gwen).

Things have been speeding up in general with the things I can build and how long it takes to build them. The personal project that took two months before would probably take a couple of weeks if I went back and rebuilt it now, most of which would consist of drawing spritesheets, backgrounds, and other art assets.

Learning highlights

  • Switching to code is easier. I remember mentioning earlier that switching from thinking about a game’s design to how to code it while working on a project is like a weird laggy toggle that took a while to click in my brain, like switching between two languages. This doesn’t happen so much anymore. I find I’m able to think about the design with the code already in mind, putting together potential ways to build what I’m thinking while thinking about it. So even though my JS knowledge is still a work in progress, it’s now easier to grasp concepts and think of solutions on the fly - even if I need to brush up on the actual syntax for those solutions when I get to it.

  • Timers. Working with them was a giant pain in the butt and still is, but when you get them right and see whatever it is that you need to happen at semi-random intervals happen exactly like it’s supposed to it’s probably one of the best feelings in the world.

  • Arrays. I had to learn all about pushing, popping, slicing data into and from dynamically generated arrays.

  • Adjacency arrays. My post about the long road to adjacency pretty much explains it all. This was a mindbender to figure out.

  • UI elements. I spent a while working out what rules and conditions to set for things like pressing buttons on the screen, to ensure buttons were selected/deselected properly (not just in terms of their behavior but also their animation states). This took a while and is still in progress with the new project (toggling buttons is what I’m working on now. It’s almost there, with a couple of things to work out).

  • Clean code. Just like I was a little OCD about making sure my cables were neat when building Adam, I’m very particular about making sure my code looks neat, too. And I think it’s getting worse - not only is it about the look of the code, but the structure of it. Things like getting rid of duplicate functions in multiple entities and moving them into one function in the controller class that all of those entities can refer to suddenly seems very important.

  • Dynamic events. My first project mostly consisted of purely pre-built levels. Things were placed on a screen in preset positions. The only things that were calculated on the fly were a couple of instances of randomized numbers which determined how many batches of an item were to be spawned at intermittent intervals. Both things that are in progress now require more information to be generated on the fly after a level has loaded. I think this in general is going to be my next big challenge coding-wise (like that adjacency problem was before).

I think that learning how to build my ideas has been awesome on a million different levels. Not only does it mean that…well…I can make the stuff I want to make, but it’s given me a glimpse into the mindset that a programmer might have in relation to working with design and QA. I’ve been able to use this when working and communicating with programmers (both JavaScript and other languages) for my client projects, which has so far resulted in faster turnaround times and better communication in general.

Right now my priority is just to keep building. Today I’m working with timers. I’m going to need a lot more coffee.

Categories:game dev dev games
comments powered by Disqus