GDevelop icon indicating copy to clipboard operation
GDevelop copied to clipboard

Upgrade to the newest bondagejs or replace bondagejs with YarnSpinner-rust

Open blurymind opened this issue 1 year ago • 6 comments

Description

The current version of bondagejs which gdevelop uses doesnt have full yarn 2 syntax compliance. Things like inline expressions dont work, so for example you cant show variables in text The player name is ${playerName}

Solution suggested

There is a branch of bondagejs that upgrades it to the yarn2 spec https://github.com/hylyh/bondage.js/tree/2.0

in theory all thats needed is to simply swap out bondagejs with the new one and test it in gdevelop

EDIT: another idea I have is to create a module api and a wasm target of the rust port of yarn spinner.

That would probably be even better as it will give us a much better interpreter than bondagejs, which is in a much healthier condition. I created a ticket with intent here: https://github.com/YarnSpinnerTool/YarnSpinner-Rust/issues/213

blurymind avatar Mar 14 '24 12:03 blurymind

btw one added extra of this branch is that the library's deployment size has considerably been shrunk

blurymind avatar Mar 15 '24 08:03 blurymind

That seems like a great idea! As usual I would say the most important is to triple check any potential breaking changes/regressions.

4ian avatar Mar 15 '24 10:03 4ian

yes ofcourse, it may be a case that the wrapper i wrote for it might need some subtle tweaks. It will need to be tested with all the example projects and work exactly the same on them. Bondagejs itself has lots of unit tests - even more on this branch

blurymind avatar Mar 15 '24 10:03 blurymind

I made a quick stab at it here, but am having some issues importing the module https://github.com/4ian/GDevelop/pull/6466

The strange thing is that it logs the module - so it must have imported it, but gdevelop complains about some end of line error. I can do direct commits to that 2.0 branch btw, so any ideas of how it could be addressed at bondagejs tracker are also welcome :)

@mnbroatch trying to ugrade gdevelop to use your upgraded version of bondage

blurymind avatar Mar 18 '24 20:03 blurymind

another idea I have is to create a module api and a wasm target of the rust port of yarn spinner.

That would probably be even better as it will give us a much better interpreter than bondagejs, which is in a much healthier condition. I created a ticket with intent here: https://github.com/YarnSpinnerTool/YarnSpinner-Rust/issues/213

blurymind avatar Aug 30 '24 11:08 blurymind

Chiming in to say that I'm very happy to help out if you have any questions regarding the Rust port :)

janhohenheim avatar Aug 30 '24 14:08 janhohenheim