ScrumbleShip is the most accurate space combat simulation devised to date. Gather resources, construct a capital ship out of individual blocks, then pilot it with AI or human help against other players.
A ton of backend changes means good things for the future.
Posted by dirkson on Nov 24th, 2012
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.
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, and has allowed me to scale freevoxels on the fly:
Our threading library was old and no longer under development, so I switched to a newer library. This has few effects besides future-proofing.
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 every 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.