Spine plugin update

From the Asset Store
[C2] [C3] support C3 build service | support Banner ads, Interstitial ads, Rewared video ads.
  • The C3 Spine plugin we (Igor and Mikal) developed has been updated with some new features (default animation mix and animation speed). For simple animation playback, pause, switch, it works and looks pretty good with a default mix. Performance is reasonable on the desktop systems I have tested on and recent iPhones (200+ Spine characters with 60fps). Android performance for modern Android phones is lower, but similar, it varies widely based on older phone models. Some examples are below. It includes skin changing and mesh deforms. For more details see the plugin webpage:

    gritsenko.github.io/c3_spine_plugin

    If you use it, please let us know and show an example of your game!

    Releases:

    • 1.36.1 setTracksListner guard clause (do not crash if skeleton is not initialized or removed.)
    • 1.36.0 Init refactor (internal clean up)
    • 1.35.0 Fix current time event regression, no apply() in setAnimation (save some CPU)
    • 1.34.2 Fix bbox ACEs w/ flipped animation
    • 1.34.1 bone control optimization, repeated init bug fix.
    • 1.34.0 Add ACE for render quality control
    • 1.33.1 Add render once for Bone control actions
    • 1.33.0 Bone control Conditions and Expressions
    • 1.32.0 Bone control Actions
    • 1.31.0 Add gl parameter cache for future optimization to not get gl state parameters every tick.
    • 1.30.1 Disable idle animation updates (via debug variable control, set 'reduceAnimation' to 'enable'.
    • 1.27.3 Correct idle and offscreen detection
    • 1.27.2 Advance animation/slot render while off screen.
    • 1.27.1 Add updateCurrentAnimation check if animatioName exists and warn if not.
    • 1.27.0 Add parameters and UID to Action console warnings for debug.
    • 1.26.1 Return w/o JS error from Expression/Conditions if skeleton not loaded.
    • 1.26.0 Add per instance debug enable ACE, return w/o JS error from Actions if skeleton not loaded.
    • 1.25.3 Bug fix: animation complete hang, export module fix
    • 1.25.1 Advance animation 1s after applying set animation, apply color, set skin, so they will take effect when an animation mix value is present.
    • 1.25.0 Advance animation one tick after applying set animation, apply color, set skin, so they will take effect, fix Set and Apply color C3 module mode bugs.
    • 1.24.0 Disable render when animation is complete (end of animation) or animation is stopped (perf optimization).
    • 1.23.0 Disable render to texture when offscreen (saves perf), animation continues for events, etc.
    • 1.22.2 Add animation track support. Default to track 0 for set, play, stop animation for backward compatability, add isSekeltonLoaded ACE. Add track alpha control to blend animation between tracks. (Feature commisioned by Adrian - thank you!)
    • 1.20.0 Add support for R266 module mode, add Set Object Render Rate ACE.
    • 1.19.0 Add Set animation mix {fromName} to {toName} with duration {seconds}.
    • 10/14/2020 1.18.0 Add SpineBBoxGetPoly expression.
    • 10/12/2020 1.17.0 Add debug property, SpineBBoxCenterX,Y expressions. UpdateBBoxes action.
    • 10/01/2020 1.16.2 Set Slot Color, Apply Slot Color, Reset Slot Color. Set animation start (beginning, current time, current ratio). Set animation time/current ratio. Deprecate Set custom color attachment.
    • 09/18/2020 1.15.0 Set Slot Color (temporary until new skin set), Set Custom Color Attachment (set color of attachment of a custom skin and set to the custom skin.) Fix one frame animation bug.
    • 09/15/2020 1.14.1 Fix PMA bug regression (introduced in 1.11.0)
    • 09/14/2020 1.14.0 Added C3 web worker support.
    • 09/13/2020 1.13.0 Add custom runtime skins per instance, with example project.
    • 09/11/2020 1.12.1 Change to comma separated instead of space separated for png paths.
    • 09/10/2020 1.12.0 Add support for Atlas pages (multiple png, comma separated), finish implementation of Set Attachment action, fix webgl1 support (revealed on iOS w/o weblg2 enabled.)
    • 09/05/2020 1.11.2 Move spineBatcher.init() to prevent race condition (seen on iOS)
    • 09/05/2020 1.11.1 Remove spine instance from batcher when C3 Spine instance calls Release() (e.g. C3 object destroyed.)
    • 09/05/2020 1.11.0 Implement batch render for improved performance with multiple Spine objects and instances.
    • 08/16/2020 1.10.0: Add Keep Aspect Ratio checkbox
    • 08/14/2020 1.9.0: Fix export issues (change spine-webgl.js to an external runtime script)
    • 08/07/2020 1.8.0: Add faster, more efficient instances. Add RenderQuality settings.
    • 07/24/2020 1.7.0: Add event trigger ACE (trigger when animation event occurs.)
    • 07/23/2020 1.6.0: Add Set region action (change region(texture) of an attachment in a slot on the current skin. Useful for character customization.

    If you run into bugs, please leave issues on the github site here:

    github.com/gritsenko/c3_spine_plugin/issues

    Spine itself is available here:

    en.esotericsoftware.com

    Tagged:

  • awesome! will it also available for Construct 2?

  • arcadesindo this plugin is not for C2.

    There is already a C2 Spine plugin you can look at here: github.com/flyover/spine-c2-plugin, if you have questions, you could post in that repo's 'issue' section.

  • Hey Mikal , the links for the plugin update and demo project are dead. Currently getting 404 for those. Can you reupload files? Thanks...

  • Animate - thanks for letting me know, fixed the links.

  • I am working on adding an action for changing attachments / images within a collection of skins, once it's solid enough, I'll post an update. Example below:

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Updated the plugin to include two new features:

    1.7.0: Add event trigger ACE (trigger when animation event occurs.)

    1.6.0: Add Set region action (change region(texture) of an attachment in a slot on the current skin. Useful for character customization. (This can be used to customize the current skin of a skeleton by changing only the texture / animations attached to a slot. Example in previous post.)

  • Hello Mikal (and Igor), thank you for trying to give us the benefit of Spine for C3 because we are sorely lacking tools and features to improve the workflow and it seems that neither Scirra nor Esoteric Software are concerned by this type of customer expectations, however, very legitimate and which should benefit from solutions for ages (Spriter 2 is a beautiful promise, but I sometimes have the feeling that the first release moves away a little more each day, month then years).

    I just wanted to ask you, is it normal to render blurry with pixel art?

    Also, would it be possible in the future to have an option to automatically define the original proportions (it is difficult to know them in advance, especially after each modification of the animations in Spine)?

    Finally and for information, when the PMA (PreMultiplyAlpha) option is disabled, outlines appear around the assets (we can distinguish them around the wings, they are slightly visible during rotations).

    EDIT: Sorry, the GIF below doesn't display correctly, but it looks better if you click on it.

  • Sebastien Thanks for testing out the plugin and the detailed results. Always great to get more feedback / use cases.

    I have another update coming which is more focused on making multiple instances of the same skeleton (but optionally different skins) more efficient (reuse Spine atlas texture.)

    For the PMA, the intention is that if you exported with PMA, then you would check that property, but if you did not, you would uncheck that property. If your export and the property don't match, there may be artifacts, which is expected.

    For the bounds and scaling, so far this has been a tough issue to solve directly. Since we are rendering to a texture to integrate the Spine character more fully into the C3 renderer (e.g. we can apply effects, C3 scaling, rotation, Z order, etc.), the size of the texture we render into is generally set once. A work around for now is to add a blank image / rectangle in Spine (e.g. w/ 0 opacity) which will cover the size of the area that the animation moves in. Then the plugin will scaled the texture to that size. I know it's not perfect, but works for me so far. I would also animate any large translations / movement by using C3 events to move the Spine character, but do the in place animation in Spine (e.g. with a big jump.)

    If you are able to add the bounding box rectangle, you should be able to set the Spine scaling to 1.0 and then if your C3 project filtering is set to nearest, the pixel art may be cleaner.

    If you can share you sample project/character, it would help me debug / test on my side.

    You can contact / DM me the project on the Construct Community Discord if you can share it (Mikal is my username their also).

    discord.gg/V6URjBq

  • Hello Mikal! Thanks for your answer.

    Okay, I see better for the scale, it's ingenious!

    I will test this trick in Spine, but then can't that impact performance?

    Alright, I contact you soon via Discord to share the test project files. :)

  • Update to version 1.8.0 to add options for better pixel art renders for the above examples and faster/more efficient skeleton instances.

    • Add expressions TextureWidth, TextureHeight (texture size used to display Spine)
    • Add property RenderQuality, amount to up/downsample original Spine size (increases/reduces texture size used also increases/reduces GPU performance requirement, which is usually less of an issue.)
    • Load skeleton only once per Spine object, other instances of the same object are instances of the skeleton, saves a lot of texture memory to have only one skeleton texture atlas in GPU memory.
    • Move on skelton loaded to after texture has been created for the Spine object and initial animation bounds and other state is set.
  • Update to version 1.9.0:

    08/14/2020 1.9.0: Fix export issues (change spine-webgl.js to an external runtime script).

  • A number of new updates. The batch render improves desktop performance of multiple instances by roughly 4X on my example system. The support for multiple atlas pages allows for multiple pngs to be loaded for a single skeleton (this can help with multiple skins with different textures per skin or attachment.)

    • 09/11/2020 1.12.1 Change to comma separated instead of space separated for png paths.
    • 09/10/2020 1.12.0 Add support for Atlas pages (multiple png, comma separated), finish implementation of Set Attachment action, fix webgl1 support (revealed on iOS w/o weblg2 enabled.)
    • 09/05/2020 1.11.2 Move spineBatcher.init() to prevent race condition (seen on iOS)
    • 09/05/2020 1.11.1 Remove spine instance from batcher when C3 Spine instance calls Release() (e.g. C3 object destroyed.)
    • 09/05/2020 1.11.0 Implement batch render for improved performance with multiple Spine objects and instances.
    • 08/16/2020 1.10.0: Add Keep Aspect Ratio checkbox
  • Thank you Mikal - You're the best!

  • Added runtime custom skin support per instance (Create custom skin, Add to custom skin, Set custom skin). Can have multiple runtime created custom skins per instance.

    Release 1.13.0

Jump to:
Active Users
There are 2 visitors browsing this topic (0 users and 2 guests)