Official Spine runtime extension - BETA testing

Thanks, I’ll look into it!

1 Like

I’ve updated the editor and extension with a fix for cloned Spine in gui bones.

5 Likes

Thanks, have confirmed that it resolves the issue in the game.
I’ll do a fuller test later today or tomorrow just to check there’s nothing remaining.

6 Likes

Hi,
at migration guide I’ve found that spine.set_skin have no slot parameter anymore.

So, how to make a model with combination of slots with different skins now? User case: dressing up a model. Where head slot from skin1, body slot from skin2, weapon from skin44, etc. Used this feature in Look your loot and Foggy Fox too.
ps. my slot attachment not just a sprite, but a spine mesh.

2 Likes

The previous function was our own creation (for our old runtime), but it wasn’t really matching the actual official Spine runtime functions.
In their api, they don’t set skin and slot at the same time. They just set the skin.

Instead, they set the attachment to a slot:
spine.set_attachment(slot, attachment) (spine c api code).

I hope this helps to clear things up a bit.

3 Likes

possible the skeleton dressing up can be done through Runtime Skins - Spine Runtimes Guide
“A skin can be created programmatically, then populated with the attachments from other skins. In this way, multiple “item” skins can be combined to outfit the skeletons.”
Need to investigate. How full an official Spine runtime API will be present in the extension?

1 Like

All the C code is there (it’s the full runtime).
We need to add Lua function wrappers to the ones that are needed (Which should be much easier now, the whole benefit of the extension)

5 Likes

@Dragosha if there’s missing functionality in the Lua API for Spine then please add new issues in the extension-spine repository.

2 Likes

I have now pushed a fix for the skins (I had forgot to update the slots after changing skin).

2 Likes

Thank you for fix.
But An error has occurred.

1 Like

You need to update your alpha editor.

3 Likes

I noticed that there’s a crash if no callback is supplied to gui.play_spine_anim - the migration guide says:

  • Currently the play anim requires a callback (i.e. the default handler is currently disabled)

but crashing seems pretty harsh.

More importantly, we implement a New Game function in our settings menu which simply does
msg.post("@system:", "reboot")
and it crashes with the following callstack if there’s a spine scene in an active GUI :
Crash.zip (22.6 KB)

Callstack

ERROR:GAMESYS: Couldn’t find gui node type: 405028931

