Jump to content


Photo

[Wip] Gm Spine Runtime


  • Please log in to reply
50 replies to this topic

#1 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 15 March 2013 - 12:05 AM

GMSpineRuntime


An extension to draw and manipule Spine 2D skeletal animation at runtime for GameMaker Studio.

spineboy.png

powerup.gif



Download:
- Example: GMSpineRuntime.gmz
- Exe: GMSpineRuntime.zip
- Gex: coming soon

Features:
- Load JSON skeleton and animation
- Bone animation with linear interpolation
- Slot animation - color and frame animation
- Load imagens from included files
- Works for each platform

Coming soon:
- Curve interpolation


Edited by kabecao, 18 March 2013 - 07:54 PM.

  • 10

#2 Indecom4000

Indecom4000

    GMC Member

  • GMC Member
  • 1636 posts
  • Version:GM:Studio

Posted 15 March 2013 - 01:36 AM

Very cool, looking forward to playing with this :)
  • 0

LD-Logo-sml.png


#3 Dirigenten

Dirigenten

    GMC Member

  • GMC Member
  • 22 posts
  • Version:GM:Studio

Posted 15 March 2013 - 07:36 AM

Thank you so much! :D
I've been sitting on needles for an update on this and here you go and have it almost finished! Incredibly impressive work!
  • 0

#4 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 15 March 2013 - 12:48 PM

Very nice, looking forward to the improvements. This is already awesome progress.
  • 0

#5 aurel

aurel

    GMC Member

  • GMC Member
  • 47 posts
  • Version:GM:Studio

Posted 15 March 2013 - 11:09 PM

Launched the demo, thanks for your hard work on this!
Will use on next projects once completed :)
  • 0

#6 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 17 March 2013 - 12:55 AM

Updated.

I did a lot of optimizations.
Now supports slot animation with alpha, attachment and color change.
  • 3

#7 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 18 March 2013 - 07:20 PM

I did a lot of optimizations again.

 

Everything is almost ready snapping the cuver interpolation.

Now you can create instances of skeletons and animations to use like the objects.


  • 0

#8 trekkie

trekkie

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 19 March 2013 - 12:18 AM

I did a lot of optimizations again.

 

Everything is almost ready snapping the cuver interpolation.

Now you can create instances of skeletons and animations to use like the objects.

 

 

that is some awesome work your doing mate.


  • 0

#9 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 19 March 2013 - 12:27 AM

I did a lot of optimizations again.
 
Everything is almost ready snapping the cuver interpolation.
Now you can create instances of skeletons and animations to use like the objects.

Oh man great, gonna try that out first thing tomorrow. Thanks a ton!
  • 0

#10 Dirigenten

Dirigenten

    GMC Member

  • GMC Member
  • 22 posts
  • Version:GM:Studio

Posted 19 March 2013 - 07:57 AM

Awesome job, kabecao! :thumbsup:


  • 0

#11 aurel

aurel

    GMC Member

  • GMC Member
  • 47 posts
  • Version:GM:Studio

Posted 19 March 2013 - 10:12 AM

That's very good news!
I'll try to use it later this week in my projet :)
  • 0

#12 Dirigenten

Dirigenten

    GMC Member

  • GMC Member
  • 22 posts
  • Version:GM:Studio

Posted 20 March 2013 - 08:11 AM

I tried playing with this yesterday and found that having two slots, one empty and one with image assigned, on a single bone brought me a lot of trouble. The second (populated) slot just wouldn't show in gamemaker.

 

An additional problem that occured was that one of the hands (the frontmost slot) wouldn't show for my own animation no matter my efforts. This is probably my own fault somehow, so if anyone have insight as to what I have done wrong, please tell!

 

Fantastic work regardless, Kabecao! :thumbsup:


Edited by Dirigenten, 20 March 2013 - 08:14 AM.

  • 0

#13 esco

esco

    GMC Member

  • GMC Member
  • 306 posts
  • Version:GM:Studio

Posted 24 March 2013 - 06:29 PM

Looks great! Any plans for a GM 8.1 version?


  • 0

Esco... the original New Yorican and creator of the Castlevania: SOTN Hacked Project!
THIS PROJECT HAS BEEN MOVED OVER TO UNITY3D AND I NO LONGER POST HERE! MANY THANKS TO EVERYONE WHO HELPED ME ON THESE FORUMS, YOU GUYS ARE AWESOME! :)
This engine once completed will be released to the community and will hopefully be of great use to a lot of you platform game creators out there!
Link to the Project: http://sotnhacked.wordpress.com

