Replied in the separate thread.
spine-godot Runtime released
I have been experimenting with it more. Is there a way to import the SpineSprite in a 3D scene for a 2.5D set-up?
Currently, there is not.
See https://github.com/EsotericSoftware/spine-runtimes/issues/2135
Will there ever be the possibility of swapping attachment images from disk like you can in the Unity mix and match example for runtime skin creation purposes? The docs mention attachment API is not exposed to GDScript - will this continue to be the case for future versions of the runtime and Godot engine?
The specific use cases I have in mind are mod support and also for performance reasons when a character can have hundreds of equipment items which would produce rather huge atlases with a significant memory footprint if loaded at once. It would be preferable to create a base Spine character with a template skin for each equipment type and then grab the images from disk later when necessary.
I sure would like to support that, but currently see no technical way to achieve it easily. The issue is that accessing files outside of the package Godot creates when you export, which is possible, but not in a way that'd make it easy to use for end users.
Hello !
I downloaded the latest Godot editor provided by the spine-godot runtime documentation, but the performance is very bad ^^"
The editor runs at something like 10-20 fps, is not responsive, and is kind of unusable.
This is the editor version : "Godot Engine v3.5.stable.custom_build [991bb6ac7]"
Is it a known issue ? I can provide more information if that can help.
(I'm evaluating whether I'd prefer using Godot or Unity for a prototype of Spine integration)
midiphony-panda a écritHello !
I downloaded the latest Godot editor provided by the spine-godot runtime documentation, but the performance is very bad ^^"
The editor runs at something like 10-20 fps, is not responsive, and is kind of unusable.
This is the editor version : "Godot Engine v3.5.stable.custom_build [991bb6ac7]"Is it a known issue ? I can provide more information if that can help.
(I'm evaluating whether I'd prefer using Godot or Unity for a prototype of Spine integration)
Looks like it's been recently reported: https://github.com/EsotericSoftware/spine-runtimes/issues/2226
Sorry, been out sick and before I got sick, I had to change the build system so GitHub actions start working again. Sadly, I have not yet figured out what's causing this regression. I'll update the issue once I've figured it out.
- Modifié
I tried compiling Godot 3.5 branch mono editor by following the official compiling guidelines here.
But when trying to enable the Mono module per steps described in the link, the process fails due to presence of godot_spine module. Is the spine runtimes module fundamentally incompatible with the mono editor, or am I doing something wrong?
I can enable Mono module without godot_spine module present. Same issue when I attempt to "Generate the glue" per instructions.
I'm compiling on Windows for Windows.
The runtime is not fundamentally incompatible. We just don't ship pre-compiled binaries as it's a pain to set up a build pipeline for Mono integration for all platforms.
What specific errors are you getting?
- Modifié
PS C:\GameDev\GodotEngine\Godot_3_5_Src\godot> scons module_mono_enabled=yes
scons: Reading SConscript files ...
Automatically detected platform: windows
Auto-detected 24 CPU cores available for build parallelism. Using 23 cores by default. You can override it with the -j argument.
Found MSVC version 14.2, arch x86_64
Building for platform "windows", architecture "x86_64", target "editor".
Checking for C header file mntent.h... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
[ 3%] Compiling main\main.cpp ...
[ 3%] main.cpp
[ 3%] Compiling modules\register_module_types.gen.cpp ...
[ 3%] register_module_types.gen.cpp
[ 18%] Compiling modules\gdscript\register_types.cpp ...
[ 18%] register_types.cpp
[ 18%] Compiling modules\gdscript\language_server\gdscript_extend_parser.cpp ...
gdscript_extend_parser.cpp
[ 18%] Compiling modules\gdscript\language_server\gdscript_language_protocol.cpp ...
[ 18%] Compiling modules\gdscript\language_server\gdscript_language_server.cpp ...
gdscript_language_protocol.cpp
gdscript_language_server.cpp
[ 18%] Compiling modules\gdscript\language_server\gdscript_text_document.cpp ...
[ 18%] Compiling modules\gdscript\language_server\gdscript_workspace.cpp ...
gdscript_text_document.cpp
gdscript_workspace.cpp
[ 20%] Compiling modules\gltf\gltf_document.cpp ...
[ 20%] gltf_document.cpp
[ 20%] Compiling modules\gltf\register_types.cpp ...
[ 20%] register_types.cpp
[ 20%] Compiling modules\gltf\editor\editor_scene_exporter_gltf_plugin.cpp ...
[ 20%] Compiling modules\gltf\editor\editor_scene_importer_blend.cpp ...
[ 20%] editor_scene_exporter_gltf_plugin.cpp
[ 20%] Compiling modules\gltf\editor\editor_scene_importer_fbx.cpp ...
[ 20%] Compiling modules\gltf\editor\editor_scene_importer_gltf.cpp ...
editor_scene_importer_blend.cpp
editor_scene_importer_fbx.cpp
editor_scene_importer_gltf.cpp
[ 26%] Compiling modules\navigation\navigation_mesh_generator.cpp ...
[ 26%] navigation_mesh_generator.cpp
[ 34%] Compiling modules\spine_godot\GodotSpineExtension.cpp ...
GodotSpineExtension.cpp
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\GodotSpineExtension.h(32): fatal error C1083: Cannot open include file: 'spine/Extension.h': No such file or directory
[ 34%] Compiling modules\spine_godot\SpineAnimation.cpp ...
SpineAnimation.cpp
[ 34%] Compiling modules\spine_godot\SpineAnimationState.cpp ...
SpineAnimationState.cpp
[ 34%] Compiling modules\spine_godot\SpineAnimationTrack.cpp ...
[ 34%] Compiling modules\spine_godot\SpineAtlasResource.cpp ...
SpineAnimationTrack.cpp
[ 34%] Compiling modules\spine_godot\SpineAttachment.cpp ...
SpineAtlasResource.cpp
[ 34%] Compiling modules\spine_godot\SpineBone.cpp ...
[ 34%] Compiling modules\spine_godot\SpineBoneData.cpp ...
SpineAttachment.cpp
SpineBone.cpp
SpineBoneData.cpp
scons: *** [modules\spine_godot\GodotSpineExtension.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineAnimation.h(34): fatal error C1083: Cannot open include file: 'spine/Animation.h': No such file or directory
scons: *** [modules\spine_godot\SpineAnimation.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineAtlasResource.h(36): fatal error C1083: Cannot open include file: 'spine/Atlas.h': No such file or directory
scons: *** [modules\spine_godot\SpineAnimationState.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineAtlasResource.h(36): fatal error C1083: Cannot open include file: 'spine/Atlas.h': No such file or directory
scons: *** [modules\spine_godot\SpineAtlasResource.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineAtlasResource.h(36): fatal error C1083: Cannot open include file: 'spine/Atlas.h': No such file or directory
scons: *** [modules\spine_godot\SpineAnimationTrack.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineAttachment.h(33): fatal error C1083: Cannot open include file: 'spine/spine.h': No such file or directory
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineBoneData.h(34): fatal error C1083: Cannot open include file: 'spine/BoneData.h': No such file or directory
scons: *** [modules\spine_godot\SpineAttachment.windows.editor.x86_64.obj] Error 2
scons: *** [modules\spine_godot\SpineBone.windows.editor.x86_64.obj] Error 2
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\SpineBoneData.h(34): fatal error C1083: Cannot open include file: 'spine/BoneData.h': No such file or directory
scons: *** [modules\spine_godot\SpineBoneData.windows.editor.x86_64.obj] Error 2
scons: building terminated because of errors.
[Time elapsed: 00:00:16.617]
PS C:\GameDev\GodotEngine\Godot_3_5_Src\godot>
The process I've followed so far:
- Cloned Godot 3.5 branch.
- Cloned Spine Runtimes.
- Copy/pasted
spine_godot
folder from Runtimes to engine source in godot/modules. - Then followed compiling with mono instructions up until the "Enable the Mono module" step where I get the above error.
I have not run any of the included spine shell scripts as I'm unsure if/when I should do any of that.
EDIT: Assuming I have to go the shell script route where I have to modify the scripts to include the mono steps, I've been unsuccessful in running the default scripts as well:
The world of compiling from source, shell scripts and everything else related is completely foreign to me.
Here's the reason things don't compile for you:
C:\GameDev\GodotEngine\Godot_3_5_Src\godot\modules\spine_godot\GodotSpineExtension.h(32): fatal error C1083: Cannot open include file: 'spine/Extension.h': No such file or directory
You don't have to use the shell scripts that come with spine-godot, but you need to copy over the folder spine-runtimes/spine-cpp/spine-cpp
to your copy of the spine_godot
folder.
Here's what that looks like:
The errors you get when executing the Bash scripts in spine-godot
are due to the spaces in your path. I'll fix that up on our end. But I strongly suggest to never use spaces in your files and/or folder names as many (programming) tools don't deal with those properly.
Mario I've copied spine-runtimes/spine-cpp/spine-cpp
folder to spine_godot
folder:
But I'm still experiencing issues:
C:\GameDev\GodotEngine\Godot_Src\godot>scons p=windows tools=yes module_mono_enabled=yes mono_glue=no
scons: Reading SConscript files ...
Auto-detected 24 CPU cores available for build parallelism. Using 23 cores by default. You can override it with the -j argument.
Configuring for Windows: target=debug, bits=default
Found MSVC version 14.2, arch amd64, bits=64
Note: Building a debug binary (which will run slowly). Usetarget=release_debug
to build an optimized release binary.
Checking forthread_local
support... supported
Found Mono root directory: C:\Program Files\Mono\
Checking for C header file mntent.h... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
[ 4%] generate_modules_enabled(["modules\modules_enabled.gen.h"], [OrderedDict([('bmp', 'modules/bmp'), ('bullet', 'modules/bullet'), ('camera', 'modules/camera'), ('csg', 'modules/csg'), ('cvtt', 'modules/cvtt'), ('dds', 'modules/dds'), ('denoise', 'modules/denoise'), ('enet', 'modules/enet'), ('etc', 'modules/etc'), ('fbx', 'modules/fbx'), ('freetype', 'modules/freetype'), ('gdnative', 'modules/gdnative'), ('gdscript', 'modules/gdscript'), ('gltf', 'modules/gltf'), ('gridmap', 'modules/gridmap'), ('hdr', 'modules/hdr'), ('jpg', 'modules/jpg'), ('jsonrpc', 'modules/jsonrpc'), ('lightmapper_cpu', 'modules/lightmapper_cpu'), ('mbedtls', 'modules/mbedtls'), ('minimp3', 'modules/minimp3'), ('mobile_vr', 'modules/mobile_vr'), ('mono', 'modules/mono'), ('navigation', 'modules/navigation'), ('ogg', 'modules/ogg'), ('opensimplex', 'modules/opensimplex'), ('opus', 'modules/opus'), ('pvr', 'modules/pvr'), ('raycast', 'modules/raycast'), ('regex', 'modules/regex'), ('spine_godot', 'modules/spine_godot'), ('squish', 'modules/squish'), ('stb_vorbis', 'modules/stb_vorbis'), ('svg', 'modules/svg'), ('tga', 'modules/tga'), ('theora', 'modules/theora'), ('tinyexr', 'modules/tinyexr'), ('upnp', 'modules/upnp'), ('vhacd', 'modules/vhacd'), ('visual_script', 'modules/visual_script'), ('vorbis', 'modules/vorbis'), ('webm', 'modules/webm'), ('webp', 'modules/webp'), ('webrtc', 'modules/webrtc'), ('websocket', 'modules/websocket'), ('webxr', 'modules/webxr'), ('xatlas_unwrap', 'modules/xatlas_unwrap')])])
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Animation.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\AnimationState.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\AnimationStateData.cpp
Animation.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Atlas.cpp
AnimationState.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\AtlasAttachmentLoader.cpp
AnimationStateData.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Attachment.cpp
[ 45%] Atlas.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\AttachmentLoader.cpp
AtlasAttachmentLoader.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\AttachmentTimeline.cpp
Attachment.cpp
[ 45%] AttachmentLoader.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Bone.cpp
AttachmentTimeline.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\BoneData.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\BoundingBoxAttachment.cpp
Bone.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\ClippingAttachment.cpp
BoneData.cpp
[ 45%] modules\spine_godot\spine-cpp\src\spine\AnimationStateData.cpp(30): fatal error C1083: Cannot open include file: 'spine/AnimationStateData.h': No such file or directory
[ 45%] modules\spine_godot\spine-cpp\src\spine\AttachmentTimeline.cpp(30): fatal error C1083: Cannot open include file: 'spine/AttachmentTimeline.h': No such file or directory
Compiling ==> modules\spine_godot\spine-cpp\src\spine\ColorTimeline.cpp
modules\spine_godot\spine-cpp\src\spine\Atlas.cpp(30): fatal error C1083: Cannot open include file: 'spine/Atlas.h': No such file or directory
BoundingBoxAttachment.cpp
modules\spine_godot\spine-cpp\src\spine\Animation.cpp(30): fatal error C1083: Cannot open include file: 'spine/Animation.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\Attachment.cpp(30): fatal error C1083: Cannot open include file: 'spine/Attachment.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\AttachmentLoader.cpp(30): fatal error C1083: Cannot open include file: 'spine/AttachmentLoader.h': No such file or directory
modules\spine_godot\spine-cpp\src\spine\AnimationState.cpp(30): fatal error C1083: Cannot open include file: 'spine/AnimationState.h': No such file or directory
modules\spine_godot\spine-cpp\src\spine\AtlasAttachmentLoader.cpp(30): fatal error C1083: Cannot open include file: 'spine/AtlasAttachmentLoader.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\BoneData.cpp(30): fatal error C1083: Cannot open include file: 'spine/BoneData.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\Bone.cpp(30): fatal error C1083: Cannot open include file: 'spine/Bone.h': No such file or directory
[ 45%][ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\ConstraintData.cpp
ClippingAttachment.cpp
[ 45%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\CurveTimeline.cpp
ColorTimeline.cpp
[ 45%] ConstraintData.cpp
Compiling ==> modules\spine_godot\spine-cpp\src\spine\DeformTimeline.cpp
[ 46%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\DrawOrderTimeline.cpp
CurveTimeline.cpp
[ 46%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Event.cpp
DeformTimeline.cpp
[ 46%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\EventData.cpp
DrawOrderTimeline.cpp
[ 46%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\EventTimeline.cpp
Event.cpp
[ 46%] Compiling ==> modules\spine_godot\spine-cpp\src\spine\Extension.cpp
EventData.cpp
modules\spine_godot\spine-cpp\src\spine\DeformTimeline.cpp(30): fatal error C1083: Cannot open include file: 'spine/DeformTimeline.h': No such file or directory
modules\spine_godot\spine-cpp\src\spine\BoundingBoxAttachment.cpp(30): fatal error C1083: Cannot open include file: 'spine/BoundingBoxAttachment.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\ConstraintData.cpp(30): fatal error C1083: Cannot open include file: 'spine/ConstraintData.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\ColorTimeline.cpp(30): fatal error C1083: Cannot open include file: 'spine/ColorTimeline.h': No such file [ 46%] ctorymodules\spine_godot\spine-cpp\src\spine\ClippingAttachment.cpp(30): fatal error C1083: Cannot open include file: 'spine/ClippingAttachment.h': No such file or directory
modules\spine_godot\spine-cpp\src\spine\Event.cpp(30): fatal error C1083: Cannot open include file: 'spine/Event.h': No such file or directory[ 46%] open include file: 'spine/CurveTimeline.h': No such file or directoryerror C1083: Cannot
Compiling ==> modules\spine_godot\spine-cpp\src\spine\IkConstraint.cpp
modules\spine_godot\spine-cpp\src\spine\DrawOrderTimeline.cpp(30): fatal error C1083: Cannot open include file: 'spine/DrawOrderTimeline.h': No such file or directory
EventTimeline.cpp
Extension.cpp
modules\spine_godot\spine-cpp\src\spine\EventTimeline.cpp(30): fatal error C1083: Cannot open include file: 'spine/EventTimeline.h': No such file or directory
modules\spine_godot\spine-cpp\src\spine\EventData.cpp(30): fatal error C1083: Cannot open include file: 'spine/EventData.h': No such file or directory
IkConstraint.cpp
[ 46%] Compiling ==> modules\navigation\register_types.cpp
scons: *** [modules\spine_godot\spine-cpp\src\spine\CurveTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\BoundingBoxAttachment.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\AnimationStateData.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\Atlas.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\AttachmentTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\ConstraintData.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\AtlasAttachmentLoader.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\Bone.windows.tools.64.obj] Error 2
register_types.cpp
scons: *** [modules\spine_godot\spine-cpp\src\spine\ClippingAttachment.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\AnimationState.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\Event.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\DrawOrderTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\EventData.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\Attachment.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\Animation.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\ColorTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\DeformTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\AttachmentLoader.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\EventTimeline.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\BoneData.windows.tools.64.obj] Error 2
modules\spine_godot\spine-cpp\src\spine\IkConstraint.cpp(30): fatal error C1083: Cannot open include file: 'spine/IkConstraint.h': No such file or directorymodules\spine_godot\spine-cpp\src\spine\Extension.cpp(30): fatal error C1083: Cannot open include file: 'spine/Extension.h': No such file or directoryscons: *** [modules\spine_godot\spine-cpp\src\spine\Extension.windows.tools.64.obj] Error 2
scons: *** [modules\spine_godot\spine-cpp\src\spine\IkConstraint.windows.tools.64.obj] Error 2
scons: building terminated because of errors.
[Time elapsed: 00:00:04.263]
I did manage to resolve the shell script issue, thank you for the Path tip.
Ah, you are copying the Spine module into the Godot source tree. We keep the Spine module outside the Godot source tree. Have a look at the spine_godot/SCsub
file, lines 5 and 8. The paths given there are relative to the godot/
directory. I think if you change them to spine-cpp/include
it should work.
Now that Godot 4.1 is out, it would be great to see the signal name conflicts resolved as well as the other ongoing Godot 4 issues like mesh culling and 3D support.
GDExtension also has a backwards compatibility system in place now and no breaking changes are expected in the future. Perhaps the implementation could be ported to GDExtension?
I was on vacation last week, so couldn't fully check the 4.1 release yet.
I'm not sure 4.1 has any new means for us to fix mesh culling as described here: EsotericSoftware/spine-runtimes2248
3D support is independent of the Godot version. I just currently lack the time to work on it, as I have other runtimes to update/create. I'd welcome pull requests in that area.
I'd love to go GDExtension for the plugin, but that's still not well documented, especially for mobile and web platforms. I see what changed in 4.1.
I would also very much appreciate a GDExtensions version of the runtime, as a c# programmer the mono/.NET version of godot is the only way I can code with c#. I'm not particularly knowledgeable about more backend heavy things so I'm currently learning how to compile the godot editor from source but to be honest it seems like a major pain to get going, not to mention having to go through that whole process every time there's an update for the engine. If I have to compile it myself I will but I hope in the future it will be a much smoother process because I adore spine and just want to integrate it properly with godot without too much headache. That being said thank you for keeping up with godot 4.1 and continuing to update the runtime, I'm sure it's difficult to manage all these different game engines with their unique infrastructures.
Yeah, that's also my last info on GDExtension and C#. I'll look into GDExtension-ifying spine-godot in the near future once I'm done with other runtime work. One of the issues we'll face is that not everything we need is exposed via GDExtension and godot-cpp, e.g. AnimationPlayer
.
T.Fly() oh gotcha, well in that case I'll just set it up myself, it seems you were able to get it working after some troubleshooting, have you had any major complications using your custom build once you got it working? I plan on using the current 4.1 version of godot so hopefully the process won't be too different.