Marcus Aseth

I won't pay a 50€ price tag on this game unless the single parent limitation is lifted

Recommended Posts

3 hours ago, Kerbart said:

the topology of a ship being a tree structure  seems like a reasonable choice to me. Surely there are limitations, but changing that *now* would require a tremendous amount of rewriting that's probably not worth the effort.

Can you (or anybody else) think of an implementation that would make the O.P.'s use-case work more smoothly ?

Lots of new players try to do similar things. For example, @ShadowZone demonstrated his use-case nicely and directly to the KSP 2 team.

aRV0OAA.jpgThe KSP-1 solution works, but is not obvious: leave one of the docking connections disconnected along the tree (shown at right with a mis-alignment to show which of the docking ports are not directly connected) and bridge this second docking connection with a strut.

I think many of use have wanted to make similar constructions.  For example to add a large-diameter booster stage under an upper stage driven by a pair of NERVAs.

 

No matter what solution we want for such use-cases, I think we would want to keep the logical tree structure, so we can pick up a subtree of parts and move it. 
We probably just want a more intuitive way to have additional mechanical connections made between parts that are not parent-and-child to each other.

The auto-breaking struts are one way to made a general network of connections (I've heard them called ugly, and am tempted to say "sleek-looking craft are a part of the challenge in KSP", but they could be made optionally invisible.  Another way of joining, more like welding, that does not auto-break on decoupling, would allow a more intuitive construction of the part in the video: we could connect the bi-coupler at left to one tube, and weld it to the other.

Above in this thread, I mentioned automatic welding between parts that touch, or nearly touch within some practical tolerance.  Had that been implemented naively in KSP 1, it might have prevented the stock turboprops and electric motors we were making (before  breaking-ground).

Share this post


Link to post
Share on other sites
Quote

The auto-breaking struts are one way to made a general network of connections (I've heard them called ugly, and am tempted to say "sleek-looking craft are a part of the challenge in KSP", but they could be made optionally invisible.

I used to just kind of put struts anywhere in order to make this sort of design work, but more recently (very late career game) I've been using them decoratively, which is pretty easy given that the colour schemes of lots of parts kind of provide nice measuring or placement hints.

Share this post


Link to post
Share on other sites
13 hours ago, Manwith Noname said:

 

Just to be concrete, that mod will not surface-attach a part to multiple multiple parents, so it won't help the cases in the original post,
but it does attach nodes when they touch to make multiple-parented constructions like the one desired in the video interview above.

There is a concept of close-enough (10cm by default) to attach. ReCoupler can show when additional connections are made by hiding the used-up nodes when they are connected, so you can see what is going on.   You still need to be careful that the part joining branches back together is placed without symmetry, or you get multiple overlapping joining parts, connected to each other.   The craft-files are still a tree structure, with extra connections noted, but In flight it acts just as if it were a multiply-connected network.

It seems that KSP could use a multiply-connected network internally, a 'directed acyclic graph' instead of the tree, that lets us build in loops but still pick up portions of the craft.  We have the natural concept of descendants and ancestors, from the nature of assembling a craft by attaching child parts to  one (ore more) parents.  So then if we pick up up a tank in one of the two legs of the two-coupler craft in the video, its descendants in the tail with the RCS ports would come along, but not the tank in the other leg.

Share this post


Link to post
Share on other sites

I think topic is more about "single parent" for a connection, i.e. no circular connections. As I understand this is fundamental design part of KSP and several other vehicle building games. Yes it's still annoying and I bet as soon as some game dev overcome this problem it will make their game much better, because it will allow much more mechanic-realistic constructions to be made. I think here this solution cause less troubles, compared to other games, for sample to Space Engineers. Because there you really have a problems with heavy movable parts of construction, attached to main structure in a single point (usually massive blocks of drill heads).  But in this game, since we usually assemble all weird things in a zero gravity and vacuum, single attachment point is less problematic. And you can use sticky strut addon, as I remember.

Share this post


Link to post
Share on other sites

Just a comment from a coding design standpoint: I can see why a tree design is being used.  First off, it's easy to 'walk' - that is, it's easy to start at one point, and make sure you work on every part exactly once per cycle/frame.  It's not impossible to design an algorithm to walk a more cluster of parts, but it *is* harder.

Secondly, it means a part's forces will never affect itself.  This is likely a major one, as it prevents a whole host of worst-case scenarios in coding.  But by having a strict tree design, if a part is pushing on one of it's connecting parts, that force is never going to come around and push it through a different part.  (Which would adjust how it's pushing on the original part...)

Neither of these are insurmountable problems - but I can see why for Unity they're likely a 'good enough' compromise.  The number of shapes you can do with a well-designed tree is fairly large, after all, and between those two you can simplify and accelerate your physics quite a bit.  Star Theory would have to design their own physics system to get beyond that - which they could do, if they wanted to, but it would be a significant effort.

Share this post


Link to post
Share on other sites
7 hours ago, DStaal said:

Secondly, it means a part's forces will never affect itself.  This is likely a major one, as it prevents a whole host of worst-case scenarios in coding.  But by having a strict tree design, if a part is pushing on one of it's connecting parts, that force is never going to come around and push it through a different part.  (Which would adjust how it's pushing on the original part...)

I feel this is refuted by newtons 3rd law, any part that interacts with another is then acted on by that other parts motion derived from the initial interaction.

Also, if struts are capable of making circular connections, why cant other parts?

 

 

Share this post


Link to post
Share on other sites
5 hours ago, mcwaffles2003 said:

I feel this is refuted by newtons 3rd law, any part that interacts with another is then acted on by that other parts motion derived from the initial interaction.

Also, if struts are capable of making circular connections, why cant other parts?

Newton's 3rd law is inconvenient from a coding perspective.  ;)  (I suspect it likely doesn't exist within a single vessel during a single physics frame - though it'll effectively exist over multiple physics frames.)

Struts are likely special-cased in somehow, as not part of the tree.

(Note of course all of this is supposition based on some coding experience and a compsci degree - no actual experience in the game engine.)

Share this post


Link to post
Share on other sites
Just now, DStaal said:

Newton's 3rd law is inconvenient from a coding perspective.  ;)  (I suspect it likely doesn't exist within a single vessel during a single physics frame - though it'll effectively exist over multiple physics frames.)

Struts are likely special-cased in somehow, as not part of the tree.

(Note of course all of this is supposition based on some coding experience and a compsci degree - no actual experience in the game engine.)

Now I understand what you mean....

Share this post


Link to post
Share on other sites

Seems reasonable, if doable.

Edited by SlinkyMcman
Hush hush eye to eye

Share this post


Link to post
Share on other sites
On 1/24/2020 at 6:25 AM, mcwaffles2003 said:

Also, if struts are capable of making circular connections, why cant other parts?

AFAIK Struts are special "entities" on KSP, they make things more CPU expensive (autostruts appears to be the struts without the meshes).

Do you know something about CPUs and Pipelines? It's kinda that - when you shove a strut (or an autostrut), the impact is kinda equivalent  of a BRANCH instruction on the pipeline, you loose the easy and fast linear way of calculating forces, and so you end up doing less work by the same clock tick because the CPU need to waste time calculating addresses and fetching new data to the instruction cache. It's the main reason that "loop unrolling" optimisation was created.

With Struts and AutoStruts at least you limit the damage to the crafts that really need them, and not to everybody.

Share this post


Link to post
Share on other sites

After autostruts were introduced there really isn't much of a problem here I think.

You can just autostrut wobbly parts to the heaviest part or root part. No ugly external struts that ruin the looks of your ship, but effectively the part is now connected from 2 different points.

Of course in a perfect world this would be a nice feature to have but there are many much more important things to worry about before that...

Share this post


Link to post
Share on other sites
34 minutes ago, tseitsei89 said:

You can just autostrut wobbly parts to the heaviest part or root part. No ugly external struts that ruin the looks of your ship, but effectively the part is now connected from 2 different points.

Never heaviest, that's usually a fuel tank, and BAD things happen when it empties out during acceleration

Share this post


Link to post
Share on other sites
1 hour ago, tseitsei89 said:

After autostruts were introduced there really isn't much of a problem here I think.

You can just autostrut wobbly parts to the heaviest part or root part. No ugly external struts that ruin the looks of your ship, but effectively the part is now connected from 2 different points.

Of course in a perfect world this would be a nice feature to have but there are many much more important things to worry about before that...

to this day I have no idea how all that works I just install the latest version of KJR I can find and start the game. 

Share this post


Link to post
Share on other sites
On 1/15/2020 at 10:44 AM, Marcus Aseth said:

I won't pay a 50€ price tag on  this game

Just wait until release and decide then?

Edited by VoidSquid

Share this post


Link to post
Share on other sites
On 1/15/2020 at 11:57 AM, Marcus Aseth said:

rather than 2 for stability

you don't need two for stability... one is plenty with rigid attachment, autostrut and struts... why do you want yet ANOTHER "solution" to this problem?

Share this post


Link to post
Share on other sites

This is one of the things that should probably be explicitly explained in tutorials. That would at the minimum solve the non-obviousness of the conundrum.

 

Edited by SlinkyMcman

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.