Recognized by Council Fill Enclosed Area Option for Build Helper

    Joined
    Mar 8, 2014
    Messages
    3
    Reaction score
    4
    • Legacy Citizen
    We all know the easiest way to design a ship is to build a shell and the interior of the ship, afterwards filling the empty areas with systems. Truth is, filling the shell with system blocks is a quite boring job and can take as much time as designing the ship itself while trying to fill all the nooks and crannies. So what i am suggesting is that we have a build mode helper that recognizes enclosed areas and an option to fill these enclosed areas with the blocks we designated them to be filled with. This way we can just separate huge areas inside the ship with 1 block thick walls to be filled with the system blocks we want in a very easy manner.

    P.S.
    Implementing this really shouldn't be too hard and would literally reduce the time to build a ship by half. I would very much like to see this feature in the upcomming update. I am aware that you are working on NPC AI but frankly i can do without NPC's for a while longer, instead i would like to see more features to make ship designers life easier with advanced build helper options. I am sure we can all agree that the most important part of Starmade is the ship building.
     
    Joined
    Mar 8, 2014
    Messages
    3
    Reaction score
    4
    • Legacy Citizen
    see this (and maybe bump it to the top of the forum).
    Looks like that thread is forgotten and not even read by council which was 5 months ago. I couldn't even find it before you showed it to me. Hope this time it will be read and recognized by council since this is a very needed feature which would save us players from alot of wasted time and fraustration.
     
    • Like
    Reactions: jgames666
    Joined
    Jun 25, 2013
    Messages
    200
    Reaction score
    41
    • Legacy Citizen 2
    • Purchased!
    • Legacy Citizen 3
    Looks like that thread is forgotten and not even read by council which was 5 months ago. I couldn't even find it before you showed it to me. Hope this time it will be read and recognized by council since this is a very needed feature which would save us players from alot of wasted time and fraustration.
    if i remember correctly it was decided that it wasn't feasible as the process of mapping the area to b filled and determining if it was actually close would take to much processing power and make lots of lag
     
    Joined
    Mar 8, 2014
    Messages
    3
    Reaction score
    4
    • Legacy Citizen
    if i remember correctly it was decided that it wasn't feasible as the process of mapping the area to b filled and determining if it was actually close would take to much processing power and make lots of lag
    Why would it take too much processing power? Create a system similar to how we mass choose weapon groups using Shift+V. The player can click on face of a block that is looking at this enclosed area with a special area choosing mod in build helper which will chain spawn air blocks in this area and multiply them towards the adjacent faces of blocks. It will first try to cover the area in a shell and then fill that shell with more air blocks. This will prevent air blocks getting created outside the ship. Worst that could happen is the whole ship getting covered by the air blocks like a thin layer but since the area they enclose won't be seen as empty it won't try to fill the whole of empty space outside the ship even if clicked at the outside hull area accidentally. After the air blocks are created we can see the area we want to fill clearly. Then we can change these blocks to whatever needed. It certanly is not impossible. Sure if the area is really big it might take minutes to calculate but it sure is better than filling that area by my own hand block by block especially with some complicated designs. I can just leave it to calculate the area i want and be done with it instead of spending hours on it myself. Even if it would take an hour(which i doubt it would) it still would be better than filling it myself for an hour in some complicated designs.

    They surely can come up with a better way than this but i am just saying what i would do if i were to decide making a mod for the game myself.
     
    Last edited:
    Joined
    Jan 24, 2016
    Messages
    49
    Reaction score
    20
    if i remember correctly it was decided that it wasn't feasible as the process of mapping the area to b filled and determining if it was actually close would take to much processing power and make lots of lag
    Oh please. That's one of the easiest things to do. To decide whether some area is closed all you need to do is start "flooding" and check if some blocks go outside of bounding box of current entity.
    Bounding box is guaranteed to cover the whole entity and you will literally never face a situation where you need to fill some area, you designate it and find out you can't because it goes outside of bounding box.
    I should also remind everyone everything must be processed client-side so no server would suffer from lag here. Building is already pretty much client-side so filling things should be too.
    Here's a rough picture of exceptional situation.

    Black - real blocks
    Red - bounding box
    Green - filling start
    Blue will be explained a little bit later.

    So it makes an ever-expanding "wave" and check if it touches the red area. If it does then it throws error - no boundaries set. In this case it will do that.

    Now we put a block at the blue tile and the wave is contained. So we replace imaginary wave with real blocks.


    Memory optimized wave algorithm is the best algorithm here. I am not going to explain technical details, those who know already know.
     
    Last edited:
    • Like
    Reactions: NeonSturm
    Joined
    Jun 25, 2013
    Messages
    200
    Reaction score
    41
    • Legacy Citizen 2
    • Purchased!
    • Legacy Citizen 3
    Why would it take too much processing power? Create a system similar to how we mass choose weapon groups using Shift+V. The player can click on face of a block that is looking at this enclosed area with a special area choosing mod in build helper which will chain spawn air blocks in this area and multiply them towards the adjacent faces of blocks. It will first try to cover the area in a shell and then fill that shell with more air blocks. This will prevent air blocks getting created outside the ship. Worst that could happen is the whole ship getting covered by the air blocks like a thin layer but since the area they enclose won't be seen as empty it won't try to fill the whole of empty space outside the ship even if clicked at the outside hull area accidentally. After the air blocks are created we can see the area we want to fill clearly. Then we can change these blocks to whatever needed. It certanly is not impossible. Sure if the area is really big it might take minutes to calculate but it sure is better than filling that area by my own hand block by block especially with some complicated designs. I can just leave it to calculate the area i want and be done with it instead of spending hours on it myself. Even if it would take an hour(which i doubt it would) it still would be better than filling it myself for an hour in some complicated designs.

    They surely can come up with a better way than this but i am just saying what i would do if i were to decide making a mod for the game myself.
    Oh please. That's one of the easiest things to do. To decide whether some area is closed all you need to do is start "flooding" and check if some blocks go outside of bounding box of current entity.
    Bounding box is guaranteed to cover the whole entity and you will literally never face a situation where you need to fill some area, you designate it and find out you can't because it goes outside of bounding box.
    I should also remind everyone everything must be processed client-side so no server would suffer from lag here. Building is already pretty much client-side so filling things should be too.
    Here's a rough picture of exceptional situation.

    Black - real blocks
    Red - bounding box
    Green - filling start
    Blue will be explained a little bit later.

    So it makes an ever-expanding "wave" and check if it touches the red area. If it does then it throws error - no boundaries set. In this case it will do that.

    Now we put a block at the blue tile and the wave is contained. So we replace imaginary wave with real blocks.


    Memory optimized wave algorithm is the best algorithm here. I am not going to explain technical details, those who know already know.
    i am not an expert on this that is just what i remember from the last discussion. perhaps one of the devs can chime in here Bench
     

    jayman38

    Precentor-Primus, pro-tempore
    Joined
    Jul 13, 2014
    Messages
    2,518
    Reaction score
    787
    • Purchased!
    • Thinking Positive
    • Legacy Citizen 4
    As long as the fill-check is done in build mode, not in combat, it should be perfectly feasible. The problem of unfeasible calculations came from wanting to calculate if a "room" is enclosed, for air calculations. The problem for room-enclosure would come in mid-combat, where a re-run of the enclosure algorithm would be needed every time a block was destroyed to check for decompression, exactly at the time when other major calculations (missile damage, mass block removal, damage calculations, etc.) are being run that can slow the game down. Doing a 3D fill in build mode outside of combat should be fine, as long as the game only calculates so many blocks in the algorithm per tick. And the fill calculation should be cancelled if the builder places or removes a block. That way, if you try to start a fill on a 200x200x200 space, you can just lay down a random block to stop the calculation.
     
    Joined
    Jan 24, 2016
    Messages
    49
    Reaction score
    20
    As long as the fill-check is done in build mode, not in combat, it should be perfectly feasible. The problem of unfeasible calculations came from wanting to calculate if a "room" is enclosed, for air calculations. The problem for room-enclosure would come in mid-combat, where a re-run of the enclosure algorithm would be needed every time a block was destroyed to check for decompression, exactly at the time when other major calculations (missile damage, mass block removal, damage calculations, etc.) are being run that can slow the game down. Doing a 3D fill in build mode outside of combat should be fine, as long as the game only calculates so many blocks in the algorithm per tick. And the fill calculation should be cancelled if the builder places or removes a block. That way, if you try to start a fill on a 200x200x200 space, you can just lay down a random block to stop the calculation./
    Simply forbid filling function if entity's structural HP is less than max.
     
    Joined
    Jul 27, 2015
    Messages
    30
    Reaction score
    14
    • Purchased!
    Wouldn't it be easier for the player to just have an item or option in advanced build mode that selects 1 point and then a 2nd point and then fills in between those 2 points?
     
    Joined
    Jul 24, 2013
    Messages
    1,326
    Reaction score
    2,096
    • Master Builder Gold
    • Councillor 2 Gold
    • Video Genius
    just so I understand :p
    this is what you want? because that is exactly what I would want :D
    sphere would have to be limited by advanced build mode defult size,you cant sadly fill in the whole ship at once (lag) ,but it would make our lives soo much easier..

    Imagine you have a shell where there is tons of ribbs holes and modules with tunnels.. just click once and everything that was inside that sphere,but also inside the "ship walls " where it was clicked..is filled
     
    • Like
    Reactions: RODLON
    Joined
    Jul 27, 2015
    Messages
    30
    Reaction score
    14
    • Purchased!
    just so I understand :p
    this is what you want? because that is exactly what I would want :D
    sphere would have to be limited by advanced build mode defult size,you cant sadly fill in the whole ship at once (lag) ,but it would make our lives soo much easier..

    That's even better. I would make it so that it fills in the direction and along the path of the block's face you click on. This hopefully would be less work in terms of coding.
     
    Joined
    Jun 25, 2013
    Messages
    200
    Reaction score
    41
    • Legacy Citizen 2
    • Purchased!
    • Legacy Citizen 3
    just so I understand :p
    this is what you want? because that is exactly what I would want :D
    sphere would have to be limited by advanced build mode defult size,you cant sadly fill in the whole ship at once (lag) ,but it would make our lives soo much easier..

    Imagine you have a shell where there is tons of ribbs holes and modules with tunnels.. just click once and everything that was inside that sphere,but also inside the "ship walls " where it was clicked..is filled
    it might be easier as a cube rather than a sphere.
     
    • Like
    Reactions: SkylordLuke
    Joined
    Jul 24, 2013
    Messages
    1,326
    Reaction score
    2,096
    • Master Builder Gold
    • Councillor 2 Gold
    • Video Genius
    it might be easier as a cube rather than a sphere.
    yeah :) I guess you are right! Sphere would be kinda wonky heh Cubes FTW (or even better,both sphere and cube options to select :O )
    ah ..I am 100% sure we will get this :D This would be a -must have- tool
     
    Joined
    Jun 25, 2013
    Messages
    200
    Reaction score
    41
    • Legacy Citizen 2
    • Purchased!
    • Legacy Citizen 3
    they could also add an option to the build area sliders (like remove mode) that will only build on the side of a wall that the first block is placed.

    EDIT: this is not a way of replacing this idea just a second way of using the underlying concepts.
     
    Joined
    Dec 31, 2014
    Messages
    56
    Reaction score
    18
    just so I understand :p
    this is what you want? because that is exactly what I would want :D
    sphere would have to be limited by advanced build mode defult size,you cant sadly fill in the whole ship at once (lag) ,but it would make our lives soo much easier..

    Imagine you have a shell where there is tons of ribbs holes and modules with tunnels.. just click once and everything that was inside that sphere,but also inside the "ship walls " where it was clicked..is filled
    I was going to open a new thread suggesting just exactly that. I was thinking about using the BFS algorithm, so you can also fill all those empty spaces between hull and corridors/rooms without filling the walkable area of your ship.

    (I mention that algorithm because it's the best I know for the work, but maybe there is something better optimized for 3d grids)