Link to the DeviantArt Page: http://esco1979.deviantart.com/


#14 Dirigenten

Dirigenten

    GMC Member

  • GMC Member
  • 22 posts
  • Version:GM:Studio

Posted 24 March 2013 - 06:45 PM

When using views and the view gets moved (such as when following a character) the slots of the animations showing start disappearing and completely vanish after moving slightly further. Any clue on what could be causing such behaviour?

Great job so far, I'm having a blast putting it all together! :)


  • 0

#15 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 25 March 2013 - 06:27 PM

I tried playing with this yesterday and found that having two slots, one empty and one with image assigned, on a single bone brought me a lot of trouble. The second (populated) slot just wouldn't show in gamemaker.

 

An additional problem that occured was that one of the hands (the frontmost slot) wouldn't show for my own animation no matter my efforts. This is probably my own fault somehow, so if anyone have insight as to what I have done wrong, please tell!

 

Fantastic work regardless, Kabecao! :thumbsup:

 

Can you send me the project or json file to investigate?

 

This looks really nice. Is it possible to do it with everythin ginternal? Like the graphics and JSON files, perhaps with loading them from an internal script?

Keep up the nice work.

 

In your current version the Spine is based on file paths.

That way I can use skins with image of the some name separated by folders (look at the goblin example).

But texture packs will be implemented.

 

Looks great! Any plans for a GM 8.1 version?

Only if someone comes up with a json extension for GM8.

Or code a dll with the official C++ runtime.

 

When using views and the view gets moved (such as when following a character) the slots of the animations showing start disappearing and completely vanish after moving slightly further. Any clue on what could be causing such behaviour?

Great job so far, I'm having a blast putting it all together! :)

Must be a bug with d3d_transform_add_translation in GMS because the same issue don't happen in GM8.1.

If you don't scale the bones you can go to "spine_skeleton_draw" script and replace:

 

if os_browser = browser_not_a_browser {
                d3d_transform_add_rotation_z(arot);
                d3d_transform_add_scaling((sx + asx - 1),(sy + asy - 1),1);
                d3d_transform_add_rotation_z(rot);
                d3d_transform_add_translation(argument1+xx,argument2-yy,0);
                draw_sprite_ext(aspr,0,0,0,1,1,0,cor,ds_map_find_value(smap,'a'));
                d3d_transform_set_identity();
            } else {
                // For HTML5
                draw_sprite_ext(aspr,0,argument1+xx,argument2-yy,(sx + asx - 1),(sy + asy - 1),arot+rot,cor,ds_map_find_value(smap,'a'));
            }

for this

 

draw_sprite_ext(aspr,0,argument1+xx,argument2-yy,(sx + asx - 1),(sy + asy - 1),arot+rot,cor,ds_map_find_value(smap,'a'));

I'll report it in the bug tracker.


Edited by kabecao, 25 March 2013 - 06:29 PM.

  • 0

#16 Dirigenten

Dirigenten

    GMC Member

  • GMC Member
  • 22 posts
  • Version:GM:Studio

Posted 26 March 2013 - 07:52 AM

Can you send me the project or json file to investigate?

 

I managed somehow to solve my problem, but I'm not sure how. It could very well have been the export from Spine. I will try to recreate the problem soon and if I manage, I'll send you both the project and json.

 

Must be a bug with d3d_transform_add_translation in GMS because the same issue don't happen in GM8.1.

If you don't scale the bones you can go to "spine_skeleton_draw" script and replace:

*code*

I'll report it in the bug tracker.

 

Thanks a lot! I will try this tonight! :)

Update: Worked like a charm. ;)


Edited by Dirigenten, 27 March 2013 - 08:44 AM.

  • 0

#17 lobosan

lobosan

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 30 March 2013 - 08:05 PM

Hi. First of all, excellent work on this kabecao. I tried playing around with this. The demo works flawlessly. However when I apply the the scaling functions on the demo, it crashes.  Here's what I tried in the End Step event in objSkeleton in the GMSpineRuntime project:

 

var root_id = spine_bone_get_id(skel, "root");
spine_bone_set_world_scale_x(skel, root_id, 0.5);
spine_bone_set_world_scale_y(skel, root_id, 0.5);

 

 

 

