Let's rip Skylicht

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
Post Reply
chronologicaldot
Competition winner
Posts: 688
Joined: Mon Sep 10, 2012 8:51 am

Let's rip Skylicht

Post by chronologicaldot »

Browsing through Github, I discovered a 3D engine called Skylicht, which is built on top of Irrlicht but adds a number of new features.
https://github.com/skylicht-lab/skylicht-engine

It supports Android and HTML5 and even OpenGL4 and DirectX11, but it ditched support for Linux, OpenGL2, and other things.
A number of things have been removed from the Irrlicht code, including the GUI engine. It uses IMGUI, reminding me of GrafZahl's bindings ( http://irrlicht.sourceforge.net/forum/v ... =6&t=50986 ).

The Skylicht part of the code is very weird. Aside from the yucky use of #pragma once and dependency of CMake, the structure of Skylicht can be a bit confusing. For example, the 3D scene structure is dependent on Entity rather than ISceneNode, and thus I'll admit it's tricky to port things back.
(Edit: I found the implementations of the functions in Skylicht.h. Turns out I had a bad copy of Skylicht.cpp. Bad download I guess.)

That said, there's a bit of code in there we could probably port back to Irrlicht. Since Skylicht was created only a couple years ago (2019), the codebase shouldn't be too alien to our current one. (And it's still Irrlicht 1.9, hahahahaha)
There are things like Collada mesh import that includes animation. I don't recall Irrlicht having that for Collada, so it'd be nice to have.
There's also an audio engine, which would be nice to make optional in Irrlicht, though notably it uses standard library mutex etc.

The code isn't written in conventional irr style (it uses m_variablename instead of VariableName), so that could be changed.
The codebase uses the C++ standard library regularly (e.g. using for(MyType t : collection) { ... } ), so we'd have to remove those dependencies on porting.
Finally, there is a propensity of the engine's creator to use monads and global variables. e.g. in the audio library.

All that said, I think there are odds and ends we could hack out of it or use as inspiration for our code. The codebase is MIT licensed, so we shouldn't run into any licensing issues.
AReichl
Posts: 270
Joined: Wed Jul 13, 2011 2:34 pm

Re: Let's rip Skylicht

Post by AReichl »

- Nice thing about it, it compiles "out of the box" ( after many years i still cannot compile Irrlicht-BaW ).

- '#pragma once' is ok. Most / all compilers should support it by now.
The recommended way is '#pragma once' AND include guard:

#pragma once
#ifndef BLABLA
#define BLABLA
...
#endif

- C++ standard library: no reason anymore not to use it.
Speed? - bah! Readability is more important.
amziraro
Posts: 13
Joined: Fri Jan 22, 2016 2:09 pm
Location: Australia

Re: Let's rip Skylicht

Post by amziraro »

Definitely want to see that Collada mesh importer with animations in main Irrlicht, especially since I don't think there's a way to export .b3d from modern Blender anymore. I might take a look at pilfering that, unfortunately I don't really know anything about how Irrlicht does model import so I'm not hopeful.
ethindp
Posts: 1
Joined: Thu Apr 13, 2023 2:52 am

Re: Let's rip Skylicht

Post by ethindp »

Please don't switch the GUI system to use IMGUI. That'll just make implementing any kind of accessibility for individuals with disabilities like me impossible. From what I've seen, most of the easily-embeddable UI systems like IMGUI, Nuklear, etc., don't even have mechanisms for detecting the basic events such as focus acquired or lost, making implementing even basic accessibility impossible without drowning yourself in its inner workings first.
Post Reply