dAST: A simple 2D space shooter

As hinted in my last post I’ve been dipping my toes in game development and Android development simultaneously. The first result: dAST. It’s a very simple game but it exposed me to several new or at least rusty-to-me topics: multithreading, MVC coding style, Entity Systems, Android-specific concepts. It will likely remain my “new feature” test platform for games to come.

The game is at a pretty good state now. There is one bug I am aware of, involving the new control scheme. You’ll see it if you steer and fire at the same time and then let go of either the steer or fire controls. There’s an easy solution, and that solution will be rolled out in the next release (this weekend, most likely). There are more features on the horizon (temporary gun powerups, warp, radar, sound, …) but as it stands now it is a wholly playable game.

I’m beginning the design phase of the next game; it’s probably going to be a puzzle game. I don’t have a timeline on that one yet, though.

Entity Systems

Entity Systems are the future of MMOG development – Part 1

I found this series on /r/gamedev. It describes a way to organize game “things” (I’m avoiding the term object here) into lists of characteristics about the thing, rendering the thing nothing more than a unique id (think GUID). As the author says it naturally leads to easier multithreading, which is awesome. My only concern after reading this is that the programmer would need to be careful about ensuring that the component lists don’t end up referring to defunct game things. Off the top of my head I’d say that could be taken care of with a periodic GC thread that goes through the component lists to see what is no longer referenced in some “mandatory” lists. For example, a thing without a coordinate component may be eligible for being entirely wiped from the system. I think that could be accomplished by maintaining a list of “Remove” components that are only read in GC.

I recently wrote a game for Android (I’ll announce it for real this weekend or next weekend) that uses traditional OOP game objects and, well, I made some early design decisions that I now regret. The game’s visual objects are all represented by a subclasses of a common class with several common attributes and methods. That’s mostly fine, but then I also stuffed the animation rules in as a member class that hangs off the common class. (I’m sure there’s a pattern or anti-pattern name for this concept, but I’m lousy with names.) The thinking behind that is that I wanted to be sure that the object was able to easily access its own shape for things like hit detection. Anyway, tossing the graphics in with the data attributes has made the objects heavier than they ought to be. This article has inspired me to redesign the objects so that things like the coordinates are kept in one components, hit points in another, etc, and then redesign the game so that it makes use of more threads (beyond the natural Android UI and “master game logic” threads). That probably won’t be complete by the next alpha release but maybe a few releases down the line.

The DLP died. (was: The DLP Lives (was: Bummer. The DLP is basically dead.))

It died again. I guess the hack fix was just too much hack and not enough fix. Ended up getting an inexpensive LCD to replace it. It is also a Samsung and is mostly pretty great. (It has kind of poor black levels, but oh well. It wasn’t an expensive fancy-pants THX TV or something.)


Woo. Well, once I completely gave up on the TV I figured I might as well try to fix it myself. I figured I would probably destroy it in the process, but it was already dead, so what difference would it make? I followed the example found at Home Theaters Hack, which is for a larger TV, and basically made a little “pressure screw” assembly (looks almost exactly the same as Iscallio’s) and installed it in the metal frame surrounding the lower of the two left boards (when facing the back of the TV). The plate on the end of the screw is pressing up against the DNIE BGA chip. I guess it was enough pressure to get the thing working again.

At first I wasn’t sure where the chip would be. I knew I was looking for a BGA chip but I didn’t see one on the upper left board, and I failed to recognize that there was a lower board, so I went for the center assembly instead. The problem chip is in fact in the lower board.

I took apart what turned out to be the light engine after seeing a few BGA chips in there. After realizing my mistake I managed to put it back together again and had it installed in to the TV, but the image was shifted about 6 inches too high. I had to unscrew and rescrew the light engine assembly a few times to get it right. In the final attempt I heard a sharp crack — I guess that was the sign I had it in the correct position! (or, I got lucky).

I’m feeling like a badass now.


