DEV Community

Cover image for Game Development and Multimedia: theatre.js, Unleashing Creativity in Animation and Motion Design
BekahHW for OpenSauced

Posted on • Edited on • Originally published at opensauced.pizza

Game Development and Multimedia: theatre.js, Unleashing Creativity in Animation and Motion Design

*Today is day 2 of 29 Days of Open Source Alternatives, and in this short week of February, we're covering Game Development and Multimedia. If you'd like to see more open source games, you can check out my OSS Games Page. *

Before coming into tech, I spent a lot more time writing and working creatively, mostly writing screenplay or tv pilot specs. It's always been my dreams to see my stories come alive on screen. You know that crane shot you see in the most epic of all scenes in action movies? That has always been my dream.

You know, like this one.

epic LOTR crane shot

I knew I could do the writing, but I never thought I could build the crane shot myself. But I should've know, there's power in tech and power to enable myself to make my dreams come true.

When I stumbled across theatre.js, and I needed to know more.

Theatre.js is a javascript animation library with a professional motion design toolset. It helps you create any animation, from cinematic scenes in THREE.js, to delightful UI interactions.

Theatre.js is like a superpower for boosting your creativity. It's open, friendly, and lets you bring your animation ideas to life. You can make things spin, bounce, fly, and change those colors without writing tons of code. You can even implement that dream of mine: the crane shot.

GitHub logo theatre-js / theatre

Motion design editor for the web

Theatre.jsTheatre.js

Motion Design, for the web

GitHub branch checks state Join us on Discord Follow Theatre.js on Twitter Watch on YouTube

✨ Update: Theatre.js 1.0 is around the corner. We have temporarily moved development to a private repo so we can iterate faster. We'll push our work back to this public repo soon. Terms and license will remain OSS, as before. (Also, we're hiring – join the core team!).

Theatre.js is an animation library for high-fidelity motion graphics. It is designed to help you express detailed animation, enabling you to create intricate movement, and convey nuance.

Theatre.js can be used both programmatically and visually.


You can use Theatre.js to:

  • Animate 3D objects made with THREE.js or other 3D libraries

    s

    Art by drei.lu

  • Animate HTML/SVG via React or other libraries

    s

  • Design micro-interactions

    s

  • Choreograph generative interactive art

    s

  • Or animate any other JS variable

    s

Documentation and Tutorials

The docs are at theatrejs.com/docs:

Features

  • Intuitive Timeline Editor: Allows precise control over animation sequences.
  • Real-time Collaboration: Facilitates teamwork in animation projects.
  • Extensible Architecture: Enables integration with various frameworks and tools.
  • High Performance: Optimized for smooth and complex animations.
  • JavaScript and TypeScript Support: Offers flexibility in development.

theatre.js overview page

Ok, so all those features might all seem vague, but I was able to get their THREE.js starter project up and running pretty quickly. This is what it looked like:

animated torus knot

Comparison with Proprietary Software

Comparing Theatre.js with popular proprietary animation tools like Adobe After Effects and Autodesk Maya:

Feature Theatre.js Adobe After Effects Autodesk Maya
Open Source Yes (MIT License) No No
Real-time Collaboration Yes Limited (only within the same team or organization through Creative Cloud) Limited (only through third-party plugins like Shotgun or ftrack)
Timeline Editing Intuitive and flexible Extensive (with keyframe animations and motion graphics features) Extensive (for creating complex 3D animations and visual effects)
Integration with Dev Tools High (web development tools such as VS Code and Chrome Developer Tools) Moderate (through Adobe's plugin ecosystem and extendable APIs) Moderate (via Autodesk's scripting language, Python integration, and other plugins)
Custom Scripting JavaScript/TypeScript JavaScript for expressions; not all functionality exposed to custom scripts Python, Mel, and C++ via Maya Embedded Language API
Pricing Free (open source); potential costs associated with hosting and scaling solutions Subscription-based (starts at $22.99 per month for individuals) $1,875/year for individual users on an annual plan

Open Source Support & Popularity

Although the stars tell a story of excitement, jumping high from 2022 until now, the contributions tell a different story, with only three contributors over the last 30 days.

⭐ 10.3k
👀 115
forks: 323
license: Apache-2.0

In fact, the last PR was merged in 27 days ago from the time of writing this post. My PR was merged in yesterday 🎉 I will say that it was one of the smoothest and fastest experiences I've had submitting to an open source project. There are currently 88 issues open, so there's room for new contributors to help!

Takeaways

The nice thing about theatre.js is that it works with any front-end framework. It can be a little bit tricky to follow the docs though. I actually have a PR up to clarify where users should add code. I actually had a PR merged in to clarify where to add code. If you're a hobbiest, like I am, it's interesting to play around with theatre.js and see what you can get going.

If you've made something with theatre.js, I'd love to see it. Please drop it in the comments below.

If you enjoyed this post, check out some of the other open source projects we're covering in 29 Days of Open Source Alternatives during the month of February, and let me know if there are any you'd like to see on the list.

Top comments (12)

Collapse
 
appsdevpk profile image
AppsDevPk

Theater js is amazing, i tried it last year and successfully integrated it in aframe js

Collapse
 
bekahhw profile image
BekahHW

That's amazing! Can you drop a link below? I'd love to see it in action.

Collapse
 
appsdevpk profile image
AppsDevPk

just uploaded it here. theaterjswithaframe.tiiny.site/

Thread Thread
 
bekahhw profile image
BekahHW

That's awesome! What do you like about it the most?

Thread Thread
 
appsdevpk profile image
AppsDevPk

it's simplicity, open source, and can be easily integrated anywhere.

Thread Thread
 
bekahhw profile image
BekahHW

Love to hear it!

Collapse
 
lymah profile image
Lymah

Love it! Thanks for sharing. ❤

Collapse
 
bekahhw profile image
BekahHW

It was fun to play around with new tech and see how I could use it in my hobbies!

Collapse
 
lymah profile image
Lymah

I love how you are incorporating your hobbies into Tech. You are a catalyst for learning. I can't wait to start putting all the things I am learning from you into practice.

Thread Thread
 
bekahhw profile image
BekahHW

Thanks, Lymah. I find that when I'm trying to find oss projects to contribute to, it helps when it overlaps with my hobbies or goals. Tomorrow I'm covering audacity and it's super interesting. I can't wait to use it.

Thread Thread
 
lymah profile image
Lymah

Great! Anticipating your blog post on it.

Collapse
 
amilali profile image
amilali

Nice!!