Friday, March 20, 2015

Global Game Jam: Friendship is Tragic

Greetings bros, antibros, and those not on the bro-spectrum.
I did that global game jam thing!

Check it out:

Aww yeah.

I did this game jam at Gamenest in SF, which is totally not even a little bit close to where I live in LA. It's only an 8 hour bus ride. That's fine for a weekend trip, right? Totes.

This is the best game jam I've done so far. Probably because it was the least ambitious, and therefore the most polished. Also, I suspect you won't be able to figure out how to play the game because there is no explanation, rules, or instructions! Fantastic!


Infinity Ward?

Yeah, it's a pretty sweet job. I'm doing my best not to lose my indie cred, but it's hard. In my secret activision-owned-indie-free-time, I'm working on some sick ghost video game stuff. Did someone say PIXEL ART? NO? too bad.

Rocks and floating platforms. Of course.

Sunday, November 16, 2014

Super Hairpiece, Infinity Ward.

Hey bros and anti-bros, I've got some news. This might be the last post for a while. Or at least the last post that is video games related. More on that later, but first!

Super Hairpiece

I made this game along with some friends at the PurpleMonkey Gamejam some time last month.

The game is about throwing a toupee on to a procedurally generated bald spot on a guys head. You should try it out.
Here are the links:

It's also got a nifty screenshot mode so you can take hair-larious (im so sorry) pictures of your styled dude.

Woooo super hairpiece! What else?

That job thing

I got a job at Infinity Ward, the guys who make some Calls of Duty (or is it Call of Duties?) making their video game programs work! That means I'm actually posting this right now from an apartment in Woodland Hills, CA. Yeah, I moved to the west coast. Sorry boston dudes! We had fun though, there's no way I could have gotten to where I am today without the filthybrutal Boston indie games scene, including the Boston Unity Group, Boston Post-Mortem, Boston VR, Boston FIG, and of course the Boston Indies meetup itself. So sentimental! Hopefully there are about a thousand equally cool meetups in LA.

