R0J0hound's Recent Forum Activity

  • 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.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • 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.

  • 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

  • Decimal numbers are seldom perfectly precise on computers. For example 0.2 can’t be precisely represented in floating point numbers so it will be a bit off which adds up with calculations. It’s not really that far off actually if you look at it.

    Anyways this is seldom an issue unless you’re displaying the numbers, because by default too many decimal places are displayed.

    A solution is to round the number before displaying it.

    Set var to round(var*10)/10

    Or maybe after every time you do a calculation, or before you want to compare a number to be an exact decimal number.

  • Clamp limits the range of a number.

    It’s clamp(number, low, high)

    So if the number is lower than low, it will use low.

    And if the number is higher than high, it will use high.

    Otherwise the number will be used as is.

  • 1. Calculate the average x,y of all the player positions.

    2. Set your camera position using the average position as the second parameter of the lerp.

    Then to limit the player positions to the screen you could clamp the player positions.

    So maybe something like this.

    Global number camx=320

    Global number camy=240

    Every tick

    — set camx to lerp(camx, (player1.x + player2.x)/2, 0.03)

    — set camy to lerp(camy, (player1.y + player2.y)/2, 0.03)

    —scroll to (camx, camy)

    — player1: set x to clamp(self.x, camx-320, camx+320)

    — player1: set y to clamp(self.y, camy-240, camy+240)

    — ...do the same for player2

    Notes:

    320, 240 are half the viewport size 640,480. Change as needed.

    The above does the average of two players. For three it would look like this:

    (Player1.x+player2.x+player3.x)/3

  • Not really worth the effort.

    If it’s for free and you think it would be fun to try then that’s one thing. Construct features/limits are heavily dependent on browser apis and JavaScript features.

    Feature parity would be a tall order.

    If it’s something to sell you could just do paid porting, and implement features as needed on a game by game basis. That’s what the next Penelope did, and chowden is basically just a porting service as well.