2023-12-16

Project Raygine #2

Everything is held together with duct tape and chewing gum. But it's working. Sort of, at least. The build process is still based largely on the template project I used to get started, but since I needed a bunch of additional libraries, I had to make some changes and it's all pretty messy.

Yesterday I wanted to get a Lua debugger up and running. I would prefer a remote debugging solution and started out with Lua Debugger by devCat. The description sounded like exactly what I would need. So I spent half the afternoon integrating LuaSocket, starting off wrong with the current socket library version, which isn't compatible with LuaJIT. LuaPowers had a working version, but I failed linking the project because it couldn't resolve some symbols to LuaJIT. In the end it turned out, that I compiled the files using g++, which mangled the names and the symbols couldn't be found. After that, it finally worked. The debugger interface was now ready for use - but I couldn't find a way to attach VS Code with it. My guess is, that the debugger extension no longer works - the last release is from March 2019 and the repository shows no activity since then. So I gave up on that.

Long story short: I tried a bunch of extensions and none would work for various reasons. One debugger that worked quite quickly for me was Local Lua Debugger. It's not perfect, but it works. I can't set breakpoints while the engine is running, but for inspecting complicated stuff, it's fine. For now.

At least I have now socket integration.

Another topic I wanted to address was setting up asset files (scriptable objects). I am now more or less reusing the same code as for the scene entities - which works, but is a bit unclean since assets and entities aren't the same thing. I think for now I will settle with it.

Anyway, I now have project settings in place with some basic parameters. But now that I have a list of layers, I am not sure how to utilize them. Should entities be assigned to layers or is it a property of the components that use them for rendering? Layers are usually used in CAD / 3D modelling software for organizing the drawings and in 2D painting software, layers are used for compositing. The weird thing is, that I've seen using 3D engine layers for both purposes, which is kinda weird. For rendering controls, it would be better to use layers on the mesh renderers, for organizing the scene, it would be better to use layers on the entities. I am therefore thinking of using two different layer systems, one for renderings and one for scene organization. I need some proper names for such usage...

So much for now - here's a screenshot of the project settings:

Project settings

🍪