I moved to a new URL! Check it out!

posts dated from: october 2013

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!

Dev Log: Using the Debug Console

Image


I think I've finally got this debug console working the way I want to for the time being. Right now I'm able to push log messages to it, and send commands that have been registered from the engine. The more I think about it, the more I don't really want to go all out on using reflection to invoke any method that exists in the program from the console, just because it doesn't seem to really match what I want the console to be used for.

One of the main purposes of this console will be the ability to debug large content games, like metroidvanias or something along those lines. Debug commands can be set to something like giving the player items, warping them to a specific location, and even summoning enemies or NPCs into the scene to test.

I also added the ability for the console to advance the game frame by frame, or however many frames the user wants. I can type "next 1" to advance the game one frame, or "next 60" to advance it 60 frames. This should come in handy for figuring out weird timing issues and making sure things are happening on the exact frames they should be.

I'm getting closer to the release of this framework as the last couple of things come into place. The last thing I'm looking into is better shader support, and after that I think all I have left to do is a lot of bug fixes and polish, and finally an example game to go along with it.

...but first I'm going to mess with shaders for awhile!

Dev Log: Debuggin Stuff

Dev Log: Debuggin Stuff
I'm trying to now take care of the last couple of things on my checklist before a public beta/release of my framework! This includes the elusive debugging and command console.

Image


This is the quick first pass of the debug console running in my Offspring Fling mock up using my framework. Right now all I can do is just type into this box, but eventually what I want to do is have commands being run from this console, as well as debug output being sent to it.

I'm also toying around with shaders as well and I think I'm starting to get a grasp on it, or at least fragment shaders, but I still have a lot to learn. Exciting!

--

Hey I'm editing this blog post to show the progress! Here's the console as it looks after working on it for the whole day:

Image


Still no fancy reflection, but for now it has cool enough stuff to debug a game, I think!

Dev Log: Drawing Lines

Dev Log: Drawing Lines
My to do list continues to grow shorter with my framework! Today I finished getting my draw line utility functions working. Check out these beautiful lines.

Image


Being able to draw things like rectangles, circles, and lines on the fly can be really useful for prototyping, debugging, and even effects for a game. The regular old line drawing using OpenGL results in just a one pixel thick line from point A to B, and that's no good for most cases.

For the red line I'm converting the line into a quad using some vector magic that doesn't really make sense to me yet but it works. The ends of the lines are hard edges, as it's just a quad. But the blue line is where the true magic happens. It's a line with rounded ends, WHOA! It took me awhile to figure out, but I'm drawing it using similar logic to the red line but adding a bunch of points to go around the outside of each end point of the line. It's using a TriangleFan to draw, whatever that means.

I've also been spending time attempting to document things in the code to prepare for a public "beta" release of the framework. It's coming very soon!

Offspring Fling Plushies

Offspring Fling Plushies
You can now own your very own Momma from Offspring Fling thanks to Frank'N'Stitch! They're available right here on Etsy, along with an awesome Offspring Fling scarf. 100% home made!

I've had a lot of requests for plushies over the past year but couldn't really find a good way to make it happen until now. These plushies are also approved for flinging around a puzzle platforming level.