I moved to a new URL! Check it out!

Otter on Nuget

Otter on Nuget
Thanks to the help of some friendly internet folks I finally got a process to get Otter up and running on Nuget! You can check out the latest main build of Otter all wrapped up as a Nuget package right here.

Image


I know that it was in demand for awhile now but for the longest time I just couldn't figure out the process needed to get Otter up there. Now you can enjoy all the luxuries of the Otter game making framework without having to go download files and move them around and all that junk. Just install the package from Nuget and you're good to go!

Also somehow the name Otter wasn't taken already?

Doodle Post

Image


Image


Image


In another one of those phases where I feel like I've completely forgotten how to draw anything.

To Shader Hell and Back

To Shader Hell and Back
As I'm starting to send out builds of Super Sky Sisters for people to test I'm slowly churning through bugs and crashes that I was completely unaware of until the game runs on different hardware. One of those crashes is caused by creating way too many shaders so I've been investigating on how to address that for now.

One big idea I had was to change how Otter uses shaders internally, but I think after some experiments this idea probably isn't going to work. The idea was to have Otter's Shader class keep a cache of compiled shaders instead of creating and compiling a new shader every time. Basically when making a shader it would check to see if an exact copy of that shader has already been created and compiled, and if so it would just use that one.

However that means that every sprite using the same shader would then also be sharing that shader's parameters. So if I wanted to change the color on an enemy, it would change the color on everything else as well. In order to get around that Otter's shader class would then have to manage and apply the shader's parameters before each render. So EntityA could set its parameters before rendering, and then EntityB could do the same.

I went down the rabbit hole a little bit with this technique but quickly found it performs like crap mostly. Iterating through every parameter per shader per entity per render becomes pretty chuggy pretty quickly. At first I thought this would be a pretty good idea since it would reduce hundreds of shaders to just 1, but the process of applying parameters before each render seems to be not the fastest thing in the world.

So now I'm back to the regular old way that Otter does shaders which is creates and compiles one for every shader instance. This has some downsides but I'm pretty sure it still ends up being faster than my experiment with a compiled shader cache.

I have some work ahead of me still to stop some of the crashes for Super Sky Sisters, but I'm pretty sure I know how to fix it it's just figuring out the right arrangement of code to implement the fix!

Doodle Post

Image

To SFML or not to SFML

To SFML or not to SFML
That is the question on my mind these days...

I think things would be smoother if I were just running the main C++ version of SFML, but unfortunately I am just way more comfortable in C# which means only having access to SFML.Net.

Don't get me wrong, SFML.Net is pretty great, but I think more and more I'm feeling like I should jump off to something else. I like SFML's API, and I think it does a lot of things in ways that make sense to me, but the support from the game development community just isn't there.

I know I am probably experiencing the old grass is greener feeling, but right now it feels very tempting to start to build Otter to run with something else underneath it. If I were to switch to anything I think right now my best option would be XNA/Monogame.

Image


This is just a quick little test, but it is running in XNA with something much like Otter. Monogame seems to have the biggest support lately when it comes to portability which is pretty appealing. Right now I can barely get the latest version of SFML.Net to cooperate and that's after having someone else send me a compiled version of the library because for the life of me I just cannot get SFML.Net to build.

Just rambling a little bit here. I did manage to get SFML.Net 2.3 working with Otter... but with an unfortunate downside with texture smoothing that for some reason doesn't exist with 2.2. Texture smoothing for whatever reason now has a weird effect on the edges of textures, and when I try to use those textures in shaders I get weird results when sampling pixels around the edges.

Just feeling pretty frustrated I guess! I'm going to go down the XNA rabbit hole a little bit inbetween finishing up Sky Sisters... maybe it's possible to get an XNA build of the game rolling but who knows!

Doodle Post

Image