Updated Rive extension!

It’s finally time to release the updated Rive extension for testing!
We consider this a technical preview, which means that there are some rough edges and missing features/platforms.

For instance, in this release we have verified support for

  • arm64-macos (Vulkan)
  • x86_64-win32 (Vulkan)
  • arm64-ios (Vulkan)

We’ve initially focused on the Vulkan/MoltenVK platforms.
We will continue to update/verify the other platforms during the upcoming weeks.

What’s new?

The extension now uses Rive’s new and improved vector renderer. It is a massive performance improvement compared to the previous version, as this one is GPU based.

We’ve also updated the extension with

  • event callback support, so you can react to animation events
    • events are currently limited to event names, not event values
  • mouse cursor support, so that you can interact with your menus

How to use it?

You can add the main branch zip file as a dependency during the preview, or use the extension itself as a test project (it has a set of feature rich test scenes).
We have started with release 2.0.0, but we also expect it to change a lot during the upcoming weeks.

You can use the Defold 1.6.2 editor, but you also need to use the beta build server (until next release): https://build-stage.defold.com
You set the server in the editor preferences. Don’t forget to reset to the default server after next (1.6.3) release

App manifest!

Currently, the extension uses a manifest while we test the new improvements of our new Vulkan/MoltenVK renderer.

So, if you use this extension in a project, you’ll want to either copy the game.appmanifest to your project, or copy the relevant parts of the file. Don’t forget to add the manifest file in your game.project file!

Known issues

There are a few known issue that are listed in the extension-rive repo. Please report new issues there!

Editor preview

One known issue is that we’re still using the (old) tesselation renderer in the Editor.
This may look less than optimal, but at runtime the result will be crisp.
There’s a ticket in the github repo.

Update 1: Added information about appmanifest

27 Likes

Fantastic! It looks awesome, finally!

I think it’s also important to attach this video from Twitter to see the result :+1:

Would love to test, but my game is still a long way from adding animations :pensive:

12 Likes

This is kicking some serious ***!!!

5 Likes

Could someone build this for HTML5 and upload it somewhere?

1 Like

It doesn’t yet support WebGL (Or OpenGL for that matter), so it’ll take a little while longer.

3 Likes

We’ve released Rive extension 2.1.0 with support for event properties/values

7 Likes

Is timeline scrub (panning) supported?

You can set the cursor property on the component (a value between [0, 1])

1 Like

Noted, thanks :pray:

1 Like

Is it possible to change the text of Rive text run?

I’m not sure if it’s currently possible in the rive-cpp library. If it is, then please add a feature request in the extensions issue tracker.

1 Like

rive-cpp already supports it. There is a file called text_test.cpp which shows how to change text. I will add a feature request.

Thanks. Seems doable then. The above is a prime candidate for a community contribution! Our focus right now is on adding support for the remaining platforms, not new features.

2 Likes

I wish my C++ coding skills were up to scratch. I would contribute if I could.

Speaking about platform support, Rive with Android would be awesome, more of a priority for me.

1 Like

Yes, that is what we are working on right now.

3 Likes

Ah good to know, so likely at least few more months until Defold Rive extension can be used in web builds possibly? (totally understand if it’s more than that too given this is an extension and I reckon it’s hard to given time frames!). :slight_smile:

1 Like

First time trying to get Defold to work with Rive. I am a total Defold Noob coming from Unity.

I set the build server to https://build-stage.defold.com

I set the renderer to: defold-rive/lua/rive.render

I set the dependencies to https://github.com/defold/extension-rive/archive/refs/tags/2.1.0.zip

I added the file game.appmanifest from the extension-rive-2.1.0 folder to my own project folder root (it is not clear from the instructions exactly what I have to do with this or where I have to place it).

I get this build error:

lld-link: error: undefined symbol: void * __cdecl dmGraphics::VulkanGetContext(void)
>>> referenced by /tmp/job14116362361621283313/upload/private/renderer_private.cpp:191
>>>               rivedefold.lib(renderer_private.cpp_0.o):(void __cdecl dmRive::RenderBegin(void *, struct dmRive::ShaderResources *, struct dmResource::SResourceFactory *))
>>> referenced by /tmp/job14116362361621283313/upload/include/private/renderer_private.h:416
>>>               rivedefold.lib(renderer_private.cpp_0.o):(public: virtual class rive::rcp<class rive::RenderBuffer> __cdecl dmRive::DefoldPLSRenderContext::makeRenderBuffer(enum rive::RenderBufferType, enum rive::RenderBufferFlags, unsigned __int64))
>>> referenced by /tmp/job14116362361621283313/upload/include/private/renderer_private.h:424
>>>               rivedefold.lib(renderer_private.cpp_0.o):(public: virtual class rive::rcp<class rive::pls::PLSTexture> __cdecl dmRive::DefoldPLSRenderContext::makeImageTexture(unsigned int, unsigned int, unsigned int, unsigned char const *const))

How to fix it?

Edit: I had to go to main->game.project->Native Extension->App manifest, and add the following line:
/game.appmanifest

Looking forward to easier integration.

The rive preview in the editor is very low resolution. How do I improve this?

The editor doesn’t use the new renderer unfortunately, so you need to use the actual runtime to get a proper preview until we have had the time to work on the editor renderer.

2 Likes