# Rogue Engine, a WebGL creation engine based on Three.js

**URL:** <https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063>\
**Category:** Showcase\
**Created:** [August 22, 2020, 1:05am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063 "2020-08-22T01:05:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 1:05am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/1 "2020-08-22T01:05:36Z")

</div>

Hi everyone, I’ve finally released Rogue Engine at [https://rogueengine.io/](https://rogueengine.io/)

 ![RogueEngineLogo-background](https://canada1.discourse-cdn.com/flex035/uploads/threejs/original/2X/9/9e6fcbeef0dc3859f6b02a69570070b828f3d282.png)

Download, read the docs, and get creative!

> <https://twitter.com/BeardScript/status/1296844011383205890>

---

<div class="post-metadata">

**Author:** ![mjurczyk](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mjurczyk/32/10995_2.png) [@mjurczyk](https://discourse.threejs.org/u/mjurczyk)\
**Post date:** [August 22, 2020, 12:34pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/2 "2020-08-22T12:34:37Z")

</div>

```nohighlight
You may not transmit any Content that is *unlawful*, *offensive*, [...] *obscene* or otherwise 
*objectionable*. Examples of such objectionable Content include [...] *False information*
and features.

```

So, basically, if I ever want to make a furry hentai clone of a heist game like Payday 2 with all action happening on a flat Earth - we end up in court, explaining to the judge what furry hentai is? Man, you kinda limit your indie-gamedev target audience by **a lot** there.

---

<div class="post-metadata">

**Author:** ![mjurczyk](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mjurczyk/32/10995_2.png) [@mjurczyk](https://discourse.threejs.org/u/mjurczyk)\
**Post date:** [August 22, 2020, 12:38pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/3 "2020-08-22T12:38:05Z")

</div>

More seriously, looks pretty cool - could you share a bit more info on it’s (planned) advantages vs stuff like UE or Unity (also some WebGL engines, but I can’t remember names rn, I guess PlayCanvas or something) ? You’ve got a strong, stable competition there!

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 12:43pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/4 "2020-08-22T12:43:23Z")

</div>

😂 true. I think nobody’s gonna use it now.

In any case, I was thinking mostly of “later steps” where you will be able to share assets through a store, I wouldn’t want to be related to the flat Earth fury hentai Payday 2 project 🤣

On a more serious note, I might have to further clarify some bits of the EULA. But mostly just don’t use it for war lol.

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 1:18pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/5 "2020-08-22T13:18:00Z")

</div>

I think it’s unfair to compare it to UE or Unity given that they are quite different in their essence. This is a pure web solution where your project is a node project, with all the advantages (and disadvantages) of npm. You also have control over the dev environment which is pretty cool.

But, if we’re going to compare. For webgl projects, it’s also easier to find Javascript developers than C++, C# developers. This, among other things, makes Rogue Engine easier for adoption.

The main difference with PlayCanvas is that, this is a desktop app were you keep control of your files. You can create as many projects and as heavy as you want, in your own hard drive. You can use git and your favourite code editor with your favourite extensions.

An added benefit of Rogue Engine is how it tries to solve web problems with web solutions. One of my favourite features is the Asset Manager, which helps you easily set your components to be preloaded with the scene or on-demand, by just checking a box.

So if you’re creating an MMO RPG, the gear for the characters in the scene is loaded in-demand by default. And if you want, you can keep those loaded throughout scenes.

One of the biggest benefits is that most of your game code is written in three.js. So a lot of your code is portable, either if you want to port your three.js project to Rogue Engine or out of it.

This also means that you have all the existing knowledge of the most popular rendering engine out there.

Another interesting feature is the editor extension API, which is technically already there. I’m working on stabilizing it enough to release it.

In Mid/long term we’ll have the Asset Store and Auto deploys so that you can easily see your built project on different devices.

I’m super excited about the Asset Store tbh. People sharing/selling assets, components and editor extensions!

---

<div class="post-metadata">

**Author:** ![dario\_corbelli](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/dario_corbelli/32/7576_2.png) [@dario\_corbelli](https://discourse.threejs.org/u/dario_corbelli)\
**Post date:** [August 22, 2020, 1:41pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/6 "2020-08-22T13:41:58Z")

</div>

> [@BeardScript](#):
>
> One of the biggest benefits is that most of your game code is written in three.js.

What release of three.js are you using for the engine? Is it embedded into the code or are you loading it externally (to always use the latest release)?

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 1:46pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/7 "2020-08-22T13:46:59Z")

</div>

It’s using r119. I need to embed it given that the engine uses it directly to render the scene and if the api changes things might get broken. So I decided to compromise and keep it up to date. In the future I’d love to have this happen automatically at least for patch releases.

---

<div class="post-metadata">

**Author:** ![Usnul](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/usnul/32/2355_2.png) [@Usnul](https://discourse.threejs.org/u/Usnul)\
**Post date:** [August 22, 2020, 9:16pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/8 "2020-08-22T21:16:01Z")

</div>

I like what you said about Asset loading being done on-demand.

I went with pure on-demand approach in the beginning when I was writing [meep](https://discourse.threejs.org/t/meep-a-game-engine/10098), but later saw the benefit of having your assets loaded before the game starts, to avoid popping and stalls related to asset parsing etc. For me persoanlly, i prefer a mixed approach, where you can tell the engine to load the assets in some kind of a hierarchy (critical content, major content, minor etc) and let the player start the game whenever they want.

This is how some of the blizzard games work, and I thought it was super neat.

There’s also the issue of figuring out which assets are actually used and which are dead weight. In my engine I don’t have a good solution for that. [Might is Right](https://discourse.threejs.org/t/might-is-right-the-game/6523) has roughly 5gb worth of assets before the build, most of these are not used in the production build. I wrote an analytical tool that works as web-server middleware and records which assets are used, this way I can keep track of which assets are actually loaded into the game. The down side of this approach is that I have to play the game in its entirety to be certain that I caught all of the used assets. Main issue is in the code. A lot of assets are pulled in via scripts, asset manager will happily load those assets, but without parsing the game code it’s impossible to know for certain which assets are used and which aren’t.

For smaller projects it’s probably not an issue.

Anyway, great work and congratulations!

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 10:04pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/9 "2020-08-22T22:04:40Z")

</div>

Hi Usnul! I understand your pain with Asset Management. It’s a mess. I’ve gone for a complete custom approach with on-demand by default just because it improves the load time to test prototypes and lets the user choose their loading approach asset by asset, scene by scene, when they are ready.

I think what really helped me with this was the async nature of the components. Assets are requested by the components themselves and they will hop into the animation loop after everything is loaded. Otherwise, If the assets they reference are preloaded, it’s instantaneous. This approach brings a lot of granularity and flexibility to the table.

Another benefit of components is that they tell the engine exactly which assets to pull. So no assets are loaded unless they are being used.

I’ve checked out Meep and looks great btw, congratulations! And I really like Might is Right, I’ve played it a while back and really enjoyed it. WebGL does great with point and click and turn bases games/experiences.

---

<div class="post-metadata">

**Author:** ![mjurczyk](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mjurczyk/32/10995_2.png) [@mjurczyk](https://discourse.threejs.org/u/mjurczyk)\
**Post date:** [August 22, 2020, 11:50pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/10 "2020-08-22T23:50:32Z")

</div>

> [@BeardScript](#):
>
> where you will be able to share assets through a store, I wouldn’t want to be related to the flat Earth fury hentai Payday 2 project

1. Completely 100% serious now - if I were you, I’d browse a few asset stores before you’d start censoring content in any way. 99% of (even very high quality) assets are quite… weird and questionable. But people like them, need them, buy them and use them - internet economy runs on rigged furry and anime girls’ models.

2. When you start the asset store let us know here - if you are going to allow $ sales with a fair share, I’ll be glad to put some of my CGTrader assets there! 🙂

3. As for the explanation - thanks for a long post! You’re right, I wasn’t really expecting you to suddenly face Unreal Engine with full firepower and crush them with features - not really a fair comparison. But I’m glad you can defend your idea!

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [August 22, 2020, 11:59pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/11 "2020-08-22T23:59:19Z")

</div>

1. I will consider this one. I hadn’t considered it much, just though of school kids learning to make games and the content they could be exposed to. I might add age restricted categories, that could help.

2. You can’t imagine how much I’m looking forward to this!

3. You are most welcome. Thank you for taking an interest in this.

---

<div class="post-metadata">

**Author:** ![felixmariotto](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/felixmariotto/32/5928_2.png) [@felixmariotto](https://discourse.threejs.org/u/felixmariotto)\
**Post date:** [August 23, 2020, 6:30am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/12 "2020-08-23T06:30:50Z")

</div>

I agree with @mjurczyk about the questionable assets. Just browse the +18 sections of Steam and other platforms, you will see that there is a market. If you are wary about kids being shocked, just hide these assets from the store by default and add a checkbox to show them with a warning.

---

<div class="post-metadata">

**Author:** ![Timmy](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/timmy/32/14525_2.png) [@Timmy](https://discourse.threejs.org/u/Timmy)\
**Post date:** [November 10, 2020, 10:26am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/13 "2020-11-10T10:26:59Z")

</div>

[rogueengine.io](http://rogueengine.io) seems to be offline… Can’t load the site at all.

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [November 10, 2020, 7:05pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/14 "2020-11-10T19:05:11Z")

</div>

Hey Timmy! Sorry about that! I had some unexpected server maintenance. It’s been online for a few hours now.

---

<div class="post-metadata">

**Author:** ![Timmy](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/timmy/32/14525_2.png) [@Timmy](https://discourse.threejs.org/u/Timmy)\
**Post date:** [November 10, 2020, 7:30pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/15 "2020-11-10T19:30:38Z")

</div>

Awesome, thank you for letting me know.

Not had chance to download yet, but it looks really good and I’m looking through the api docs.  
I see many c# similarities within the api and with Unity. Looks like I can dive straight in, which is great.

Noticed this typo, no idea if it’s just a html typo or in your api… this is within Component method/class extension explanation.

#### onBeforeObjetRemoved

```javascript
onBeforeObjetRemoved(): void

```

This method will be executed just _before_ the [remove](https://threejs.org/docs/#api/en/core/Object3D.remove) method for the `Object3D` to which this object belongs is called.

Which is followed by onObjectRemoved() and that looks like there’s no typo.

Looking forward to having a go with the editor tomorrow.

Also noticed this thread is 3 months old, have you evolved the alpha in the meantime?

---

<div class="post-metadata">

**Author:** ![GlifTek](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/gliftek/32/13131_2.png) [@GlifTek](https://discourse.threejs.org/u/GlifTek)\
**Post date:** [November 11, 2020, 2:25am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/16 "2020-11-11T02:25:53Z")

</div>

Impressive…

MOST impressive.

---

<div class="post-metadata">

**Author:** ![seanin](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/seanin/32/6452_2.png) [@seanin](https://discourse.threejs.org/u/seanin)\
**Post date:** [August 2, 2021, 6:01am UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/17 "2021-08-02T06:01:22Z")

</div>

Good !  
but it seems to lack the model animation preview function .

Is there a github address ?

---

<div class="post-metadata">

**Author:** ![Francis\_MacDougall](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/francis_macdougall/32/25262_2.png) [@Francis\_MacDougall](https://discourse.threejs.org/u/Francis_MacDougall)\
**Post date:** [March 28, 2022, 9:37pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/18 "2022-03-28T21:37:29Z")

</div>

I want to use real time body tracking running in a cpp application that talks to the current rogue engine three.js environment. Is there a mechanism to send/receive network commands or some other means to communicate with the app?

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [March 28, 2022, 10:45pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/19 "2022-03-28T22:45:08Z")

</div>

Hey! yes, you can. Your Rogue Engine project is basically a three.js project in a node.js environment with a Unity-like editor. So basically, you can use TS/JS and even your favourite npm modules to do whatever you want, like for instance, talking to a REST API, websockets, etc.

You could create a component called BodyTracking, and from its start() method set up a listener for your API.

This video is a good way to get familiarized: [Let's Make A COMPLETE GAME In Three.js With Rogue Engine | JS/TS | Tutorial | Part 1 - YouTube](https://www.youtube.com/watch?v=9oVqS5xBIyg)

You’re welcome to join us on Discord! I’m always around there to help!

> **[Join the RogueEngine Discord Server!](https://discord.com/invite/PnxAsck)**
>
> Check out the RogueEngine community on Discord - hang out with 360 other members and enjoy free voice and text chat.

---

<div class="post-metadata">

**Author:** ![BeardScript](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/beardscript/32/50616_2.png) [@BeardScript](https://discourse.threejs.org/u/BeardScript)\
**Post date:** [March 28, 2022, 11:42pm UTC](https://discourse.threejs.org/t/rogue-engine-a-webgl-creation-engine-based-on-three-js/18063/20 "2022-03-28T23:42:17Z")

</div>

Sorry Timmy I wasn’t receiving notifications and have just seen your very old message.

Rogue Engine has grown dramatically since then.

Thanks for reporting that btw, it’s been fixed already!

Let me know if you try it.

Cheers!