It crashes with the error:
 
 
ERROR!!! :: FATAL ERROR in
action number 1
of  Step Event2
for object objSkeleton:
 
 
############################################################################################
VMError!! Occurred - Push :: Execution Error - Variable Get -6._bone_wsx(100065, 2432000)
 at gml_Script_spine_bone_set_world_scale_x (line 0) - // spine_bone_set_world_scale_x(skel_id,bone_id,x);
############################################################################################

  • 0

 

Mod Edit: Your signature has been spoilered as it breaks the maximum total height rule of 150px. Please fix.


#18 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 31 March 2013 - 01:40 AM

Hi. First of all, excellent work on this kabecao. I tried playing around with this. The demo works flawlessly. However when I apply the the scaling functions on the demo, it crashes.  Here's what I tried in the End Step event in objSkeleton in the GMSpineRuntime project:

 

I forgot to update these scripts.

Download the files again.

 

The world values are the final values to draw.

To really change a bone feature use the "base' scripts.


  • 0

#19 lobosan

lobosan

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 31 March 2013 - 05:32 AM

Thanks kabecao. Works great now.


  • 0

 

Mod Edit: Your signature has been spoilered as it breaks the maximum total height rule of 150px. Please fix.


#20 Chessmasterriley

Chessmasterriley

    Creative Concentrate

  • GMC Member
  • 1967 posts
  • Version:GM:Studio

Posted 01 April 2013 - 07:07 PM

Hello Kabecao!

 

First of all, excellent job!  This looks fantastic and I can't wait to be able to fully use Spine and Game Maker together to make some great games. 

 

One thing I was really looking forward to from the beginning was internal sprite/image index usage for the skinning.  This way, we can change portions of the skins on the fly internally.  Additionally, it would be nice to store the bone and animation data internally, perhaps as a large string.  Is this something that could happen, or would parsing that be too much?

 

Best,

Riley


  • 1
sig_preview_anim.gifsiggy_gif.gifzombie_01_walk.gif

#21 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 05 April 2013 - 04:59 PM

Maybe you can team up with the other guys that are so eager to help, if the remaining features are too much work? 


  • 0

#22 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 05 April 2013 - 06:47 PM

New update.

Add support to the new file format.

Fixed some bugs and now you can flip the skeleton.

 

Hello Kabecao!

 

First of all, excellent job!  This looks fantastic and I can't wait to be able to fully use Spine and Game Maker together to make some great games. 

 

One thing I was really looking forward to from the beginning was internal sprite/image index usage for the skinning.  This way, we can change portions of the skins on the fly internally.  Additionally, it would be nice to store the bone and animation data internally, perhaps as a large string.  Is this something that could happen, or would parsing that be too much?

 

Best,

Riley

 

The function that load the file returns all JSON data as string.

So to create skeletons by strings you can:

 

spine_skeleton_create(string);

 

Maybe you can team up with the other guys that are so eager to help, if the remaining features are too much work? 

 

It's virtually complete and anyone can edit the source code.

I just need the include files without bugs but it is not in my hands...


Edited by kabecao, 05 April 2013 - 06:47 PM.

  • 1

#23 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 05 April 2013 - 07:13 PM

Oh, great. What about some of the special features of spine, like animation blending and procedural animation? I also don't understand this part:

I just need the include files without bugs but it is not in my hands...

What exactly do you mean? Using the sprites added in gamemaker instead of external files?


  • 0

#24 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 05 April 2013 - 11:33 PM

We can't handle folders with included files and the way skins works for separate images requires it.

 

To mix animation you can use the spine_animation_update in sequence

 

spine_animation_update(leg_walk,skel,1,1,1);

spine_animation_update(arm_attack,skel,1,1,1);

 

I severely think make a dll with the C runtime for better performance in Windows... and wait for extensions support for the other targets...


Edited by kabecao, 05 April 2013 - 11:40 PM.

  • 0

#25 Chessmasterriley

Chessmasterriley

    Creative Concentrate

  • GMC Member
  • 1967 posts
  • Version:GM:Studio

Posted 06 April 2013 - 05:09 AM

What about assigning internal sprites/frames to the skins - is that possible with how you're assigning the skins to the skeleton?


  • 0
sig_preview_anim.gifsiggy_gif.gifzombie_01_walk.gif

