Another month, another release - Although this one was nearly a week late!
I spent a lot of time this month going over old choices and updating them. We switched from SDL to GLFW, a HUGE change that will eventually allow Scrumble to function on Macs and on the open source opengl drivers. This affects how I deal with display initialization and input, among other things.
This change allowed me to fully separate movement from input, resulting in a stable movement speed no matter what the frames per second dip to. It also allowed me to implement a backend system for changing which keyboard buttons do what. I improved the automatic quality adjuster, allowing us to target specific frames per second goals.
Our threading library was old and no longer under development, so I switched to a newer library. This has few effects besides future-proofing.
At some point in the month I had a lightbulb moment, and realized that where I was using two draw calls I could use one by scaling the voxel via a left-over value in each voxel's location. This has resulted in a 20% performance gain on some ships.
I also managed to get some generic raycasting code working, and replaced several old sections of code with it. Once it fully functions, I'll integrate it into our display algorithm, finally giving us basic occlusion culling. That should result in a massive performance gain for most scenes.
Later in the month I tackled another large switch - Previously, the display grid was twice as large as the backend grid, for no particularly good reason. I adjusted the size of voxels so that both grids lined up, and thus saved tens of thousands of calculations per second, AND future programming headaches. Finding ever instance of *2 and /2 in the code is tricky, though, so it took me considerably longer to troubleshoot than I expected - And some bugs may still be present!
All things considered, this month was an excellent preparation for coming code. We've solved the major hurdles between us and mac support, and between us and prototype movement support. Expect both of these things before the end of the year.
- Captain's terminal does not currently work.
- Replaced SDL with GLFW.
- Added "Input" section.
- Added backend for user-modifiable controls.
- Fixed numerous small bugs in the GLFW port.
- Switched to a different threading library, tinycthreads.
- Fixed reversed shift+wasd bug.
- Applied ZeroKnight's save split patch.
- Scaled cubes in the shader, rather than before the shader.
- Removed the distinction between large and small cubes.
- Made vanished blocks less prevalent.
- Improved screen updating.
- Fixed FPS limiter Improved FPS limiter.
- Added FPS goal setting.
- Fixed slow turning issue.
- Added threaded input option. Made non-threaded input the default.
- Another small update frequency change.
- Adjusted fpsfixer.
- Made free voxels faster.
- Made free voxels fade individually.
- Made free voxels' fade reset if they bump a wall.
- Addtional raycasting code.
- Additional occlusion code.
- Additional opengl core code.
- Switched graphics grid and normal grid to be the same size.
- Made windows version record output to "errors.txt"
- Fixed info mode.
- Fixed several small bugs.
- Adjusted speed.
- Fixed reticle issues.
- Fixed voxel bouncing issue.
- Fixed issue with reticle selection.
- Fixed another couple reticle issues.
- Fixed lights spreading too far.
- Minor optimizations.