Basis 2d animator on SDL2

We have just finished preparing the initial release of a completely free new 2d skeletal animation tool called Basis. We started roughly 2 1/2 years ago and it has come so far since then! SDL was one of our very first implementations to use the animations. What an awesome framework!

It did pose some challenges though. Not having a generic way to render texture mapped triangles was definitely an issue. So we implemented two SDL examples! One finds opengl and uses it (really basis immediate mode stuff…), and the other one uses software mode. For the SW version we implemented a really basic, generic (but accurate) rgba textured triangle renderer.

Anyway, Basis is completely free for all uses, but it still has a lot of work to do, which is why we eventually determined to start a Kickstarter.

It’s here with the link to the download page. (http://www.kickstarter.com/projects/1457278266/basis-bone-and-sprite-integration-system)

This will pretty much determine how much further we can take it. We have no idea how the community will respond, but we’re excited to release finally! We are grateful SDL is so available and so easy to use - especially all the work that’s gone into version 2 is really unbelievable. As Basis evolves and grows, so will the SDL implementation, of course. Please let us know if there is anything we can do to make the SDL version better (it is still a little baby), or better yet, feel free to contribute if you see a way to help. Thanks to everyone :slight_smile:

It’s looking pretty good! Good luck with the project and getting the
funding it needs.

Do you have any information comparing it directly to Spine and/or Spriter
as far as features, workflow, and platforms?

Jonny DOn Fri, Jul 12, 2013 at 6:38 PM, achild wrote:

**
We have just finished preparing the initial release of a completely freenew 2d skeletal animation tool called Basis. We started roughly 2 1/2 years
ago and it has come so far since then! SDL was one of our very first
implementations to use the animations. What an awesome framework!

It did pose some challenges though. Not having a generic way to render
texture mapped triangles was definitely an issue. So we implemented two SDL
examples! One finds opengl and uses it (really basis immediate mode
stuff…), and the other one uses software mode. For the SW version we
implemented a really basic, generic (but accurate) rgba textured triangle
renderer.

Anyway, Basis is completely free for all uses, but it still has a lot of
work to do, which is why we eventually determined to start a Kickstarter.

It’s here with the link to the download page.http://www.kickstarter.com/projects/1457278266/basis-bone-and-sprite-integration-system

This will pretty much determine how much further we can take it. We have
no idea how the community will respond, but we’re excited to release
finally! We are grateful SDL is so available and so easy to use -
especially all the work that’s gone into version 2 is really unbelievable.
As Basis evolves and grows, so will the SDL implementation, of course.
Please let us know if there is anything we can do to make the SDL version
better (it is still a little baby), or better yet, feel free to contribute
if you see a way to help. Thanks to everyone [image: Smile]


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Jonny D wrote:

It’s looking pretty good! ?Good luck with the project and getting the funding it needs.

Do you have any information comparing it directly to Spine and/or Spriter as far as features, workflow, and platforms?

Jonny D

Thank you for your encouragement :slight_smile: Feel free to spread the word! I can give some comparisons a shot. First I must say both Spriter and Spine are pretty nice tools - their creators have put a lot of hard, well thought-out work into them.

Features are interesting to compare because we approach problems in different ways. I can say at least they are cross platform whereas our runtimes can work anywhere, but our tool is currently Windows only. We decided to make the software full featured and stable first, then port (it won’t be too hard - but we have to be careful how we allocate our time right now).

We do feature a couple things which you won’t find anywhere else, yet. We feature the tails bone type, letting you bend a single texture quite naturally for things such as tails (of course), feet, rope, or necks, snakes, tentacles, etc. We also feature a repeat function which allows one to repeat any command that makes sense across multiple frames and animations, saving an enormous amount of work when tweaking things. Both of these are WIP (thus the kickstarter), but we have enough implemented to demonstrate. Texture autodetection, packing (Spine just got this), and our IK + locking solution are also a bit ahead of the pack, in our biased opinion. Again we are finessing and working the kinks out of these, which is why we need public interaction and feedback, as well as support.

Workflow is even harder because, again, we are doing things a bit differently. Take Spine’s dope sheet. It’s a common tool in animation. We can display individual bone and bone parameters a number of ways. We are trying a method which makes each key frame a visible “item”. Perhaps one day you can switch between multiple view types. The nice thing about this, is when it is complete, you will be able to edit the interpolation curves in line and move items around in a way that is just as natural, and possibly more so, as the dope sheet view.

I hesitate to do this comparison-style, so I will just say how easy it is to build an animation.

  1. Load an image with some “body parts”. Textures are autodetected, and it may not handle every case but we’ve not had a problem yet. Naturally community feedback will help.
  2. Go to build mode. Drag your textures in, align them into place (using a background reference image if desired), drag bones (which were automatically created) together to connect/parent skeleton. Use ctrl+drag to test each connection to make sure the pivot looks natural and doesn’t break your textures where they connect.
  3. Go to animate mode. Click each frame where you need a new key. Using IK or FK adjust as desired.

It looks so much worse typed out. You have to try it for yourself.

Platforms are for Windows only, currently. Again, we want to get the tool right first to get it into as many hands as quickly as possible. At the least it works well in WINE. The implementations for it are limitless. It is very easy to implement a runtime for Basis in another language using our included examples. I even tried to make a build for the Wii (using libogc and raw GX) and had it going in a few hours, having never messed with Wii homebrew code before.

Heh you asked a very broad question. It was hard not to make it even wordier. Hope that helps. :slight_smile:

Yes, that does help. :slight_smile: Thanks for the specific response.

How are the library implementations going, so far? I presume one is using
C or C++? Do you have a documentation link or can you provide a feel for
the code-side workflow?

Jonny DOn Sun, Jul 14, 2013 at 12:50 AM, achild wrote:

**

Jonny D wrote:

It’s looking pretty good! Good luck with the project and getting the
funding it needs.

Do you have any information comparing it directly to Spine and/or Spriter
as far as features, workflow, and platforms?

Jonny D

Thank you for your encouragement [image: Smile] Feel free to spread the
word! I can give some comparisons a shot. First I must say both Spriter and
Spine are pretty nice tools - their creators have put a lot of hard, well
thought-out work into them.

Features are interesting to compare because we approach problems in
different ways. I can say at least they are cross platform whereas our
runtimes can work anywhere, but our tool is currently Windows only. We
decided to make the software full featured and stable first, then port (it
won’t be too hard - but we have to be careful how we allocate our time
right now).

We do feature a couple things which you won’t find anywhere else, yet. We
feature the tails bone type, letting you bend a single texture quite
naturally for things such as tails (of course), feet, rope, or necks,
snakes, tentacles, etc. We also feature a repeat function which allows
one to repeat any command that makes sense across multiple frames and
animations, saving an enormous amount of work when tweaking things. Both of
these are WIP (thus the kickstarter), but we have enough implemented to
demonstrate. Texture autodetection, packing (Spine just got this), and our
IK + locking solution are also a bit ahead of the pack, in our biased
opinion. Again we are finessing and working the kinks out of these, which
is why we need public interaction and feedback, as well as support.

Workflow is even harder because, again, we are doing things a bit
differently. Take Spine’s dope sheet. It’s a common tool in animation. We
can display individual bone and bone parameters a number of ways. We are
trying a method which makes each key frame a visible “item”. Perhaps one
day you can switch between multiple view types. The nice thing about this,
is when it is complete, you will be able to edit the interpolation curves in
line and move items around in a way that is just as natural, and possibly
more so, as the dope sheet view.

I hesitate to do this comparison-style, so I will just say how easy it is
to build an animation.

  1. Load an image with some “body parts”. Textures are autodetected, and it
    may not handle every case but we’ve not had a problem yet. Naturally
    community feedback will help.
  2. Go to build mode. Drag your textures in, align them into place (using a
    background reference image if desired), drag bones (which were
    automatically created) together to connect/parent skeleton. Use ctrl+drag
    to test each connection to make sure the pivot looks natural and doesn’t
    break your textures where they connect.
  3. Go to animate mode. Click each frame where you need a new key. Using IK
    or FK adjust as desired.

It looks so much worse typed out. You have to try it for yourself.

Platforms are for Windows only, currently. Again, we want to get the tool
right first to get it into as many hands as quickly as possible. At the
least it works well in WINE. The implementations for it are limitless. It
is very easy to implement a runtime for Basis in another language using our
included examples. I even tried to make a build for the Wii (using libogc
and raw GX) and had it going in a few hours, having never messed with Wii
homebrew code before.

Heh you asked a very broad question. It was hard not to make it even
wordier. Hope that helps. [image: Smile]


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Jonny D wrote:

Yes, that does help. :slight_smile: ?Thanks for the specific response.

How are the library implementations going, so far? ?I presume one is using C or C++? ?Do you have a documentation link or can you provide a feel for the code-side workflow?

Jonny D

There are a handful of implementations… they are easy to do requiring maybe a night’s work each, but we are not trying to focus all our time here yet. There is both a C and C++ reference implementation. Of course, we use C for SDL, for libogc on the Wii, etc. and we use C++ for the libraries which are based on C++ themselves. Then it is simply some glue code. We actually wrote a small (incomplete) resource cache for each library impl., but of course it would be better to use your own if you have one for your game or project.

I think the best way to see what it looks like (and how simple the final interface is shaping up to be) is to look at the source!
Here is both source and binaries (http://achild.wikidot.com/local--files/basis/BasisDemos.zip)

Of course, keep in mind this is all WIP, but we do gladly welcome contributors for other libraries/frameworks.[/url]

Jonny D wrote:

Yes, that does help. :slight_smile: ?Thanks for the specific response.

How are the library implementations going, so far? ?I presume one is using C or C++? ?Do you have a documentation link or can you provide a feel for the code-side workflow?

Jonny D

There are a handful of implementations… they are easy to do requiring maybe a night’s work each, but we are not trying to focus all our time here yet. There is both a C and C++ reference implementation. Of course, we use C for SDL, for libogc on the Wii, etc. and we use C++ for the libraries which are based on C++ themselves. Then it is simply some glue code. We actually wrote a small (incomplete) resource cache for each library impl., but of course it would be better to use your own if you have one for your game or project.

I think the best way to see what it looks like (and how simple the final interface is shaping up to be) is to look at the source!
Here is both source and binaries (http://achild.wikidot.com/local--files/basis/BasisDemos.zip)

Of course, keep in mind this is all WIP, but we do gladly welcome contributors for other libraries/frameworks.[/url]