I moved to a new URL! Check it out!

Otter

Otter
For the past couple of months I've been working on a little framework using C# and SFML, and I think it's time to finally release it (in beta form) to the public!

Check out Otter!

Image


Right now Otter is only officially working in Windows with Visual Studio, but if anyone wants to figure out how to get it working in other programs and operating systems then let me know! The SFML dll files should be able to be used with Mono for Mac and Linux, but I don't know how to do that yet.

It's important to know that this is a beta release of the framework. There's still no official documentation, so you'll have to fumble around on your own for now if you're planning on using it. I also would advice against tackling any huge game projects for now unless you're comfortable digging into the source and changing stuff around yourself.

I'll be posting updates about Otter here on my web zone, and the latest version and updates will be available on Otter's website.

Indie Custom Magic Cube

Indie Custom Magic Cube
Last year before GDC I had a small part in creating a completely custom set for Magic: The Gathering based on the indie game development scene. The full set ended up being 360 cards total, and I'm responsible for about 45 of those cards! I even made it into a couple of cards myself, with Kyle Pulver, Game Jammer, and Rapid Prototyping. My cards were the ones about Source Control, Multimedia Fusion, Lyle in Cube Sector, and a couple of references to Bonesaw, Snapshot, and Offspring Fling.

Update: The indie cube has been taken down. I suggest reading this to find out more.

Here's just a small sample of some of my favorite cards, you can check out the full visual spoiler to see the rest.

Image


Image


Image

And now a card that I hate with all of my being because Edmund used it on me every game and kept stealing my best creatures from my hand:

Image

Blue is so annoying.

Doodle Post

Image


Work in progress art for a game character maybe.

Doodle Post

Image

Dev Log: Distortion Shaders

Dev Log: Distortion Shaders
I should be working on this example game for my framework, but instead I'm extending my stay in shader town to try and figure out some other stuff. I managed to get a basic distortion map going which looked like this:

Image


And then after that I played around with my old friends sine and cosine and was able to make a cool animated wave effect on the screen:

Image


Here's the code for the first shader:
uniform sampler2D texture;

uniform sampler2D anothertexture;

void main() {

vec2 coord = gl_TexCoord[0].xy;
vec4 other_color = texture2D(anothertexture, coord);

vec4 pixel_color = texture2D(texture, coord + other_color.rg - 0.5);
vec4 final_color = pixel_color;

final_color.rgb += other_color.rgb;
final_color.rgb /= 2;

gl_FragColor = pixel_color;

}
And the second:
uniform sampler2D texture;

uniform float timer;

void main() {
vec2 coord = gl_TexCoord[0].xy;
coord.x += sin(radians(timer + coord.y * 500)) * 0.07;
coord.y += cos(radians(timer + coord.x * 250)) * 0.03;
vec4 pixel_color = texture2D(texture, coord);

gl_FragColor = pixel_color;
}

Dev Log: Shader Town

Dev Log: Shader Town
I'm back in Shader Town in my framework! Right now I'm just finishing up getting my RenderTexture classes fixed up to support multiple shaders automatically. This is helpful for those post processing effects that require multiple passes. Here's what it looked like after my first attempt to get the shaders working automatically:

Image


And then I realized that I was doing a lot of things wrong with SFML's RenderStates class, as well as not calling Display() on the render texture before rendering it again. After I fixed up some of that stuff, it ended up looking like this:

Image


Much better! Yeah, that is what it's supposed to look like. What I'm doing here is just applying a crapload of shaders to the game's main render texture. So in code all this is right now is:
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/shader.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
game.Surface.AddShader(new Shader(ShaderType.Fragment, "assets/blur.frag"));
And all the shaders will be magically applied one after another when the game is rendered. Neato!