ERROR:CRASH: CALL STACK:
ERROR:CRASH: 0 0x7FF76E3409D0 dmCrash::GenerateCallstack D:\a\defold\defold\engine\crash\src\backtrace_win32.cpp:142
ERROR:CRASH: 1 0x7FF76E6D5F48 _seh_filter_exe /tmp/job1869150790355749193/minkernel/crts/ucrt/src/appcrt/misc/exception_filter.cpp:219
ERROR:CRASH: 2 0x7FF76E728CFC __scrt_common_main_seh'::1’::filt$0 d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:304
ERROR:CRASH: 3 0x7FF76E69EE10 __C_specific_handler d:\agent_work\4\s\src\vctools\crt\vcruntime\src\eh\riscchandler.cpp:290
ERROR:CRASH: 4 0x7FF86FC31FB0 __chkstk :0
ERROR:CRASH: 5 0x7FF86FBE1020 RtlRaiseException :0
ERROR:CRASH: 6 0x7FF86FC30BD0 KiUserExceptionDispatcher :0
ERROR:CRASH: 7 0x7FF76E31D9F0 dmGameSystem::CreateCustomNodeCallback D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:1968
ERROR:CRASH: 8 0x7FF76E396070 dmGui::NewNode D:\a\defold\defold\engine\gui\src\gui.cpp:2317
ERROR:CRASH: 9 0x7FF76E31F6D0 dmGameSystem::SetupGuiScene D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:547
ERROR:CRASH: 10 0x7FF76E31FFD0 dmGameSystem::CompGuiCreate D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:692
ERROR:CRASH: 11 0x7FF76E383030 dmGameObject::CreateComponents D:\a\defold\defold\engine\gameobject\src\gameobject\gameobject.cpp:764
ERROR:CRASH: 12 0x7FF76E316BA0 dmGameObject::AcquireResources D:\a\defold\defold\engine\gameobject\src\gameobject\res_collection.cpp:141
ERROR:CRASH: 13 0x7FF76E3174C0 dmGameObject::ResCollectionCreate D:\a\defold\defold\engine\gameobject\src\gameobject\res_collection.cpp:259
ERROR:CRASH: 14 0x7FF76E375A20 dmResource::DoGet D:\a\defold\defold\engine\resource\src\resource.cpp:1129
ERROR:CRASH: 15 0x7FF76E3700F0 dmResource::Get D:\a\defold\defold\engine\resource\src\resource.cpp:1227
ERROR:CRASH: 16 0x7FF76E3E7A50 dmEngine::Init D:\a\defold\defold\engine\engine\src\engine.cpp:1288
ERROR:CRASH: 17 0x7FF76E3E6B40 dmEngineCreate D:\a\defold\defold\engine\engine\src\engine.cpp:2048
ERROR:CRASH: 18 0x7FF76E3EC5E0 dmEngine::RunLoop D:\a\defold\defold\engine\engine\src\engine_loop.cpp:54
ERROR:CRASH: 19 0x7FF76E327180 engine_main D:\a\defold\defold\engine\engine\src\engine_main.cpp:146
ERROR:CRASH: 20 0x7FF76E69E9C4 __scrt_common_main_seh d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
ERROR:CRASH: 21 0x7FF86DCC7020 BaseThreadInitThunk :0
ERROR:CRASH: 22 0x7FF86FBE2630 RtlUserThreadStart :0

ERROR:CRASH:
ERROR:CRASH: CALL STACK:
ERROR:CRASH: 0 0x7FF76E31D9F0 dmGameSystem::CreateCustomNodeCallback D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:1968
ERROR:CRASH: 1 0x7FF76E396070 dmGui::NewNode D:\a\defold\defold\engine\gui\src\gui.cpp:2317
ERROR:CRASH: 2 0x7FF76E31F6D0 dmGameSystem::SetupGuiScene D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:547
ERROR:CRASH: 3 0x7FF76E31FFD0 dmGameSystem::CompGuiCreate D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:692
ERROR:CRASH: 4 0x7FF76E383030 dmGameObject::CreateComponents D:\a\defold\defold\engine\gameobject\src\gameobject\gameobject.cpp:764
ERROR:CRASH: 5 0x7FF76E316BA0 dmGameObject::AcquireResources D:\a\defold\defold\engine\gameobject\src\gameobject\res_collection.cpp:141
ERROR:CRASH: 6 0x7FF76E3174C0 dmGameObject::ResCollectionCreate D:\a\defold\defold\engine\gameobject\src\gameobject\res_collection.cpp:259
ERROR:CRASH: 7 0x7FF76E375A20 dmResource::DoGet D:\a\defold\defold\engine\resource\src\resource.cpp:1129
ERROR:CRASH: 8 0x7FF76E3700F0 dmResource::Get D:\a\defold\defold\engine\resource\src\resource.cpp:1227
ERROR:CRASH: 9 0x7FF76E3E7A50 dmEngine::Init D:\a\defold\defold\engine\engine\src\engine.cpp:1288
ERROR:CRASH: 10 0x7FF76E3E6B40 dmEngineCreate D:\a\defold\defold\engine\engine\src\engine.cpp:2048
ERROR:CRASH: 11 0x7FF76E3EC5E0 dmEngine::RunLoop D:\a\defold\defold\engine\engine\src\engine_loop.cpp:54
ERROR:CRASH: 12 0x7FF76E327180 engine_main D:\a\defold\defold\engine\engine\src\engine_main.cpp:146
ERROR:CRASH: 13 0x7FF76E69E9C4 __scrt_common_main_seh d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
ERROR:CRASH: 14 0x7FF86DCC7020 BaseThreadInitThunk :0
ERROR:CRASH: 15 0x7FF86FBE2630 RtlUserThreadStart :0