Our Samsung DLP (HLR5067W), that I’ve had since 2006, is essentially dead. It first started having trouble after a power outage. I had it on a UPS but I neglected to turn it off before the battery ran down (which would have allowed it to cool off the bulb and all that). Once the power outage was over I tried turning the TV back on, but it took about 30 attempts (over 15 minutes) to finally fully power on.

That was a few months ago. This weekend I replaced some fixtures in our house, which naturally required turning off the circuit breaker. The TV had been off for hours so I assumed it would handle the situation just fine; the TV was fully cooled off and turning off the breaker is essentially the same as doing something innocuous like moving the power cord to a different outlet. Well, my assumption was wrong. The TV works for about 15 seconds, then the display freezes for about 10 seconds, and then it seems like the TV reboots.

I did some reading and found out it’s probably the DMD board (the motherboard) or the power supply. Either way, it’s hundreds of dollars to repair it. Plus it’s a four year old DLP, which means that the bulb is probably near EOL. So, it’s time to get a new TV.

Any recent brand recommendations? I guess it’ll be a side-LED-lit LCD TV. And it won’t be a 3D TV, ’cause, seriously. Come on.

I-1068: 10 more signatures in the mail

I submitted the I-1068 petition half full of signatures. I’m pretty happy with that, even though it’s a drop in the bucket when compared with the overall signature requirement. If you’re still interested in signing the petition, no worries, you can still sign the petitions at these locations. Today was merely the deadline for submitting them via USPS.

Marijuana Reform Act

Like many folks around the region, I have in my hands a petition for I-1068: the Marijuana Reform Act, taken from a copy of The Stranger. This act calls for the removal of civil and criminal penalties of marijuana possession and use. I’m not normally a fan of initiatives but I feel that this is one area where our representatives have absolutely failed us, time and again, and will continue to do so for generations. Although this act would have no bearing on the federal government it is an enormous step in the right direction.

They need about 300,000 signatures in order to meet the legal requirements and have a buffer to cover for rejected signatures (which run at about 18%, apparently). Each petition sheet only has 20 blanks and I hope to fill them all. 4 down, 16 to go. Don’t be surprised if I come a-beggin’ for a signature.

My new obsession: Dwarf Fortress

There are so many great, bizarre, fun things in it. Like when a crocodile shows up, kills a few dwarves (one by lopping off his head). And then when you order a squad of dwarves to kill the crocodile you end up with:

One of the dwarves that was killed had a pet cat, and it reverted back to a stray (but apparently it kept its name). Unfortunately, the dwarves that were killed were the only trained masons in the fortress, so someone else will have to make their coffins. In retrospect, I should have created coffins earlier, just in case.

This game exposes so much detail for each dwarf and creature. It’s crazy. It tracks injuries down to the specific finger that was scratched. It’s definitely for nerds.

If you’re interested in Dwarf Fortress, I recommend checking out this tutorial rather than simply diving in. This tutorial was the first result for “dwarf fortress tutorial” but it also happens to be a good one. Don’t worry about it being for a previous version. I believe it’s all still applicable, and it will, at least, get you through the interface.

My 20% project

If I was at Google, I think my 20% project would be adding voice support to Google Calendar. It would be pretty sweet to be able to press a button on my phone and say “February 3rd, 3PM, doctor’s appointment, remind 1 hour”. It would read back what it heard and you’d say “confirm” to set it.

I guess it would be like Jott but free, and not requiring phone calls. Your voice would be HTTP POST’d up to the server or something like that.

Comcast abusing DNS

I realize I’m probably way late to the game here, but for whatever reason I did not notice this problem until today. Comcast has started responding to bogus DNS requests, sending people to some crap-tastic search portal.

Up until now Comcast hasn’t given me too much to complain about. The service is reliable, the speed is good, they usually get techs out when needed. But this right here is despicable Internet-breaking behavior. I hope it backfires on them in a very big way.

They do offer a method that supposedly allows you to opt-out, I’m waiting to see how that works out.