Tuesday, August 13, 2013

Tworenas Snapshot 005

Hey, another snapshot! Because of my vacation I am on a tight schedule and didn't have time to write normal posts, so this time you'll get just the snapshot announcement. Anyway, this snapshot is all over the place, so writing some dev blogs would have been quite hard.

I'll try and catch up with the normal Monday release schedule from next week.

So this snapshot has two major features: skill tree and better grass.

I started expanding on the skill tree (ignore the stock icons, I didn't bother to find too many or assign unique icons to each skill; I'm searching for a proper artist to draw them right now):


This is about half as much I have designed in my spreadsheets, so in the future it will scroll and zoom. And of course, most of it is not implemented yet. Tool-tips and descriptions are also M.I.A., but soon they should be available.

I am yet to explain my concepts for the skill tree, but you have several paths that you can advance upon and they all share a theme, like in this partially filled in skill tree:


Some of the skills are already implemented and I have most of the skill tree planned out, so it just a question of adding both the skills to the tree and implementing them one by one. Adding things to the skill tree was very cumbersome in the past, but now I have created this nifty skill editor:


This allows you to specify position, requirements and relations between skills on the fly. Changes in system mode reflect instantly upon the skill tree and while clicking a skill in game mode adds a skill point, clicking it in system mode will highlight that skill in the skill editor.

The second new feature is updated grass. I greatly optimized grass and implemented a complex pooling system, greatly improving memory allocation, freeing and management, while bypassing the C# GC, which still has the unwanted property of making my frame-rate random each time it triggers. Doing GC on a several MiBs large heap in a framerate based application where all frames must take roughly the same amount of time is impossible, so the GC must never trigger a lengthy collect phase. While memory behavior is great now, memory use is still a little bit too high. I'll fix this in a snapshot or two.

So now grass is smooth as butter. But what else? I wrote a new set of shaders just for grass. I went with a new illumination scheme, less physically based, but it looks generally better:



Now you can subtly distinguish the shape of the terrain underneath the grass by looking just at the grass. Here is another shot:


As an extra feature on top of this shading, grass now support coloring on a grass bushlet basis, but I did not do anything with it. But it is good to know that if you want to make a single grass bushlet red or something, there is support for that.

Another new feature is grass response to terrain deformation. Raising terrain or lowering it too much might remove grass bushlets to prevent them from overlapping/clipping though each other. This is right now slightly buggy and sometimes wonky.

Finally, grass now supports lighting, like the terrain does. It uses the same limited unlimited scheme, but this time with a maximum of 5 lights/cell. This might seem less than the terrain that supports 10, but since the cells are smaller, grass lighting actually is more flexible than terrain.

And here is the problem: I implemented it, tested it on a computer and it all seemed release ready, but on my other computer, the entire scheme is all messed up:


There are clear visual glitches with the grass lighting visible. I have no idea why it does not work on this computer and on how many computers it works, but it is far too late to try and fix it now since I am so late with the release. I apologize for this major bug, so feel free to skip this snapshot.

I hope that snapshot 6 will have this bug fixed. Oh well, I'm sure this is not the first time a bug will sneak in just before the release.

Since this release turned out so buggy, I won't do a video or give you a detailed changelog. The changelog might become invalidated by snapshots 6's changelog. So snapshot 6 will be a pure bug-fixing release and will arrive on time on Monday.

BY AGREEING TO DOWNLOAD THIS SOFTWARE, YOU TAKE TOTAL RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE OR MISUSE OF THE SOFTWARE. I AM NOT TO BE HELD RESPONSIBLE FOR ANY POSSIBLE HARM THAT CAN BE CAUSED BY THE SOFTWARE NOR DO I GUARANTEE THAT IT IS FIT FOR ANY PARTICULAR PURPOSE OR THAT THE INTEGRITY OF THE SOFTWARE WILL BE PRESERVED WHILE BEING TRANSFERRED ON ANY AND ALL MEANS OF COMMUNICATION.

Link:  Snapshot 005

No comments:

Post a Comment