3 Likes

Yeah, it shouldn’t crash. I’ll look into it.

3 Likes

I just want to jump in and say thank you to everyone participating in this beta test and provide feedback here. We really appreciate your feedback!

3 Likes

gui.play_spine_anim(self.n, “walk”, gui.PLAYBACK_LOOP_FORWARD)

I cannot reproduce your crash with no callback set.
If it’s not set, then the internal pointer is set to 0, and we check it for 0.
Do you have a callstack for this crash?

2 Likes

A fix for the reboot issue is pushed to the dev branch, and a new editor should be available to you within the hour.

3 Likes

I think the repro may be slightly more complex, i.e. play an anim specifying a callback, but inside the callback play a new anim without specifying a callback. e.g.

local entry_animation = "TUT_IN_DNA_1"
local loop_animation = "TUT_LOOP_DNA_2"

local function play_loop_animation(self)
    gui.play_spine_anim(self.guide_spine, loop_animation, gui.PLAYBACK_LOOP_FORWARD, {}, nil)
end

function init(self)
    msg.post(".", "acquire_input_focus")
    
    self.guide_spine = gui.get_node("spine")

    gui.play_spine_anim(self.guide_spine, entry_animation, gui.PLAYBACK_ONCE_FORWARD, {}, function()
        play_loop_animation(self)
    end)
end
Callstack

ERROR:CRASH: CALL STACK:
ERROR:CRASH: 0 0x7FF6695309D0 dmCrash::GenerateCallstack D:\a\defold\defold\engine\crash\src\backtrace_win32.cpp:142
ERROR:CRASH: 1 0x7FF6698C5F48 _seh_filter_exe /tmp/job1869150790355749193/minkernel/crts/ucrt/src/appcrt/misc/exception_filter.cpp:219
ERROR:CRASH: 2 0x7FF669918CFC __scrt_common_main_seh'::1’::filt$0 d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:304
ERROR:CRASH: 3 0x7FF66988EE10 __C_specific_handler d:\agent_work\4\s\src\vctools\crt\vcruntime\src\eh\riscchandler.cpp:290
ERROR:CRASH: 4 0x7FF86FC31FB0 __chkstk :0
ERROR:CRASH: 5 0x7FF86FBE1020 RtlRaiseException :0
ERROR:CRASH: 6 0x7FF86FC30BD0 KiUserExceptionDispatcher :0
ERROR:CRASH: 7 0x7FF669542530 dmScript::TeardownCallback D:\a\defold\defold\engine\script\src\script.cpp:1721
ERROR:CRASH: 8 0x7FF669497E40 dmSpine::SendDDF /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:143
ERROR:CRASH: 9 0x7FF669497D00 dmSpine::SpineEventListener /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:201
ERROR:CRASH: 10 0x7FF66949E330 _spEventQueue_drain /tmp/job1869150790355749193/upload/defold-spine/commonsrc/spine/AnimationState.c:196
ERROR:CRASH: 11 0x7FF66949EC80 spAnimationState_apply /tmp/job1869150790355749193/upload/defold-spine/commonsrc/spine/AnimationState.c:465
ERROR:CRASH: 12 0x7FF669498730 dmSpine::GuiUpdate /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:760
ERROR:CRASH: 13 0x7FF66950DB20 dmGameSystem::UpdateCustomNodeCallback D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:2027
ERROR:CRASH: 14 0x7FF66958A830 dmGui::UpdateScene D:\a\defold\defold\engine\gui\src\gui.cpp:2051
ERROR:CRASH: 15 0x7FF669515160 dmGameSystem::CompGuiUpdate D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:2045
ERROR:CRASH: 16 0x7FF66957B140 dmGameObject::Update D:\a\defold\defold\engine\gameobject\src\gameobject\gameobject.cpp:2481
ERROR:CRASH: 17 0x7FF6695D9E70 dmEngine::Step D:\a\defold\defold\engine\engine\src\engine.cpp:1617
ERROR:CRASH: 18 0x7FF6695D6C50 dmEngineUpdate D:\a\defold\defold\engine\engine\src\engine.cpp:2077
ERROR:CRASH: 19 0x7FF6695DC5E0 dmEngine::RunLoop D:\a\defold\defold\engine\engine\src\engine_loop.cpp:69
ERROR:CRASH: 20 0x7FF669517180 engine_main D:\a\defold\defold\engine\engine\src\engine_main.cpp:146
ERROR:CRASH: 21 0x7FF66988E9C4 __scrt_common_main_seh d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
ERROR:CRASH: 22 0x7FF86DCC7020 BaseThreadInitThunk :0
ERROR:CRASH: 23 0x7FF86FBE2630 RtlUserThreadStart :0

