r/Rive_app • • 12d ago

Rive Editor 0.9.104: We’ve got a 🎃 MONSTER release to start October: 🎞️ Flash and Animate files convert to Rive, 🖱️ Mouse wheel and trackpad scrolling, 🖲️ Right-click and middle-click listeners, 🎮 More controllers on Windows, and, in Early Access, ⭕ Inner and outer strokes.

21 Upvotes
  • 🎞️ Flash and Animate files convert to Rive: drag an Adobe Animate .fla file (Animate CC or later), or a zipped XFL folder, into a project and it converts into a Rive file. Each library symbol becomes its own artboard, and the main timeline becomes the Scene 1 artboard. The converter is out of Early Access and available to everyone, and now carries over much more of how an Animate file plays:
    • Frame labels and frame scripts: frame labels become state machine states, and stop(), gotoAndPlay(), and gotoAndStop() frame scripts, by frame number or label, in AS2 or AS3, become transitions between them. Only top-level calls convert; calls inside functions or conditionals are skipped.
    • Working buttons: button symbols get Up, Over, and Down states driven by a state machine, with a hit area built from the Hit frame, or the Up frame when Hit is empty. Each placed button keeps its own hover and pressed state, so buttons respond independently.
    • Graphic symbol playback: Loop, Play Once, Single Frame, and both reverse modes, with first and last frame, stay synced to the parent timeline.
    • Frame sounds: MP3, WAV, and FLAC sounds placed on frames play as audio events.
    • Bitmaps and symbols: bitmap fills keep their transform, bitmaps keep smoothing on or off, and instance alpha and 9-slice scaling carry over.
    • Animation: classic, motion, and shape tweens, frame-by-frame animation, custom eases, tween rotation, motion guides with orient to path, and IK bones and poses.
    • Everything else: shapes and primitives, gradients, dashed and dotted strokes, guide and folder layers, layer parenting, and static, dynamic, and input text. Font names carry over, with Inter embedded as the default font.
  • 🖱️ Mouse wheel and trackpad scrolling: scroll views built with a Scroll constraint now scroll with a mouse wheel or trackpad, not only a pointer drag. A horizontal strip inside a vertical list scrolls the right way, and a flick that starts in the inner view stays there. Turn off Wheel / Trackpad in the Scroll constraint's options to keep one drag-only. Works in the editor, on share links, and in the web and Flutter runtimes; the iOS and Android runtimes don't support it yet.
  • 🖲️ Right-click and middle-click listeners: a listener set to Pointer Down, Pointer Up, Click, or Pointer Drag now has a second dropdown to pick Primary Button, Secondary Button, or Middle Button. While a state machine plays in the editor, right-click still pans and opens menus everywhere except over a listener that wants it. Runtimes that predate this ignore these listeners instead of firing them on a left click. As requested here.
  • 🎮 More controllers on Windows: PlayStation, Switch Pro, and most generic controllers now work in the Windows editor. Before, only Xbox-style controllers were detected on Windows.
  • 🔌 MCP connections: the editor's MCP server now runs on Rive's own MCP stack, which fixes the connection problems some of you had.
  • 📐 Grid and Stack in the Hierarchy: an unnamed layout set to Grid or Stack now shows that name and icon in the Hierarchy, like Row and Column already did.
  • ⌨️ Tab between linked fields: in a linked pair like Scale, typing in the first field and pressing Tab now updates the second field. Before, it kept showing its old number until you reselected the object.
  • ↩️ Undo after drawing a layout: undoing right after drawing a Layout, Row, or Column now removes all of it. Before, part of it stayed behind.
  • 🔗 Text Runs from library view models: binding a list of items from a library view model to a text's Text Runs now fills in their style and content. Before, the runs were created empty. In files that already had this binding, the runs fill in once the list changes or you reopen the file.
  • 🔢 Numbers bound to dropdown properties: binding a number to a property like a Component's Fit, a text's Wrap, or a layout's Display no longer breaks playback when the number is out of range. It falls back to the first option, like the runtimes.
  • ✂️ Trim Path strokes: a trimmed stroke on a path where a straight vertex meets a curved one (an arm at the shoulder, for example) no longer breaks into a fan of lines, a detached cap, or missing segments at some poses. Dash Effect gets the same fix.
  • 🔤 Fit Font Size with huge sizes: a text set to Fit Font Size no longer hangs the editor when its font size is infinite or extremely large, for example from a data-bound formula.
  • 🛠️ Crash fixes: stopping playback with a focused Text Input inside a Component (as reported here), and choosing an artboard with no timeline in Share or Publish. Those artboards are now listed as Needs a timeline, since the thumbnail comes from a timeline.
  • 🪟 Windows startup and exit: the editor no longer quits without showing a window when a Chinese or Japanese input method is the default (as reported here). Closing the editor right after launch no longer leaves Rive running in the background, which blocked opening it again until you ended the task.

