It’s been a slow week. Combine bad weather, an outbreak of flu among the team, and the fact that we’re all starting new tasks, nothing concrete really got finished this week. We’re definitely not procrastinating though, here’s a list of what we’ve done:
Worked on the wood brick. Before this week, wood behaved pretty much like a standard brick, but we have different plans. I mean, there is no point to having a brick with a different texture that does the same thing as the standard one, right? At the moment, it’s nothing we can show visually, but we’re designing wood to be useful for building the framework of the building. Wood will be less resistant, but will be more flexible as a building material.
Updated the bricktron pathfinding module. In the past weeks, we talked about updating the pathfinding system so that it uses a faster algorithm. This week, we updated the Bricktron so that it can read that new system easier as well. Before, the bricktron would refer to a global script and ask what path it was supposed to take. Now, each Bricktron has his own script that can find the path on it’s own. It’s also faster to allow real-time updating of the path, in case there are moving obstacles in the way.
Started working on the Level Of Detail for the terrain mesh. We’ve been talking about the LOD for the trees since last month, and we finished it. Now we are starting to implement a system that will reduce the number of polygons on the ground mesh. If everything goes well, this should reduce drastically the system requirements, since the terrain mesh is significantly heavier than the trees. The tree LOD was a proof of concept, and now that it works, we can use it on bigger things.
Redesigned the in-game character model of the Bricktron. This is the subject of the next section:
Redesigning the game character
So a few weeks ago, we decided to update our asset importing pipeline. Essentially, this meant fixing scale and orientation issues directly in 3dsmax, instead of in Unity. This fixed a lot of our problems, but unfortunately, this meant that we could not use our original character rig.
What’s a rig? The rig is basically the skeleton of the character model. When we animate the bricktron, we move the bones of the rig, and the “skin” (the visible part of the character) follows and deforms appropriately.
The problem is that rigs rarely scale properly. And since we changed our world scale to match the one we use in unity by a factor of 100, the rig completely exploded. Nothing could be salvaged so I had to re-build it from scratch. This gave me the opportunity to rebuild the character model a bit better too!
Here I will explain my personal process for modeling, rigging, texturing and animating character models:
I have a rather unorthodox way of modeling characters. First, I start by sculpting a detailed mesh in a software called Sculptris. It’s ridiculously easy to use and it’s free, go check it out. It allows me to model away without having to worry about topology and also lets me go into as much detail as I want. This is by far one of the most enjoyable part of the whole process.
Secondly, before importing this into 3dsmax to create a low poly version of the model, I bring the high resolution mesh into paint mode. This is where things get weird.
I proceed to paint the low poly mesh by hand on the high res surface. This allows me to be much more creative with my topology and lets me try different ideas. It’s much faster too, in my opinion.
Now that this is done, I import the model into 3dsmax, and simply recreate the painted mesh with actual polygons. Normally this would be one of the longer parts of the entire process, but in this case, since I planned everything out beforehand, it took me less than half an hour to get a low poly mesh.
Next, We have to UV Unwrap the low poly mesh so we can apply textures on it. This is the part everyone hates. It’s hard, complicated and you have to deal with stubborn tools that insist on messing up your work. UV Unwrapping consist of cutting out your model so you can lay it out on a flat surface. It is the digital version of papercraft.
Once the model is properly unwrapped, I do a quick pass for texturing. Contrary to everything else I do in Castle Story, the Bricktron model is not painted by hand. I prefer to build a clay-like shader and bake a bit of the lighting information in the texture. This gets me better results. Notice that I don’t include the face in this model because we plan on having face animations, and this involves having separate objects for the eyes and the mouth.
After that I have to build a rig (skeleton). This involves placing the pivot points for the joints in the right spots and testing how the knee of the elbow flexes if I place the joints differently. It is a very complicated process to build the bone hierarchy and create the Inverse Kinematic joints. This part took me most of the week, and I had to start over a few times.
Then we have to skin the low poly mesh to the bones. Basically, this means attaching every vertices (the points where the lines meet to form polygons) to their respective bones. To get a skin-like effect, we attach most vertices to multiple bones with a percentage. For example, a vertex on the top of the head will be attached to the head bone with a weight of 100%. However, a vertex in the armpit might be attached to the shoulder, to the upper arm and to the spine with a weight of 33% each. If this is done properly, the skin will deform realistically and the character will look good.
Finally we animate the character. This is where i’m at right now. I havent started this part yet. I will have to create animations for every possible movement of the Bricktron. There may be dozens or hundreds of animation in a finished character, but if I do a good job, they should all blend into each other and the character will look lifelike.
That’s all of it!
So yeah, this blog post is getting pretty long, so I’ll wrap it up real quick.
Soundtrack of the week
This was a pretty depressing week. Sickness, rain and cold. So I guess this calls for an equally dark soundtrack. An all time favorite band of mine, Massive Attack’s Heligoland has some tunes that really stick in you head for a while, Splitting the Atom and Paradise Circus are good examples.
Anyway, that’s it for us. Don’t miss the live chat session, like… right now! Friday the 16th, 8pm Eastern Time, on the CastleStoryOnline forum IRC.
See you next week,
The Sauropod team
10 Comments for Dev diary number five : Redesigning the Bricktron character