ERA Engine - Open Source Three.js Engine/Wrapper

Over the past three years, I’ve worked on a couple of projects using Three.js and other libraries, one of them launching as a game on Steam. During that time, I inadvertently created my own Three.js wrapper/engine called the ERA Engine. I refuse to start a Three.js project without it, so I figured it might be useful for others.

The “engine” comprises of an entity-component system as well as helper libraries for loading audio, 3D models, making network calls, controls/bindings, settings, etc.

I’ve spent the past month generalizing the code and writing documentation so others could use it and contribute to it if they find it useful. It’s available here:

##ERA Engine on GitHub
##Site with a couple of examples
##GitHub Wiki with a Guide/Docs

The repo is a bit crude (no tests, no minification, no compiler/style guide), but I figured I would spare myself the trouble unless people found it useful.

If you want to fork the repo and make an example, feel free to send a PR to me.

Let me know if you have any questions, would love to answer any that you have!


This is interesting ! Thanks for sharing.
I don’t understand why you did a demo with such a huge model as your spaceship though. Or maybe you could use this to showcase a ready-made loading screen ? With my bad internet, it took me over 10sec to get the page loaded :sweat_smile: (and it runs at 30FPS)

Looks interesting, thanks for sharing.

What’s your reason for making entities inherit from Object3D?
In my (very limited) understanding of ECS entities are usually just an empty object {} that you assign components to. In that case, it would seem Object3D should be a component.

Thanks for checking it out!

You’re right, this is a distorted version of an ECS, but for the projects I worked on, I found it unnecessary to ever have an entity that did not have an Object3D componenet. I found extending it to ease usage of instances, but that might be a design flaw if others don’t find it useful.

1 Like

I found the X-Wing lego model and decided to test it out. I really should replace it, it was silly of me to use such a large model. My apologies, but thanks for checking it out nonetheless.