• Andrew Jonhardt

I hate Bone2D animation in Godot

I don't know why I've had so much trouble with this.


Why am I talking about Bones? Because of a game I created and submitted to Friday Night Game Jam #2020-39. The game is called "Surrender a limb to live", and it took me 3 hours to create (that's 3 hours of code and art, so not counting the planning of the project). You can play it here, if you'd like:

https://dgalga.itch.io/arm-or-leg


I surprised myself with "Surrender a limb to live", as this time last year I was incapable of creating any game at all in so little time. I was intrigued by the idea of building off of it. "Surrender" is, to my mind, only a few pieces short of a beat-em-up like Streets of Rage or Final Fight, so I've been working to expand "Surrender".


When I made "Surrender a limb to live", I constructed the character as a set of blocks in Asprite, and then created a series of poses that were then exported as a sprite sheet:



The art alone was complicated and time consuming, and I figured that was just the nature of the project I'd taken on. Then, in the Discord for the contest, I saw mention of bones in Unity.


Bones are basically an animation tool. You can use them to connect a series of sprites, like my building block images in Asprite above, and manipulate the bones to create a series of poses or animations. On the assumption that bones would save me time, I started experimenting.


The process of setting up bones in Godot isn't that difficult. The existing documentation, while not as clear as I'd like, should be enough to illustrate the process:

https://docs.godotengine.org/en/stable/tutorials/animation/2d_skeletons.html


Essentially, you create a series of polygons that uses an exported sprite altas, like this one:




The process of mapping out the atlas for each polygon is tedious (made more-so in my case because I couldn't disable snap settings, so Godot kept automatically closing polygons early and making everything look like this).

However, I expected to run into time savings in terms of animation creation at the end of this. Instead, I've found that every little mistake seems to completely screw up the relationship between the bones and the polygons! So much so, that the best solution appears to be recreating the entire bone structure for most issues. It's the kind of thing that starts to aggravate me a bit too much for comfort.















There's an alternative system to the Skeleton2D and bones solution called cutout animation:

https://docs.godotengine.org/en/3.2/tutorials/animation/cutout_animation.html

However, given how dependent it is on scene hierarchy, I've been hesitant to dive too far into it. Cutout animation does use Sprite nodes instead of Ploygon2D nodes, which might be important for some projects. There are some important differences between Ploygon2Ds and Sprites, such as the ability to easily flip a Sprite vertically or horizontally.


It's just hit me today that almost a month has passed since I started tinkering with this. I've been working on a basic, single-player-only RTS project as well, so it's not like I've been sitting on my hands. Still, the lack of progress is frustrating.


My current plan is to give up on Godot's bone and cutout animations and go back to Asprite. I hope to have more to show next time.


Until next month.

7 views

© 2023 by Andrew Jonhardt. Proudly created with Wix.com