• Register

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.

Post news Report RSS ScrumbleShip 0.22 - Now with Multiplayer!

ScrumbleShip 0.22 has been released, with Multiplayer, new blocks, and lots of improvements.

Posted by on

Multiplayer

Over 160 changes make 0.22 the largest update ScrumbleShip has ever seen. The big change is a robust Multiplayer system, allowing users to frolic, explore, and build together.

The update also adds in several new blocks, re-establishes asteroid generation, and improves the player/ship collision detection - It's now stable up to and beyond real-life orbital velocities! Plus two new save systems, both faster and more fully featured than the old one. The "Expanded" format even allows single block updates, ensuring that the server won't lose any data you happen to send its way.

Here's 60 ships, 500,000 blocks, and 2.4mb of network-compressed data:

One day later

The server software is publicly accessible, so anyone with a linux or bsd server can run their own server.

How many users can play at once? I have no idea - I haven't yet been able to get enough users on to stress my server! Let's find out, shall we?


Cheers,
-Dirk

Changelog:

  • Fixed ghost block appearing in modes where it shouldn't.
  • Fixed menu items deselecting when clicked.
  • Wrapped in Garmine's cleanup changeset.
  • Fixed longstanding bug causing many ships not to load.
  • Added scrollbar to loading screen.
  • Added ability to load backups in game.
  • Edited a few minor Garmine lines to get windows building again.
  • Added additional thread, for 3 total.
  • Moved parsing to its own thread.
  • Added Garmine's voxel vertex patch.
  • Created framework for Server.
  • Wrapped in Garmine's lindebug Makefile patch.
  • Swapped out scaffolding block for a much lighter weight one.
  • Added in some basic client and server messaging.
  • Added generic "being" structures.
  • Added generic compression algorithms.
  • Added ability to compress all large packets sent.
  • Added ability to uncompress packets received.
  • Added server player list.
  • Added many behind-the-scenes client/server items.
  • Added ping/pong keepalive packets
  • Added the ability for the server to broadcast chat messages.
  • Fixed a segfault when trying to deal with a block at 0,0,0
  • Improved server chat messages
  • Improved server connection and disconnection algorithm
  • Reduced keepalive ping time to once per minute
  • Added new blocks: Breacher, grinder, grass, dirt, carrots, various barks, leaves, wood.
  • Adjusted building method of Client Networking to make coding easier
  • Switched block randomizer to better, faster randomization method.
  • Improved upon the way the tree blocks are stored.
  • Added several new tree blocks: Buds, seedlings, seeds, and improved bark blocks.
  • Added cow blocks.
  • Fixed longstanding bug causing some thin voxel structures to be invisible.
  • Added networking location test code.
  • Made server hand out locations to players as they log on.
  • Got location updates sending.
  • Updated data sending functions to be more generic.
  • Found excellent way to pack data.
  • Made server record time (And pingtimes) successfully.
  • Upgraded Player/Ship collision detection
  • Switched location systems to use a 64 bit int, to make handling movement easier.
  • Switched some player data to use "being" data, to make it more generic.
  • Did some background work preparing for network ghosts.
  • Created system to store ships, players, and beings within solar systems.
  • Updated many older functions because of the location system changed
  • Added a toggle to turn off networking if the game isn't connected to a server.
  • Fixed an erroneous packet size.
  • Added a simple player list sync between client and server.
  • Allowed server to update player location.
  • Drew a fire where player is located on the client.
  • Added ability to send strings embedded in other packets.
  • Fixed several small networking bugs.
  • Added Psyrek's solid asteroid mod.
  • Re-added asteroid generation.
  • Fixed a few ship initialization bugs.
  • Fixed a player/ship collision bug.
  • Made asteroids more blob-ey than long.
  • Made large asteroids generate faster. "Huge" should now take a minute on most systems.
  • Sped up the flashlight algorithm slightly.
  • Added some background code for the new save system.
  • May have fixed numerous small bugs.
  • Applied Oebele's improved errors patch.
  • Separated out memory for temporary storage.
  • Created new save system that allows single block updates.
  • Fixed minor problem with initialization of player location.
  • Added in shipsend/receive functions for the client.
  • Wrote directory deletion to remove expanded saves.
  • Added a new lower quality flashlight.
  • Sped up old flashlight ever so slightly.
  • Added premium flashlight option.
  • The server now hands out ship lists to players as they connect.
  • The server also hands out copies of its loaded ships to players.
  • The shipput function now is a wrapper to connect up with the networking portion
  • The server now accepts block update packets and hands them out to players.
  • Made system not display current player model.
  • Made system transmit block deletions.
  • Fixed clients ignoring deletion packets.
  • Made single block updates save
  • Fixed many client/server bugs
  • Small optimizations, mostly server.
  • Fixed chat input
  • Added chat output Added "Could not connect to server" notice.
  • Added "Disconnected from server" warning.
  • Disallowed empty chat messages client-side
  • Made backspace repeat
  • Directed chat messages to log too
  • Chat buffer now dynamically shrinks/grows when "t" button pressed.
  • Should make players move more smoothly.
  • Should increase parse speed by 20% or so.
  • FPS may increase by a few percent.
  • Fixed server phantom player issue.
  • Got component update events sending across the network.
  • This makes "e" and melting blocks sync.
  • Fixed up several network security holes pointed out by Yam. Thanks Yam!
  • Also fixed up several network security holes not pointed out by Yam.
  • Added name support in client - Currently does not check the name is valid.
  • Removed deprecated time-based saving from client.
  • Fixed bug resulting from a partially allocated ship. (Thanks Jacob!)
  • Fixed small sendmessage memory bug.
  • Vastly improved how the server handles connections and disconnections.
  • Changed from IP-based user identification to session-based identifcation
  • Removed more deprecated client saves
  • Reverted user models to old style of drawing, fixing two bugs.
  • Added a version check to the identification packet
  • Fixed receiving incorrect components and materials from users.
  • Disabled building in free space
  • Allowed server and playername to be specified in command line or in options file.
  • Applies a potential fix for Garmine's strlen difficulties
  • Re-enabled singleplayer mode, on by default.
  • Reconfigured title screen.
  • Made title screen optional if a servername is in command line or options file.
  • Added some framework to request asteroids from server.
  • Re-instated automatic saving for single player.
  • Re-added automatic ship loading for single player.
  • Added ability for single player to load new .sts save format.
  • Added method to easily switch to single player after joining multiplayer
  • Made premium flashlight slightly cheaper
  • Made cheap flashlight much better
  • Reduced graphics cache ram usage by half by increasing cpu usage an insignificant amount.
  • Added combination realloc and calloc for ship initialization
  • Improved the heat engine
  • I wonder if anyone actually reads these changelogs.
  • Fixed bugs introduced into the heat engine in earlier code changes
  • Vastly improved hit detection, particularly at high speeds.
  • Made ships mobile again via numpad
  • Fixed small memory bug regarding maximum number of components.
  • Added ability to sync ships across the network.
  • Drastically reduced cpu usage by player/ship collision detection.
  • Fixed an over-optimization that resulted in people getting stuck in walls.
  • Located and fixed a minor memory bug while receiving ships.
  • Fixed an unlocked mutex while loading ships. Removed some debug code.
  • Got multiple ships loading on the server.
  • Got ship locations, speeds, etc. saving on the server.
  • Fixed the automatic ship changer.
  • Fixed some crazy bug in saving tightsaves.
  • Fixed a bug regarding save type translation.
  • Fixed a bug that caused distant ships to crash the game sometimes.
  • Fixed numerous bugs in system to hand out ships to players.
  • Created automatic asteroid namer.
  • Added ability for player to request asteroids from server.
  • Fixed issue that caused spacebar to malfunction.
  • Updated the reliability of numerous types of packets.
  • Added user-visible server sync notices.
  • Make singleplayer make an asteroid if ship is empty.
  • Updated tutorial in a minor way.
  • Added loading of server options, which allows players to run their own servers.
  • Fixed bug that resulted in ghost blocks vanishing.
  • Adjusted default drawing distance to someone more reasonable
  • Made corundum clear
  • Ensured that players who accidentally get inside a block get outside the block rapidly.
  • Improved look of transparent object material colors.
  • Applied fix for level of detail shortening bug.
  • Fixed view constriction bug.
  • Fixed ship swapping when ships are nearby.
  • Fixed error wherein new ships lost their ship number
  • Made client post name of currently downloading ship
  • Temporarily reverted a logging change for release
  • Added ability to list users on the server with tab
  • Fixed bug that could crash the server upon disconnect
  • Added ship name readout
  • Fixed numerous small bugs
Post comment Comments
Lulloser
Lulloser

Looooong list! I love it. keep up the good work Dirkson! :)

Reply Good karma Bad karma+5 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: