Skip to main content

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

· 4 min read
Bekah Hawrot Weigel
Developer Experience Lead

**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.

https://github.com/theatre-js/theatre

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:

FeatureTheatre.jsAdobe After EffectsAutodesk Maya
Open SourceYes (MIT License)NoNo
Real-time CollaborationYesLimited (only within the same team or organization through Creative Cloud)Limited (only through third-party plugins like Shotgun or ftrack)
Timeline EditingIntuitive and flexibleExtensive (with keyframe animations and motion graphics features)Extensive (for creating complex 3D animations and visual effects)
Integration with Dev ToolsHigh (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 ScriptingJavaScript/TypeScriptJavaScript for expressions; not all functionality exposed to custom scriptsPython, Mel, and C++ via Maya Embedded Language API
PricingFree (open source); potential costs associated with hosting and scaling solutionsSubscription-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.