I always have a million projects on my mind, but here are the top ones of late:
Angular + Organizer and Elemental Chess
To learn Angular.js I started porting my old organizer application to it. The new source code is on github now. The old app uses Google Gears for the client-side sqlite database with full-text search features, but unfortunately Gears is no longer supported by any browser and WebSQL is not going anywhere. Fortunately, Angular includes a handy full-text object search that works well enough for my needs, and porting was surprisingly simple. Unfortunately, I had to use a lot of ng:eval
I also hacked in a very simple method of synchronizing application state so multiple users can collaborate. All you have to do is wait for some things to change, serialize all the stateful information to JSON, run diff-match-patch to compare it to its previous state, send those patches over the wire via Socket.IO, and patch the state on the other end in the same way. I _.debounce’d this so it doesn’t happen too often. No idea how well this scales, but it’s ghetto fabulous so I like it. However, a much better solution would be to hook into angular’s scope.$eval for some hints on what actually changed. If anyone knows how to do this, please answer my StackOverflow question!
I also attempted to port my Elemental Chess game to Angular. I was unfortunately rather disappointed with the result. I used a lot of ng:eval and ng:class, and Angular ended up screwing these up and using old values far too often, so you’d move a game piece and it’d leave its colored background behind. I guess it’s not really meant for games. Either way, this did result in me porting the game engine to a DOM-free implementation, which made it easier to build a minimax AI player to play against. I’ll post this version when I finish tweaking the AI. It’s currently pretty slow, because I couldn’t find a better way to clone the game state for each iteration of minimax other than to selectively JSON serialize the whole thing and then re-build the board each time. Perhaps if I made a game event log and added a feature to undo your moves I could use that in my minimax algorithm instead of recreating the game state. I’m not sure how I want to do the graphics, but I’m leaning toward doing them more like the old way again only with support for dragging with touch screens so you can play on your phone.
Oh yeah, gotta love the name they put on this version of Angular: “Canine Psychokinesis”. It sure beats “Jiggling Armfat”.
Factor Blaster and Beat Ship
Two games I started on PixieEngine.com. Beat Ship was lost but I intend to resurrect it. For Factor Blaster I want to remove spacial navigation and make it more like Missile Command. Check my previous post for more details.
Like I said before, using webfinger was probably a mistake, and I should really make this a general purpose tool instead instead of forcing a use case on it. I’d like to make this super easy to use without even creating accounts. Perhaps it would work if all votes were public and an election’s creator and moderators were allowed to police them for sock puppets. Also it needs to have a hot-seat mode where all the users can vote from one computer, so you can easily settle disputes like which board game to play next in real time with minimal hassle. And it needs to work on a phone browser!
Art and Animation!
Cartoon animation is a passion of mine. I practiced it in my spare time in high school and college. I do a lot of drawings for friends, and I even sell stuff at conventions. However, I haven’t really put together much of a portfolio online to show off my work. I need to do this.
Playing Game Dev Story has convinced me that career changes are good for developing your all-around skills and making more valuable people.
I’ve also been looking into traditional pencil and paper animation. I got myself a peg board, light board, and ordered some paper for it. We’ll see what I come up with =]