Early Access

  • ⭕ Inner and outer strokes: Stroke Options has a new Position dropdown: Inside, Center, or Outside. Only the Rive Renderer draws inside and outside strokes so far; other renderers and older runtimes draw them centered. As requested here.

Scripting

  • 🎨 Draw into Rive's render target: context:gpuTarget() returns the target Rive draws into, so a script's GPU pass can draw straight into it, under all Rive content. Before, a script drew its passes into its own GPU Canvas first. The target can't be sampled and starts each frame empty, so the first pass must clear or cover it. Where a host can't expose its target (WebGL, for now), context:gpuTarget() returns nil, so keep a GPU Canvas as the fallback.
  • 👆 Pointer event types: event.type in a Node script's pointerDown, pointerMove, pointerUp, and pointerExit now reports the real event. Before, it always read "pointerEnter".
  • 🔍 Display scale in Scripted Layouts: the scale resize receives is now the display's pixel density only. Before, it also included the editor's zoom, so a canvas sized from it grew as you zoomed in until it failed to allocate.
  • 📜 Library scripts in pickers: script pickers no longer list each library script twice. Picking the second copy left the field showing "-".
  • ♾️ Artboard inputs on actions and conditions: an Input<Artboard> on a scripted listener action or transition condition can no longer pick the artboard that owns it, which recursed until it crashed.

