Post by n00b on Jan 2, 2024 13:01:57 GMT -6
RCBasic 4 development has started. I have spent the last few months planning on what new features need to be included in 4.0 as well as what changes need to be made to the underlying tech stack.
Here is a list of new features that will be available at 4.0 release:
New Graphics Backend
What graphics backend will be used?
Currently the SDL2 rendering API is used for graphics rendering. It works great for 2D but does not provide good support for 3D. I was thinking about writing a new graphics rendering engine from scratch in opengl but this would just add to the amount of maintenance needed to maintain it so I decided to use a dedicated graphics library to handle rendering. When deciding on a graphics library, I had a few requirements it needed to meet. First it needs to 2D rendering capabilities on par with the current 2D renderer RCBasic uses. Second, it needs to maintain compatibility with older systems. Finally, it needs to be easily extendable. I considered a few different libraries including raylib, ogre, irrlicht, urho3d, bgfx, and openscenegraph and ultimately decided on irrlicht. Most of the other libraries also met the needs I listed so it came down to the fact that irrlicht is easy to compile, easy to extend, and easy to use. With the graphics engine decided, I have already been working on the transition from the SDL2 rendering API. SDL2 will still be used for input and window handling, irrlicht is just being used for drawing.
Will 2D still work the same way?
For the most part, yes. The canvas system will still be mostly the same but with a few differences on how some things work.
What tools will be supported?
Currently irrlicht provides support for a wide variety of formats so any 3D modeling tool you want to use is probably supported. I have also been working with the irrlicht community on adding support anim8or so that will also be usable.
Physics
What physics backend is being used?
I am mostly settled on using ODE but this may change after some more research. Admittedly, I don't know a whole lot about the differences between the various physics engines available so as long as it has a fairly open license I am willing to consider it.
Will 2D and 3D physics be supported?
Yes.
Other changes
What other backends are changing?
Eventually, I would like to move away from SDL_mixer for audio as well as moving away from TheoraPlay for video playback but this probably won't happen right away unless someone is willing to undertake those projects. SDL_mixer does provide some 3D audio capabilities but they are pretty lackluster and the main issue with TheoraPlay is that it only supports *.ogv files. I chose this over FFmpeg originally because of the license FFmpeg had back then but I think it has become more open so it might be worth making the switch.
RCBasic 4 is currently still in very early stages of development so a release may not be available until 2025 or possibly 2026. I am hoping to get 1 or 2 more developers on board to speed up development but I realize that is probably not happening. I will continue to post updates or changes on this thread as development progresses.
Here is a list of new features that will be available at 4.0 release:
- User Defined Types - This has been the most requested feature and it will be top priority for 4.0. I does involve a lot of rewrites on the compiler and runtime end. Currently there is a branch opened for it and it is actively being worked on.
- Multi-threading - This may be limited to certain operations but it is still neccessary for modern game/application development.
- 3D Graphics Rendering - I will discuss this in more depth below.
- Physics - With the move to 3D as well as to provide better performance for applications, a built-in physics and collision detection system needs to be implemented. I will discuss this more below.
New Graphics Backend
What graphics backend will be used?
Currently the SDL2 rendering API is used for graphics rendering. It works great for 2D but does not provide good support for 3D. I was thinking about writing a new graphics rendering engine from scratch in opengl but this would just add to the amount of maintenance needed to maintain it so I decided to use a dedicated graphics library to handle rendering. When deciding on a graphics library, I had a few requirements it needed to meet. First it needs to 2D rendering capabilities on par with the current 2D renderer RCBasic uses. Second, it needs to maintain compatibility with older systems. Finally, it needs to be easily extendable. I considered a few different libraries including raylib, ogre, irrlicht, urho3d, bgfx, and openscenegraph and ultimately decided on irrlicht. Most of the other libraries also met the needs I listed so it came down to the fact that irrlicht is easy to compile, easy to extend, and easy to use. With the graphics engine decided, I have already been working on the transition from the SDL2 rendering API. SDL2 will still be used for input and window handling, irrlicht is just being used for drawing.
Will 2D still work the same way?
For the most part, yes. The canvas system will still be mostly the same but with a few differences on how some things work.
What tools will be supported?
Currently irrlicht provides support for a wide variety of formats so any 3D modeling tool you want to use is probably supported. I have also been working with the irrlicht community on adding support anim8or so that will also be usable.
Physics
What physics backend is being used?
I am mostly settled on using ODE but this may change after some more research. Admittedly, I don't know a whole lot about the differences between the various physics engines available so as long as it has a fairly open license I am willing to consider it.
Will 2D and 3D physics be supported?
Yes.
Other changes
What other backends are changing?
Eventually, I would like to move away from SDL_mixer for audio as well as moving away from TheoraPlay for video playback but this probably won't happen right away unless someone is willing to undertake those projects. SDL_mixer does provide some 3D audio capabilities but they are pretty lackluster and the main issue with TheoraPlay is that it only supports *.ogv files. I chose this over FFmpeg originally because of the license FFmpeg had back then but I think it has become more open so it might be worth making the switch.
RCBasic 4 is currently still in very early stages of development so a release may not be available until 2025 or possibly 2026. I am hoping to get 1 or 2 more developers on board to speed up development but I realize that is probably not happening. I will continue to post updates or changes on this thread as development progresses.