Let's rip Skylicht
Posted: Fri Apr 09, 2021 5:09 pm
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.
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.