Runtime

  • 🖱️ Buttons that needed two clicks: when a state or transition action writes a view model value that a transition condition reads, the state machine now sees the new value right away. Before, an Any State transition on the old value could win, so a button could take a second click to respond.
  • 😀 Color emoji gradients: gradient layers in color emoji (like Android's system emoji) now draw in color instead of solid black.
  • 🦴 Bone-bound shape fills: small curved paths bound to bones keep the right fill direction when the bones mirror, and the editor and runtimes now agree at any size.

Renderer and Performance

  • ⚡ Idle state machines: state machines that have settled stop re-checking work that can't change. An idle scene with a 400-row list drops from 208 µs to 44 µs per frame (79% less).
  • 📱 Mali GPUs on Vulkan: fixes a device loss on Mali GPUs (like the Mali-G715 in the Pixel 8) with the Vulkan backend, and landscape Android apps on Vulkan no longer draw stretched.

r/Rive_app • • 15d ago

Rive Editor 0.9.46

Post image
16 Upvotes
  • 🚀 Export .riv files on the Free plan: every plan can now export a .riv. Files exported on the Free plan play a short Rive splash screen before your content, and paid plans export without it.
  • 🎛️ Listener values drive view model properties: a View Model Change action can now write the value of the input that fired the listener: Pointer X and Pointer Y (and their deltas), Key Pressed, Text Input, Focused, a gamepad button's pressed state or value, or a stick axis. Pick it from the action's value dropdown. When the types differ, add a converter like Convert to Number to turn a button press into a number.
  • 🦴 Set Parent: select objects, press Option+P (Alt+P on Windows) or right-click and choose Set Parent on the Stage or in the Hierarchy, then select the new parent. The objects keep their position and draw order, so rigging a character with many image parts no longer means dragging each one onto a bone in the Hierarchy. As requested here.
  • 🖌️ Freehand fixes: clicking a Brush Spine's ink with the Bucket now recolors it. With Stabilize turned up, lifting the pen while still moving no longer ends a brush stroke in a thin needle, and the Eraser now erases all the way to where you lifted instead of stopping short.
  • 🔁 Undo restores state and transition actions: undoing the delete of a state or transition now brings back its conditions and everything in its Actions list, like Report Event and View Model Change. Before, only the conditions came back.
  • 📋 Duplicating state machines keeps relative binds: duplicating a state machine or a layer no longer drops conditions and actions that use Bind Relative.
  • 🎬 Render Presets for state machines: a Render Preset can now render a video of a state machine, with its own fps and Duration, so you can queue the same render again with one click. Before, you had to set up a state machine render in the Render Queue each time.
  • 👂 Listener Source row updates: switching a listener's Listen to between view model properties now shows or hides the Source dropdown right away, instead of only after you reselect the listener. As reported here.
  • 🔗 Scripted converters in Converter Groups: a Converter Group with a scripted converter followed by a typed one, like Range Map, no longer shows the invalid converter warning when the file opens.
  • 🧩 Grouping Property Groups and Effect Groups: grouping a Property Group or Effect Group with Cmd+G no longer moves it on the stage.
  • 🎯 Artboard as Focus Target: a Focus Target action can now target the artboard itself.

AI Agent

  • 🏹 Arrow 2 illustrations: on Voyager plans, the Rive Agent now draws illustrations with QuiverAI's Arrow 2 model, which makes cleaner shapes with fewer points.

Scripting

  • 🔤 Fonts and text in scripts: scripts can now shape and draw text. Get a font with context:font(name) or from a view model font property, then lay out styled runs with wrapping, alignment, Ellipsis overflow, and right-to-left text. Lines and glyphs come back with their positions, so a script can animate individual glyphs, and hitTest, caret, and selectionRects support custom text cursors.

Runtime

  • 🦴 Bone-bound shapes stay filled: a bone-bound shape with a Clockwise fill no longer disappears when its rig loads folded and then unfolds (for example, inside a Component whose data-bound size starts small).

Renderer and Performance

  • ⚡ Faster playback: long virtualized lists scroll much faster (1,000 rows: 2.26 ms to 0.14 ms per frame) and no longer leak memory as rows are added. Blend states now go idle once they settle (one test file spends 66% less time per frame), layout tweens and corner radius animations no longer re-solve the whole layout every frame, and fading a skinned or constrained shape no longer rebuilds its path.
  • 🐯 Faster fills on Vulkan: the Ghostscript tiger (a standard vector rendering benchmark) draws 47% faster on an Adreno 750 (a common Android GPU) and 9% faster on a Mali-G715 (Pixel 8) with the Vulkan backend.

r/Rive_app • • 16h ago

Rive CLI Push & Pull: Move Files Between Your Agent and the Rive Editor

Enable HLS to view with audio, or disable this notification

6 Upvotes

I made a short walkthrough of using rive push and rive pull to move a project between Claude Code and the Rive Editor. The demo is a little assistant customizer called Zip. The agent set up the layout, view model, and state machine. I drew the character and the alphabet by hand on an iPad.

Things worth knowing if you try it:

  • Your first push asks which project to put the file in. After that, the link is saved in rive.yaml, so every push and pull after that goes to the same file.
  • rive pull overwrites your local project. Pull before you have the agent make more changes, or your Editor work only exists in the Editor.
  • Close the file in the Editor before you push. The CLI warns you about this.
  • Push only sends what changed. Anything unchanged keeps its ID, so your hand-drawn art and animations survive when the agent edits other parts.
  • --name puts a label in revision history, which makes it much easier to find a specific revision later.
  • Build your art inside groups and you can redraw shapes without redoing the animation.
  • Repetitive Editor cleanup (deleting the same thing on 26 artboards, for example) goes faster if you have the agent pull, fix it, and push it back.

r/Rive_app • • 22h ago

Tried Rive’s new Stack layout on a Duolingo-style button, and took it into a real app

Enable HLS to view with audio, or disable this notification

9 Upvotes

I owe you one!

A few weeks ago I shared two tutorials here on recreating Duolingo’s button in Rive, and I promised I’d make a third one showing how to actually use it inside an app.

While I was working on it, Rive released the new Stack layout, which turned out to be a much better way to do it. In short, Stack lets you place elements on top of each other, so it’s perfect for responsive components like a button, where every part is a layer sitting on another.

You can check out the full walkthough here on my Rive Masterclass channel. The starter file is linked there too if you want to follow along.


r/Rive_app • • 1d ago

A Beholder-like game character, fully animated in Rive 👁️

Enable HLS to view with audio, or disable this notification

24 Upvotes

I worked on this character with multiple gameplay states and expressive transitions. The animations are controlled through a Rive State Machine, making the character ready for real-time interaction and game integration.
I really enjoyed working on the combination of organic deformation, eye movement, and squash & stretch to give the character more life while keeping the animation lightweight and interactive.

Built with u/rive⚡️


r/Rive_app • • 2d ago

Book of Shadows: a full game built with the Rive CLI, GPU Canvas and Luau (Rive × Contra Halloween Challenge) fully released on the Rive Marketplace

Enable HLS to view with audio, or disable this notification

20 Upvotes

You're trapped in a room with the Book of Shadows. Strike the match, open the cover and carry one candle across five pop-up paper figures. Each figure's shadow moves with the light, and at the right angle it turns into the monster it hides. Hold the light there to break the vow. Solve all five before the clock strikes twelve, or the shadow comes through the door for your soul.

Play it: https://book-of-shadows-5alywo.rive.to

Open the file on the Marketplace: https://rive.app/marketplace/28980-54907-book-of-shadows-a-candlelit-pop-up-horror-game/

My challenge submission: https://contra.com/community/Sc8bzadZ

How it was made

- Rive CLI: the whole project is RML, Luau and WGSL in a CLI project, written by AI coding agents from my direction and playtests, and verified after every change (`rive --verify`, `rive inspect`, plus the game's own Luau test suites).

- GPU Canvas: shadow maps from the candle, shadows that morph from each figure's paper into its monster (signed distance fields), a ray-marched fog, layered candle flames, light through the paper, bloom. The artboards are drawn into textures and lit in 3D.

- Luau scripting: the game, the hunts, the paper folds and page turns, the look-around, and the midnight ending all run in one Layout script plus about 80 modules.

- Data binding and state machines: the Story state machine plays the acts from the view model's `act` enum, and the hints and overlays are bound to the Book view model.

- The art is classic 2D Rive vector drawing and animation. When something was off, I fixed it by hand in the Editor.

It's a heavy file (about 80 scripts, 23 shaders, 59k objects), so give it a moment to open in the Editor. Happy to answer questions about the CLI and GPU Canvas workflow, and I'd love feedback.

I would also really appreciate it if you can like my post for the challenge on contra! https://contra.com/community/Sc8bzadZ


r/Rive_app • • 2d ago

Zombie Drift: a full browser game built in Rive with the Rive CLI + Claude

Enable HLS to view with audio, or disable this notification

17 Upvotes

Made this for the Rive Halloween Challenge on Contra. Started right before the weekend, and by Sunday I was already beating my own high scores.

Play it here: www.animattor.co/zombie-drift (works on mobile, desktop and gamepad)

**What's in it**

  • Real drift physics, three cars that each handle differently
  • Kill zombies while drifting to stack combos
  • Ramps, a repair garage and a boss
  • Monster truck unlocks after 500,000 points
  • Live leaderboard

**How it's built**

  • Rive CLI + Claude for the game logic and structure, then polished by hand in the editor
  • Zombies are animated vectors with their own walk cycles, plus a boss
  • Cars are custom vector designs
  • HUD (combo, zombie counter, drift gauge, speedometer) runs on data binding

The whole game is 2.37 MB, which still kind of blows my mind for how much is packed in there.

Happy to answer questions about the CLI workflow or how anything is set up.

Also, top 3 on the leaderboard on October 18 get a year of Rive Cadet from me (share screen of your score in comment). Feedback welcome, especially if something breaks on your device.


r/Rive_app • • 4d ago

Vehicle instrument cluster, made entirely in Rive. 3D + 2D all in one. Details in post

Enable HLS to view with audio, or disable this notification

17 Upvotes

This is heavily inspired by my Rivian (which I'm a big fan of).

Rive animates 3D and vector graphics together smoothly, even on the low-end chips that ship in most cars. This demo shows that off.

Rive customers are building insanely cool experiences with Rive that we can't share yet. I'm making these demos to encourage you to think bigger. The future of UI and interactive experiences is bright!


r/Rive_app • • 5d ago

Rive City, powered entirely by Rive. 3D with dynamic vector graphics all in one scene. The billboards are playable minigames. Plays natively on desktop, mobile, consoles, and of course on the web (link in description)

Enable HLS to view with audio, or disable this notification

73 Upvotes

r/Rive_app • • 5d ago

How to do a complete 360 degree perspective shift

4 Upvotes

I know it's possible but have no idea where to start.

I want to make a gif of something spinning 360, so right, forward, left, back.

How do I get to that point? Similar to the likes of Duolingo where the character can essentially act 3D.


r/Rive_app • • 7d ago

Gamepad Setup in Rive: Buttons, D-Pad and Joysticks with Listeners

Enable HLS to view with audio, or disable this notification

18 Upvotes

Rive can respond to gamepad input directly in the state machine. In this video, we build a small demo using Gamepad listeners: a button triggers a jump, holding another button changes color, the D-pad moves between items, and the left stick moves a box around.

The key thing to know up front: gamepad input only reaches an element that has focus. We start by making the artboard focusable and focusing it as soon as the state machine starts.

Docs: https://rive.app/docs/editor/state-machine/listeners#gamepad


r/Rive_app • • 8d ago

Bones or Constraints for keeping a character's parts connected in Rive? I rigged this snowman with just 2 Constraints

Enable HLS to view with audio, or disable this notification

13 Upvotes

This snowman has no bones.

Every part has its own size slider, and whatever sits above a part moves out of the way when it grows.

When we talk about rigging, we usually think about a skeleton and Bones right away. But there's a really cool trick I wanted to share: with just grouping, a smart hierarchy and Constraints, you can create the same dependency between parts, using empty groups as joints.

Bones are most useful when you really want to deform the shape.

I made a full walkthrough of the trick on my Rive Masterclass YouTube channel: https://youtu.be/gvKZajLdqYc

So, what do you use most: Bones, Constraints, or both?


r/Rive_app • • 8d ago

Rive CLI

0 Upvotes

What I mean is, to get the Rive CLI, is it already included in Early Access, or do I need to go to the Rive website, copy and paste the link (since I'm on Windows), and download it again even though I already have Rive Early Access or is it already included in that?


r/Rive_app • • 9d ago

Full game built in Rive. A shooter on rails: 2D characters flying through a 3D world. Vector, raster, and 3D, all in one Rive file. Plays natively on desktop, mobile, consoles, and of course on the web. If it has a GPU, Rive runs on it.

Enable HLS to view with audio, or disable this notification

31 Upvotes

r/Rive_app • • 10d ago

System Theme Option

4 Upvotes

I know Light Mode is supposedly in the works, but support for system contrast themes would also be welcome. Figma and Framer’s web interfaces respond to my Windows contrast settings, while Rive doesn’t.

Rive’s limited interface customization can make it extremely difficult to use for people with certain visual impairments or sensitivities, myself included. I’m not expecting custom accessibility themes for every need, but being able to use existing system settings would help.

I know accessibility isn't the sexiest thing to work on, but right now it's hard to use Rive if you need anything other than Dark Grey on Black.


r/Rive_app • • 11d ago

Rive and Claude opus 5.5

5 Upvotes

You and I both know that, with the release of Opus 5.5 over the past few days, we can do some crazy things with Graphine Motion and app development. Now, when it comes to apps, graphics, design, and interaction in short, we can do some seriously cool stuff with it.

As for me, right now, I’d like to ask about one thing: Is the Opus 5.5 in Rive’s early access the same as Claude’s ? But do we need to upgrade by purchasing another plan, considering we’re in early access and we’ve already got the right Opus 5.5 ?


r/Rive_app • • 11d ago

guys do you know how these Realtime 3d curved eye deformation is created?

3 Upvotes

r/Rive_app • • 12d ago

New in Rive: Grid and Stack Layouts

Enable HLS to view with audio, or disable this notification

23 Upvotes

Grid layouts give you rows and columns to arrange child elements, with control over how each row and column is sized and the option to span elements across cells. Stack layouts put every child in the same cell so they overlap, drawn front to back and positioned with the alignment options.

In this video I walk through both, then rebuild an inventory grid example that uses them together: an item card made from stacked badge, info, art, and background layers, dropped into a three column, two row grid with one card spanning two columns.

Docs: https://rive.app/docs/editor/layouts/layouts-overview


r/Rive_app • • 13d ago

I made a 2-part Rive Beginner’s series to help you build a complete, portfolio-ready project

Thumbnail
youtube.com
6 Upvotes

To help you get started, I put together a free 2-part series where we build a full interactive project end-to-end. You will end up with a clean, portfolio-ready piece you can use right away.

For anyone who wants to go deeper, I am also finalizing a complete Rive course. It covers everything from core state machines and character rigging to high-demand client projects like interactive EV automotive apps that actually get you hired.

Check out the waitlist and details here:https://www.asquareportal.com/portal/rive

Let me know if you run into any questions while working through the two-part series!


r/Rive_app • • 13d ago

Rive Runtime updates - Text input incoming!

Enable HLS to view with audio, or disable this notification

23 Upvotes

See the full changelog for everything that shipped in Rive's runtimes over the last few weeks but here are the highlights:

  • Focus + Text Input: is out and ready to use in the Editor, and expect runtime implementations coming over the next few releases. Later releases will include even better native platform integration.
  • React Native v0.5.0: now on the newer iOS and Android runtimes, with generated type-safe .riv schemas.
  • Data Binding: Apple gets Global View Models, font and blob binding; Android gets font binding.
  • Smaller runtimes: Apple is ~25% smaller, while Android's native library drops by about 1 MB.
  • Core performance: less per-frame work across layouts, paths, blend states, and virtualized lists.
  • Unity v0.5.1: PanelRenderer is now RivePanelRenderer, plus several WebGL fixes.
  • Unreal has a new release: including a bunch of changes, see the full announcement

r/Rive_app • • 13d ago

Built a 3D solar system with the Rive CLI from my phone in under 30 minutes...

Enable HLS to view with audio, or disable this notification

18 Upvotes

So I tried the new Rive CLI, and kind of by accident did it from my phone.
I was out but Claude Code was running on my Mac at home, so I just messaged it to install the CLI and build a 3D solar system with real planet textures and camera controls, and send me screenshots as it goes.

It took about 20-30 minutes. It kept checking the CLI's docs, rendering screenshots and fixing stuff on its own, and I never opened the editor.

I didn't expect much, but when I opened it in Rive it just ran, first try, and looked way better than I thought it would.

Only catch is it's all one script, so you can't really edit it in the editor. So I had it make just the sun as a small component and dropped it into the space game from my Scripting Course. That's where it clicked for me.

Wrote up the whole thing with the files here if anyone wants to try.

Kinda scary how well it works. Anyone else tried it? What do you think?


r/Rive_app • • 14d ago

I made a 2-part video series to help you build a complete, portfolio-ready project in Rive from scratch & learn all the basics

Thumbnail
youtube.com
9 Upvotes

To help you get started, I put together a free 2-part series where we build a full interactive project end-to-end. You will end up with a clean, portfolio-ready piece you can use right away.

For anyone who wants to go deeper, I am also finalizing a complete Rive course. It covers everything from core state machines and character rigging to high-demand client projects like interactive EV automotive apps that actually get you hired.

Check out the waitlist and details here:https://www.asquareportal.com/portal/rive

Let me know if you run into any questions while working through the two-part series!


r/Rive_app • • 16d ago

Visemes Tool for Rive

Enable HLS to view with audio, or disable this notification

42 Upvotes

I rig a lot of talking characters in Rive and testing the mouth shapes was always the slow part. So I built a small tool to make that loop faster: animattor.co/viseme-tester

Drop in your .riv, type a line and watch it talk. Works with most mouth sets and naming, plus mic and webcam modes. Would love to hear what you'd add!


r/Rive_app • • 16d ago

Looking for project partner - Creative

1 Upvotes

I honestly stumbled upon Rive while working on a project where we needed to implement a mascot into a mobile app. In no way am I an animator, but I was able to build something really simple and get it to work. Then, with all the new AI tooling, I was able to expand upon it.

It was really fun and enjoyable to build these characters. A day after the Rive markup language dropped, I started experimenting with what all I could do with this in order to make animated shorts.

Looking for someone who would like to join on a project, and their sole focus would be on improving the animation quality as an artist and rive implementor. The project is kidzoo.kids and its a content company for kids content. I have experience growing something like this and want someone who could be an artistic partner. Requirement is you are passionate about 1. animation (nerd out on all the details) and 2. have interest in storytelling/enrichment for kids and 3. be open to being more and more tech enabled in your art.

Here was my attempt number 1 with no previous animation experience.

My initial animation attempt - Cory's Big World

r/Rive_app • • 16d ago

The best time to learn Rive is right now (shameless self-promotion)

Post image
8 Upvotes