2024-02-03

Project Raygine #20 - Physics & HTTP

HTTP

I looked this week into making it quicker and easier to test web builds of a project and it's ... disappointingly complicated. There's no lack of open source projects on github, but it's a mix of unmaintained, not working, GPL licensed (I don't want to make my editor GPL licensed), and huge code bases. The problem is, that every project that is aiming at making a server outward facing (e.g. internet) comes with a lot of additional dependencies like SSL encryption. For a locally running development editor that should be resource efficient for client and server and low latency, that's ... not helpful. An unencrypted basic HTTP support with web sockets is what I want here. I believe this could be done with <5k loc, so getting megabytes of code for this is not what I want. I guess I have to write it myself. 😫

Physics

Putting HTTP aside for now, I stumbled over a topic while working on the asteroids thing that I have also on my todo list: Physics. Back in 2004, I integrated ODE physics into Luxinia. It's a quite uncomplicated physics engine that offers a lot in return. The C interfaces ensured that the usage is quite simple and the performance was good. ODE has however since then not been updated much and there's another successor around: Bullet. It's C++ only it seems, but my project is C++ configured anyway. I started adding it to the codebase and ... well, it's looking a bit more complicated than ODE. I am writing a custom Lua binding because I have some specific ideas of integration in mind. It's going to take a while to get some sompatibility here I guess. I also need to learn how to use it. But hey, it compiles. Have to check how big the binary gets with it - though not having physics is not an option. It's too versatile to not have on board. However, once I have physics and sounds, I think all major components are on board. There's of course the rendering part, but I am deferring this for some more time.

I hope I can showcase some physic simulation for the next update...

🍪