White Shining Rock Logo
White Shining Rock Logo

Development Toys

March 15, 2021 | Dukus | 34 Comments

When I decided to make Banished, one of my main requirements was a definite 'NO ANIMATION'! Well, at least as little animation as possible. The idea of modeling, rigging, keyframing, and adding all the things required to have animations didn't seem very feasible for a graphics programmer turned indie developer. So for the first half of Banished, everything was buildings, terrain, and a box for characters that hopped around.

Eventually came a day where I added chickens. I modeled it, textured it, rigged it, and spent probably more than a few days figuring out how to animate it. After that it wasn't so bad. I built some simple humans an made it work. But rigging models, setting up I/K, setting keyframes, and trying to make nice animation wasn't my favorite thing. With time I'm sure I could have gotten better at it. But with so much to do building the game myself, it wasn't a priority.

For my current game, I'm going to need a lot more animation. I still don't want to keyframe everything. Potentially twice too, since this time I have different male/female skeletons. There's a lot of animations I want. A walk cycle holding each and every tool. Different animations for every tool and thing the villagers can do. Running. Sleeping. Ah! Maybe hire an animator?

But instead, I decided to buy some toys (er, tools). I purchased them so I can build a bigger game than before but not have a large increase in workload, and they're helping me overcome the skills I don't have. 

So. I've been wanting one for a few years, and I am now the happy owner of an inertial motion capture suit. I put it on, it records my movements, and then I have animations. Yay!

But not all is easy in motion capture land. I've spent the last week or so building a pipeline that gets my animations into the game fast. I believe that traditionally, an animator would bring motion capture into another tool, modify it slightly to make it work in game, export that, and then bring it into a game engine. I want to just record and get that data into the game without a whole lot of extra work. Luckily, the motion data from the suit is very good. I don't have joints doing funny things very often. So there's not a lot of cleanup, if any at all.

The first technical thing to consider is that the animation is being re-targeted from my body structure, to whatever I've built for my characters.

Writing the re-targeting code wasn't as bad as I feared. I export a version of the skeleton of my characters in a T-pose that matches the basic configuration of the motion capture skeleton. This doesn't have to be the same way the character is modeled. The character could be in A-pose or N-pose or whatever, I just need to rotate bones into T-pose to match and export. Any transform differences are accounted for so I can map the rotation values from skeleton to skeleton. Then per bone I can pick which skeleton I want offset and rotation data from. I also had to write some code to move forward hip movement onto the root node which the engine needs, and reorient the entire model depending on which way it was facing in the motion capture data.

So once I mapped the motion data onto my skeletons, there are still a few issues. While the motion is good and follows how I've moved, based on arm length, leg length, hip width and shoulder width, the hands and feet don't end up exactly where I expect. In many cases this doesn't matter. But when it does, traditionally an animator would tweak the captured motion. But I'm going to use 2 bone inverse kinematics to place hands where they need to be when it matters. This also helps when interacting with objects. The same animation could be used to pick up different size objects and the I/K will put the hands in the right place. Feet sliding is taken care of by scaling the speed of forward movement based on the ratio between hip height in my characters skeleton and the hip height in the motion data.

The last issue is looping animations. In a walk cycle, the end pose needs to match the start pose. But it's really unlikely I'll actually match 100% by recording data. So I blend the beginning and end of the animation with the data on the other side of the loop. It's close anyway, and by blending a few frames together the loop looks perfect.

So after all that work was done, lots of testing and tweaking, I can now build animations fast. Put on the suit, record the motion I want, Then I scrub through the recorded data to find what I want and export it. My engine can read that exported data and a simple text file configuration tells the engine how to compile the animation for a character.

So does my recorded looping walk cycle look like? Not bad!

I think this is only the 2nd time I've modeled a human. I'm getting better at modeling. And rigging for motion capture was certainly an education. (Does anyone enjoy applying skinning weights to vertices?) The models are a work in progress, and I built them as fast as possible to test the mocap. They will likely be edited and different as time goes on. I hope to add hair options, different clothes, skin tone, etc. But for now these models will move the game development forward.

