So cool news - we've got new texture artists and modelers. We'll be doing some advertising stuff with the money we have as well. The above screenshot has some re-textured elements, done by our talented new artist Rebecca.

Our writer and I have completed We Shall Wake's campaign outline. Now we just have to fill it in.

All of the configuration menus are done too! We have a fully operational basic settings, input settings, and graphics settings menu now.

Here's the zinger - we have controller support now. I know how much you guys have wanted that one! Hopefully it'll suit you guys well. WSWGUI has been updated to support the controller, and should be pretty seamless in terms of navigating with the mouse and controller.

I also added a new game mode (actually two), Casual Mode and Turbo Mode. You can switch these in the basic settings menu. Casual Mode sets the game to be slower for new players - and Turbo Mode takes it to the next level and makes it faster for people like me who enjoy their games being 2fast.

Anyway, I also added a new customization system. People love customization - but I hate shoehorned RPG mechanics. So what I've done is hopefully hit a midpoint that both you and I can hopefully enjoy.

I'll be adding new moves as well soon, and Michael and I will be working on some fancy new effects for that.

Our new modeler has started on our new enemy type, the Flieger. Screenshots soon! See it first on our Twitter. We also post concept art on Patreon for patrons, so it may be worth checking out!

Rafael has some music in the works, which I'll put up on our YouTube channel eventually for your listening pleasure. Which I will also post a link to on our Twitter! I have part of a new track on our Patreon too, so if you're part of that, you can go listen to it already.

Other than that, We Shall Wake has been receiving its normal stablization fixes and is in a really good state right now. I will be releasing Demo 7 for our Patreon patrons to play soon. So make sure you get in on that! It's gonna be fun and hopefully have a decent amount of content.

Best part: we did this all in two weeks with five dollars. Imagine what we'll do with the rest of it!

My last exams are over at last (who the hell put them AFTER Christmas?!) and although I was able to work a bit on the WSW and Insomnia during this time, I've neglected this blog a bit. For the half dozen people who actually read this, I can happily announce that regular Wednesday updates will resume from now on.

I think everyone's noticed the new grass effect we have in the new trailer/combat demo. Rendering dense grass with a decent render distance is really hard. In our case, we decided to go all out and allocate a large amount of our GPU time budget for grass rendering. The idea is that for the outdoor scenes, we will not have a significant number of lights, allowing us to shift part of our lighting budget to grass rendering. In addition, since grass is a purely aesthetic effect, it is easy to tweak and even turn off completely in case your computer simply doesn't like drawing a few million straws of grass each frame...

More recently, the grass renderer was updated with support for TSRAA, Insomnia's novel anti-aliasing technique! This relatively cheap anti-aliasing method had a massive impact on the grass when enabled. And to think that to this day, there are a lot of engines that haven't even gotten decent anti-aliasing at all implemented...

Anyway, here's how it looks without TSRAA.

Aaaand with TSRAA.

The difference should be obvious. As always, I can say that it looks even more impressive under motion, especially subtle motion like when it sways in the wind, something FXAA or SMAA cannot deal with at all.

Finally, particle motion blur finally got the rewrite it deserved. It's be both faster and more accurate now. Even the code is simpler and cleaner. =P

Rant on spaghetti code

The most important thing when you're a programmer in a team working on a bigger project is to keep the code clean. What does "clean" mean? Apart from the obvious (good variable names, not letting methods and files get too big, add comments for complicated code, etc), the most important thing is to have as few dependencies between different parts of the code as possible. Essentially, we want the graphics engine to work like a magic black box. Brayden tells my code what to draw and where, and my code should get the work done. This means the magic box needs a number of controls, levers, buttons and displays so he can use it. These controls should be as simple as possible, yet flexible enough so that he can do what he wants with it. Brayden shouldn't need to, no, he shouldn't be ABLE to unscrew the lid of the box and jam his hand into it because he wants some piece of information or wants to do something the controls want let him do.

Why is this important? Maintainability. From Brayden's perspective, the graphics engine is a huge black box, but inside it there are a number of smaller black boxes wired together. There's a box labeled "Model Renderer", another one labeled "Particle Renderer", one named "Grass Renderer", etc. These are all connected to the main "graphics engine" controls in extremely specific and well-defined ways. This means that when Brayden pushes buttons on the graphics engine, they get translated to button-presses of the boxes inside it; button presses that the engine knows will work with the internal boxes. In the same sense, Brayden places my graphics engine box right next to his Combat and AI boxes, and wires them up as he sees fit.

