Welcome to Keen Software House Forums! Log in or Sign up to interact with the KSH community.
  1. You are currently browsing our forum as a guest. Create your own forum account to access all forum functionality.

Should PB scripts be impossible to steal in game?

Discussion in 'Multiplayer' started by DoubleCouponDay, Oct 25, 2016.

?

should pb scripts be impossible to steal in game?

  1. Yes

  2. No

Results are only viewable after voting.
Thread Status:
This last post in this thread was made more than 31 days old.
  1. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    When I hopped on the back of a pirate drone I could grind down the ownership of its programmable block, weld it up, steal the code. Some people put hundreds of hours into their scripts so to have it stolen in a multiplayer setting may not be welcome! Enemy factions could gain an insight into your defence systems and weak points by reading ones script. To activate this feature I'd imagine you'd have to take ownership of the programmable block. If you wish for your code to be open source you would leave it owned by nobody.

    My question to you is should 'grind and copy' be prevented by the game? If so I would imagine that the script would be deleted once the block takes too much damage. Sane programmers back up their work so I don't think losing it in game is a problem. For example, to the workshop, to github, wherever.
     
    Last edited: Oct 25, 2016
  2. plaYer2k Master Engineer

    Messages:
    3,160
    Even more can be achieved by simply creating a blueprint of any enemy ship. Thus it is an old topic.

    One good prevention for ingame programs would be to essentially write an interpreter for the PB and encode the actual program as string you then submit either as argument or by adding it to a text panel temporarily.
    That way the "actual code" is stored as variable in the interpreter running in the PB and when someone gains access only the interpreters code is lost.

    However the disadvantage is that you had to write such a whole system as well as write in a different language as plain C# code cant be used and ran due to the PB limitations.
    Running it through an interpreter also means running it less efficiently.
    So that would only be an alternative if there really is something of such importance that nobody should ever have access to it and that rarely really is the case in most PvP.

    Disabling the option to create blueprints would help a lot as that is a cheap way of getting around it.

    However, physically claiming a ship in SE, grind the PB down and inspect the code however is very legit and should be encouraged in my opinion. After all you could reverseengineer real applications too once you get them.
     
  3. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    >When your on like 4 or 5 wizard levels and some guy just opened up another dimension of wizardry. :stare:

    but seriously. Truly marvelous side project for SCIENCE, but our compiler is already good enough. I bet there's a simple API hook in their somewhere like m_ProgrammbleBlocksCode.Clear(). done, dusted, sold.

    Hmm I thought they removed the ability to CTRL-C ships in survival. Ill have to test this myself.

    Its a cool ideal but not everyone wants to share their work just like some modders are cool with copying their assets and some have legal protection. We should have the choice to protect our work so that we cant be ripped off. If i made a super secret script, it would be awesome to have that power to myself and address the requests when they come to me. Anyway the people who would reverse engineer like that are scripters with experience; not clueless players.

    We should have the option the share if thats truly our hearts desire and an easy way to implement that would be by the block ownership level.
     
  4. Malware Master Engineer

    Messages:
    9,631
    @haveachillday CTRL+C is not blueprinting. CTRL+B is.

    As to copying ingame scripts: No, I don't think there should be such a protection. Nor do I think there will be. They're just game scripts. No big deal.

    Imo there needs to be some way to balance the power scripters have over non-scripters. While this is pretty much impossible, by allowing non-scripters to "steal" scripts at least there's a chance.
     
    Last edited: Oct 25, 2016
  5. halipatsui Senior Engineer

    Messages:
    1,253
    Or the user should create a system to protect the script if it is so important. Something like a sensor+large warhead comes into my mind. Hehe.
     
    • Like Like x 3
  6. Dax23333 Junior Engineer

    Messages:
    657
    Depending on what you want to hide, obfuscation might help. Others would still be able to get the script but would have trouble finding what it does and converting it for thier own uses.
    How well you'd be able to do this in space engineers I do not know.
     
  7. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    This is the easiest solution isnt it? shred the evidence when systems are beyond help. We dont need our hands held by keen, for this unlikely scenario, when we can devise a plan B! This would be easy to trigger with a manual vessel, since the player knows when to hit the self destruct... but what about an autonomous vessel? I think they are more likely to be reverse engineered in game; just like I hacked apart the pirate drone.

    This is a bit harder to know when to trigger since you need very clear conditions. When a main thruster is down? when power is interrupted? What about when a layer of conveyor blocks, surrounding the PB's, lose a couple units? Then warheads would paint a giant bullseye to all who knew your weak spot; a double edged sword, or a death star. :D Yet a drone doesn't need commands when it can be set to stand and fight. The PB could be decoupled, then detonated! But what if they have a diversion to distract the turret while a landing gear captures the drone and a combat technician tiptoes over for the CTRL-X manoeuvre?

    There's something to be something be said for messy code. A program could be designed to minify C# code: remove tabs, spaces, returns and change all variable names to single letters.. how utterly despicable. Yet why understand it when you know what its capable of? Although... it would be easy to plant malicious code inside; a trojan virus dear god.
     
    Last edited: Oct 26, 2016
  8. halipatsui Senior Engineer

    Messages:
    1,253
    Quite simply adjust the sensor range so that the programmamble block is untouchable.(5-10 meters in every direction? ) Sensor set to notice enemy large an small grids and players. When warhead is attached to the programmamble block directly there should be no way of getting near it without exploding it because attacker cant even use remote controlled tools to remove the warhead. Cutting off power helps neither because warhead is self powered. Does anyone figure out a way around a method like this? You also cant access pb from other terminals because you have to grind the block itself in order to occupy it.
     
  9. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    Yes sensor would be good but it would also need its guarded script to check if it is not damaged! Power interruption is similarly important since you cant check or trigger anything without juice :munch:. Warhead must be on a deadman switch (countdown constantly reset) at all times.
     
    Last edited: Oct 26, 2016
  10. halipatsui Senior Engineer

    Messages:
    1,253
    Thats true did not think about shooting the sensor. Of course it would be quite risky to shoot a large warhead with a assault rifle from ranges that allow you to actually hit the sensor. Or pack the self destruct system so tightly it wont get damaged. But of course this problem in itself is quite marginal.
     
  11. plaYer2k Master Engineer

    Messages:
    3,160
    Have a small grid with locked landing gear, reactor/battery, sensor, PB and timer all covered in warheads all around.
    Have the sensor setup to detect enemy grids and players to run the PB with an "explode parameter". Have the timer frequently run the PB with an "update parameter". The PB, if ran with the "update parameter" checks if the landing gear is still presend (alternatively check if the block count still is the same and thus ALL blocks are still present) and locked as it otherwise will explode or if executed with the "explode parameter" it will explode as well.

    That way any enemy getting close will trigger it. The removal of the landing gear or the directly connected block will trigger it as well as direct impacts will trigger it.
    Thus i dont really see a way to get around such a system. This setup is also independent from the main ships power supply as it is not connected directly.

    I however have little experience how reliable the locked landing gear connection is through multiple game loads.
     
  12. halipatsui Senior Engineer

    Messages:
    1,253
    Actually pretty fun they vam be stolen. Makes people think about defensive stuff like this.
     
  13. Tau Trainee Engineer

    Messages:
    52
    I personally HATE thieves, It would be nice when you grind down a programmable block (to hack it) it forgets everything.
    i still like the idea of people being able to learn from others code, Just not my enemies.

    The only way i could think of doing it, is once you wrote YOUR code, you copyright it.
    It may work.
     
  14. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    One or two should be enough though. Ill rig up a test video tonight.
     
  15. Ronin1973 Master Engineer

    Messages:
    4,828
    If there is room for large grid gear, you can also create a secret respawn room with a med bay in it. Medbay, reactor, a small cargo container with tools, hydrogen and oxygen bottles, weapons, ammo, and plenty of warheads in case you have to scuttle her rather than steal her back.
     
  16. Draygo Senior Engineer

    Messages:
    1,297
    How are you going to enforce that?

    Game mechanics pretty much dictate that any PB code can be copied modified and reused. The only thing you can possibly do is prevent others from re-uploading the code to the workshop.
     
  17. halipatsui Senior Engineer

    Messages:
    1,253
    One could also make his code so cryptic / havr some funky requirements that it becomes very hatd to use even if obtained.
     
  18. Bullet_Force Apprentice Engineer

    Messages:
    357
    I think it should be harder to do and maybe require a special block/tool but it should not be impossible. To counter script theft, I have a blank script I made which I use to overwrite my other scripts when I log off. Should someone look in the PB all they will see is 'void main'

    That said I do think that being able to blueprint an enemy ship from 5km away is quite broken as a feature in online multiplayer. There needs to be at least a server option/setting for admins to disable this as its quite easy to BP a ship then go into single player to find all its weaknesses.
     
  19. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    It works!



    Code:
    IMySensorBlock sensor;
    IMyShipMergeBlock mergeBlock;
    IMyShipWarhead bomb;
    
    IMyTimerBlock timer;
    
    public Program()
    {
    	sensor = GridTerminalSystem.GetBlockWithName ("SENSOR") as IMySensorBlock;
    	mergeBlock = GridTerminalSystem.GetBlockWithName ("MERGE_BLOCK") as IMyShipMergeBlock;
    	bomb = GridTerminalSystem.GetBlockWithName ("BOMB") as IMyShipWarhead;
    	timer = GridTerminalSystem.GetBlockWithName ("TIMER") as IMyTimerBlock;
    }
    
    public void main()
    {
    	if (sensor != null)
    	{
    		if (sensor.IsWorking)
    		{
    			bomb.SetValueFloat ("Countdown", 3.0F);	
    			bomb.SetValueBool ("Safety", false);
    			bomb.ApplyAction ("StartCountdown");
    		}
    		
    		else
    		{
    			DetachBrain();
    		}
    	}
    
    	else
    	{
    		DetachBrain();
    	}
    }
    
    void DetachBrain()
    {
    	mergeBlock.ApplyAction ("OnOff_Off");	
    }
    
     
    Last edited: Oct 28, 2016
    • Like Like x 1
  20. Tau Trainee Engineer

    Messages:
    52
    I

    You can still do it via Sniping the reactor, and or disabling the programmable block.
     
  21. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    @Tau check the code :) bomb will explode if the pb cant update
     
  22. Tau Trainee Engineer

    Messages:
    52
    ah, i see, However, There is a flaw, you can still grind warheads while their armed to my knowledge.
     
  23. halipatsui Senior Engineer

    Messages:
    1,253
    You can place a sensor to blow it up when you get too close.
     
  24. Phoera Senior Engineer

    Messages:
    1,713
    actually i think that must be analized.

    cuz this is strange that block lose ownership setting, and don't loose script itself.

    may be via world option?
     
  25. DoubleCouponDay Apprentice Engineer

    Messages:
    123
    Hmm there is a way around this design. A bomb disposal unit could magnetise the pb and grind the warhead. Simply set sensor to detach when small or large grids are in range.

    We only have the option to disable scripts altogether i think.
     
Thread Status:
This last post in this thread was made more than 31 days old.