dop2000's Forum Posts

  • all it needs to do is add a variable to another variable every .1 seconds, and every 1 second

    Your game doesn't need to continue running for that. You save the time when the game was suspended. When it's resumed, you simply calculate how much time has passed and add it to the variable. Use Date object to access system time.

  • It's difficult to guess. Check z-elevation settings on all objects. Check in Debug Mode that they are on correct layers, maybe some event moves them. Check that they don't have any blend modes or effects.

    Can you can reproduce the problem in a blank project by copying all three objects there?

  • I don't know if this is possible on Steam Deck, but if you manage to open developer console (F12), there will probably be an error message explaining the black screen.

    Perhaps if you connect an external keyboard to the Deck?

    You need to export the game with DevTools enabled.

  • You are probably using "On key pressed" conditions, which are triggered once per pressed key. You need "Is key down" conditions which continue to run continuously.

  • It's for organization only. You can also copy/paste/import/export the entire folders of animations.

  • Seems like you've got everything right - a state machine based on instance variables and timers, families, functions etc. That's how games with multiple enemies are made in Construct.

    Don't use top-level events like "Enemies state=attack : do something", this is bad practice and bad for performance.

    Use Timer behavior to change enemy states and to switch targets. Use LOS and Pathfinding behaviors to look for targets and chase them.

    There are lots of ways to pick targets. You can, for example, do something like this if you don't want all enemies to attack one target:

    Enemy On "pick_new_target" Timer
    Enemy Pick Allies in LOS
    
    .. For each Allies
    .... Enemies pick All
    .... Pick Enemies that are already targeting this Ally -> Save their count in an instance variable Allies.targetedBy
    
    .. Pick Allies instance with the lowest targetedBy value 
    

    If you are new to C3, one of the most important concepts is picking. Once you understand how instances are picked in events (and in nested events), it all starts to make sense.

  • Yes, family and hierarchy is not the same.

    Use a hierarchy if you need to combine lots of objects and move them all together.

  • You are probably not picking the right enemy instance. You need to show your code, screenshots of your game are not helpful.

  • Do you disable phaseOneStart variable? Because if not, the first event on your screenshot will be repeated on every tick, creating hundreds or even thousands of delayed threads, each of which spawns a new alert instance, creating a terrible mess.

    Make sure this doesn't happen.

    Use Debug Preview (Shift+F4) to debug your project, for example to check what's going on with the alert sprite.

    And use Timer behavior instead of "waits".

  • Ah, that's because the Base instance picked is the one that's overlapping PS.

    Try this:

    Alternatively, you can save baseID on the PS sprite when it arrives. Then, when a button is clicked, pick PS the same way you pick connected bases.

    PS.baseID=Button.connectionA | PS.baseID=Button.connectionB

  • Check if Mouse1 and EnemyBox1 are in a container.

  • NWJS versions 76-85 don't work with worker. This may be the reason of the black screen. Try disabling worker in project properties.

    This should be fixed in the upcoming NWJS 86.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Yes, picking PS by distance won't always be accurate, especially for diagonal paths.

    Instead, when a button is clicked, pick two bases connected to it, then pick PS instance overlapping these bases. Then pick unoccupied base from the two. Then move PS to that base.

  • No worries!

    Gamepad stick returns two values from -100 to +100, for horizontal and vertical axes.

    angle(0, 0, axisX, axisY) will give you the angle of the stick

    distance(0, 0, axisX, axisY) will give you the distance - how far it is from the center.

    Using these values you can move your cursor.

  • I noticed that some buttons were incorrectly configured in your project - check all IDs and connections.

    Also, like I said, when a button is pressed, you need to pick the valid PS instance, which is on a base connected to the button. Not sure if picking by distance will always work.

    If there are other problems, I highly recommend using Debug View and console logging for troubleshooting.