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

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

Download, read the docs, and get creative!

10 Likes
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.

4 Likes

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!

:joy: 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 :rofl:

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.

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!

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)?

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.

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, 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 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!

1 Like

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.

2 Likes
  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! :slight_smile:

  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!

3 Likes
  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.

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.

1 Like

rogueengine.io seems to be offline… Can’t load the site at all.

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

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

onBeforeObjetRemoved(): void

This method will be executed just before the 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?

Impressive…

MOST impressive.

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

Is there a github address ?

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?

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

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

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!