Nerding Out on Robotron

Pre-Feature Cleanup of Joust and Robotron Over the weekend, I made a serious dent in the technical debt for the other canvas games, Joust and Robotron. Before I did any of that, I poked at Joust and attempted to find the upper limit on the number of simultaneous player objects (it’s about 200 before the slowdown is noticeable)! Added more colors to make it fun! Then I spent the better part of Saturday converting the mess of functions of both games into objects....

March 12, 2018

Fly Droppings and Pausing

Demo Planning Adding: mushroom drops to the fly creature, and pause toggling with the gamepad. Fly Droppings Added mushroom generation to the falling bugs (the flies). This was straightforward. First, I set up an interval, and added a new function to intervalCreatures: dropMushrooms. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 dropMushrooms(creature) { if (creature != 'flies' || !everyinterval(knobsAndLevers[creature].mushroomCreateInterval)) { return; }; this.flies.forEach(fly => { if (fly....

March 9, 2018

HTML5 Canvas Gamepad Movement

Planning Yesterday, I left off with the gamepad controls working, but only in a way that basically broke all of the challenge of the game. The change allowed the player to move outside the defined player boundaries, which meant they could shoot from below the canvas with impunity. Hurray! Today, I’m going to fix that. Adding a Layer of Abstraction First, directional control functions were moved from gamePiece to controls. Another layer of abstraction was added to handle getActiveDirection checking....

March 8, 2018

Canvas Gamepad Movement

Session Planning I see a potential problem in the controls if more than one controller button is needed simultaneously. The isFiring returns a boolean on the FIRST button push it detects, and would ignore any additional entries in that list. This means if I press A, it will do the action for A, but then if I keep pressing A, and also press B, the action for A+B would not get executed; only the action for A would....

March 7, 2018

Canvas Gamepad Support

Today, I’m adding controller support to Centipede. (See the first controller commit.) Controls Code Cleanup First, the location of the controls currently doesn’t make a lot of sense, so I’m moving them to a new file, controls.js. On load, controls.addEventListeners will execute. There are no dependencies, so the script load order doesn’t matter. Previously these were on the gameArea object because that’s where the keys tracker was stored, but the keys tracker can just live in the controls object....

March 6, 2018

Adding That Falling Bug to Centipede

Session Planning Back to centipede! Adding that falling bug creature. It should be pretty much exactly like the worm, only moving vertically, and will create mushrooms in its wake. Rename the worm object to something else like simple-interval-creature (is that a horrible name?). This could be combined with spider as well, with an if statement on the type to change the shape and movement functions. Session Post Flies are in!...

March 5, 2018

Dealing With the Insurmountable Flood of Possibility

Inquiring minds yearn to know: “How do you manage to manage all those ideas and projects?” And I say to them: “Well, inquiring minds, yearn no further. The answers are thither. Or do I mean yon? I don’t think thither means what I think it means. Onward to me asking myself a pile of questions!” Identifying Problems or Bottlenecks or Interesting Technologies is What Keeps Me Going “Aren’t you busy enough?...

October 20, 2017

My Task Workflow

I love my productivity apps. I like to experience all the things. There’s a lot of redundancy, and not much automated information flow, but I’ve developed a system that helps me internalize where a particular type of information is stored, so I can find it when I need it. The Web Apps Wunderlist Category: task dumping ground Key features Starring The Inbox Grouping Reminders Wunderlist helps meta-management-mode me keep follow-all-the-distractions me in line....

January 31, 2017