Thursday, February 27, 2014

I am bad at writing blog posts regularly.

It is clear that I am unable to ever actually write about anything that I say I will follow up on, and also that I am bad at writing blog posts regularly, and probably in general.

Tonight, I will talk about the stuff I have been working on since the last blog post, and also things that I am doing.

Network Code

Yeah, I ended up going with an authority scheme as hinted in Glenn Fielder's post: http://gafferongames.com/game-physics/networked-physics/ and his presentation on authority schemes here. The authority scheme specifies who acts as the sever for an object as they are interacting with it. This is incredibly not cheat resistant. Anyone will be able to pretend they own an object at any time and teleport around and I hope that my game doesn't become player vs player at any point because then it will be a real problem, or I'll have to switch to a different network architecture.

Interpolation wise, I wrote up my own ~Hermite Spline Interpolation~ class, which takes the player's velocity as tangents for the interpolation, which makes everything look really smooth as it interpolates between network updates. Here's some bad multiplayer robots doing bad things in space:




The Fire

After getting networked wrenches to work, it was time to get the fire system synchronized. I was not particularly satisfied with the way fire was implemented in the game already, a basic 'this tile is on fire' kind of thing. I had a brilliant idea: use physics to simulate fire in a realistic way. That's easy... right?

Diagram courtesy of these guys

Yeah! Super easy. Just implement a fluid solver. So I implemented a fluid solver.
Two weeks later, here are some videos of my fluid thing in action:



It looks like a fluid, especially in that last one. Writing a fluid simulation is hard. I drew this to illustrate:


And also, here are some more images I captured from the fluid development process:

Some kind of debug art.

This velocity field looks rather tasty.

Yep, this is definitely a fluid.

And a mountain of blood sludge.
Is it any good? Well, there's probably some kind of problem with floating point error in the diffusion process. When I try to heat up a volume, it kind of just heats up the center and the diffusion causes the overall temperature/density/whatever to dissipate over time. I'm not sure why this is; it could be floating point error, or that the diffusion is not inherently mass conserving (I need to look into this). And lastly, it probably won't be deterministic over the network, so I can't use it for mechanics anyways. BUT! I can probably use it for visualization of fire, and I also learned how fire works, so I can implement a much more realistic fire mechanic on the CPU. 

Cool GUI bro.

I made a cool GUI for my game. It's broken, so here's some alien text:




It actually works fine in the editor, so I hope unity fixes this bug eventually. Not much of an update here because of secrets? Whatever.

Collaborations

I'm working on two projects with some people right now aside from Bad Things. First off is Seth Alter's No Pineapple Left Behind. It's a charter school management game where one day, an evil wizard turns all the kids into pineapples. If you leave the pineapples alone long enough, they turn into children, which are much worse than pineapples. I'll be helping Seth do all the hard programming things. Development on NPLB should really start to kick off in the next week or so, because CONTRACTS ARE BEING FINALIZED.

I'm also working on some VR stuff with James Andrew. James is a brilliant guy who knows all about all the stuff, and his ambition and enthusiasm are infectious. So far, we are putting together a multiplayer Rift game that we hope to have ready for the next Boston VR meetup. He's got some sick world generation stuff going on, and Image Based Lighting and Starfox meets Geometry Wars.

Last but not least, I leave you with voyeur cube.
Voyeur cube is watching you wield that wrench. No, don't stop.

Tuesday, February 4, 2014

What is The BUTT?

Hi! Long time, no post. Sorry I'm bad. I've been doing a lot of stuff, ok? The game is coming along. You can check out some more up-to-date-ish stuff by following my tweeter. I post things on there sometimes. I know I always promise I'll write follow up posts about things, but TOO BAD. I mean, I still might write a follow up post for the networking stuff. It's really complicated. Butt that's not what I'm here to talk about right now.

The Bad Update Things Thing

The BUTT is now active. The BUTT is your gateway to secret Bad Things Things. Careful, hand-picked data will be transmitted to you at the appropriate intervals. Do you wish to sign up for the Ever Eventual Bad Things Alpha, now known as the Bad Things Happen in Space Network Accelerate Climax? By being one of the first 2,000 home-brothers to activate The BUTT, you will be enrolled in my consideration for the Network Accelerate Climax. 2,000 is optimistic, it's more like two-zero for the upper limit on how much my cloud demon can tolerate before toppling under the great mass of your collective internets. However, these are good problems to have.

How can I interface with The BUTT?

You can activate The BUTT by using your typomatic technotronic key-press-machine to insert your internet email address into The BUTT SUBSCRIPTION INTERFACE located on the right side, above all my stupid social media stuff.

Ok, ok, here's some Bad stuff to sate your unending hunger:

Aliens made my GUI

But at least they provided helpful instructions

Quantifiably superior to super ship 2,999,999

Laserkill is in trouble.