Another toy that deals with motion capture, are motion capture gloves for recording hand movement. Currently my models have mitten hands, but I want it for recording hand positions while holding tools or having palms facing out while the thumb does other things. This way I don't have to go into each animation and decide where the models will be gripping something versus having relaxed hands.

One cool thing about having the full hand motion capture data, is that I have full finger data, so if in the future I wanted to add the index finger, I'd just have to modify the models, and re-import the animation data. No other work needed.

Once I got it working, (which took most of a week) I made a bunch of test animations and got them into the game engine in around 40 minutes. That includes putting the suit on and setting up, recording motion, exporting to fbx, and configuring import frame ranges.

(Why is my shadow resolution so low in this screenshot? I was looking at the characters and didn't notice til after I made the gif. Hmm...)

I think I'm still going to need to traditionally animate animals, and I might hire someone for that. But I also now have an animation re-targeting pipeline, so all similar animals could potentially share animations, reducing the work required. Or at least I could get new animals in and working while animal specific animations get built.

The last toy (er, tool) I bought a digital screen drawing pad so that I can use a pen to paint textures and models directly on the screen. Previously I did everything with the mouse, and while that's fine and I have a workflow for it, being able to use a pen directly on a model is pretty nice. Plus maybe I'll get better at drawing too. I don't have any animated gifs to show that though...

Leave a Reply

Your email address will not be published.

34 comments on “Development Toys”

  1. Very interesting post! Great job on the modelling. Surprised this is your first time working with all of this technology. Great job, my friend!

  2. still amazed by how dedicated you are to the development of this game. I've been getting your email for YEARS now and can't wait to play it again after my current hiatus. Love you dude keep up the good work

  3. I really enjoy reading through all of your updates. A suggestion for potential side revenue, if you're willing to share your IP... I bet other aspiring developers would be willing to pay for the tools you have developed, if they are something that could be fairly easily wrapped and packaged. In this case, I'm sure you're not the only one who would appreciate a shortcut from motion capture to implementation.

    That said, I can't wait for this next project to be ready for release. I'll be one of the first to buy it!

  4. Wow. Its coming along very nicely.

    Genuine question: Are you gonna animate the chicken's motion yourself or are you gonna hook wires on one? xD

  5. When last time i tried to create mini game.. for all different jobs..
    and so on..
    I liked to create maps πŸ™‚
    Possible to create most of that with AI, but still.. sometimes need human which can create really amazing view.

  6. It's still fascinating and amazing that a single person can produce a complete game like this.

  7. I can't blame you for not wanting to animate... I've just spent the last week learning the basics of animation and completed my first loop yesterday. I now know how unbelievably tedious it is to make something look natural by keyframing.

    Your mo-cap results look great though. Now if only you included a /dance gif in the post πŸ˜‰

  8. I have been following since the beginning of Banished. I am very admirative of your work. Keep going, you deserve another success.

  9. Absolutely amazing for an indie developer; I was transfixed by your post, absorbing every word. Keep up the amazing work, and thank you for keeping us involved.

  10. Really interesting bkog again Luke. Very cool that such a motion capture set can take away a lot of work while being very versatile.

    Good luck on the project and enjoy this achievement. ^^

  11. Of all the games I've played I love this one the most. I've spent countless hours playing and enjoyed every moment. Unlike some games where one can spend a hundred hours playing only to have the economic fail and then the all that time and effort becomes a huge waste of time where if applied to a Beethoven Sonata could have been learned and performed. No so with Banished where one can always come back to it and improve on it. I'm using a gaming computer with 32 GB of RAM yet Banished had the power to create such lag that it was impossible to scroll from one side of the map to the other because the build was so extremely large.

  12. lol I forgot to say thank you for all the work and time you've put into developing Banished. It is for me one of the top two games ever created. I can only imagine what it would and could be like if you could clone yourself. Thank YOU!!!!!!!!

  13. I love following your progress.
    What can I say?
    Just keep on keeping on, we're all enthusiastically waiting to see results of your hard work.

  14. Looks great and I admire your courage to do it... I wish I could do the same! Being an old programmer with a long desire to do computer graphics, I went back to school to learn, but I was getting to old to be any good at it, I could grasp the technicality of it but was missing some of the graphical ability. Being a perfectionist, the only thing that i notice is the walk of the woman: She walks like a man! A woman walks putting her foot almost along a single line, that's what makes the movement of the hips. I recon that a lot of games have that problem too, especially the older ones.

  15. Great to get more progress emails πŸ™‚ Any working name yet? If you want any collaboration I can make models for you!

    I know the devlog is just another thing to do, but honestly it is a great read, keep them coming!

  16. Seriously, I can not wait for this game to launch.
    I also love following the progress. As a carpenter myself, this is something completely different. With a few thousand hours under the belt with Banished and loving every moment of play, this surely will see me up all night and day just for the fun and relaxation it surely will bring.
    GoGoGoGoGo boys.

  17. Sir, if needed, please hire someone who can help you.

    I've been searching for a game like banished and nothing yet satisfy. I had played banished a lot and but it always comes to the point where there is nothing to do so I try something new instead, but to no avail.

    So excited to finally play your new game. Thank you for the updates!

  18. I just wanted to say thank you. Banished got me through the death of a loved one. I have 5038 hours into this game and I am grateful to you for making it. Good luck with any future endeavor!

  19. I'm so glad to see your posts are back πŸ˜€ missed that year without them.

    1) Ok so in the previous post you talked about villagers idling and one day hoping to give them times of day where they wanted to do certain actions or specific events villagers would want to go to, I dont know if your characters will be named but if you intend to go as deep as "fishermen prefer to hangout at the beach or the pub", "kids prefer to hangout in the park or explore nature", "painters prefer to spend time in the storage looking at supplies", basically giving the ai a preferred idle location based on their career then maybe you could look at stardew valley for inspiration? That game does a great job having the different ai want to go to different locations or events at different times or on different days like a real community. I dont know how well that converts to the game you're making as I am not a dev buuuut I hope the idea helps you πŸ™‚

    2) I hope you will (or already have) hired one or two people to help you. I love that you made banished on your own but I worry there are a lot of tedious tasks that you are forced to sink your time into. I don't know your finances but if you have enough for 1 or 2 helpers and IF you think their contributions to a final product will pay off then I strongly support it ! πŸ˜€
    I view it purely from this angle, a lot of your posts talk about how you plan something, implement something and then spend forever trouble shooting it. if you have a 2nd or 3rd person helping you implement your plans and then also bug fixing them it should shave a lot of the grinding off development time right?

  20. We need Banished 2 or Banished remastered. This game has huge potential. Graphic is not important these days for game lovers. So let stay same graphics and more stuff in game.!

  21. I'm late to the party, but I am overjoyed to find out you've been working on another game! Over the years I've gone back to Banished many times and have wondered when I would ever see another Shining Rock Software game. Reading over these posts, I'm looking forward to seeing what you come up with.

  22. Longtime fan, here. Banished got my wife and me through some tough times. There are so many games that try to capture what Banished did and none have come close. I think it's something about the way it presents itself; its mood; its authenticity. I love how the game can be all at once peaceful, yet realistically brutal; the calm summer crop and pasture fields being tended to; the tragic starvation and sickness in the late winter months. And that music! I'm rambling. Just wanted to say thank you for Banished and thank you for sharing your development journey. Can't wait to see what you have in store.

  23. Banished is one of my favorite games. I've noticed that a newer game called Endzone is popular on Steam and it seems they either bought, stole, or copied some source code from your game. I know you created a lot of your systems on your own so I'm wondering if you sold it to them or if it's some former developer or outsider who coopted the Banished code? Or is it licensed to them in some way?

  24. Occasionally check in to see if anything is new with Banished as it is still one of my top games to go back to and glad to see you are working on a new game!

More Posts

Code Rot

April 17, 2022
1 2 3 47
Back to devlog
Back to devlog
Β© Copyright 2021 Shining Rock Software
Website Design & Branding by Carrboro Creative
menu-circlecross-circle linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram