R0J0hound's Recent Forum Activity

  • There isn’t any debugging feature for that, at least not in construct. The browser’s debugger can let you look at the JavaScript where it’s looping, but that is very abstracted away from events so it probably isn’t very useful. I mean if we wanted to deal with JavaScript and debugging it we’d be using something other than construct.

    Anyways,

    You don’t have to check every loop you have though.

    If you use “while”, then I’d pay attention to that. It’s the only way to create an infinite loop other than with function recursion.

    Just make sure it can exit the loop. If not then as a band aid you could replace the while with a repeat. That way it will just stop instead of looping indefinitely.

    The second thing to look out for isn’t an Infinite loop, but a loop that takes long enough that the browser asks to stop it. It happens with infinite loops too, but I digress.

    Are you looping over big arrays that are increasing in size?

    Do you have a loop that changes the number if iterations based on an expression that sometimes gives a very big number?

    Anyways that’s where I’d look.

    Ideas to mitigate that is to not loop over an entire giant array in one tick but do it in smaller chunks. Like half one frame and the other half the next. Big is the key word here.

  • There’s a system condition that checks if a xy position is overlapping a object. That should do it.

  • Just temporarily change them. So change them to allow the boost, then after a little time change it back.

  • The speed is limited by the max speed and the deceleration brings it to a halt fairly quick.

  • Wikipedia is your friend for the various methods and how they are done.

    Apart from utilizing JavaScript you can do something by looping over the characters and changing them to something else.

    The simplist would be something like replace

    0 with v

    1 with 7

    2 with ;

    ...

    And so on.

    Decoding would be the reverse.

    It’s as tedius as it sounds. Athough there are shortcuts.

    Anyways I’m going to have to defer to someone else to finish answering this one.

  • So the issue being that wait works with the timescale so when the timescale is 0 wait never stops?

    Wallclocktime is a timer that keeps going regaurdless of the timescale. Maybe that’s what you’d want to utilize.

    Global number stoptime=0
    
    On some trigger
    — set timescale to 0
    — set stoptime to wallclocktime+5
    
    Stoptime<=wallclocktime
    Trigger once
    — set timescale to 1
  • You’d do it as the last step. Like you’d get the json, then encrypt it. Then when you load you’d decrypt it first before loading the json.

  • A few ideas come to mind: encryption, compression, or even adding a checksum to the end to make sure it wasn’t modified.

    There may be plugins for all of them. I haven’t checked. I don’t use many plugins.

    There are probably other ways.

  • Probably need to use “add key” instead of “set key”. There are things that will silently fail so it’s best to test things as you go.

  • Sure you can. Rename a sprite to player, and add an instance variable to it called health.

  • What are you saving/loading exactly? If it's just variables then you could just use a dictionary object and set a value for each variable and get the json with the .asJSON expression. Loading would be done by using the "load from json" action and setting the variables from each of the values in the dictionary.

    on function "save"
    --- dictionary: set key "health" to player.health
    --- dictionary: set key "x" to player.x
    --- dictionary: set key "y" to player.y
    --- function: set return value to dictionary.asjson
    
    on function "load"
    --- dictionary: load from json function.parameter(0)
    --- player: set health to dictionary.at("health")
    --- player: set x to dictionary.at("x")
    --- player: set y to dictionary.at("y")
    
    start of layout
    --- Editbox: set text to function.call("save")
    --- function: call "load" (Editbox.text)
    

    It's basically the same for any data object. You could even just do your own save format, it's not hard.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Use an array instead of variables. Then you can do your check with one event

    start of layout

    array: for each x

    array.currentValue = "alert"

    --- aquire_tile: set animation frame to array.curX