Having strict rules on what code is allowed to access what code is extremely important. An hierarchical approach like this, where one part of the code knows (and cares) as little as possible about what other parts of the code does, is much easier to maintain, modify and expand. If the grass renderer suddenly had to be wired up to the model renderer, and the model renderer had to be wired up to the transparency handler and everything had to be wired up to everything else, we get a huge problem. Suddenly the boxes are no longer independent of each other, and modifying one may break another one. We end up with an extremely complex web of dependencies instead of a simple hierarchy, which means that over time adding features gets more and more complex and time-consuming. This is what's commonly called "spaghetti code". With the hierarchical approach, the rules we've set up limit the number of places that can be affected by a change, making the engine much more structured in the end. The point is that each box should be as simple as possible, and interact with as few other boxes as possible.

These last few weeks, I have spent a decent chunk of my time working upgrading controls and adding new controls to the graphics engine magic box. When Brayden wants some new piece of information or a control of some sort, I delve into the internals of the box and draw a new wire from a control to the module that holds that information or handles that part of the engine. Once I get too many free-running wires in the box, I bundle them up and create a new box which I task with managing that control, and that's how a new box is born! It's actually quite fun!

Hey guys! Sorry this is so late - I wrote this up Saturday morning and I guess I forgot to publish it.

Daniel is back, and we've been solving minor engine issues. We're now on track for releasing Demo 7 to our Patreon patrons - which will include our new Lambaste mode and a more fleshed out combat engine. I'll be including controller support (something many of you have requested) and some overhauled menus that allow you to tweak INSOMNIA to its very core!

I've been overhauling our grapple system - which is also part of our new "cutscene" system. It was a success! Which means we're on track for both. The new story script will be much more involving since we have an actual cash inflow now - so we have a lot more options for how crazy we can take the story.

I'm excited for this journey! It's only just beginning. Til next time.

We Shall Wake's patreon was a pretty good success. We have enough to move forward with development and keep our boat afloat. However, at this rate, it'd take nearly four years to get the funding needed for our software licensing! So keep telling your friends about us and help us build it up!

Nonetheless, I'll be putting a percentage each month into paying artists and another percentage into our "domain and software" fund. Currently myself and most of the rest of the team won't be receiving any money - but as long as it gets done, most of us are OK with that.

Anyhow: the game. Michael and I have been writing the script for the campaign, and I've been getting artists in place that will start next month. Most of our character concept work is done, and Ricky is working on some new environmental work. So the rest of this month will be preparation for next month - where WSW's 3d assets will begin to be made.

I've been doing some animating with Forrest as well, and I've been making various emotive stances/gestures for the AI to better convey their emotions. The AI feel a lot of things - but in their current form - you'd never know just by looking at them! Hopefully I'll fix that.

Along with this, I've been doing under the hood work on the animation system so that I can load in fully animated scenes into the game and attach them to their actors with minimal coding work. Something that's needed to be added for a long time.

I've also re-tuned and improved most of the game's menus, so that they look prettier and function better and more intuitively. However, I still have a lot of work to do on that front.

Controller support is one of my main priorities, however I'll have to take a very large detour due to certain issues with Xbox controller driver availability and its usage in Java. Nothing I certainly can't handle of course.

Finally, those who donated to our Patreon will be getting an early build of Demo 7 soon that allows you to play Lambaste mode with our current enemy types! So if you want in on that, make sure you donate $5 or more dollars to the page.

I think that covers everything. Here's this weeks Patreon shoutout to our new supporters:

Starting today, I will be giving shoutouts to our new patrons for each week on the blog. Those who donate a dollar or more to the We Shall Wake Patreon will get a shoutout here on our Saturday updates. Today will be a doozy in that it's on a Sunday.

If you don't want your name on a shoutout, you can email me at support@nokoriware.com ahead of time (or after the fact) and I'll omit it.

Anyway, special thanks to our first Patrons:

Ciaran O'Meara
8N
Brandon Mutinda
Woolie Madden
Jacob Plamondon

Thank you all for believing in us! We'll make this the best game we can!

If you want to help with the cause, please head over to our Patreon here.