Beta: Spriter Object Extension

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.
  • Hi conceptgame,

    Thanks a lot for this extension which allows me to do some very cool stuff with my personal projects.
    I was just wondering if it was possible to add a small feature to the expression properties : you have the get point angle/x/y which is super useful as I can not only use it to retrieve data from Points, but also from any bone or sprites. I think it would be very useful if we could get the x and y scale values as well.

    I tried to look at your git repository to do the change myself but I'm very far from having the technical knowledge and skills to do so...

    Thanks !

  • This is a fantastic extension, and I can't thank you enough!
    If there's ever a way I can donate to you, let me know.

    That said - Did find one little bug: Horizontal flipping bugs out when running the display mode on Direct3D 11. When activated the sprite goes invisible. Toggling Display Mode back to Direct3D 9 fixes makes horizontal flipping act like expected. That said...looks like it's Direct3D 9 for me! :P

  • [MENTION=11026]conceptgame[/MENTION] Hello. If i run game no GPU every 1 Spriter object freeze game on 20-25 fps. But on Spriter programm animation without GPU work full 60 fps. Please fix and release new extension version. Thank you.

  • Hello! First of all, I would like to thank you for creating this excellent extension for Clickteam Fusion. I'm using it in my personal project and the animations are much better!

    But I'm having some problems when there is a transition (blend) between the animations.


    The first of these problems is that some "parts" of the character in the animation end up "flying" (as in the image, ahead of the knee). I believe it is by calculating the positions of the body parts (where it was before and where it is going).

    Please login to see this attachment.


    The second problem is that sometimes the transition doesn't work well. For example, if I am in the "idle" animation and want to transition to the "sword_swing_0" animation, if the "idle" is within the first 300 ms (for example), the transition is still going well, but if the "idle" "is in its 2000 ms, it is as if the transition was made to the end of the animation of" sword_swing_0 "(which already has a much shorter duration). As I understand it, the transition is occurring in proportion to the length and current position of the animation. As if going from 75% of the "idle" to 75% of the "sword_swing_0". I had to change the animation without transition to not have this bug, but then it broke the fluidity that the Spriter extension offers.


    The third problem is that the transition does not always occur and the animation is stuck. To get around this situation I had to do it as shown in the image below (for each animation).

    Please login to see this attachment.

    That is, it was necessary to define my target animation (value), and ensure that if it is not running, force this animation. I had to repeat this event 3 times in different ways, if not, the animation stops.

    And this problem appeared when a new transition started during a transition.

    Example, before I was doing "jump_start" -> "jump_loop" -> "fall_start" -> "fall_loop". If, the character started to transition from "jump_loop" to "fall_start" and then touched the ground demanding a transition to "idle", one transition overlapped the other and then got stuck. If you create a test to blend between two animations and start a third one in between, you will see the bug occur.


    The fourth is that the animation is time-dependent and not frame-dependent. I needed to create a global variable to have the framerate / 60 value and control the speed of the animations. But that doesn't solve the problem of pausing the application (through the debugger) and looking at it frame by frame. As I understand it, the spriter's time count continues even if the application is paused, and when we unspause the application, the animation has already occurred (by counting).


    I also had problems with the bound box function (sorry if I used the incorrect term, I'm using a translator). In Spriter (software) I created a box only on the sword and only within the keyframes that the character is attacking, but within Fusion the box appears before and continues to exist after these keyframes, and is in a crazy position in the frame, as if it were getting some internal value from the Spriter. I corrected it by keeping this box in a tiny size and inside the character's "body" (in the Spriter), and just bound during the attack animation (and unbound as soon as it ends). But if there was a way to "disappear" with active when there is no box in the animation, it would be very interesting.


    Anyway, I really appreciate the extension! Excellent job! If you read this far, thank you very much!

  • Sorry Please login to see this link.,

    I realised, that I read your message but did not answer you. I saw most of the bugs you mentionned. But anyway thanks for the bug report and the support.
    I am working on some extensions again. Maybe I will be able to fix them soon, now that I have a cleaned development environment (also for Android).

    Damien

  • Hi Conceptgame,

    I'm happy to learn that you are working on some extensions again ;)

    About the Spriter extension, I am encountering 3 strange behaviors, not sure if this is by design or they are bugs.

    1. "tags" (animation meta data) seem to not automatically reset when an animation changes ; this mean that if I want to activate a tag during animation "1" and key-frame it, if I then switch to animation "2", the tag would still be active UNLESS I key-framed in this animation the deactivation of the tag.
    This seems like a design choice, but I'm not entirely sure ; to me it is a bit problematic not to have tags reset, but I'd understand that in some cases this behavior makes sense (though I would rather manage it through Fusion code than through Spriter animations tags)

    2. "Triggers" -which I use a ton- seem not to be working when Spriter object is outside of the drawn frame (screen). This is obviously very annoying because triggers are used to communicate between the Spriter animation and Fusion code, so them not being called results in broken behaviors and sloppy workarounds.
    Also, "Triggers" are not only active during the Fusion frame when they are called but sometimes a little longer (depends on framerate). This forced me to use the "Only one action when event loops" which doesn't work well for some reason if I have several instances of the same Spriter Object.
    I think this is a bug as "conceptually" speaking, Triggers are supposed to activate only when they are called.


    3. "Change Animation by name" (not sure if this is linked to frame-rate or something else) : when transitioned outside of drawn screen, sometimes it doesn't work. Maybe this is a side effect of the Trigger issue mentioned above as I use it very often for animation transitioning and I get strange behaviors "randomly" (hard to reproduce specific cases, maybe).


    ...and using this opportunity for the reminding you of this (small ?) change that would make my life easier :

    Quote

    small feature to the expression properties : you have the get point angle/x/y which is super useful as I can not only use it to retrieve data from Points, but also from any bone or sprites. I think it would be very useful if we could get the x and y scale values as well.


    I'm really sorry to burden you with more bugs and requests. Your Spriter extension is a godsend and I can do so many cool things with it that I can't help but ask for more ;)

    Cheers

  • I have no idea if I'm doing something plainly wrong, or if something is actually, majorly bugged with the use of the spriter object.

    Please login to see this attachment.

    This is my own code within the game itself I'm working on. It's a PVZ style, fnaf fangame. Just something for me to work on and the like. The issue is, it worked a few versions ago in being able to spawn the graphics with the actual entity before. But all of a sudden it refuses to allow the new spriter objects made, to grab the graphics as well. This is extremely broken for anyone that may want to create spriter objects, or I'm missing something and being very dumb.

    Please login to see this attachment.

    The lower part, the start of frame that loads the sprites, works just fine. But when I try to apply the EXACT same working method, alongside a creation event, it refuses to load the graphics alongside the object.

    The bones load, it loads the object. But it refuses to actually load the graphics.

    Is something broken here or am I missing something that's important for applying the spriter graphics to a newly made object?

  • On a bit further investigation. It seems like my enemies are refusing to spawn with graphics applied, specifically due to the fact I have.. Too many objects in the frame editor? Enemies will respawn just fine, if I use just the first two parts of the animation rig.

    Please login to see this attachment.
    This is the setup that works. literally just 2 parts of a 12 part animation. And they're able to be spawned and applied graphics perfectly fine in the process of creating an entity.

    The moment I add even just another individual image, it refuses to apply the graphics to the newly spawned enemies. I don't think I can reasonably make the stuff I want, with 2 individual images.

  • I have a conclusion. I do feel also incredibly dumb since only after getting another fresh set of eyes on it. I realized my issue.

    The given example MFA should also correlate with how to set it up.
    Please login to see this attachment.
    In order to spawn more objects using a given set of sprites from an active, I need to enable these options.
    The issue is, Spriter gave no error showing that it was attempting to load from a basically deleted active. Shouldn't this be something as a part of the extension for people to fix it themselves in the future?
    There seems to be nothing saying that spriter has attempted to load from a non-existant active.

  • I am hoping to inquire about how exactly the bind to box event works, and bounding boxes in general for these objects? It would be useful if I could specify a sprite part that is specifically to be used for collision detection and the like. It seems like you've shown a possible thing similar to that in a video, but how can I do it?

  • Bind a box is pretty simple: create an active object to be used as a collision box. In event editor at start of your scene, bind your collision box (same name as in spriter SW defined) with your active object.
    That's it. The active object will be scaled and rotated as it was in Spriter.
    It is also shown in example mfa.
    If you want that one of the sprite that you used in Spriter tool is used as a collision box, it is not possible at the moment.

    Damien

  • I've tried referring to the example for this, but I'm a bit confused on how to use it. I want to be able to have 1 general active that can act as a library for my different objects. I can't seem to get this one to actually load in though?
    Please login to see this attachment.

    This is the event I'm using as an attempt to attach the animation to it.
    Please login to see this attachment.

    I can't work out how to make this load the second animation set I have. I can get it to load the first object which is in the first direction thing I showed, this one.
    Please login to see this attachment.

    How can I use one of these actives as a library for all spriter objects to pull animations from, so that I don't need to fill everything up with actives?

  • Hi BlooberryPi3,

    In this video, it shows you how to load files for one spriter object in one active object: [video]Please login to see this media element. l[/media]
    If you want to load in same active object the sprites for another spriter object, follow the same process but load the sprites in another direction and bind this direction into the other spriter object.
    This is one way to do. I implemented 3: external, internal with active object but with folder separated or internal with active object with all sprites in one direction of one animation.

    If it is still not working as you think it should, post a small example. I agree that everything is not self explanatory. I had little time to make videos.

    Damien

  • I managed to get the folder thing working. I'm running into an issue with layers and it's starting to bother me however.

    Please login to see this attachment.
    I have this guy, this is ingame. For some reason parts of the sprite are being offset weirdly, but in spriter pro, they appear to be put together fine.

    Please login to see this attachment.

    Why is it weirdly offsetting sprites? What can I do to fix it? You can see here, the teeth that are meant to overlap the head, are instead not even attached to the lower jaw. And there's a lot more open space for the eyes. Why is it being really weirdly offset?
    Please login to see this attachment.

  • Is there also anyway I can improve the slightly annoying stuttering when spawning multiple spriter objects?
    Please login to see this link.

    This shows what I'm dealing with exactly, there's a second or two of stutter when I set a new wave to spawn.

  • I've gotta give it to you, this is incredible work concept game! I've been considering using this for some time now for smoother and crisper looking animations.
    The results are fantastic.

    There seems to be a single problem though; but I think it's been brought up before. Blending animation seems to move parts of the sprites across the screen before animating as intended.

    I've gone with changing animations without blending for now, but would love a fix for this!

    Please login to see this attachment. Please login to see this attachment.

  • Hi conceptgame. I was just looking into Spriter Pro. I have my own workflow already using Toon Boom Harmony, so up until now I've not felt the need to look at other tools. But Watching the Spriter video on the clickstore piqued my interest, when it mentioned that there are ways it can augment an existing workflow, with things like left-right flipping for example.

    I'm reluctant to spend time learning new tools and workflows, but if Spriter can give me more power within my current workflow, it might be worth it. My current workflow involves making my animations externally (Using Toon Boom Harmony, which I already like using and which has lots of features: bones, nodes, vectors, IK, etc.) and importing them into Fusion as PNG sequences. I do very little in Fusion's animation editor itself, other than importing/copying-pasting things into the appropriate animation sequences and directions. In your opinion, could Spriter and your extension be of help to a workflow like that? Does the extension actually replace the native Fusion animation editor (would I be using the Spriter Pro editor?) Could I use your extension with a PNG-sequence-based Active Object to better control its pacing, scaling, etc.?

    Also, I see on brashmonkey.com that Spriter 2 is in the works. Is this likely to work with your current extension, or will it require a new extension to be written? And do you know if it will have any features of particular interest to Fusion users?

    Thanks for your time :)

    Please login to see this link.
    My Fusion Tools: Please login to see this link. | Please login to see this link. | Please login to see this link.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!