dop2000's Forum Posts

  • You can store not the key itself, but the hash of the key. Then the attacker will have to brute force the key.

    I need to encrypt/decrypt game saves. How do I do this without the encryption key?

  • I understand that when encryption key is stored in the game, it's not really possible to protect it from hackers. I'd like at least to obfuscate it, make the task of finding it a bit more difficult.

    I can obviously break the key into multiple parts, store them in separate variables, do some string manipulations - replace characters etc. But I assume this won't make much difference. Are there better methods?

    Tagged:

  • I still need to run "trigger once" or it wont work

    It's ok to use it with global variables. Just never use it inside of loops, triggers and with objects that have multiple instances. For example, this code is wrong and will often work incorrectly:

    Enemy health=0
    Trigger once
    ... Enemy play "death" animation
    
  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Functions.Dialogue("text here")

  • The only other thing I can think of is that the Inspector is struggling with all the variables added by the event sheets even though none of them are running/changing/updating.

    You may be on the right track, although I tried making a blank project with thousands of global variables and couldn't reproduce it. Can you try this?

    There was a bug report about a very similar issue - on layouts with many layers the System tab in Debug Mode was updating very slowly causing severe lags. Maybe it's something similar, but specific to your machine or your project.

    Check out all comments:

    github.com/Scirra/Construct-bugs/issues/5926

    construct.net/en/forum/construct-3/general-discussion-7/debug-view-extremely-slow-171386

  • Use "Compare tile at" condition, or Tilemap.TileAt() expression.

    -1 means an empty tile.

  • Remove "Trigger once" condition from all events and never use it with objects that have multiple instances! When used incorrectly this condition will cause nothing but bugs.

    Use Timer behavior to schedule enemy movement. But it's better to run it on some object with only one instance, for example on the Player sprite. So your code can be something like this:

    // on start of enemy turn
    Player start Timer "enemy_move" for 1s once
    
    
    Player on Timer "enemy_move"
    
     // picking the next enemy which hasn't moved
     Enemy compare variable HasMoved=false
     Enemy pick instance with the lowest TurnOrder 
     --> Move this enemy
     --> Enemy set HasMoved to true
     --> Player start Timer "enemy_move" for 1s once
    
     Else 
     // all enemies has moved - end enemy turn
    

    So the timer will be repeated for every enemy until all of them move.

  • Have you tried Firefox? It's the only browser not based on Chromium, so it's unlikely to have this issue.

    I understand you've tried removing all event sheets, did you also remove all scripts?

    Instead of removing all event sheets, try creating a blank layout with no event sheet attached.

    It may be a big job, but as an experiment you can also copy all your layouts to a blank project and see if it still happens there. Maybe the problem is caused by something like a corrupted font or audio file.

  • It's probably implied because one object can't be in a hierarchy.

    After you've created a hierarchy you can edit hierarchy settings for child objects on the properties bar.

  • If you have suggestions about conditions that would allow the system to ask "is X pending", that would be a great boon to me.

    It depends on the implementation. You can store all these skills in some data object, like an array or JSON. In this case you can read the array/json in a loop and check the "pending/completed" value of every record. If you decide to go this route, I strongly suggest JSON.

    Another option (which is less 'professional' but is actually easier to do in Construct) is to use a sprite with instance variables. Say, if there are 20 different skills in the game, you can put 20 instances of SkillSprite on the layout. They will only be used as data storage and can be invisible. For each SkillSprite instance you define a bunch of variables, for example SkillType=magic, IsSelected=true, IsProcessed=false, Priority=1 etc. Then in your functions you can easily filter and pick these instances. For example, this block of conditions will pick the next pending magic skill:

    SkillSprite compare value SkillType="magic"
    SkillSprite compare value isProcessed=false
    SkillSprite pick by highest priority
    
  • I would probably do something like this:

  • If you export with NWJS, enable Devtools checkbox when exporting. Then in black screen press F12 and check errors in console log.

  • You do not have permission to view this post

  • Try changing zoom level in your browser to 100%.

    Try another browser.

    You can also preview projects using keyboard shortcuts F4, F5, Shift+F4, Shift+F5.

  • Just to confirm this is where you want me to put this right?

    Sorry, I was wrong, the snapshot size needs to be in device pixels. And your formulas there were working.

    DrawingCanvas is required to change the resolution. You can use "set resolution" action, and the image will be exported with that resolution. The canvas and the sprite need to have the same origin point position.

    dropbox.com/scl/fi/iolct3pft9f9il8wvnwoh/ScreenShot-question2.c3p