A mini review of Spine - keyframed 2D animation middleware for unity

Hi guys,

Been messing about with Spine - http://esotericsoftware.com/ for a while. I must say it is extremely impressive. The animation tool is second to none, with just about every kind of animation you’d like to do being supported. You can change frames, per key, and even create “skins” which allow you keep the same rig and animations yet apply different graphic sets.

Hows the unity side of things? I’m pleased to say there’s robust C# support (works fine in boo and .js btw!) and a nice workflow. You’ve got tight integration with 2D Toolkit and in any case, its trivial to set up blending between frames with a component. Then you just call SetAnimation(“name”, looping); to play (and blend to) the target animation. You can control speed, parameters and even queue animations up with AddAnimation.

Performance is in general very good - very smooth on mobile. I love the easy scrubbing of the animation, just by changing the speed parameter. Documentation has finally gone up for the runtimes and it’s comprehensive.

Had 8 characters on screen all animating differently - one draw call.

I won’t ever attach my name to, or endorse something unless I figure it’s good value for money and won’t waste people’s time. I’m happy to say Spine has entered my toolchain.

Give it a whirl - http://esotericsoftware.com/ if into keyframed stuff. Some guys even added normal mapped spine keyframed animation support (although that needs a rewrite, it shows it’s possible).

I wanted to highlight it here because almost nobody’s heard of it and its a crying shame. It’s very much cross platform supported across just about every engine out there, which is why it isn’t in the asset store, but don’t let that stop you from checking out the demo, the runtimes (with existing models you can import into unity to check the code side of things).

Have fun, I did :slight_smile:

Awesome! Very cool to hear that it is living up to its potential. Thanks for posting the insights and video. I have it, but just haven’t had the time to really explore it yet. This is something that I could have seriously used a year ago, but that’s always the case. We’ve been spinning our own, or leveraging the Flash IDE as a front end, but that always a pain to say the least. Having a tool dedicated and robust for 2D animation is long overdue.

Its good, I have played with trial version for some time now, finally bought it. It support gif output too!!

I heard of this a while ago and was really interested. I’m happy to hear a positive review from an experienced user.

My team and I would really love to make some 2D games (our in-team art capability is pretty much entirely 2D) and this looks like a really neat tool for when we do.

Oh I thought it was a Unity plugin. How exactly is the workflow for this if you’re using Unity and tk2D?

So, where is the difference to Brashmonkeys “Spriter” or the Unity Plugin: “Smooth Moves” ?

Looks like a nice layout, simplistic and all. Does anyone know how this performs with pixel art?

Has a unity plugin for playback, works fine with pixel art. We initially wanted it for attachments like hats and weapons (ie just using it for sprite animation not keyframed animation, in order to attach things for different frames, but moved on from there). The source code is all included and the author is responsive/active on the forums so all is good.

Something like this should be a standard part of the Unity editor IMO. Plus a proper tilemap editor and other 2d animation tools.

Great mini review! Glad to see Spine getting attention. I’m using Spine in a 2d platformer (Glob in sig) and its an awesome tool. Very good performance on mobile devices.

Thanks for the review hippocoder.

I’m just playing with the 2dtk / spine example scene and found that the spine boy skeleton is using 9 draw calls all by it’s self.

It looks like 9 materials are being set on the Mesh Renderer, but there are only 3 materials attached to the GameObject. Ideally it would just use 1!

Here is the inspector for spine boy -

So it looks like the draw calls were just caused by how the 2dtk example is setup.

After exporting the example again and making my own 2dtk sprite following the guide below, my character only uses 1 draw call.

Think this’ll be a part of the GUI revamp? I’m hopeful Texture Atlases and resolution per device will be a part of the features they release. Though I have nothing to go on, other than wishful thinking.

Gigi

This last week, I finally got to spend some time evaluating it and looking much closer at it.

It is really well done. I really love the approach they took in making it a very narrowly focused tool. Also I was surprised at the amount of polish and complete-ness in the app itself. Maybe it is a little sad that I would expect it be rough around the edges, since that tends to be case more often than not. But it was rock solid. I used it quite a bit, with some large and complex animations and some that had several hundreds of parts, and it never slowed down, crashed or did anything unexpected.

At first I was a little disappointed at what I thought were a lack of features, but that is actually a strength. It sticks to the core needs, and is done in a way that enforces clean usable output. And with a little creative thinking, you can do about anything you need. We typically use flash for 2d animation (and occasionally in-house tools). Flash has the advantage that you can do many awesome, creative and crazy things on the timeline. But that also is a problem trying to use that data anywhere else other than flash. You have to either have your animators stick to a rigid set of constraints, or try to clean it up afterwards. (and then of course translate all the information). Spine enforces that stuff from the start because of the need for clean output. It is very fast and clean.

The runtimes are brilliant. All the animation data is agnostic of platform and it is handled externally. I took the same animations and pushed them into four different dev platforms (didn’t try Unity yet), with minimal problems. And even so, those problems were just with the runtimes, and easy to fix.

The only real downsides/complaints I would have is with the interface itself. It is a little immature at this point, and gets a little cumbersome with larger animations or ones with a lot of parts. And it need some work on the hotkeys. The ones it uses are a bit non-standard and not configurable. Clearly they are trying to keep it clean at this point, but having modifier keys for common state switches would be very useful. (also native i/o windows would be a good thing). But even so, those are minor at best, and don’t actually detract from its usefulness.

It is a fantastic tool, and really well designed to pretty much drop right into a pipeline.

This is an excellent thread, thank you hippocoder for starting it.

I am very happy to see this engine/plugin is playing nice with 2D Toolkit.
Going to try and play with it.

My assumption would be that Spriter is better; the case seems to be that Spriter was being worked on first, the Spline people were following it, and when it started taking a while to release they quite literally ripped it off to make Spline with the direct intent to release first.
I read exactly that from an official source somewhere when trying to find the differences myself. I can’t remember from who or where, but it was either the Spriter or Spline devs saying it themselves.