#26 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 06 April 2013 - 03:54 PM

I forgot to mention but it's already possible.

spine_skeleton_create(spine_json_data,img_source)

set img_source to 0 for include files and 1 to sprite assets.

Sprite should have the same name as the files without the '.png' of course.

 

But need some tests.


Edited by kabecao, 06 April 2013 - 03:57 PM.

  • 1

#27 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 07 April 2013 - 11:01 AM

When I try to load my skeleton in the demo, it only works when I don't put in the name of the animation I want (Which then causes it to have none). Otherwise, if I give it the name of any of the animations in the file, this happens:

 

############################################################################################

VMError!! Occurred - Push :: Execution Error - Variable Get -7.duration(100062, 0)
 at gml_Script_spine_animation_create (line -1) - <unknown source line>

  • 0

#28 kabecao

kabecao

    GMC Member

  • GMC Member
  • 345 posts
  • Version:GM:Studio

Posted 07 April 2013 - 02:35 PM

Replece the spine_animation_create with

// spine_animation_create(spine_json_data,ani_name)
// create an instance from a loaded skeleton
// returns the skeleton id

if (argument0 != '') {

    var data = json_decode(argument0);
    
    if !ds_map_exists(data,'animations') || argument1 = '' return -1;
    
    var ani,ani_g,key,n;
    ani_g = ds_map_find_value(data,'animations'); // all animations
    
    ani = ds_map_find_value(ani_g,argument1); // current animation
    
    var duration = 0;
    
    if ds_map_exists(ani,'bones') {
        var map,s,key,i;
        map[0] = ds_map_find_value(ani,'bones');
        key[0] = ds_map_find_first(map[0]); // bone name
        s[0] = ds_map_size(map[0]);
        
        // Loop Bones
        for (i = 0; i < s[0]; i++) {
            map[1] = ds_map_find_value(map[0],key[0]); // type map
            key[1] = ds_map_find_first(map[1]); // type name
            s[1] = ds_map_size(map[1]);
            
            // Loop Types
            for (ii = 0; ii < s[1]; ii++) {
                map[2] = ds_map_find_value(map[1],key[1]); // timeline list
                //key[2] = ds_map_find_first(map[2]); // type name
                s[2] = ds_list_size(map[2]);
                
                // Loop Timeline
                for (iii = 0; iii < s[2]; iii++) {
                    map[3] = ds_list_find_value(map[2],iii) // time map
                    
                    duration = max(duration,ds_map_find_value(map[3],'time'));
                }
            
                key[1] = ds_map_find_next(map[1],key[1]);
            }
            
            key[0] = ds_map_find_next(map[0],key[0]);
        }
    }
    
    if ds_map_exists(ani,'slots') {
        map[0] = ds_map_find_value(ani,'slots');
        key[0] = ds_map_find_first(map[0]); // slot name
        s[0] = ds_map_size(map[0]);
        
        var rgba,r,g,b,a;
        
        // Loop Slots
        for (i = 0; i < s[0]; i++) {
            map[1] = ds_map_find_value(map[0],key[0]); // type map
            key[1] = ds_map_find_first(map[1]); // type name
            s[1] = ds_map_size(map[1]);
            
            // Loop Types
            for (ii = 0; ii < s[1]; ii++) {
                map[2] = ds_map_find_value(map[1],key[1]); // timeline list
                //key[2] = ds_map_find_first(map[2]); // type name
                s[2] = ds_list_size(map[2]);
                
                // Loop Timeline
                for (iii = 0; iii < s[2]; iii++) {
                    map[3] = ds_list_find_value(map[2],iii) // time map
                    
                    if ds_map_exists(map[3],'color') {
                        rgba = hex_to_dec(ds_map_find_value(map[3],'color'));
                        
                        r = ((rgba >> 24) & $ff);
                        g = ((rgba >> 16) & $ff);
                        b = ((rgba >> 8) & $ff);
                        a = (rgba & $ff) / 255;
                        
                        ds_map_add(map[3],'r',r);
                        ds_map_add(map[3],'g',g);
                        ds_map_add(map[3],'b',b);
                        ds_map_add(map[3],'a',a);
                    }
                    
                    duration = max(duration,ds_map_find_value(map[3],'time'));
                }
            
                key[1] = ds_map_find_next(map[1],key[1]);
            }
            
            key[0] = ds_map_find_next(map[0],key[0]);
        }
    }
    ds_map_add(ani,'duration',duration);
    ds_map_add(ani,'time',0);
    ds_map_replace(ani,'fps',room_speed);
    
    return ani;
}

