StarMade 0.17 Warp Gates, Jump Drives, and a lot more
a huge update is now finally done. Here are the new features (amongst other smaller ones):
Warp technology was something I held back to really have the necessary core to be able to make work, as that can easily break game play. With all the updates to the core, as well as all values available in the config, and also combined with our now concrete plans for a universe redesign, it's finally time to put warp into the game.
Warp gates are the stationary version of structures that enable players to warp. Their rage is 8 systems (128 sectors), but that still can change if needed (available in config). They have a steady power cost on size, and also a one time cost per ship that passes through, which is based on the mass of the ship.
Once passed, your ship will take 2 seconds to warp up and then warp. Note that you can only jump to stations with an operational jump gate.
How to build and connect Warp Gates
Warp gates have to be build in a two-dimensional loop. That means, each block that is connected to the gate computer (place that one first) must exactly touch two other gate blocks. The simplest form is to build a flat square. The computer will give feedback if the gate is currently operational. Be sure to select the computer with 'C' as it also happened to me that I patched up a gate without connecting the blocks to the gate computer, and then wondering why it didn't go online.
Now that you have your gate, it's time to connect it. For that you will need need the new marker beam. It will be in your inventory as a fresh player, or you can ask an admin for it (/give_marker_weapon yourname). This new beam is not only going to be used with gates, it will be the main tool to use for inter-structure connection, which for example also comes in handy with the coming AI fleets, and more.
This marker beam has two firing modes: Right Click will mark a structure. In the case of warp gates you can shoot the gate station anywhere to mark it. Right clicking the marker beam in the inventory will not tell you that it has a marking saved. You can now shoot the marker beam on another gate to enter its destination. To do that you have to use Left Click on the gate computer you want to set the destination for. As a fast way to connect the other ons to this, you can then then shoot the gate with right click to overwrite the saved marking with that gate, go then through the now working gate, and enter the mark on the other gate. You now have both gates connected.
Kupu(tom) made the textures for all the new blocks and items.
Jump Drives are the portable version of structures that enable players to warp. You can put them on a ship, charge them up, and instantly travel up to 8 sectors (max distance is also in the config). The destination to jump can be influenced in two ways. Either you jump in the direction you were looking at when engaging the jump drive, or you can use a more precise method: entering a waypoint in the navigation panel will enable you to jump towards the waypoint no matter in which direction you look in. It even puts you directly at your waypoint sector if it is fewer than 8 sectors away.
Jump Drives can be placed like any other weapon or effect. They will appear in the weapon panel to put in the hotbar to use. Keep in mind that there is a sweet spot for jump Drive modules depending on ratio of total mass to jump drive modules. You can build them as small as you want, but they will take much longer to charge up. Placing more blocks than the sweet spot will make charging even faster, if you want to specifically build a jumping ship. But keep the power costs in mind. The statistics of where the sweet spot is are in the weapons panel if you click on the jump drive.
To charge, you have to hold the left mouse button in flight mode like shooting a weapon. After it is charged, you can press right click to jump. The mechanic to actively have to charge up the Jump Drive is in place to make it more dangerous to use in battle. The drive has a small cooldown after jumps (10sec at the moment).
But be warned. Changing the blocks on a jump drive will reset the charge immediately. The charge will also be reset if hit, so make sure you are save before starting to charge up (you can still of course do it while flying).
Save/Load Templates to paste
A new feature has been added to the advanced build mode. You can now save what you selected with "copy" and load it to paste any time you need it. The only restriction is, that you can't paste templates that exceed the mass build area dimension of the server you are playing on. These files can also be shared (located in StarMade/templates) to make toolboxes for any purpose.
Optimization for up to 50% more fps (depending on hardware)
Occlusion Culling was a technique I tried over and over to make work over the past 4 years. The problem is that it has a very narrow line of performance taken to gain performance. So a wrong design or a small mistake will cause it to not give any performance boost, or even lower the overall graphics performance.
Some graphics cards have not full support of this feature (even if they say they do by specification), so if you get any flickering, you can turn it off without having to shutdown the game in the in-game options. A one time message when starting the game will also provide this info.
Technical: Basically, occlusion culling is the technique to not draw parts of geometry that is behind other objects (occluded). What sounds easy informally, is one of the hardest problems to get working right. The first problem is, that at the time of draw, you don't know which objects are occluded without drawing them first. Draw too few, and the objects that would be normally occluded will be falsely drawn, draw too much, and there is no actual gain in performance, as you have already basically drawn it. The second problem is that graphics processing is happening in a pipeline and asynchronous, so the data is not actually there yet at the time the draw command returns. That means a lookup to check if an object is occluded forces the pipeline to a halt to have all the data flushed before being able to continue. And this of course means immense slowdown. The third problem is that occlusion culling require objects to be drawn front to back (else they objects wouldn't known to be occluded), and blended draw (for glass etc) requires back to front.
To combat the first two problems, there are two techniques used based on the same premise: "If one object was not visible in this frame, it's highly unlikely to be visible in the next". What is done is drawing all chunks that are known to be visible, then (very fast) bounding boxes are drawn for each chunk that may be visible or not. At the start of the next frame, the results of the query of the last frame are pulled to have no pipeline stall. The again, all possibly visible chunks are drawn based on the new result, and the rest as bounding boxes.
The 3rd problem is lucky already solved by design. StarMade sorts chunks threaded, and vertex storage is done in a way so non-opaque parts of chunks can be drawn separately.
Movement cancel (cancel rolling of big ships)
Pressing 'V' (but you also can assign it to the break button) will now cancel any mouse movement. This is especially handy for bigger ships, when you start to roll the ship and want to stop.
Storage blocks filters
Another big feature are storage block filters. The storage blocks now essentially work like factories, but have a distinct use case. You can make list of which blocks and how many of them to take each cycle from other storages. Just open up your storage block and click on filter. The blocks will be taken out of any block that is connected to this one with 'v'.
This way you can not only sort items after production or from looting, you can also split them up and direct them into a factory system to make exactly what you need.
Each storage block or factory can be turned on and off now. Please note, that factories placed in the old version had the default active state "false", which means you will have to switch those back on again. All newly placed factories or storage blocks are switched on by default though.
The whole system now also is fully logic capable, so you can connect storage/factories to activation modules to control your production and item sorting with the press of a button.
Oculus Rift support
StarMade now has full oculus support, including head tracking. It was an amazing experience to try out for the first time.
By fiddling with the way StarMade versions are built and deployed I was able to decrease the size of the main program to 5-7MB. That means, that unless there are more files to download (like in this update, as you have to download all the libs one time, as well as textures), an update will only be 5-7MB with the new launcher.
Launcher version 14
Downloadable from the main download list, the new launcher version is now fully deployed. Some bugfixes have been done based on the feedback from the tests. One new feature since v12 is that downloads will now be a lot more stable, as they can actively resume. As a test, I was able to resume downloading after disabling my network card for 30 seconds.
StarMade Server List
StarMade now has its own dynamic server list. You can now click on the server list button next to multiplayer and get an overview of all StarMade servers that choose to annouce themselves to the list.
For Server Admins:
Announcing to the Server List is just a few server.cfg parameters:
This is an example for the test server
ANNOUNCE_SERVER_TO_SERVERLIST = true //announces the server to the starmade server list
HOST_NAME_TO_ANNOUNCE_TO_SERVER_LIST = play.star-made.org //this must be a valid hostname (either ip or host, e.g. play.star-made.org)
SERVER_LIST_NAME = Official Test Server //max length 64 characters
SERVER_LIST_DESCRIPTION = Unlimited building //max length 128 characters
please make sure, that the host name is right. The server list server will check if there is indeed a real starmade server on the other side.
Port is set automatically by the running game server. You can also enter multiple instances from the same server that run on different ports.
The server will usually appear within a few moments of starting it with correct parameters.
The personal salvage beam now has a 25% chance to harvest an extra raw resource each harvested block. This setting can be of course modified in the config.
The personal power supply beam now provides a lot more power per hit to be a lot more usable in survival situations. Also the display bug of factories showing 500/100 has been fixed.
Calbiri is currently working on missing recipes as well as overall tweaking on the balance. It's now also possible to set the manufacture time of each block individually to allow for more balance options.
Lots of Bugfixes
There has been a lot of testing and a lot of fixes. Thanks especially to AndyP, der_scheme, gamesaucer, Lancake, Spaceking, testkil, and all the other testers! You guys are awesome!
Next updates will include more small features, as well as more work on the universe redesign and creature AI.
Thanks for playing StarMade,