This week saw the new pathfinding system being finished, in addition to some small overall improvements. The new pathfinder should allow our AI to find more accurate paths, especially through narrow corridors that the old pathfinder could path through. It has a large number of tweakable features, so we should be able to get a good balance between performance and precision of the pathfinding, which is important to avoid stuttering in the game when a large number of NPCs pathfind simultaneously.

Other changes includes small improvements to the SSAO. The flickering during motion has been reduced by weighting the SSAO intensity based on the view direction. We've also added threading to some bottlenecks which should improve performance a little bit more on multicore CPUs.

That's all for this week! Hopefully I'll get a chance to implement the new order-independent transparency system soon!

So a little over two weeks ago I got this idea on how to draw transparent stuff correctly without having to sort them first. Transparent geometry has always been a big problem in 3D graphics in general. All games have some problems with the ordering of transparent geometry. As an example, it's possible to see frag grenade explosions through smoke (the explosion is always drawn on top) in CS:GO, and in the Call of Duty games you can see through smoke by looking through transparent glass. I've managed to come up with an algorithm that lets me draw my transparent stuff in any order, and the algorithm works the rest out. Such techniques are called "Order-Independent Transparency" techniques and it's been an unsolved problem for over 20 years.

This algorithm could, with some luck, lead to getting something published in a real computer graphics journal as it does certain things that no other algorithm can do, which, again, if I'm lucky could lead to some acknowledgement in the games and computer graphics industry. As a third-year student at a university, this would be quite an accomplishment, which is why I decided to dedicate most of my time to it for the last two weeks. I've gotten in touch with a professor at my uni who's been willing to assist me, and the whole thing seems quite promising. Yay!

As things have calmed down a bit, it's time to start working a bit more on WSW and Insomnia again. The new pathfinder is still under development, but there has been some progress there. There's been some more optimizations and improved threading of various parts of the engine, which gives some solid performance wins. In addition, I've done some bug fixing and improvements on a number of shaders, so a quite a few special effects now have significantly less noise.

Sadly, that's all for this week. Again, apologies for the lack of progress.

This week I focused on making new attacks and refining our UI. I've been plowing down the game script and also working closely with our artists to get a new look for the game that will be revealed in Demo 7.

I'll be focusing on my new interaction wheel that I actually just finished in this post.

We Shall Wake is a crazy action game - yes - but that's just one of the focal points of the game. It's obviously taken the longest to make, and with it out of the way, I can focus on content and also adding in our other focal points - atmosphere and AI.
Atmosphere comes a lot in to play with Daniel's portion of the game - where he's been programming his graphics engine for the last year while I've been focused on the game itself. The artists are now working on concept art and models to fill our environments to help shape the feelings conveyed in our game.

As for the AI, you've all hopefully read my past few posts on the improvements to their personalities and fighting abilities, but what I'm expanding on now is the player's various interactions with the AI. When I wrote them, I wrote them with games like The Sims in mind - where each AI should be a different person and have a degree of feeling real.
So the best way to attain this, is to make an interaction wheel that provides four different ways to interact with the AI to expose these various traits they're each born with.

Right now it's pretty early, but once you guys get your hands on it, I'm sure you'll get a little of entertainment out of it. Each AI will give you dialogue based on what kind of person they are - and sometimes they'll even give you gifts if you're pretty respected among them.

Other times you won't have to trigger the conversation with a dialogue wheel - sometimes you'll come across wandering rebels sitting around a campfire reminiscing over old times - or maybe something philosophical or inspiring.

Anyway, that's it for now. Daniel had to skip Wednesday because he's working on something really cool. So keep your eyes peeled!

This week's been a little slow on the game itself. Daniel and I solved some pathfinding issues with the AI, and now he's gone off to make a cool waypoint pathfinder to see if that'd fit our needs better than our basic traditional grid-based one does. Other than this, I spent the week refining the AI even more - and now we're at a point where I think it's pretty acceptable. However, I still need to code some reactions based on environmental and context-sensitive situations, along with experimenting with some adaptive systems for Decem so that he can be more lifelike than he already is in battle. I found a paper on this, so I'm going to look into it and see if it fits our needs when I get some time.

I also solved an issue with WSWSound that was causing crashes due to too many sources being active at once. OpenAL's specification promised 256 if my memory serves me correct, however I was experiencing issues at 226 active sources. So I've capped it at 200 to play it on the safe side. This has solved all of the issues I've had with it in the past so far, but I'm keeping a keen eye on it regardless.

Due to all of our optimizations, I've also bumped up the maximum amount of AI per floor from 100 to 250. Technically I could push it to 300, but I want to give us some breathing room on the CPU. We've went from a 2 ms budget to 4 ms, which is actually pretty awesome for me because it means I can experiment even more with smart AI systems and other gameplay features.

I've been writing up a script for the story due to not being able to find a writer that'd stick. So I'll talk a little a bit about writing the story and dialogue for the game too.

We Shall Wake aims to have a story that's well written but doesn't push itself on the player. The way I'm writing it takes this into account, making dialogue only forcefully happen every ten or so floors when a boss shows up. Otherwise, to talk to people, you can interact it with them in towns and what not to get more info on the game world and everyones perspective on what's going on within it.

So, along with having more linear written campaign dialogue, I also have a chapter in the script solely dedicated to just random encounter dialogue, where the AI will say something based specifically on their DNA and the personality data that it contains. Right now I've written around 172 lines of this kind of dialogue, each modifiable in around 1 to 5 ways. Each AI will have a limited amount of dialogue they can use, but for the sake of statistics, if each AI could say 5 things, and we only considered just the base of the 172 lines, we'd have around 1,183,009,464 possible combinations of dialogue from each AI.