return -1;

  • 1

#29 lobosan

lobosan

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 08 April 2013 - 04:23 AM

Hi Kabecao. I'm not sure if I'm misunderstanding the purpose of the "loop" argument in the spine_animation_update function. It appears that the animation loops no matter what value is entered there. What I'm trying to do is have the animation run once and stop at the last frame.What would be the best way to accomplish that? Thanks in advance.


  • 1

 

Mod Edit: Your signature has been spoilered as it breaks the maximum total height rule of 150px. Please fix.


#30 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 08 April 2013 - 09:09 AM

Replece the spine_animation_create with

stuff

Thanks, got it working now! Only weird thing now is that the lower arm on the front arm is missing, although it's picture is there and works fine in Spine itself.

 

 

To mix animation you can use the spine_animation_update in sequence

 

spine_animation_update(leg_walk,skel,1,1,1);

spine_animation_update(arm_attack,skel,1,1,1);

I don't understand how I use this. What do I put for leg_walk/arm_attack in my own skeleton? The arms consist of 3 parts each so what do I have to put here? skel is if it is mirrored?

 

 

 

 

Also having it as a DLL-only would be a bummer because it would be incompatible with mobile devices for so long (It's on the roadmap for 1.3 and 1.2 isn't even on the horizon yet) and I'm required to develop it for iPad/iPhone along the way.

 


Edited by RuinaImperi, 08 April 2013 - 09:39 AM.

  • 0

#31 andromedapanda

andromedapanda

    GMC Member

  • New Member
  • 3 posts
  • Version:GM:Studio

Posted 16 April 2013 - 10:29 AM

Hi kabecao!
 
I want to know how to set the skin.
 
Here's my setup.
 

c0044931_516d242208826.png

 

 

 

 

 

This is the code. 
 

 

c0044931_516d2423097d8.png

 

 

 

And this is the result.

 

c0044931_516d2420a54ea.png

 

You are wrong I have a set, then?

 
Please tell me how.
 

 


  • 0

#32 BPO_Jeff

BPO_Jeff

    GMC Member

  • GMC Member
  • 14 posts
  • Version:GM:Studio

Posted 18 April 2013 - 07:18 PM

[EDIT: Whoops, nevermind!  The error was all on my end, I just got a new CPU and didn't have my graphics card drivers updated!  Now it works flawlessly!  :) :)  Thanks again for doing this, can't wait to use it in a project!]

 

Awesome work all-around, thanks a lot for giving this a go!  Spine is an awesome animation tool and GM being able to support it would let a lot of smaller indie developers pump out much more professional looking work.  :)

 

- Jeff


Edited by BPO_Jeff, 18 April 2013 - 10:39 PM.

  • 0

Follow my gameDev progress on Twitter at @BPOutlaws or my gameDev blog at http://www.bulletproofoutlaws.com/


#33 lobosan

lobosan

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 20 April 2013 - 06:44 AM

hi kabecao. Seems there's a memory leak in the spine_animation_create function. Is there reason why the first argument of spine_animation_create is the json data instead of the skeleton id? Now that Spine exports to a single json file, calling spine_animation_create re-parses the JSON data on every call creating a new map in the process. This map is not destroyed after the function exits. See:

 

// spine_animation_create(spine_json_data,ani_name)
// create an instance from a loaded skeleton
// returns the skeleton id

