Save the Programmable Block ;)
Considered (Not Planned)
Please don't move the PB to experimental mode.
Just a polite request. :)
I don't know how to code but I deeply admire those in the community who do. They can create incredible scripts that add so much to the game. Like the things Whiplash, Wellstat, Rdav, and others share on the workshop and on Reddit. For me, the programmable block is what really make SE unique.
I would like to see scripts working smoothly in both single and multi-player games. Like Vector Thrust, TIM, or Alyssius's Easy Lidar Homing Script. It would be awesome if we could run multiple scripts like these and not have the sim speed drop.
Everyone share your favorite scripts and show the authors some love :)
I'm afraid there's very good reasons for the PB being experimental. This is not merely about "optimization" like it was with the pressurization stuff, but the fact that scripters can write highly performance impacting scripts - and that's simply beyond Keen's control. Only big changes can deal with this problem, changes which most likely will have to break every existing script out there. So... it's experimental mode.
I'm afraid there's very good reasons for the PB being experimental. This is not merely about "optimization" like it was with the pressurization stuff, but the fact that scripters can write highly performance impacting scripts - and that's simply beyond Keen's control. Only big changes can deal with this problem, changes which most likely will have to break every existing script out there. So... it's experimental mode.
Hi, we will consider our options and let you know.
Hi, we will consider our options and let you know.
I really hope they can do something like tying the power usage of a PB to it's Instructions/Tick, perhaps even exponentially.
So a very simple inventory sorter using 1000 instructions per cycle could use 1KW, but a complex ship systems manager hitting almost 50000 could use 5MW.
I really hope they can do something like tying the power usage of a PB to it's Instructions/Tick, perhaps even exponentially.
So a very simple inventory sorter using 1000 instructions per cycle could use 1KW, but a complex ship systems manager hitting almost 50000 could use 5MW.
I think to save the PB it should be rewritten. It should not share selectively exposed modding API calls, and should only be exposed to APIs created specifically for it. This would plug up most of the exploits that are achievable with it. There are many ways to go about this, maybe by using another language other than C#, or moving to a more module-centric visual scripting (or 'circuitry') interface. Still, the PB as it is now should be remade, rather than 'fixed up'.
Since I believe it should be rewritten, I also believe that it should not be rescued for SE1, and instead be implemented in a future edition.
This detailed piece of feedback posted on Mar 7th 2015 is something I still think about and agree with today
https://www.reddit.com/r/spaceengineers/comments/2y80ks/why_i_really_dont_like_how_programming_was/
I think to save the PB it should be rewritten. It should not share selectively exposed modding API calls, and should only be exposed to APIs created specifically for it. This would plug up most of the exploits that are achievable with it. There are many ways to go about this, maybe by using another language other than C#, or moving to a more module-centric visual scripting (or 'circuitry') interface. Still, the PB as it is now should be remade, rather than 'fixed up'.
Since I believe it should be rewritten, I also believe that it should not be rescued for SE1, and instead be implemented in a future edition.
This detailed piece of feedback posted on Mar 7th 2015 is something I still think about and agree with today
https://www.reddit.com/r/spaceengineers/comments/2y80ks/why_i_really_dont_like_how_programming_was/
There are two easy solutions for the programmable block performance issue:
1. It is calculated on the client only.
Benefit: not much extra performance is required, as only the actual world-affecting actions have to be processed by the server.
Drawback: the block only works when the owner is online (which is also some form of a benefit).
2. Limit the amount of instructions a PB can perform per server tick.
Benefit: PBs can never cause lag to the server, as in worst case they are throttled down to a point where they barely work.
Drawback: PBs become unreliable, as high server load can almost shut them down.
I would go for a combined approach here: PBs are calculated on the client whenever the owner is online, but world-affecting actions limited to a specific amount per tick, which is dependent on the current server load. Once the owner goes offline the PBs are set to low priority mode and the whole script only executes several steps and only if the server has some spare time. There should be a way to check the current mode inside the script, to skip CPU-intensive operations when the client is offline.
This way while the player is online he will have the full effect of his scripting (unless it does some very crazy stuff), and he can still run critically important scripts while he is offline as long as the script is very basic and fast (like solar panels tracking the sun).
There are two easy solutions for the programmable block performance issue:
1. It is calculated on the client only.
Benefit: not much extra performance is required, as only the actual world-affecting actions have to be processed by the server.
Drawback: the block only works when the owner is online (which is also some form of a benefit).
2. Limit the amount of instructions a PB can perform per server tick.
Benefit: PBs can never cause lag to the server, as in worst case they are throttled down to a point where they barely work.
Drawback: PBs become unreliable, as high server load can almost shut them down.
I would go for a combined approach here: PBs are calculated on the client whenever the owner is online, but world-affecting actions limited to a specific amount per tick, which is dependent on the current server load. Once the owner goes offline the PBs are set to low priority mode and the whole script only executes several steps and only if the server has some spare time. There should be a way to check the current mode inside the script, to skip CPU-intensive operations when the client is offline.
This way while the player is online he will have the full effect of his scripting (unless it does some very crazy stuff), and he can still run critically important scripts while he is offline as long as the script is very basic and fast (like solar panels tracking the sun).
I was surprised to see this thread tonight ! Of all the issues under consideration this is not one I would expect.
I agree with Malware's comment ' Scripters can write highly performance impacting scripts '. And that admittedly IS a problem.
You can make that same argument about the Mods as well - I can think of several that make a mess of things immediately available for your gaming frustration. So what comes next ? no longer support the mods ?
A Mod / script that kills game play will be unused or fixed. The very fact that I and others can write and publish scripts that ADD small things to the game play that improve the immersive quality is FREE GOLD FROM THE HEAVENS :) Did we not learn the lesson of Minecraft Mods ?
As a software author - allowing a bad script to run and letting the player figure out that maybe they don't want to use that script is -1 karma points... allowing a bad script to run and making sure you have given 100% support so they can avoid writing bad scripts is +10 karma points. They will break things... it will be work... it will grow things in unforseen directions... and the COMMUNITY will LOVE YOU for it !
Just my meager $0.02
I was surprised to see this thread tonight ! Of all the issues under consideration this is not one I would expect.
I agree with Malware's comment ' Scripters can write highly performance impacting scripts '. And that admittedly IS a problem.
You can make that same argument about the Mods as well - I can think of several that make a mess of things immediately available for your gaming frustration. So what comes next ? no longer support the mods ?
A Mod / script that kills game play will be unused or fixed. The very fact that I and others can write and publish scripts that ADD small things to the game play that improve the immersive quality is FREE GOLD FROM THE HEAVENS :) Did we not learn the lesson of Minecraft Mods ?
As a software author - allowing a bad script to run and letting the player figure out that maybe they don't want to use that script is -1 karma points... allowing a bad script to run and making sure you have given 100% support so they can avoid writing bad scripts is +10 karma points. They will break things... it will be work... it will grow things in unforseen directions... and the COMMUNITY will LOVE YOU for it !
Just my meager $0.02
I'm going to be flamed here, but I think PB push the game too far and sometimes it makes things too OP (using laydar for example)
Also I don't think it will ever be possible to optimize them considering how players use them, they go crazy with all sorts of LCD, turret, drones, so it's power makes them unusable on a large scale
However you can still do a lot with timer blocks that would however need improvements to make more advanced programs
I know you would not obtain the powerful results of the PB but with TB and a few improvements on the block you will still able to make all sorts of interesting stuff
I'm going to be flamed here, but I think PB push the game too far and sometimes it makes things too OP (using laydar for example)
Also I don't think it will ever be possible to optimize them considering how players use them, they go crazy with all sorts of LCD, turret, drones, so it's power makes them unusable on a large scale
However you can still do a lot with timer blocks that would however need improvements to make more advanced programs
I know you would not obtain the powerful results of the PB but with TB and a few improvements on the block you will still able to make all sorts of interesting stuff
Replies have been locked on this page!