Well we’re trying a gif this time since the over all theme of the post is motion, let’s hope it doesn’t free… eeze. Annoying, some kind of stuttering going on I can’t seem t… o be able to keep moving my face.
J Here we’ve got the first iteration of a Humanoid root-motion rig driving the movement of Lech, with an overriding generic rig for the facial bones to keep that beautiful face smiling!
Continuing on I’ve created a system for combining meshes in real-time, I say I but google and Simple LOD was of more than a little help!
The characters and animation systems of Eco has as you see been my main focus this week, and after looking through my import settings I found why my feet were slipping around all over the ground.
As you can see, the sliding feet is no longer an issue on the Lech below, additionally you can see one of his feet are planted firmly on a high ledge, the back of his hand is planted on a pole and his face is angled towards the camera.
Other than the sliding feet issue, this is all due to Final IK a powerful and easy to use IK-system which we’ll use to get our little Ecozens to feel more firmly planted in the world, literally, it will also be used to make the characters look at things of interest as well as, pick up and hold items, without having to create tens of new animations and animation overlays.
Looks a bit washed out though doesn’t he? Here’s a preview of the current lighting!
Jona is working hard on making me look better, seems something about the lighting is off… Well, I look like this, this week, I wonder what I will look like in the next recap…
J So I’ve been sick as a dog the last two weeks with fever and what have you, but before that and even some time during I’ve been able to stay sentient long enough to create some much needed and some less needed but very cool things!
Starting off with something we really needed, new counters to put smaller items on, these don’t look too interesting but, they actually are, these are generated using my new Houdini counter generator, it’s not a digital asset as that would’ve taken much longer without giving any real advantages.
Instead it builds counters inside of Houdini based upon a curve, these are then exported as FBX-files which get a UV-pass in 3ds Max before moving through my counter Substance.
Since December is in my mind a time for creating quick finished assets within the scope of a single day, I wanted to take this chance to create an eye generator, here’s the first iteration, for this I’ve also created new eyes and a new retina which should look a lot better when PBR is applied.
Here are the new eyes rigged on Lech, there’s something missing, doesn’t look too good without shading does it.
In designer however, it does look a lot better and this should also be a lot closer to what it’ll look like inside of Unity.
Next up, with the eyes so much improved I wanted to go in and create some new teeth as well, here’s the final result.
For the moment I’ve created a new texture set for teeth and eyes, however, since I’m using the same EcoTales PBR shader, I’m probably going to add this into the character’s main texture, that’s the true beauty of Substance, I can just change the UV layout completely, blend the final eyes and teeth on top of the character and bam, done!
By now I’ve made this look a lot better again, but this pre-pre-alpha picture still gives you an idea of where we’re at with the art currently.
With that everything made before Christmas has been posted, Happy Holidays (in retrospect) everyone!
We’re exiting the third week of December and with it a new artifact list has been made and followed, the boys have also thrown out almost every single asset store pack related to code and systems that they had bought and are starting fresh.
So far things are going much better and despite the more or less complete restart of the project code-wise, they’re already further along than after a year of trying to get the asset packs working.
J Luckily, the game is mainly graphics heavy, and everything done along those lines is still useful, but that’s not what you’re interested in, here are the new assets that I’ve made this week. Let’s just say that #OneHourGamedev has been more like 8 or more hours most days!
I started off with reworking the Counter so that it can more easily be upgraded, on display here is the third tire Counter. After staring at my scene for a bit, wondering why everything looked terrible, I looked over my import export settings from Substance and changed all of my normals to OpenGL, imagine the normal blend an mix nodes outputs when the bake was OpenGL and the graphs were not. Makes you shudder doesn’t it?
I also worked on an incredibly silly digital asset, which in the end just turned out a simple static mesh.
In the second image from the top you can see the final result of a semi-advanced Houdini cloth simulation for paper pile creation, in the image above is the final non-optimized mesh.
As this was my first time using cloth systems, it took a few hours to figure out, especially difficult was getting rid of the insane flipping the thin paper meshes produced.
My conclusion is this, while it was fun to get into something new, there are better ways of doing this manually, on the other hand, I’m quite happy with the final result so I’ll probably look deeper into the cloth system when I’ve got the time!
I won’t post a more high resolution image than this, cause it’s a trade secret, or rather, knowing everything in advance would make playing the game rather boring. Anyway, almost all of the 14th went to writing things related to design and writing it down in the design document.
Starting to work on some tileable PRB textures using Substance Designer, still got some ways to go but I feel like I’m slowly getting there!
Got the lectern done as well, this one, like the counter is also a Tire 3 upgrade, wouldn’t want to show the shop off at the lowest level now would we?
Here are a few simple books which can be automatically placed along a curve using the Houdini Engine, placing these manually would take a few minutes, now I can do it in seconds!
A lectern without a book to write down your transactions wouldn’t be very useful, here’s your new receipts book! Also made in Substance Designer, I think it turned out quite nicely, in the future we’ll have a shader to allow your player character to write down things line by line!
K How trying to save time caused us to waste time. That’s the title for this past months working on this great game.
So what’s the issue then; well, the packs we bought are great in a way but often they try and do too much making fitting them in with the rest of the systems way too difficult. We had an animation controller that also had its own inventory system.
This inventory system wasn’t good enough and made it difficult to fit into our other bigger, better and bought inventory system that was also working on adding a quest system, which wasn’t going to work with our quest system. It all adds up and soon enough you’ve forced all the systems with duct tape to play a long without actually liking each other and adding a new system just gets increasingly difficult.
What we decided to do is slope all those bought systems, and sure some we will (might) use later on but after a much more thorough look on it because some things are just easier to do yourself and never ever will I again forget the design principle of KISS (Keep It Simple Stupid).
After ripping out all that junk, all that junk inside our trunk (do you get the joke here? some nice programmer humor for you) I started with building a very small base for our inventory system. It will grow in a steady pace.
I also started working on a nicer GUI for the shop inventory, being only a two person team we decided to spend some money on the graphical assets of the GUI making it look good since we just don’t have the time for it right now.
#OneHourGameDev has started, it’s a very nice concept started which we joined last year, well, we won’t be worse this year, just look at me! My face and eyebrows have been updated by way of substance!
Isn’t technology wonderful?
J I threw the first days of this week into the last post, so if you want some Ambrosia, check it out!
For me the most important thing about this recap is December 1st, this means the start of the one hour game development initiative and while one hour doesn’t sound like a lot, it is if you count it as one additional hour of game dev!
That’s how I’ve chosen to interpret it and this one hour I’m spending on things which will be easy to show off and hopefully started and finished within a single hour!
First up a window substance, I’m thinking it’s probably too photo-realistic for Eco but some minor tweaking should fix that, just the albedo with a normal map, alpha and no roughness should work well!
Second is this roof tile substance loosely based upon this tutorial, because, learning from your seniors is the way to go!
Another few hours of work on the roof tiles, most of them spent on trying to make the sbsar work inside of Unity and while the substance can’t be used currently (it looks horrid despite the CPU engine looking good in Substance Designer), I’m still very happy with the ease of bitmap export. I’ve left a post on Allegorithmic’s forum but if you know why, please leave a message on Facebook!
Here’s the old texture as compared to my final substance, it will be viewed from the ground so I think this will be more than good enough!
I’ve also finally found the Gradient (Dynamic) node, amazing node which allows me to easily change skin colors of the Eco characters. The names are liable to change but for now we’ve got Elvira, Dortmund, Lech and Triarii.
Bet that was your face when you saw my new eyebrows!
I’ve heard I’ll be getting a tongue and some shiny new teeth as well, but not yet… Not a priority they say…
J What a week and weekend! Black Friday really was a great one this year, allowing me to buy, among other things, the Substance Suite.
But I get ahead of myself, let’s start with week 37 which I dedicated to scripting new rigging tools for myself in Python. Since sharing is caring I extended one of them until it was user friendly enough for anyone to use.
It is a very simple script that allows for easy skinned joints selection based upon your own naming conventions. It’s the first in a range of free scripts I’ll be making available via my new Gumroad, so check it out!
Let’s move on to some art, here’s the first edition of Lech’s new texture, completely generated inside of Substance Designer with procedural eyebrows.
Comparison between new and old.
In the end however, I wasn’t happy with the look of this newly generated texture, I felt it took some of Lech’s personality away, at the very least, it changed it, also, the eyebrows were difficult to control and looked a bit too realistic for my taste.
What happened next, you wouldn’t believe! I split the graphs… Let’s start with the most important part, the skin generator, it simply takes inputs in the form of the textures generated from the high poly and outputs three textures. Albedo, Normal and Rest (R: AO G: Metalness B: Smoothness A: Emissive).
Skin graph click me!
A final note on the above graph for the people interested in the “FaceTemperatureHue” frame to the left, it’s simply a lot of shapes that create a pattern of red, yellow and blue based upon the science of face color areas. Look it up, it really does add a lot of (make sure it’s VERY subtle) interest to the face, which, when it’s half of your character’s body, is very important!
Next up is the eyebrow generator, which is a separate graph that can generate pretty much any kind of eyebrow I can image, it’s a bit clunky and when I start working on a mustache/beard generator I’m going to have to go about it more cleverly. As Neofur was also on Black Friday I’m planning on using the outputs from these to generate a separate texture for the inputs that Neofur needs as well.
Eyebrow graph click me!
Arguably more important than the graph itself is the parameters, here they are in all of their glory, rotating hairs, changing colors, moving, scaling and warping, what else could you need?
Here are three different brows that I’ve generated, once I’ve made the beard and mustache generator I’m probably going to recreate this one as well so I’m counting these as a low priority WIP for now.
Finally we come to this, the least impressive looking graph, it simply takes the bakes textures and inputs them into the skin graph, takes the skin output and blends it together with the eyebrow generator, in the case of Lech I’ve added some extra nose reddening since that fits in with his backstory.
Combine graph click me!
Here are a few steps inside of Unity where I’ve been using the Amplify Shader Editor to put together a custom shader capable of using the textures that Substance Designer has generated for me.
An important part of my workflow is that the UVs of all of our humanoids have the more or less exact same UV-layout, this allows me to use Transform 2D nodes to mask special regions and still know that the graph will work for another character.
Some things are not going to be the exact the same as you may imagine, Lech gets a small nose reddening and someone else may get some work done on a scar, something that is constant is however, lips and the fact that they are never the same size nor do they ever cover the exact same area. This is why there’s an extra, hand authored black and white map to take care of lips and mouth bag.
The final thing I worked on was an Ambrosia substance, not sure about it, why not leave a comment on it on our Facebook page, I’d love to get some input!
J Lech didn’t get a chance to say anything this week, and I don’t have that many words for you either, but let’s take a quick look-see at what I’ve been up to.
First up is a new rig for Ambrosia, or rather, the continuation of her rig, I’ve added some fleshy squash and stretch to her legs and I’ve also started to add some more definition to her face, as she’s a hero character that can only ever exist once in a scene, she deserves some more geometry, especially since the humans have already been refined.
Doesn’t look like much, but here’s a quick gif of what we can do now, not that we’d want to.
More importantly I’ve been working on the facial animations, specifically, I’ve been working on getting them into Unity, if you went to GameOn you’d’ve seen a rather sad preview of Lech talking to this female customer, her mouth open wide, jaw bouncing up and down and Lech’s disturbingly puckered lips.
After a few hours of trying to get the facial animations to work with the humanoid rig setting inside of Unity I switched over to generic, this is going to cause some other issues but after just a few minutes I had my first working animation.
Huzza! Sure, almost, you see, getting the animations to work consistently still wasn’t possible, despite my new exporter script helpers (I love Python!). Enter Maya Game Exporter, I might cover it in a short video in the future, for now, just try it out, it’s amazing. Using the Game Exporter in combination with some basic Python, everything works like a charm, every, single, time!
Here’s a short video on what it could look like (this is not what it’ll sound like though!)
K So many things I ignored during the pre-GameOn event. But now I’ve had the time for some R&R and to handle most of those things and starting working on smaller fixes to get som functionality into a more stable state. So basically I’ve been all over the code base for some quality assurance.
Next step is either take what we have further to the next step or maybe starting on some dialog, but that sounds a bit early to me, maybe some basic customer behaviors, well it seems the next step is a meeting with Jona.
Almost didn’t catch the camera on time, loads of things have happened this week and there are some very exciting things on the horizon for the KJs, you should look at what they’ve been up to, looks interesting.
J Here’s something which most of the little Eco people will be quite happy to see, it won’t however influence Lech in the slightest.
Without wasting any more time, here’s the first hair prototype! Still not 100% sure if planes are the way to go, but sculpting each and every hairdo is going to take too long, and that may have decided this for me.
Above you can see what the hair looks like inside of Maya, not really the most good looking thing I admit, glad I managed to struggle through and get it into Unity, maybe I shouldn’t see this, but out of all the images in my part of the post, this is the most important one, why? Well, read on why don’t you?
Important to note is that all of the three meshes above, left : black alpha mess, mid : loads of planes, right : planes using the vertex normals of a sphere, actually have the exact same geometry.
Most interesting of the above is undoubtedly the model to the right, why have I edited the normals to make it look like that? To know this we have to deepen our understanding of how specular highlights (or in real world terms reflections) travel along a hair “surface”.
I’ll keep this short and sweet; since a hair “surface” in the real world is actually composed of thousands upon thousands of micrometer thin tubes, each of which has its own specular highlight. Any light falling upon this “surface” will be stretched along each strand defining it as an anisotropic or directional dependentlight distribution.
Don’t take this as the absolute truth, in reality it’s much more complicated, however, this is how we can look at it when creating a shader to visualize hair.
Here’s a video of a test I created for Legends of Aethereus back in the Unity 3.5 Alpha, look at the black hair, that’s what I’ve been babbling about for what must feel like ages!
Here’s the texture that currently drives the hair, two small patches of thick and thinner clumps of hair which have been placed with a few percentages of randomized scale and rotation. R and G controls alpha cutting; B and A controls alpha blending.
Finally we have the in engine result, where I have, for now at least, skipped everything we just talked about. Instead, every hairdo currently undergoes two separate shader passes, the first one, is a double sided alpha cutoff, and the second, an alpha blend to create the thinning at the edges of the do.
Looking at the outline of the hair, you can tell that I’ve made good use of the manipulated normals, using a Fresnel effect to highlight the edges and make it look even more as if it’s a whole rather than a load of separate planes.
I might be back next week with an aniso-shader, however, I’m afraid it’s going to look too photo-real, and that’s not something we’re looking for.
With a lot of hair research, creating and trashing, the only other thing I’ve had time to create was this bush, at the time of creation I thought that the difference in hue and brightness of the different leaves was enough, looking at it with fresh eyes, I realize that this asset will need another hour.
Now I’ve only got one more paragraph until I’m done, if you look at the leaves, could you guess that they were created inside of Substance Designer? Pretty cool, isn’t it?
K We are on a roll, we have some super exciting news that we won’t be sharing just yet.
We have been putting more focus on the shop part of Eco Tales this week and and will continue doing so for some time now. I’ve started with the customer and shop interaction and more specifically I’ve begun with pathfinding.
In the store the customers will be able to walk around, look at the goods before possibly come to the decision to make a purchase and if you manage your store like a pro you want it to be full of customers and that is why we have pathfinding with local avoidance so the NPCs just wont stand tightly squeezed into a small shop but they will walk around the other customers to get to there point of interest.
Pathfinding with RVO local avoidance
As always, if you like this post, then please consider retweeting it or sharing it on Facebook!