Oh yeah, and there's a non-compete agreement that comes with the job. That means I can't work on any games in my free time or they automatically become the property of Activision. Super unilateral and fair! That means no more work on weird indie games, incredible virtual reality experiences, or Unity plugins. I'm not sure about gamejams, but we'll find out. I start work in a couple days, and I probably won't be able to say much about what I'm doing (hint: it's probably call of duty). I guess this is the price we pay for unimaginable heaps of money.

Woodland Hills

yeah this place is ok, though I kind of hate saying the name of the city. It sounds a little pretentious. "woodlizard hills" or maybe "woodlazer hills." only time will tell.
I'm within walking distance of TWO malls. I didn't need two... but if you do the math, that's equivalent to like seven chipotles. Which is basically the only metric that matters. It's all grids and six-lane murder roads. Nothing is small. Everything is a chain or a franchise or an apartment complex or a mall or a huge office building. I'm in temporary corporate housing right now and I dislike it, though that's mostly just the low ceilings and the cookie-cutter way everything fits together. And my last complaint is that having a car is somewhat mandatory.

Well, that's it I guess.


Tuesday, September 2, 2014


Hey guys, BOSSMODE is coming along. Here's a video of me playing five instances of BOSSMODE at the same time against the first boss.

Pretty cooooool huh?

Saturday, August 30, 2014

BOSSMODE and Particle Shadow Maps

Hello brothers and sisters, I bring you news of video games. BUT FIRST! The particle shadow maps must be seen.


This video is long, but it is not required to watch the whole thing.

ok. time for 


BOSSMODE is a game that is all boss fights. It's also networked multiplayer. I'm trying to make a game that is a cross between raiding in WoW and Shadow of the Colossus. You move around by applying a torque to a cube. And when you shoot microcube death primitives, it also applies a force back to you. Use this to your advantage. The engine is basically done so now it's on to ~content~. Which is boss fights. Which is allllll self contained game design. isn't this great?

is this awesome y/n?

Tuesday, August 19, 2014

Who wants to see some shadowed particle systems?

Awww yeah, I made some neat particle systems with volumetric shadowing!

This first one uses the technique here:

The hardest part of this was definitely implementing a GPU radix sort. My recommendation: don't. The hard parts are always, always in the details (calculating those local offsets, I know right).

Particle Shadow Mapping

Because the technique above is kind of bad with multiple viewing angles (note that I don't pan all the way around the particle system here), I ended up implementing a different technique:

Particle shadow mapping is rendering the particle system into a 3D texture and then using a compute shader to propagate the light transmittance though that 3D texture. This one is a lot more stable and also probably faster. It still requires sorting for the final rendering, but doesn't require sorting for the shadowing information.

The performance is kind of bad but that's just because of Unity not being able to cope with sorting 50k particles. I'm going to get the GPU radix sort working with this one too, but it's not currently in that video. If only CUDA worked on both AMD and nvidia, I'd just be able to use their library to do this sorting stuff, but NO. This is why we can't have nice things.


Guess who owns Yeah. I bet you didn't even know that .fish was a top level domain.

Friday, June 13, 2014

Shitty Fish, Smoking Photoshop, z0ne (formerly Rift Wars), Fire Hose office, NPLB

I've done many things since we've last spoken, old friend. Let me regale you with a story of days long since passed.

Most recently,

Shitty Fish

During the ~Great Boston VR Bender And Game Jam~ I worked with the talented Mark Stock and Jim Susino of the Boston VR meetup. We produced a game called Shitty Fish. The goal of the VR jam was to produce games that used Valve's prototype head mounted displays. The prototype HMDs are something like 1200x1k in each eye? I'm certain those numbers are wrong. Oh and they're also low persistence at 90 Hz. The Valve guys said that making the desired frame rate is of great importance, and suggested that we target a graphical fidelity reminiscent of Quake 3. With these guidelines in place, we three set out to build a video game in which you are a sea snake.

In Shitty Fish, the game is entirely controlled by the rotation and translation of your head. The idea is to slither. By displacing your head in a slithering motion, a snake body model is simulated (thanks to Mark for this math) and forces are applied to the snake body based on this model. It turns out, this is really really fun. One of the Valve guys said that it was probably the most innovative use of head tracking he's seen so far. Oh and also playing the game for 2 days straight can result in a sore neck. Relatedly, we had a man with chronic neck pain who tried Shitty Fish during the demo night and said that his neck felt much better after playing it. Shitty Fish is basically neck exercises: the video game.

This is my friend Joe trying out the shitty fish demo with a Rift DK1

This is Mark, playing Shitty Fish on Valve's prototype HMD with positional tracking.

Here's the download link:
Hope that my google drive doesn't throttle this.

Some other notes:
  • This game would be pretty cool if you could actually play it while being underwater. Some of the limitations of having to deal with gravity make it difficult to reach every neck/head position you'd like while still having to stand up.
  • The game is made with the SteamVR plugin, which abstracts the specifics of the HMD's respective SDKs. That means that using the SteamVR plugin, you can make your game work somewhat seamlessly with both the Oculus Rift, and Valve's prototype hardware. It may even be the case that the game will work with the DK2 without modification. How cool would that be? The disadvantage is that you probably don't get some of the Oculus proprietary goodness like timewarp and other things??
  • The Valve hardware is amazing. Positional tracking, ultra high resolution, high refresh, low persistence all together make a very compelling VR experience. There were a few quirks, namely that the black-to-white refresh was two frames, so if your game has a placeholder black-and-white checkers texture, you will see some pretty weird artifacts as you move your head quickly. Also there were some disorienting tracking discontinuities around where the HMD lost positional tracking from going out of line of sight. Maybe there's no way to fix this, but it would be nice if the system handled it more gracefully. Lastly, sub-90 frame rate in low persistence is perceived very differently than in a full persistence display. A low frame rate is much more jarring and teleporty. It's like a ton of tiny jump cuts. They were right about how important it was to reach the desired frame rate.

11:11, Smoke Photoshop Everyday

I've been trying to draw something every day! Here are a couple of things I have drawn in photoshop:

I think some of these drawings are pretttttty cool. Yay, sunk cost!
Here's the rest of the album if you're interested:


We changed the name of Rift Wars. The name had to go for a few reasons. z0ne is all right, but putting a number in your name is sort of a faux pas. I don't really care that much. There's a lot of exciting stuff going on with z0ne, and we're hopefully going to show it off at the Boston Festival of Indie Games. James has been leading the development for the majority of the levels, and I've been sort of less involved in the last month or so, but I've been giving my feedback where I think it's important. There's a lot of cool new content in the pipeline. Here's an example:  

Here's a video. (I'm not sure how to embed an unlisted video)

The Chamber of Silence

Also known as the desk I am renting at the office of Fire Hose games. Seth and I are renting adjacent desks to better facilitate our collaboration. So far, it has been a huge increase in productivity. There are difficulties in getting to the office on time (whatever that means), and it is a little bit out of the way (20 minute walk from the train station) but otherwise the office has been a pretty huge win. Also it totally makes me a hundred times more official. And the Fire Hose guys are super cool. And I ate some rose flavored ice cream at a cool local ice cream place.


No Pineapple Left Behind is getting pretty crazy. We've got a ton of cool arts to show off:

And there's this totally sick Cantaloupian text book page example:
Cantaloupian is a constructed language we had made for students to learn as a foreign language. It is designed specifically to be difficult for english speakers to pronounce.

Aside from the awesome art, we are getting pretty crazy crunching this week so that we can make the Boston FIG deadline for a playable build of the game.


Here's a hyper realistic video of a particle based fluid simulation that I've been working on.

Monday, April 21, 2014

Game A Week Challenge week 2: Riftwars Arena. Also PAX East.

So I didn't do a game last last week because of PAX East, which was crazy and I'll get to that in a moment.
The game for this week is Riftwars Arena!

Riftwars Arena is an online multiplayer 6 degrees of freedom deathmatch game. You fly around in your spaceship and shoot other dudes. You can fly down in the lower part to be near obstacles so that you're harder to hit. You can fly around upside down (what does that even mean?) and you can flip and roll and do all sorts of cool aerial maneuvers.
You can probably tell that this is heavily inspired by Descent, which is probably one of the best old games ever.

How do I play this?

Well, here's the thing. You can't. 

wtf man?

Ok, so I know that the whole point of the game a week thing is to make a game that people can play every week, but this time, James, the other half of PixelRouter VR (btw, I am the other other half now, and will be releasing all future collaborative titles with James under that name) has recommended to not release this demo because of strategy. During the week we were developing this, our original collaborative project Riftwars kind of got some attention.

Here's a list of medias regarding Riftwars that occurred last week:
The summary of events is something like this: James went to PAX on sunday with his rig, and without buying any booth space managed to setup and demo Riftwars to a pretty full crowd for most of the day. He posted this on reddit and people started talking about it.

James advised me not to release a demo of Riftwars Arena because we didn't want to distract from the Riftwars demo release. I know that putting a download link to Riftwars Arena on my shitty blog that no one reads will probably generate zero interest from zero people, but I'd rather not rock the boat this time.


so there you go. I wound up demoing my game at PAX and now you can't play Riftwars Arena. Too bad. You'll probably get a demo in a little while, though I won't make any promises (like my promises mean anything). Also, we might be going full steam ahead on trying to make Riftwars into a real video game that people can buy someday. Isn't the world a weird place?

Riftwars Arena pre-post-mortem

Because I haven't technically released it, but I am pretty much done with it for now, I will write about what went right and what went wrong.

  • The six degrees of freedom controller is actually really fun to fly around with
  • The networking actually works! I'm getting better at writing networked code.

  • Ship model isn't very polished, no textures or interior ship model.
  • Shooting feels kind of weak.
  • Whatever you do, don't shoot the gravity mines.
  • No menus or instructions.
  • Some people have trouble with the controls.
  • uh, didn't actually add in Rift support...

  • It's really hard to actually shoot fast small ships in such a big space. There are a lot of scale problems in general.
  • I spent way too long on the netcode (~8 hours), trying to fix up interpolation issues, which still aren't perfect. Things get pretty bad under packet loss conditions.
  • You can't actually die or respawn yet.
I guess that's it! I guess I'll be doing a game this week? Though, there's 3 events (boston indies, boston unity group, boston vr meetup), so it might be kind of short or bad or maybe it won't even happen.