ERROR:CRASH:

ERROR:CRASH: CALL STACK:
ERROR:CRASH: 0 0x7FF669542530 dmScript::TeardownCallback D:\a\defold\defold\engine\script\src\script.cpp:1721
ERROR:CRASH: 1 0x7FF669497E40 dmSpine::SendDDF /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:143
ERROR:CRASH: 2 0x7FF669497D00 dmSpine::SpineEventListener /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:201
ERROR:CRASH: 3 0x7FF66949E330 _spEventQueue_drain /tmp/job1869150790355749193/upload/defold-spine/commonsrc/spine/AnimationState.c:196
ERROR:CRASH: 4 0x7FF66949EC80 spAnimationState_apply /tmp/job1869150790355749193/upload/defold-spine/commonsrc/spine/AnimationState.c:465
ERROR:CRASH: 5 0x7FF669498730 dmSpine::GuiUpdate /tmp/job1869150790355749193/upload/defold-spine/src/gui_node_spine.cpp:760
ERROR:CRASH: 6 0x7FF66950DB20 dmGameSystem::UpdateCustomNodeCallback D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:2027
ERROR:CRASH: 7 0x7FF66958A830 dmGui::UpdateScene D:\a\defold\defold\engine\gui\src\gui.cpp:2051
ERROR:CRASH: 8 0x7FF669515160 dmGameSystem::CompGuiUpdate D:\a\defold\defold\engine\gamesys\src\gamesys\components\comp_gui.cpp:2045
ERROR:CRASH: 9 0x7FF66957B140 dmGameObject::Update D:\a\defold\defold\engine\gameobject\src\gameobject\gameobject.cpp:2481
ERROR:CRASH: 10 0x7FF6695D9E70 dmEngine::Step D:\a\defold\defold\engine\engine\src\engine.cpp:1617
ERROR:CRASH: 11 0x7FF6695D6C50 dmEngineUpdate D:\a\defold\defold\engine\engine\src\engine.cpp:2077
ERROR:CRASH: 12 0x7FF6695DC5E0 dmEngine::RunLoop D:\a\defold\defold\engine\engine\src\engine_loop.cpp:69
ERROR:CRASH: 13 0x7FF669517180 engine_main D:\a\defold\defold\engine\engine\src\engine_main.cpp:146
ERROR:CRASH: 14 0x7FF66988E9C4 __scrt_common_main_seh d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
ERROR:CRASH: 15 0x7FF86DCC7020 BaseThreadInitThunk :0
ERROR:CRASH: 16 0x7FF86FBE2630 RtlUserThreadStart :0

ERROR:CRASH:

Crash.zip (19.3 KB)

2 Likes

I’m sorry. I forgot to update alpha editor.
Now the go object is not visible in Defold version 1.2.193(b674ef7).’
When I Build, the object is visible(skin sprite is not visible).


2 Likes

The .spinemodel should now show correctly again in the editor.

3 Likes

Thank you for fix!
spinemodel is show!!


2 Likes