Space Engineers Feedback

5
Votes
We should have non-scripting methods to do logic and decision making
First off, the PB is is a wonderful tool, something not many games have for in-game automation. However, for the non-coding oriented people, and even those that are, and don't want to deal with yet more code, we should have a full alternative. We have sensors and timers, and they are a start, but they are not a complete solution. What I suggest is some sort of block which provides a custom UI for performing boolean testing and decision making. Here's a use case: I want to build an airlock, right now, if I want to make sure it's foolproof, I have to use a PB, so I can check the current state of the doors involved, and the airvent, and work according to those states. If someone is not a coder, it's a daunting task. Yes, they could get a blueprint from the workshop, and many people do. However that's not the best option: 1) Some people may not want to deal with other people's code. If it breaks, they can't fix it. 2) Some servers block programmable blocks, so scripts can't be used anyway. 3) Some people (like myself) would prefer the feeling of "making it yourself". Using someone else's code has little appeal to me. I'd rather engineer the solution myself. What we currently have a timers and sensors. I could make a sensor to track the player, and trigger the timer when approach, which would cycle the airlock. Problem is, which way is the airlock currently configured? There's no way for just a timer and sensor to know the states of the blocks involved. It leaves it in a semi-automatic state. You can used two sensors, or a button panel with two buttons and two timer blocks. But it's not the same, plus it doesn't scale well. Proposal: There are several blocks and enhancements to existing blocks that would be added: New block: Logic Block This block would have an action, and would execute one of two (or more) branches, given a set of conditions. The conditions could be provided by supplying the block name/entityid, and the terminal property to check. This would use the dynamic properties, which would allow modded blocks and actions to be included. The branches would be standard toolbar based actions, like the timer block. For simplicity it could be a single action, which could be used to execute a timer to perform the rest of the operations. In the example of the airlock, there could be a logic statement that says something like: Action 1: When "door 1" "DoorState" is equal to "Open" then "Execute action bar 1" Action 2: When "door 2" "DoorState" is equal to "Open" then "Execute action bar 2" You could have an option to continue if condition is met, or short circuit and stop. In the above example, you'd want to short circuit and end once the first condition was met. This is the simplest implementation, I'm sure the devs could think of a better one.


Phoenix84 shared this idea 02/09/17 04:54
Phoenix84 02/09/17 04:57
I forgot to add, the second block would be an enhanced timer block. There is already an idea on this site for that, but the gist of it is that the timer block would actually have multiple timers available for use, not just one. This would allow the player to just use a single timer block to perform different sequences of actions. This would let the players make more efficient designs, and not need to worry about integrating several duplicate blocks just to do automation. It would save blocks and performance from having extra blocks and gamelogic as well.
xphoenixxx 05/09/17 01:28
I was thinking of something similar - A logic block could for example have event true/false action if true action if false. In my case I was thinking logic gate checks like: If altitude > 500 [action if true] [action if false] (the check and the number to check for being select-able) If speed >50 [action if true] [action if false] If distance/orientation x y z in relation to GPS point x = etc etc If distance/orientation x y z in relation to Player[a](allied/neutral/enemy) <= 100/ etc etc ("a" being a list of players for nearest to furthest) if x or y or z orientation in relation to gravity >=90 etc etc It would allow simply logic gates for things like automatic launching and landing of rockets, booster separation and so forth. Combined with triggering a timer block it would do quite a lot of things PBs do now and potentially with less sim speed overhead.
KaneCold 19/09/17 13:09
While i agree that new types of Blocks are probably easier to implement ... i wouldn't mind if this just becomes some simpler programming interface for any command block. +Like