Latest stable version: Checking...
Registry status:
    • Jul7

      Prerelease News

      Greeting, Citizens ~

       

      We’ve uploaded a pre-release to the “pre” branch. It’s mostly feature complete, but there are still a few bugs left to fix, and it’s still missing a few graphics. Remember, always use a separate installation for preview builds as they may potentially include game-breaking issues.

       

      If you come across anything new that doesn’t work or you believe you’ve located a new bug, report that here to help us out: Report a Bug (Release Candidate)

      Features

      Segment requester

      As mentioned in a previous dev blog, we’ve completely rewritten the chunk request system.

      The new approach streamlines the order of chunk requests over multiple entities. They’re now ordered in the background on a global level, meaning nearby chunks will have much shorter load times. This also benefits the lighting calculations, which should improve overall performance.

       

      Outline

      A new graphical effects that outlines/highlights entire entities or groups. Right now we only use it for the current selected target and for most C + V systems out there. Most likely we’ll integrate this system later with the upcoming power changes and its information warfare portion.

       

      The outline system uses a highly optimized mesh that can quickly be generated for any number of blocks. Although this system is not able to replace the existing mesh and chunk system due to lacking information, they’re still a necessity for future plans as they would also be used in far-aways LoD views of a model. In combination with higher-granularity chunk system, should give a large FPS increase when viewing bigger objects in the distance.

       

      Note: framebuffer has to be enabled in your graphic options as it would not work properly otherwise

       

      Build Mode

      Line Tool

      This is an addition to the build helpers. You set two points (using your camera position, as with the fill tool) and it will create a line between them.  You can adapt the line thickness with a slider.

      We’ll add more features in the future, such as splines.

      As with the new GUI, this is also a work-in-progress, so we’ll be improving it and fixing any issues that arise.

       

      Fill Tool

      The fill tool allows you to incrementally fill (or replace) areas with your desired block. It’s quite simple to use: you can freely select your starting point with the camera (similar to ‘create docking’), and press the fill button with a block selected on your hotbar.

      The fill tool allows both space-filling and block-replacing, depending on what the starting point is. If it’s empty space, the tool will flood-fill; if it’s a block, only that block type will be replaced.  Also: this is a step-based system, meaning undo and redo work, allowing you to easily fix any mistakes.

      You can use the slider to set the amount of blocks added by step. The max amount can be changed in the config.

       

      Different method of selecting

      With adding the line tool, we added a new way to select portions of blocks altogether. It is now possible to select boxes by selecting the starting and the end point. This comes in especially useful for copy & paste which in the past always was a bit finicky to use.

      UI improvements

      Gm0GeXM.png

      Besides the new look, we’ve changed quite a lot of the original’s build mode functionality. We’ve grouped the available tools together accordingly and those groups can be collapsed or expanded when needed. When the expanded areas become too large, it becomes scrollable. However, the orientation group with the undo/redo buttons however is fixed at the top so that you never lose track of it.

      Which group is expanded or closed is saved on exit and restored next session.

       

      kuUpmFj.png

      The orientation group at the top also functions as a radial menu for shape selection, simply left click it and hold to make it popup.

       

      zDd12WI.png

      The sliders have received a makeover, now allowing more ways for you to change their value. Their value can now be entered manually by left clicking the value on the left side and functions like a text box only allowing numeric input.

      If you have a mouse wheel, you can also change the slider’s value by hovering your mouse over the textbox on the left and scrolling up or down, allowing for quick adjustments.

       

      The build helpers have also gotten a general overhaul. We got rid of the annoying popup dialogs, so everything can be set or changed directly from the build mode panel itself. This also allows you to recalculate a build helper’s parameters without having to redo everything. You can also change the placement of the build helper

      The placement of the build helper can also be moved independently without having to clear the current build helper.

       

      Symmetry planes now have their individual odd-mode, allowing you to work with an off-center XZ plane but a centered YZ plane at the same time for example.

      We’ve also added tooltip support to the build mode panel. It’s not used that much right now but later we can add some nice descriptions to some of the tools if needed.

       

      Additionally we added “sticky advanced build mode” by pressing the advanced build mode key twice rapidly, which allows you to keep advanced build mode active without having to hold the key. Pressing the key once more gets it back to normal.

      Load/Unload Rail

      We’ve added two new blocks to the game: the “Rail Load” block and the “Rail Unload” block. (We’re still working on their textures)

      You can place them anywhere, and they work identically to normal rails, but they have an added feature: item transfer.  These blocks allow transferring items between connected storages on a station and a docked ship via the Load/Unload Rail.  Example:

      You connect a storage to your rail docker on a ship, and dock it to a Load Rail on a station. The ship is then able to pull items from any storage on the station connected to that Load Rail.

      If you instead dock the ship to a Rail Unload block, the station may then pull items from the ship’s connected storage to any storages connected to that Rail Unload block.

      Again, both docker and rail need active connected storages. Also, the station will only pull items if it has permission to do so!


      The ship radial menu allows you to select between 5 different permissions for the load/unload rails:
      ~ Always allow
      ~ Always allow faction, ask for rest
      ~ Always ask
      ~ Allow current (the entity you’re docked to; this allows manually activating or deactivating)
      ~ Never


       

      General GUI updates

      ~ Main menu tooltips:

      ~ Loading advice

      ~ Keyboard options menu using new lists with subcategories and filters

      ~ Sector Heat warning marker if you’re getting close

      ~ Shop menu panel is a bit better/consistent

      Config additions

      ~ ALLOW_PASTE_AABB_OVERLAPPING: Server option to disable/enable the building check if overlapping with other ship’s bounding box

      ~ ECMStrengthMod: BlockBehavior option that modifiers the amount of scanner modules needed versus mass of target ship to disable cloakers/jammers.
       

       

      What’s next

      Additional to the features we described above, this version also already contains the foundations for a lot of other bigger features to come, which aren’t finished yet. However, this is the main reason for this pre-release to have taken longer, following up on our promise to strive for quality instead of quantity.

      Look out for the next dev blog which will contain the first part of our end-game documents.


       

      Thanks for playing StarMade,

      ~ The Schine Team

      Bug fixes

       

      ~ T2437 (Private): block exploit

      ~ T2379 (Private): Ctrl+A in client password entry field uncensors text

      ~ T2360 (Private): Cloaking/radarjammer issue

      ~ T2295 (Private): Uploaded blueprints can have no owner

       

      ~ T2467: /kick_players_out_of_entity kicks everyone on the server out of their entities

      ~ T2403 & T22: flip-flop and NOT signals not working properly with rail switching.

      ~ T2391: Rail + Storage disconnecting

      ~ T2388: Nullpointer with displays

      ~ T2372: Shootout rail launching at 45 degrees

      ~ T2361: Power auxiliary is disabled for AI

      ~ T2357: Typos in credits

      ~ T2323: Rail or display connection not shown or desync after logic swap

      ~ T2284: camera detaches from character when numpad+ key is pressed multiple times

      ~ T2220: weapon menu unlinking support/effect doesn't update list

      ~ T2218: /SQL_Query command cannot be used with starnet.jar

      ~ T2202: Alt Gr combinations for characters don't register

      ~ T2159: Race disappears from race menu

      ~ T2124: Advanced Build mouse cursor does not show up when key reassigned to RControl

      ~ T1840: shopkeep can't be respawned

      ~ T1819: Tooltip doesn't update for single stack items <-> multi slot | meta-item interaction

      ~ T1686: Shop can only accept one incoming connection

      ~ T1494: Display Module [] tags are cap sensitive

      ~ T1362: Jump distance not consistent (with changed sector size)

      ~ T1350: Thrust setting not saved in Blueprint

      ~ T111: Wireless connection isn’t wireless when on same Entity except Asteroids

       

      We’ve also added more translations to the game and all of the typo fixes that were brought up by our hard working translators!

       
    • Jun26

      Devblog 27th June 2017

      Greetings, citizens ~

       

      Here’s what we’ve been up to:

       

      Server Performance

       

      While looking into server performance, we noticed an issue with NPC Fleet Management: something is preventing the proper clean-up of spawned fleets. This has been causing some of the larger servers to experience mysterious performance issues recently. If you have a server and are encountering high response times for ship creation, or server-related ping spikes, this issue might be the cause. We are working on a fix for this, and are monitoring the problem. In the interim, you may want to manually wipe all NPC-Fleets from your server from time to time (once per week should suffice). You may do so by running the following command:

       

      /despawn_all FLTSHP all true

       

      However!  Please warn your players before running this for the first time, as it may result in the server becoming unresponsive for several minutes. (Instances of cleaning up 150k to 300k ships are not uncommon, and that takes some time to process.)

       

      SQL in StarNet

       

      In one of the previous updates, we added the ability for server admins to query the server’s database directly via SQL.  This is an incredibly powerful tool, and many server owners have taken advantage of it to create fancy features on their websites, write fine-tuned automated scripts, gather game metrics, etc.  However, this functionality required us to inject the command directly into the console, and parse its reply -- not the cleanest or most direct approach.  StarNet, our dedicated tool for this sort of thing, also lacked the permissions to do this.  The next release will rectify this issue, giving StarNet the permissions it needs to both run SQL queries and get their output directly.  This should give admins cleaner, easier access to the internals of their server’s database.

       

       

      What’s next?

       

      Following our current release cycle, we’ve started releasing dev builds. These are generally buggy, unstable builds that give players early access to new features. For more information, refer to: https://starmadedock.net/threads/starmade-release-cycle-news-posts.28895/#post-338214

       

      As soon as we’re happy with the development builds, we’ll release an official preview build. We will be following the procedure outlined in the document above, then after a round of both Schine and community testing, we’ll do a public release. After that, the next push will be for a playable dev build showcasing a prototype of the new power system. We want to get this in the hands of the community as soon as it’s ready, and are looking forward to your feedback. When the power system is completed, we will take a look at weapons, combat, and other utilities and give them a balance overhaul, as well as add new exciting features.

       

      As always, thank you for playing StarMade!

       ~ The Schine Team

       
       
    • Jun18

      Devblog 18th June 2017

      Greetings, citizens ~

       

      We’ve added some exciting features this week, including a fill and line tool, and new rails.  There’s also a new Advanced Build Mode GUI!  Everything should be cleaner and much easier to access now. However, keep in mind that the layout and content is still a work in progress, and so may change significantly between builds. Over the next few days, we’ll tweak what each group contains and adjust how the tools work in order to streamline the experience.

       

      New dev build!

      This first dev build contains the core functionality of two new tools: the Fill Tool and the Line Tool. Both are available under the Shape Tools group.

      Fill Tool

      The fill tool allows you to incrementally fill (or replace) areas with your desired block. It’s quite simple to use: you can freely select your starting point with the camera (similar to ‘create docking’), and press the [Do Fill]* button with a block selected on your hotbar.

       

      * We are absolutely going to rename this later.

       

      The fill tool allows both space-filling and block-replacing, depending on what the starting point is. If it’s empty space, the tool will flood-fill; if it’s a block, only that block type will be replaced.  Also: this is a step-based system, meaning undo and redo work, allowing you to easily fix any mistakes.

       

      For now, the filling process is done in a single step, and uses a fixed amount of blocks. We will change this over the next few builds to allow you to specify how many blocks to place at once, as well as allowing servers to impose their own limits to reduce server strain.

       

      We’ll be adding some optimizations to this in later builds.

       

      Screenshots below

       

      Hollow torus made of crystal armor

      qGt4rqz.png

       

      Filling the torus starting from the bottom

      lHiCqbF.png

       

      Filling the shell of the torus with blue hull, replacing crystal armor along the way.

      gAoHJVx.png

       

      Line Tool

       

      This is an addition to the build helpers. You set two points (using your camera position, as with the fill tool) and it will create a line between them.  

       

      We’ll add more features in the future, such as splines and line thickness.

       

      As with the new GUI, this is also a work-in-progress, so we’ll be improving it and fixing any issues that arise.

       

      Load/Unload Rails

       

      We’ve added two new blocks to the game: the “Rail Load” block and the “Rail Unload” block. (We’re still working on their textures)

       

      You can place them anywhere, and they work identically to normal rails, but they have an added feature: item transfer.  These blocks allow transferring items between connected storages on a station and a docked ship via the Load/Unload Rail.  Example:

       

      You connect a storage to your rail docker on a ship, and dock it to a Load Rail on a station. The ship is then able to pull items from any storage on the station connected to that Load Rail.

       

      If you instead dock the ship to a Rail Unload block, the station may then pull items from the ship’s connected storage to any storages connected to that Rail Unload block.

       

      Again, both docker and rail need active connected storages. Also, the station will only pull items if it has permission to do so!

       

       

      The ship radial menu allows you to select between 5 different permissions for the load/unload rails:

      ~ Always allow

      ~ Always allow faction, ask for rest

      ~ Always ask

      ~ Allow current (the entity you’re docked to; this allows manually activating or deactivating)

      ~ Never

       

       

       

      Advanced Build Mode GUI

       

      The new GUI is much cleaner, and all of the controls are much more accessible. You may show/hide individual groups, and in later dev builds, these will be customizable in location, order and size.  The game will remember these settings between instances.

       

      We’ve added new sliders, too, which allow dual input: you may enter values manually, or use your mousewheel while hovering over the controls. This also allows scrolling through the GUI without changing sliders’ values unintentionally.

       

      iu1SzEr.png

       

      This is not the final version, of course, as we will continue to work on the design.

       

      Outline System and New LoD mesh

       

      This completely new system is able to produce highly-optimized meshes of any number of blocks. It will be used for several effects in the future, especially for outlining the systems of a ship (e.g. for building and/or scanning).  The outline itself will also be used for selecting entities in subsequent builds for this release.

       

      This system is not able to replace the existing mesh and chunk system. Not only should any object realistically only be loaded into memory in chunks to begin with because of the sizes involved, but also in terms of graphics it’s not possible for the block meshes to retain all of the information needed. The new system simply doesn’t work with multiple textures in the same mesh. We’d have to use one mesh per block type, which would pretty much remove any advantage the system confers. Also, no lighting or material information can be stored in the limited amount of vertices of such meshes, and furthermore: making a mesh of a large object might be too much for the graphics card buffers to handle... so a chunk system would be needed anyway.

       

      However, it is absolutely perfect for far-away LoD views of a model since block types can be mapped to a low number of colors, thereby producing one mesh per color. This, when combined with a higher-granularity chunk system, should give a large FPS increase when viewing bigger objects in the distance.

       

      New Chunk Request System

       

      We’ve completely rewritten the chunk request system!  The new approach streamlines the order of chunk requests over multiple entities.  They’re now ordered in the background on a global level, meaning nearby chunks will have much shorter load times.  This also benefits the lighting calculations, which should improve overall performance.

       

       

      Moving Forward

       

      Dev builds should come out a lot more frequently from this point on. Though as always, be careful and use a separate installation so you don’t risk anything bad happening to your data, as dev builds can occasionally contain game-breaking bugs.

       

       

       

      As always, thank you for playing StarMade!

       ~ The Schine Team

       
    • Jun13

      Devblog 13th June 2017

      Greetings, citizens ~

       

      News

       

      It’s with a heavy heart that we announce, Auburn is leaving the Schine team for new opportunities. He completed his project here and we are extremely proud of his work. We are currently working on its integration into the universe update coming later on.

       

      What are we working on right now?

      We are currently completely reworking the advanced build mode and other GUI functionality to work with a planned GUI scaling update in the future.

       

      Advanced Build Mode

      We’d like to go in-depth for one specific build tool that we are going to add. The Fill Tool.

       

      The fill tool is one of the tools we are most excited about. It fulfils quite a few purposes that the community has been asking for and will help you update your ships in the future power update.

       

      Once you engage the tool, it uses the camera position to determine where the fill area starts. When the user confirms the fill location, the game will use the highlighted block type to flood fill up to a number of blocks set by the user.

       

      Each click on “fill” will then add a set amount of blocks (maximum amount per step determined by the server). It will keep track of the blocks already placed so it will reach even into the farthest ends of your ship. Alternatively, it can be used to make some cool spherical shapes on your ships.

       

      The great thing about this tool is it isn’t only for filling empty blocks. It can also be used to fill over existing blocks. One way this will be useful as a “Paint” tool. You can select which block type to replace when filling. The default is the “Empty” type and it would work like described before as a normal fill tool. But you can also select “Grey Hull”, which would replace groups of touching grey hull blocks on your ship. It, of course, would replace special shapes like wedges or slabs with the right shape of the replacement type if possible (grey hull wedge -> red hull wedge with the same orientation).

       

       

      Another tool we’re working on is the Line Tool. We will implement this in two stages. The first stage will be a simple version. Just like in “Create Docking” you will be able to select two points on the grid (the free point selection is something we will also add for other build tools). The helper will make a line between those points which can be used as a reference or to restrict building/removing just like any of the other build helpers.

      Additional stages will add line thickness and additional line segments that can also be set to splines, which then would enable you to make curves.

       

      Cargo Transfer

      In our discussions about build mode item handling, we also remembered the inconvenient cargo handling that players have to go through, in case they want bidirectional cargo transfer between a station and a ship. The current system is too complicated and also doesn’t allow for item flows down a docking chain. Altering the feature will open a better way to transfer cargo.

      The way we will do this is to add two new rail blocks: Rail-Unload and Rail-Load.

       

       

      The visual difference will make it easy for players to see what the dock is before docking. All connected inventories to your docker block will either be loaded or unloaded to or from the entity you are docked to. These 2 rail blocks will be swappable through logic interaction just like the other ones.

       

      To prevent exploitation, a ship can be set into four modes: “Always Allow Transfer”, “Deny Transfer”, “Always Ask”, and “Only ask for different faction”.

      When your ship is set to “Always Ask” (default), whenever you dock to an Unload or Load-Rail, the pilot will get a dialogue asking him to confirm the transfer. If there is nobody to get the dialogue, the transfer will not start. Of course, the transfer can at all times be manually triggered on/off via a ship’s hotbar, and the mode can always be changed in the ship menu.

       

       

      As for the next dev build, we should be able to release one at the end of this week, followed shortly after by a pre-release the next week if all goes well.

       

       

       

      And as always, thank you for playing StarMade!

       ~ The Schine Team

       
    • Jun6

      Devblog 6th June 2017

      Hello players,

       

       

      The dev blog for this week features something more on the technical side. It covers a nice feature that will be very important in going forward.

      Optimized Meshes

      With the preview of last week, which is being able to draw any subset of blocks on any structure, we want to share another reason why we implemented this now. Not only is it already extremely useful for making existing GUI elements better and as said, adding new systems like active scanning, it also will be our basis for a new Level-of-Detail system. This system will increase drawing performance by drastically reducing the amounts of polygons at a distance.

       

      For that, the meshes we had last week needed to be improved and optimized. Since these are one colored representations of a set of blocks, polygon reduction is extremely viable.

       

      First of all, however, it needs to be explained why this method is not viable for all the mesh drawing, especially close. Reducing polygons means giving up information that is stored in those vertices. In our case that is texture information, the baked lighting, material, and a lot of other graphical meta information. Some of that can be compensated with techniques like deferred lighting, which would work yet does not scale well most of the time, and will force a lot of other optimizations to be removed. Also, the more detailed the mesh is with additional shapes, the less advantage the polygon reduction will provide.

       

      yufTP6k.png

       

      That’s why combining both techniques will give us the best result. At a distance we can draw a minimal mesh that will speed up things dramatically. We can even make that multicolored with mixing multiple meshes on a fixed map of colors. Best of all, for close up, this still gives us the option of using deferred lighting eventually, but mixing it with existing lighting to have a smooth transition at a distance for maximal performance combined with the cool graphical experience of dynamic lighting.

       

      Here is how it works:

       

      tIkiYhU.png

       

      As an example, we just take one side of the mesh. In production, this algorithm applies to all sides and all ‘depths’ (layers). Individually, however, we are looking at a 2D mesh.

      This is the raw drawing, which each block representing a full square. As you can see, the amounts of vertices and polygons are pretty high, especially if only one texture would be used.

       

      The algorithm itself at this stage records all vertices and its connections to other vertices, as well as diagonal vertices individually. Diagonals are handy to know that there was a filled out block at that position, and not just a one block gap.

       

      6kC0gRr.png

       

      The first step for the algorithm is to remove inner vertices. These can be easily identified by checking the amounts of diagonal vertices a vertex has. If the number is exactly 4. We can remove it. At the same time, we can remove unnecessary connections. This is a bit more complicated to explain. Essentially for each non-inner vertex, we check for each existing direction the two orthogonal neighbors in the same direction. If both exist, the connection is unnecessary.

       

      oz8pOdo.png

      A similar approach is used to remove the vertices that are not corners.

      Now the mesh is as simple as it can be. However, to draw it, we need to define triangles. There are several methods to triangulate a mesh, and it is highly complex, especially doing it with concave polygons that can have multiple holes in it.

       

      J6dBJlt.png

      For our case, we can make the process a lot faster by using the fact that we are on a grid. A fact that is often overlooked in a lot of projects, but since starmade is primarily a voxel game, can be used as the source of countless optimizations.

       

      Explaining the exact process of retriangulation would take way too long for this dev blog, but you can probably understand the overall process of inserting horizontal lines at key points to subdivide the mesh into rectangles.

       

      eCpSoys.png

       

      From there, it is rather straight forward to get actually triangles that can be drawn.

       

      Now we do this for all sides, and their layers, and we get a mesh that is highly optimized, and doesn’t have any strangely shaped triangles (extreme angles). This has the great advantage of being able to use well formed texture coordinates if needed.

       

      yufTP6k.png

       

      As a final step (for the highlighting), the mesh is drawn into a frame buffer and rendered with an outline shader.

       

       

       

      As announced, we have a dev build in the making which we will release when it’s ready for public testing.

       

      Thank you for playing StarMade,

      ~ The Schine Team