Merry Christmas, ScrumbleShippers!
It's Christmas Eve and I'm bundled up warm and snug, hammering out ScrumbleShip bug fixes instead of responsibly buying my last-minute christmas gifts. Lots of stores are open on Christmas morning, right?
Things have been quiet lately, but I'm not down for the count yet. I'll explain what happened in the next release of the game, alongside a lot of fanfare and good news. Look forward to more than one exciting announcement then.
But for now I figured you guys might appreciate a little countdown to the next release, as a sort of Christmas present to those of you still following what I'm doing here. Here's a list of the final issues that need solving before we rise like a phoenix. I'll update them as I finish them!
Removing blocks causes visual bugs Placing/removing blocks can crash the game The server's ship saves need to be upgraded The reticle isn't pinned to blocks correctly The reticle is drawn incorrectly uv_rwthread_tryrdlock() has different behavior on windows and linux The reticle does not have lighting info, which crashes ScrumbleShip Freshly placed blocks do not always force a cache refresh The reticle position is not always where it should be Multiple players at once likely has threading issues Sometimes the current ship vanishes while downloading a new ship Blocks display as incorrect components The multithreaded input has some threading problems A few misc threading issues, particularly when switching or loading ships There's a slowdown when loading ships Transparent blocks don't render correctly in the distance Pitch-dark blocks tend to render at full brightness Animated blocks don't animate correctly Rotating ships tend to cause weird LOD effects. While ships are rotating, distant ships can vanish The escape menu has a couple old options Distant ships consume too many resources Game should start fullscreen on windows Some blocks don't make it to the server correctly Newly placed blocks have incorrect lighting Thin curved blocks are missing voxels Voxels high on the voxel list (transparent) can be buggy, popping in and out of view Sometimes the Reticle renders on top of multiple blocks, or the wrong block(Related?) Ships should degrade into bounding-box voxels when distance is too high High speed collisions can shoot through thin blocks Tutorial has a few outdated items Client doesn't mention when it loses connection to server Space still makes a ship-latch sound under some circumstances, and tab doesn't. Tab doesn't check for nearby blocks Client doesn't mention when it fails to connect to a server Servers don't display part messages Getting stuck in a wall is unfixable When ships are moving, it's possible for the player to fall through them After rotation, ships have some residual movement Faster speeds tend to create level of detail artifacts Lights deletions/additions do not rebuild the light stack on nearby blocks Rarely, locking to ship via the captain's terminal has issues Rarely, players spawn in the wrong ship, particularly when multiple players are on the server Rarely, ships flicker as they move/rotate On very small ships, blocks can go missing Hitting corners allows you to shoot through some blocks Reticle updates after movement frequently crashes the client The location the player starts requesting ships from is not accurate Attempting to fire laser results in a crash New ships can be placed too close to old ship Players should only do ship collision detection for ships they are currently on While switching suit modes, the reticle can sometimes vanish Tutorial doesn't cover ship movement Speed addition is not reset if the user changes modes Rarely, the player can still show up in an incorrect location Rarely, recent work can temporarily vanish when switching ships Users are locked to a global up, rather than their local ship up
The blockcaching process can be sped up by copying a buffer Speeding up hashing should improve parse performance Rotation of players should be sent across the network Users should have some method of respawning near their ship Pressing tab should lock you to a ship's rotation Client should ask the player for their name if ScrumbleShip loads without their name set Players should be able to fly ships Upon interacting with the nav terminal, user should be locked to the ship When locked, the user's input keys should move/rotate the ship For now, rotation and movement will be based around center of mass, ignoring engine placement Ships ought to bounce on their bounding boxes for now, so they can't fly through each other Ships movement keys ought to change based on the orientation block It would be cool if I could calculate rough ship performance based on weight and engine rotations Players should be able to request a new ship from the server Rotation of ships should be sent across the network Movement of ships should be sent across the network
This is a highlight reel - I'll make a more detailed breakdown when the actual release happens.
- Thanks to Yam, the threading model has been completely reworked, scaling from 2 to 8 cores.
- The game is faster and smoother than ever, thanks in part to the new threading model
- After a shader rework, both ships and the player now have full 6degrees-of-freedom rotation
- I halved the amount of ram the game uses
- I added the proper player model, including some cosmetic options for the future
- We switched to a new networking system, which has increased performance dramatically
- I managed to compress the ships to half their previous size when sending across the network
- Downloading ships now takes a fraction of the time, and is done as you fly around
- I added in several bits of code to help me locate bugs on windows
- Thanks to Garmine, we have a new method of antialiasing which is faster AND better looking
- Thanks to Yam, we are now using git, which allows people to contribute changes more easily
- I figured out how to cross compile for Mac, which means mac builds in the bleeding edges
- I found clang's thread sanitizer, which allowed me to fix a huge number of threading bugs
So the next version should be exciting, much more stable and better performing than anything we've previously had. Plus we'll have some basic ship flying. The simulation won't be anywhere near perfect, but it'll be an excellent start.
I'm hoping to have the remaining features and fixes done sometime in January, at which point I'll do a big release and update article, filling you in on my troubles in the past year and the exciting events to come. I'll see all you then!