if (argument0 != '') {

    var data = json_decode(argument0); //re-parses JSON on every call. data is never destroyed

 

 

Currently, attempting to create more than 8 animations causes an out of memory error. One can simply work around this by modifying the function to take a skeleton id instead of the JSON data.


  • 1

 

Mod Edit: Your signature has been spoilered as it breaks the maximum total height rule of 150px. Please fix.


#34 FolkerHQ

FolkerHQ

    GMC Member

  • GMC Member
  • 7 posts
  • Version:GM:Studio

Posted 28 June 2013 - 09:56 PM

It works good.

 

I testet it on Windows 8 JS Compilation at GM Studio, no Sprites were shown.

 

I testet it on Windows Phone 8 Compilation at GM Studio, after 5 instances the App in the Phone 8 Emulation shuts down.


  • 0

#35 JeffJ

JeffJ

    GMC Member

  • GMC Member
  • 527 posts
  • Version:GM:Studio

Posted 02 July 2013 - 06:28 PM

I'm trying to make it so that I can use one skeleton/animation, which can have multiple different items (armours, boots, pants, etc.). I want to avoid making multiple skeletons - I want it fully dynamic so that one animation can be dressed with various combinations of clothing.

 

This is what I got from the official Spine forum:

 

From what I've seen is you need to make each variation an attachment to the skeleton but not part of the default skin. Then, in the runtime, you assign the specific attachments to the specific bones (as defined in the exported JSON), and that will give you the variation you're looking for.

 
For instance, my animator designed a skeleton with a fist, a knife, and a gun. The default skin has the fist being used but, programmatically, I can assign the knife or the gun. You can do the same thing with all the body parts or define skins that use different variations by default.
 
I can't give you specific Java code but in C++, it looks like:
 
CODE: SELECT ALL
this->setAttachment("FistLeft", "knife");
 
 
Where "FistLeft" is the bone and "knife" is the attachment. (I don't want to go crazy, but I assume the API is pretty much the same but with dot notation.)

 

 

How can I achieve this in GameMaker? I basically need to programmatically assign some value to switch to another attachment.

 

NOTE:

If this is not possible, I've also made a version where all sprites are loaded internally. My idea is to have one sprite for each asset - for instance, one sprite called "sprTorso", which has as many sub-images as there are variations in the torso (for instance, if I have 50 armours, it has 50 sub-images).

This is already working pretty good, but the problem is I have to switch the sub-images around manually. Any idea how I can achieve this by code? Naturally, image_index won't work in this case, as the JSON always seems to take the index as 0.

 

Any of these two methods would be fine.

 

EDIT:

Also, I've noticed that when using external images, I can create multiple instances of the same skeleton just fine, but when using internal images, it only seems to work for the first - any additional instances of the same skeleton I create thereafter only shows the debug skeleton, not its images.


Edited by Thaudal, 02 July 2013 - 09:34 PM.

  • 0

spoileralertsignature.png     jefftwittersignature.png


#36 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 24 July 2013 - 10:29 AM

So is this getting any more updates? Spine has had a few since this was updated. Half of the images on my skeleton don't show up even though they are included. And there is still stuff missing. For example the ability to use sprites instead of included files would be pretty important for me. 

 

If OP can't continue, is there a chance someone else can pick this up and bring it to glory? Since this is apparently as good as we are going to get since esoteric software doesn't seem to make an official plugin but instead refers to this one.


Edited by RuinaImperi, 24 July 2013 - 10:42 AM.

  • 0

#37 Thygrrr

Thygrrr

    GMC Member

  • GMC Member
  • 59 posts
  • Version:GM:Studio

Posted 24 July 2013 - 06:34 PM

Yeah, I'm interested, too. But we as a community could also take over. (I am one of the backers of Spine, and so is my employer)


  • 0

#38 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 27 July 2013 - 12:00 PM

I'd be all for it if the community could roll with improving it and keep it up to date. Having this working well and easily would be a huge benefit. Right now it is, while it does work in the example, barely usable for me, I'm sad to say. Unlike the program, Spine, it's not straightforward and easy to see why something just doesn't work. I still haven't gotten it to work that the lower arms and lower legs show up, even though they are right there. And having to use included files is less than optimal as well.


  • 0

#39 FolkerHQ

FolkerHQ

    GMC Member

  • GMC Member
  • 7 posts
  • Version:GM:Studio

Posted 27 July 2013 - 05:10 PM

I am seeing only my skeleton with the newest jason, but also not an animation, only the first animation called animation maybe works, but also without the pngs, maybe the spine json export changed


  • 0

#40 FolkerHQ

FolkerHQ

    GMC Member

  • GMC Member
  • 7 posts
  • Version:GM:Studio

Posted 28 July 2013 - 08:23 PM

hi kabecao. Seems there's a memory leak in the spine_animation_create function. Is there reason why the first argument of spine_animation_create is the json data instead of the skeleton id? Now that Spine exports to a single json file, calling spine_animation_create re-parses the JSON data on every call creating a new map in the process. This map is not destroyed after the function exits. See:

// spine_animation_create(spine_json_data,ani_name)
// create an instance from a loaded skeleton
// returns the skeleton id

if (argument0 != '') {

    var data = json_decode(argument0); //re-parses JSON on every call. data is never destroyed

Currently, attempting to create more than 8 animations causes an out of memory error. One can simply work around this by modifying the function to take a skeleton id instead of the JSON data.

 

Has anyone updated the spine_animation_create function with ds_map_destroy(map); at the right places?


  • 0

#41 Serena

Serena

    GMC Member

  • GMC Member
  • 77 posts
  • Version:GM:Studio

Posted 06 August 2013 - 08:48 PM

Wow, I can't wait to try this.  I was gonna try something like this with After Effects but this looks much nicer.  I hope bones can be scaled, time to find out!


  • 0

My webcomic: http://angelfoodcomic.com

http://seremeres.com

Proud user of Game Maker since 2002!


#42 RuinaImperi

RuinaImperi

    GMC Member

  • GMC Member
  • 438 posts
  • Version:GM:Studio

Posted 09 August 2013 - 12:57 PM

As it is now I can not work Spine animations into my project and use this plugin! There are a few things that don't work right and it will no doubt cause me problems down the line. Can someone please develop this further, and fix the problems with it? Its open source after all. I beg you guys, please get this working. It would be an incredible help to game maker developers. 


  • 2

#43 fredycc

fredycc

    GMC Member

  • New Member
  • 11 posts
  • Version:GM:Studio

Posted 23 August 2013 - 10:42 PM

Amazing job Kabaceo.

 

It has worked well in the GM version 1.2, on windows, thanks for this contribution.
 
regards

  • 0

#44 korpuskel

korpuskel

    GMC Member

  • New Member
  • 1 posts
  • Version:None

Posted 27 August 2013 - 11:16 PM

Hi,

 

I am currently thinking about purchasing GMS for a Win/Android/HTML5 game project and I really want to use Spine, but this extension does not seem to be developed further :-/

 

Does anyone know if Spine will be officially supported in the future?

I guess I could also use LibGDX, it has a official Spine runtime...

 

regards


  • 0

#45 gmouya

gmouya

    GMC Member

  • GMC Member
  • 95 posts
  • Version:GM:Studio

Posted 23 October 2013 - 11:05 AM

Im also interested in this. Is anyone still supporting this?

 

I cannot imagine, that there is no standardized skeletal animation system for gamemaker.

How are the other doing their animations? Exporting every character with every animation is making the project far too big..


  • 0

#46 fredycc

fredycc

    GMC Member

  • New Member
  • 11 posts
  • Version:GM:Studio

Posted 24 October 2013 - 08:16 PM

I can see, in version GM v1.3 Spine Animation Importer will be available, excellent  :)

 

http://help.yoyogame...-Studio-Roadmap

 

regards


  • 0

#47 gmouya

gmouya

    GMC Member

  • GMC Member
  • 95 posts
  • Version:GM:Studio

Posted 25 October 2013 - 09:12 AM

unbelievable, this is awesome


Edited by gmouya, 25 October 2013 - 09:16 AM.

  • 0

#48 krele

krele

    GMC Member

  • GMC Member
  • 640 posts
  • Version:GM:Studio

Posted 25 October 2013 - 05:37 PM

You're both, my hero and a villain... My hero because it's absolutely amazing work, my villain because I was working on the port as well <.<


  • 0

If I helped you, you can help me back :3

Brocoola


#49 fredycc

fredycc

    GMC Member

  • New Member
  • 11 posts
  • Version:GM:Studio

Posted 25 October 2013 - 10:06 PM

Spine is now on kickstarter again with new great features  :thumbsup:

 

http://www.kickstart.../spine-features

 

regards


  • 0

#50 lobosan

lobosan

    GMC Member

  • GMC Member
  • 99 posts
  • Version:GM:Studio

Posted 26 October 2013 - 01:35 AM

Im also interested in this. Is anyone still supporting this?

 

I cannot imagine, that there is no standardized skeletal animation system for gamemaker.

How are the other doing their animations? Exporting every character with every animation is making the project far too big..

This hasn't been maintained for several months now. You can take a look at the project I'm maintaining. It's more feature complete and is actually being maintained. 

 

Check it out here: http://gmc.yoyogames...howtopic=595125


  • 0

 

Mod Edit: Your signature has been spoilered as it breaks the maximum total height rule of 150px. Please fix.