dop2000's Forum Posts

  • This could easily be resolved by setting it to resize 2 pixels instead of 1 and making it longer intervals, but that would make it more choppy

    Your game or app should produce the same results regardless of the framerate. Some people will run it at 240 fps, others at 60 or maybe even 30. Then your "Every 1/120 seconds" condition won't work. If you want to resize the object properly with events, do it on every tick and make sure to use delta-time.

    I would suggest using the Tween behavior instead - it's a lot easier. You just set the target size and time and it will resize the object properly. One added bonus is that you can choose a nice easing effect.

  • So you are writing the file with NWjs plugin? Can you show a screenshot of the code?

    And you really need to free up some space, 2GB is not sustainable.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You can use two LiteTweens - one for X movement (linear) and another for Y (OutCubic + ping-pong). Or MoveTo for X and LiteTween for Y.

  • Yeah, it's annoying that we can't add the NoSave behavior to data objects.

    I usually work around this by keeping an invisible sprite with the NoSave behavior on the layout and storing all data that shouldn’t be affected by saving/loading in its instance variables - for example, Array.AsJSON. Then, in 'On load complete', I read it back into the array.

  • You can configure custom properties to follow the animation name and/or frame. Check out this example.

    + System: On start of layout
    -> PlayerFollower: Follow: Follow Player (from current position False)
    -> PlayerFollower: Follow: Start following custom property "animation" Step
    
    + System: Every tick
    -> PlayerFollower: Follow: Set custom property "animation" value Player.AnimationName
    -> PlayerFollower: Set animation to PlayerFollower.Follow.DelayedCustomPropertyValue("animation") (play from beginning)
    
  • Create a gradient image (transparent to white or black) in any graphics editor. Place it on top of the sprite and apply the desired effect - for example: overlay, multiply, darken etc.

  • Webm format should work on Steam Deck - we have an intro video playing in our game on startup, no user interaction required.

    You don't need both webm and mp4 files, just keep the webm one.

  • AI can analyze C3 events if you simply copy and paste them. For example, this may look like gibberish to the human eye, but ChatGPT can easily read it:

    {"is-c3-clipboard-data":true,"type":"events","items":[{"functionName":"SaveGame","functionDescription":"Save Game","functionCategory":"Save&LoadSystem","functionReturnType":"none","functionCopyPicked":false,"functionIsAsync":false,"functionParameters":[{"name":"SaveSlot","type":"string","initialValue":"","comment":""},{"name":"Level","type":"number","initialValue":"0","comment":""},{"name":"PlayerPosX","type":"number","initialValue":"0","comment":""},{"name":"PlayerPosY","type":"number","initialValue":"0","comment":""}],"eventType":"function-block","conditions":[],"actions":[{"id":"set-value","objectClass":"GameData","parameters":{"path":"\"slot_\" & SaveSlot & \".currentLevel\"","value":"Level"}},{"id":"set-value","objectClass":"GameData","parameters":{"path":"\"slot_\" & SaveSlot & \".level_\" & Level & \".player_x\"","value":"PlayerPosX"}},{"id":"set-value","objectClass":"GameData","parameters":{"path":"\"slot_\" & SaveSlot & \".level_\" & Level & \".player_y\"","value":"PlayerPosY"}},{"id":"set-item","objectClass":"LocalStorage","parameters":{"key":"\"GameData\"","value":"GameData.ToCompactString"}}],"children":[{"eventType":"block","conditions":[{"id":"layer-name-exists","objectClass":"System","parameters":{"layer":"\"GameSaved\""}}],"actions":[{"id":"set-layer-visible","objectClass":"System","parameters":{"layer":"\"GameSaved\"","visibility":"visible"}}]},{"eventType":"block","conditions":[{"id":"pick-all","objectClass":"System","parameters":{"object":"Text2"}}],"actions":[],"children":[{"eventType":"block","conditions":[{"id":"has-tags","objectClass":"Text2","parameters":{"tags":"\"GameHasBeenSuccessfullySaved\""}}],"actions":[{"id":"set-text","objectClass":"Text2","parameters":{"text":"\"The game has been successfully saved in slot\" & newline & \"GAME_\" & SaveSlot & \"!\""}}]}]}]}]}

    It can then give you advice on how to fix a bug or optimize your code. AI can also generate events that you can paste back into the event sheet, but this can be hit or miss.

  • If you are using System Save, here is an example with multiple save slots:

    howtoconstructdemos.com/saving-and-loading-system-with-multiple-save-slots

  • Your only layer has 0% parallax. You need to either set parallax to 100%, or enable unbounded scrolling in layout properties.

    Another option:

    -> Sprite: Set position to (Touch.X(Sprite.LayerNumber), Touch.Y(Sprite.LayerNumber))

  • You can link multiple options to the same node.

    You will need to keep track of which bread and which cheese was picked with events - for example, store them in variables, in an array or a dictionary.

  • Not sure how any of that is related to setting an angle of motion. But I'm glad it works :)

  • Strangely, I can't reproduce it. Can you post your project file?

  • The Pathfinding object doesn't move immediately upon creation. There’s no motion - and therefore no angle of motion. You can simply set the object's angle instead.