bevyengine / bevy

A refreshingly simple data-driven game engine built in Rust
https://bevyengine.org
Apache License 2.0
35.24k stars 3.47k forks source link

Adding support for Yarn Spinner into Bevy #1459

Closed ValorZard closed 2 years ago

ValorZard commented 3 years ago

What problem does this solve or what need does it fill? Yarn Spinner is a narrative tool used by many indie game studios and game writers to build stories in games. Bevy having this would be incredibly helpful and would make it stand out from the crowd of other game engines. Many indie developers and writers already know how to use Yarn Spinner, as it is completely open source and free. Additionally, there is documentation on how the file format should be used and interpreted.

Another interesting use of Yarn Spinner is its robust localization features, seen here. What solution would you like? There have already been a few implementations of Yarn Spinner into Rust, namely: This one is three years old and seems to be abandoned. This one is also seemingly abandoned, but the codebase is much more recent But the implementation of Yarn into Rust thats probably the most relevant is this one. It was made by one of the members of the Bevy discord and can seemingly already read precomplied Yarn files.

What alternative(s) have you considered?

There are other narrative tools, but they are either tied down to their engine (Twine for example) or are propietary (think of all those tools on the Unity Asset Store.) I think having a narrative engine in Bevy that has official or at least semi-official support within the engine would make it extremely unique, as all the other engines on the market (Unity, Unreal, Godot) make you either download a third party plugin (which in the case of Godot doesn't even work properly yet) or force it to build it yourself.

Additional context

The creators of Yarn Spinner host a discord over here : https://discord.com/invite/yarnspinner and the lead developer was quite interested in an attempt to port Yarn Spinner to Rust. Further discussions might bear fruit.

Ratysz commented 3 years ago

The usual sentiment is "try making it a third-party crate first": it can always be integrated later if need be.

ValorZard commented 3 years ago

I completely agree with this philosophy. I created this post less to say "Let's put yarn into Bevy" and more "Let's make a crate adding support for Bevy." However, if it fits our needs, it would be cool to have first class support for stuff like this down the road.

james7132 commented 2 years ago

As mentioned by @Ratysz, this seems like something that is best provided as a third-party ecosystem crate, as not every game is not going to inherently need support for something like this. Closing this for now.