Spine Extension for Clickteam Fusion 2.5
A downloadable tool for Windows
Installed in Clickteam Fusion 2.5, it can run Spine!
Features and limitations
-Supports DirectX9 and DirectX11
-Various motion expressions based on Spine 3.8 , 4.1 , 4.2
-Mosaic expression
-Binary loading after build
(Comes with Japanese instruction manual. 日本語説明書付き)
--- AndroidRuntime(spine 3.8) ---
Most of the basic functions, such as binary loading after build, have been ported.
However, the following are limitations of the specification.
Only works with OpenGL ES 2.0.
Fine judgment by composite transfer mode is not implemented.
--- IPhoneRuntime(spine 3.8) ---
Fine judgment by composite transfer mode is not implemented.
--------------------------------
(2023/11/02)
Extended support for image transfer to ActiveImageCanvasV2 in Windows version.
http://ugken.com/ext/ActiveImageCanvasV2/index.html
(2023/11/29)
Additional Samples
https://ugken.com/ext/Spine/index.html
(2024/05/07)
Spine4.2 runtime support.(windows runtime)
+Add physics operation
(2024/06/04)
Readjustment and supplementation of the behaviour of 2-byte characters in files
As a rule, 2-byte characters in texture names are not allowed in the specifications and are not guaranteed to work.
(Programs whose Spine files are built with binary packing)
This is because it was difficult to reconcile the character encoding information recorded in the atlas file with the character encoding information running on CFRuntime and the character encoding of the OS file system under which it is running.
In addition, the use of 2-byte characters as internal operating names is not a problem.
(2024/07/30)
Correction of display problems when DirectDrawing is on in DirectX11.
(2024/09/11)sp3.8
AndroidRuntime: some necessary architectural library adjustments
AndroidRuntime: Adjustment of some bugs in texture-to-texture rendering, including alpha values.
IOS(spine_core): Adjustment of some defects in texture-to-texture rendering, including alpha values.
(2024/09/15)sp3.8
AndroidRuntime,IOS(spine_core):Adjustment of rendering defects in the presence of changed alpha values (shader improvement)
(2024/09/16)
Extended the blend mode setting for slots.(Slot_BlendMode)
Fixed individual blend modes not working in DirectX11
(2024/10/07)
Extended to be able to apply effects to slots.(Both PC, Android and IOS)
A sample operation of the added instruction “Slot_ShaderEx” can be found at the following URL
(Only luminous effects are available so far.)
---------
Additional Samples
https://ugken.com/ext/Spine/index.html
---------
(2024/11/27)
When running in Win10 environment, if the user account name contains 2-byte characters
Adjustment of the case in which the binary loading after build is faulty.
Purchase
In order to download this tool you must purchase it at or above the minimum price of $12 USD. You will get access to the following files:
Comments
Log in with itch.io to leave a comment.
Good day. The presence of the Spine Extension object in the application gives this result after building the application and launching it on a smartphone. I tried all the options by brute force. I found out that the reason is the very presence of Spine extension. How do I make it work on Android? I have the latest plugin version. Version Android 9.0. and 11.0.
Hello.
We believe that this is some kind of glitch.
It would be helpful if you could give us a project that can confirm the glitch in order to determine the cause.
(Of course, minimal data would be fine)
Uploaded. Also, in a virtual machine (where the APK starts) there is a problem of multiplying transparency by alpha (contours connections).
Thank you.
I'll take a look.
Confirmed.
Some native libraries required for some actual device operation were missing.
(It was hard to notice since it was working in the simulator on the PC)
We will update the data later, but we remember the circumstances that prevented us from downloading the data immediately.
We have placed the adjusted version directly at the following address, if you would like to use it.
It worked, but the problem of multiplying transparency remained.
I will look into it.
This one may take a little longer.
Confirmed.
I will look into that as well.
Good time. There is a problem with "set direct drawing" enabled. When overlapped by another object, the desired animation falls on the farthest layer. When "debug draw surface area" is enabled, this problem is solved. I see a solution to keep it on at all times. How can I remove the green border?
Thank you for your report.
We are aware of the issue. We would like to fix it.
This seems to be happening in DirectX11.
In addition, we have confirmed that it does not happen in DX9, so you can try using it until the problem is fixed.
Thanks for the reply. I checked it out. Unfortunately, my project is not compatible with DX9. I would like to know how to remove the green border from the Debug draw surface area.
A revised version has been uploaded.
Thank you. It works great.
It is possible to erase lines with Debug_DrawSurfaceArea(0).
(This is a function to check the area where the object exists)
Of course, if you do so, the display order will be out of order, which is the problem in this case.
It is also unexpected that the display order has been normalised by Debug_DrawSurfaceArea(1).
We'll hurry up and fix it.
I tried to leave this mode on, but with hidden lines, for this reason.
Debug_DrawSurfaceArea is an instruction to produce a line.
Function for checking the position of an object's existence.
Usage is for debugging.
If (0) is specified, the line disappears.
If (1) is set, the line is drawn.
The default is 0, so there must be an instruction somewhere that sets it to (1).
Understood. It's strange that it was the lines that fixed the "set direct drawing".
This is probably due to the DirectX11 drawing system.
The line drawing process is not a process within the GPU, so the drawing is flushed at that timing and
I think the drawing data up to that point was processed in the correct order.
At any rate, thanks for the report!
Just wanted to say, thanks a ton for this extension! Works like a charm, and it's nice that it is up to date :)
I'm a bit of a beginner, but I'm not sure how to simply switch animations (from like idle to running) while holding a button. It seems that the animation slows down and stops while I hold the button (and goes back to regular speed once I release). Not sure why that is
Basically, it should work if you use the same track number and call a different motion only once.
The intermediate animation until the motion is changed is then also reproduced.
https://ugken.com/ext/Spine/change_motion.zip
The reason for the animation being slow (or the behaviour being different to that intended)
If multiple motions are ordered, this may be due to a large number of intermediate motions being generated.
Awesome! Thank you so much, exactly what I was looking for :D
Good time. When building on android, animations behave with varying degrees of randomness. Sometimes there is a display. Sometimes not. Sometimes they are upside down, or they work partially. I am applying examples. What could all this be related to?
https://skrinshoter.ru/vQQUXSZ0s0z?a
https://skrinshoter.ru/vQQarl8PdsE?a
https://skrinshoter.ru/vQQNepseInl?a
Video confirmed.
We only checked the operation of the attached sample at runtime.
There may be an effect due to the state of scrolling, etc.
We would like to track down the cause and fix it.
Thank you, I will keep in mind
Adjusted to work in the latest Android environment.
"AndroidSpine_0627_test.zip".
If the problem still persists after this.
It would be helpful if you could give us a file that confirms the relevant defects.
(The minimum amount of data that would allow us to check the status is fine)
I checked it out. Unfortunately, I didn't notice any changes. The result is similar to the previous one. There is no way to send the file, there is a size limit.
In the meantime, I have extended the uploader to 80 MB, is that enough?
Good time. Is it possible to load multiple atlases into one scene? I install the following atlas and json with a different number in another object, but only one atlas is loaded in two objects.
Is this what you mean?
See sample for details
http://ugken.com/ext/Spine/MultiResource.zip
Yes, this is the effect. It turns out that you need to spread the creation of objects in different event strings. Thank you.
can I find out about the track id and the timing of the animation? I'm trying to control the animation using the clock hand. The animation plays at half the amplitude, despite the full time range. Other animation channels by holding the key also move by half the amplitude, regardless of the speed of movement. There is a great lack of a proper animation game for holding the default key, and not an endless launch attempt.. Also with the freeze of a specific animation time. Or, if the solution is not simple, a detailed guide. By trial and error, it is not possible to find a solution.
https://skrinshoter.ru/vMvzblYxt7n?a
https://skrinshoter.ru/vMvyDzzUIDp?a
The reference time inside Spine is 0.0166.
This is the value of (1.0sec / 60frame).
http://ugken.com/ext/Spine/AnimationTime.zip
*Updated.
In addition, it is possible to obtain events at specific times.
3 of the included sample file (Motion event), there is a sample of a function that can catch specific events when they occur during an animation.
I am not sure about specific animation freezes.
If you have reproducible data, I would appreciate it.
(uploader url)
Sent. I managed to freeze the frame with the engine tools. This is achieved by separating the start by pressing, and playing on other triggers. But then there is a problem with the cancellation of the animation, and their alternation.
It seems that the json output is missing the time key.
For example, if you look at spineboy-pro.json
The time following the "run" item has keys up to 0.8 ("time": 0.8), and its status is recorded.
And this is the EndTime.
In the file you gave me,
The key recorded in "04_walk_spec" that you are trying to play is
"time":0.6667
and it looks like there are not enough keyframes.
Yeah, okay.
Is this what you want to do?
(Test_spine.zip)
I understand the intent.
The two animations are not working together.
I will look into it.
It seems that the problem is hidden in the launch by holding the button of different animation channels in parallel. For example, when I need to combine the animation of walking and aiming at the same time. They conflict.
Details.
Line 113.
"getAnimationEndTime( "hal_platform", 0 )" is
"getAnimationEndTime( "hal_platform", 2 )"
is the corresponding track ID, I think.
Although it is conceivable that it is the keyframes that are the cause, just in case
Thanks for the tip. The solution turned out to be simpler. Each animation channel needs its own global value. Keys and time doubtfully play a role, I tried different things. It remains to figure out how to reset the animation to inactivity.
https://skrinshoter.ru/vMvKyPAIiQV?a
The linkage problem we have identified here is
AIM animation set on line 68 was always running.
It appears that the animation value changes were not changing correctly.
I am glad to hear that it worked.
is it possible to make the animation cycle playback by holding the key, and not a one-time press? Right now it works like a constant startup, and looks like freezing.
Is this what you mean?
I think it is possible to set the animation time so that it can be expressed
http://ugken.com/ext/Spine/AnimationTime.zip
I see the code, maybe my project will work. There is such an alternative as a forced animation update by timer. But I need to find the time for each animation.
SetAnimationSpeed allows you to change the animation value added to each frame.
Setting the value to 0 will stop the animation.
I was looking in the instructions for how to set the RGB coefficient to replace the color, and tried manually. I see that there is an option. But I didn't understand how to do it in the event editor. I can only hide and show objects.
RGB coefficient can be set via the editor properties
or from standard commands
Here is a sample
http://ugken.com/ext/Spine/rgb_sample.zip
Thank you. I thought it was possible to use this to paint a part, not the whole object. Figured it out.
This function requires that you first select the target of the change with Select_Slot.
http://ugken.com/ext/Spine/rgb_slot.zip
I found it, thank you.
Good time. Is it possible to open a password-encrypted, from prying eyes, archive with resources? (atlas, json, png)
It supports binary embedding registered in Data Elements.
It is also called without awareness in the executable file at build time.
http://ugken.com/ext/Spine/sample_mfa.zip
I understand, thank you
At the exit from the previous level, "create spine data" crashes the application. At the same time, the launch of this level separately passes normally. How to get around this problem?
We have confirmed the phenomenon and will investigate the cause.
(It seems to occur with DirectX11 and not with DirectX9)
Thanks for the report.
Please check back as we have fixed the relevant issue.
Thank you.
it works. Thanks for the speed of response.
My project after the build (DX11) still tends to external libraries. I see that you have an assembly implemented. Do I need specific actions to build?
The external library (d3dx9d_43.dll) is included at build time.
In order to be included, it must be placed in the following path
"C:\Program Files (x86)\Clickteam Fusion Developer 2.5\Data\Runtime\Unicode\d3dx9d_43.dll"
If it is working correctly, you only need to place it.
No special operations are required.
I'm sorry, I made a mistake with the address of the library.But I fixed it and it still doesn't work. Does the build, but still searches for external files. How can this be solved? Is the reason possible in the revision of the engine?
I think it has something to do with the previous problem of poor loading at startup.
On startup, I get.
"C:\Program Files (x86)\Clickteam Fusion Developer 2.5\d3dx9d_43.dll"
Basically, this should work, but this is the story of the failure to load it.
As in this case, I think the file in Runtime is not being read.
For example, maybe you don't have permission to access the file.
Maybe you could try running CF2.5 with administrator privileges or check the permissions to access the file (DLL) in question?
Surface no loading not in screen. How to fix it? The canvas is scaled, but pixels are visible.
https://skrinshoter.ru/vMhRMC79Azc?a
We have identified the situation.
When not in directDrawMode, the internal rendering area is built once based on the window size.
We believe this is due to that specification.
We would like to make a change so that if the surface size is different from the window size, it will be expanded.
(At any rate, I think it will be displayed if directDrawMode is set to On even in its current state.)
it worked, thanks a lot
Can I find out how to use the commands of this extension? (The expression editor doesn't understand them). I'm trying to edit functions like directory selection, but the expression editor doesn't display them.
(I'm not sure if I'm getting the intent right.)
The instructions in Expression are used at the point of formula input.
For example
"New condition -> Special -> Compare two general values".
Here in the Spine Object's menu SpineData, various instruction sets can be selected
In this case, we are talking about the path to the atlas file. He doesn't understand my path and file name. Perhaps there are special rules for specifying. Right now writes "failed to load atlas", "Failed to loadSkeletonPool", "Failed to CreateSpineData". I repeated the actions on the display as in the reference.
I see.
Basically, I am assuming that the behavior is relative based on the path where the project file (mfa) is located.
The only possible behavior that is not so is that there may be a character code issue.
(Since it is based on UTF8, I would think it would work if the file is handled in UTF8.)
It seems the root of the problem is the spine version. Is 3.8.99 supported? I noticed that the atlas file has different properties than the reference one.
The version of the Spine runtime I implemented was 3.8, and there was no mention of any minor version after that, so I think it was pure 3.8.
I don't know what minor version the problematic, modified file structure version is from.
We hope to eventually update to the current version.
Or a problem with the working directory path...
In the sample, it is "dat/spineboy-pro.atlas"...
If you explicitly specify the CF25 directory path, the problem may be solved.
----
Apppath$ + "dat/spineboy-pro.atlas"
----
Thank you.
I bought the program. Completed the installation instructions. The document does not open. Requires the installation of the Unicode version of the program. The extension does not work.
The other possible reason for the non-working is the installation of DirectX9.
Although the operating base is built on DirectX9,
Maybe the new windows does not have DirectX9 in it.
https://www.microsoft.com/en-US/download/details.aspx?id=35
There are these packages on my windows 10, but I tried reinstalling. It doesn't work. The program does not see this extension, it requires a version of the Spine Extension in Unicode. How can I get it?
Basically, if you ext the Data and Extensions folders, you should be fine.
(Symptoms of not being able to open files are often caused by d3dx9d_43.dll.
As a reference
Below is an example of the exact location of the required files.
------
C:\Program Files (x86)\Clickteam Fusion Developer 2.5\d3dx9d_43.dll
C:\Program Files (x86)\Clickteam Fusion Developer 2.5\Data\Runtime\Unicode\d3dx9d_43.dll
C:\Program Files (x86)\Clickteam Fusion Developer 2.5\Data\Runtime\Unicode\spine.mfx
C:\Program Files (x86)\Clickteam Fusion Developer 2.5\Extensions\Unicode\spine.mfx
------
I performed these actions according to the instructions, including. But it didn't work. I note that the instructions specify a different directory (Program files without x86). But the essence does not change - the extension does not work in all cases.
What version of the program is needed for the extension? I have 292.22.
The version I have running on hand is R294.14.
Also, I have confirmed that the Free edition of CF2.5 We have also confirmed that the Free edition of CF2.5 is not able to load various extensions (I think this may be a specification).
I experimented with the old environment and think I was able to reproduce something close.
I called up the extension manager and listed them and they showed up.
Perhaps it is cached or something and needs to be reloaded.
Hi! Can you plz tell me if this extension will work on android exports?
Hello!
Right now it is windows only.
In case you are interested, an Android version is currently under development.
Oh yes, I am very interested. Is it going to support only v. 3.8 of spine or v4 as well? And what about dragon bones json support?
The base SDK we have started development on is Spine 3.8, so we plan to keep it that way for a while.
If there is a strong demand, we will consider v4, but for now, we have no plans to do so because our priority is the Android version.
As for DragonBones, we do not support it.
If the json after Spine conversion works, I think it will work.
(I think those can be seen in the demo version)
Hi, I live in Russia and can't buy this extension, are there alternative ways to buy your extension?
Thank you for your interest.
However, right now we are only selling here.
I'm praying that the sales function will be restored, but there's nothing I can do about this.
Sorry I can't help you.
Hey Azarl. Question... How do I make the spine animation face the opposite direction? Character is animated facing right, I want him to face left when moving left. What do I use to achieve this. I cannot seem to find a way to do it
Try specifying a negative value in SetScale: SetScale(-1.0 , 0.0)
I think we can change the coordinate system to the inverted state without changing the coordinate system.
Thanks, will give this a try!
Sadly this doesn't work, object vanishes when setting scale to -1.0, 0.0
Oh, sorry, simple mistake.
I had the wrong Y scale.
The correct value was (-1.0,1.0)
Hey, Thanks for the help but sadly this isnt working either.
I am using the placeholder animation you provided in the tutorial. When i do this scale change in your scene (load and display) it works fine.
When I do this in my scene the animation vanishes and all I can see is a flickering of the bottom of his shoes. I am loading the spine object in exactly the same way (copy and pasted your code for testing) however I have "Direct Drawing" set to 0 so that the animation renders above the background.
The issue appears to be "Direct Drawing". If this is set to "1" the reverse scale works however the object will not render above anything (not even a background object, rendering the animation useless). If it is set to "0" the animation renders correctly with layers and objects however the reverse scale makes the animation vanish apart from the flickering of his shoes.
I see.
I have a feeling that this is the bug you reported earlier.
Please try the latest version of the mfx file.
(SpineExtension_20221103.zip)
As a limited bug
When using DirectDraw functionality in DirectX11
If a TextObject (with updated content) existed
interference occurred and the object was not displayed.
A new version has been uploaded to address this issue.
(SpineExtension_20221025.zip)
Hey Azarl, I am checking out the extension however I cannot seem to get the Spine object to render infront of anything. It doesnt matter what layer the Spine object is on nor if it is "sent to front"
How do I get the spine animations to render in layer order (in front of background art) and abide by the layering of the scene?
Thanks
**Update - SetDirectDraw = 1 seems to have sorted this out. If set to 0 it renders the spine files under everything.
Thanks for the report.
Is it the DirectX11 version?
I will check it out, as it is most likely a bug.
The DirectX9 version is different in terms of rendering, so we can compare it with the DirectX9 version if there is any suspicious behavior.
Amazing! I have been wanting Spine integration in Fusion for years! I have purchased it. Thank you very much for making and releasing this!
Does it currently support the "Events" system?
Thank you!
For the event system, see the "Motion event" on the third frame of the sample.
You can see its occurrence in the debug log of the CF.
Excellent, thank you. Very excited to use this extension. Great job