oosyrag's Forum Posts

  • Here's the dissolve portion.

    dropbox.com/scl/fi/4xlpja8hk97ttb9lwvlm4/dissolveexample.c3p

    It involves using a noise texture from the advanced random plugin on a drawing canvas, placed above the target sprite on a layer with force own texture enabled, setting the blend mode to destination in, and using an alpha clamp effect with the threshold tweened from 0 to 100%.

    Set the blend mode of the drawing canvas to normal if you need help to visualize what's happening. You can also use the destination out blend mode instead, and tween the alpha clamp threshold from 100 to 0 instead for more or less the same result.

    For the fire part, I imagine you would do exactly the same thing, using the same noise pattern, on a fiery colored texture, but timed so that it starts slightly ahead of the dissolving part.

    The linked effect uses simplex noise instead of perlin noise, but perlin is what we have to work with here in the advanced random plugin, short of importing the simplex algorithm manually or through a JS library.

  • You do not have permission to view this post

  • Use for each, and identify the origin with an instance variable.

    You can set the instance variable by uid of the spawner - when enemy spawn boomerang, set origin to enemy.uid.

    Then for each boomerang, pick enemy by uid, and do whatever movement actions you have on those two instances only.

    Bonus - don't forget to handle what happens if the enemy gets destroyed or is no longer available but the boomerang is still out.

  • Getting the dpi of a(ny) given mobile device reliably isn't currently a thing that exists.

    A user calibration/one time set up may be your best option. Think rhythm games that rely on user input to calibrate audio and visual latency based on the user's device.

    There are sometimes ways to hide it too, like asking the user to "press 'x' to start" when determining which type of controller button mapping tooltips to display, Xbox vs ps.

  • For the users, don't auto join rooms or allow them to join/create a room that doesn't already exist. You can get the number of users in a room with Multiplayer.ListRoomPeerCount(index) expression

  • In that case you don't need the number of tiles right?

    On paletteTilemap clicked - Set selectionVariable to paletteTilemap.TileAt(paletteTilemap.PositionToTileX(Mouse.X),paletteTilemap.PositionToTileY(Mouse.Y)

    On canvasTilemap clicked - Set tile at canvasTilemap.PositionToTileX(Mouse.X), canvasTilemap.PositionToTileY(Mouse.Y) to selectionVariable

  • Here's my epic tileset questions.

    -What is the logic for getting the number of tiles in a tileset?

    Not currently available, besides manually counting or entering a number in a variable ahead of time. What do you need it for?

    -How do you get a tile's image and put it somewhere else, if possible?

    TileAt(x, y) expression to get the tile id at a position, Set tile action to set a tile id at a position.

  • Theoretically... With the tools we have you might be able to import a sheet and resize/reposition a mask to get the effect you're looking for...

    That would be absolutely absurd of course practically speaking from an implementation and performance perspective.

    It would be much more reasonable to import individual frames as needed instead. If you're in control of the distribution format and method, you could use the file name to contain metadata such as animation name, order, length ect. whether it is online (ajax) or on the local drive (nwjs). Or is nwjs even necessary anymore? I haven't been active for a while, but I vaguely remember something about web apps getting access to the local files.

  • Yes, don't use that. You don't want it to trigger multiple times as it's stepping through collisions for an object. Stepping is still enabled for collisions regardless, when the Step property in the behavior is checked/enabled.

  • I've done this before using multiple bullet behaviors on the same object.

    One behavior heads towards the player.

    The second bullet behavior, using the enemy object in a family, can be set to -

    On family overlap with enemy (or within x distance) - set family bullet behavior angle away from enemy, and set enemy bullet behavior angle from family. Use a high speed, and a high deceleration. You can even set the speed inverse to their distance to each other if you want, so that they repulse each other harder the closer they are to each other. This doesn't necessarily prevent overlap, but neither do monsters in vampire survivors.

    This is more akin to steering or boids style maneuvering.

    I would also recommend updating steering forces only every x seconds instead of every tick, for performance reasons. You can also see this in action in vampire survivors after you die.

    Regarding performance for massive amounts of enemies, you might notice there actually aren't thousands on screen at a time in vampire survivors. Try counting them. The enemies (and xp drops for that matter) are culled when offscreen and xp is combined.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • > Use on collision instead.

    This option does not appear when using Step

    What option? It's a trigger condition. Is your event already inside a trigger?

  • Use on collision instead.

  • You can use the inverted "is on screen" condition to trigger whatever you need to trigger after the character falls out of the map.

  • + Mouse: On Left button Clicked on Tilemap
    
    ----+ Tilemap: Tile (Tilemap.PositionToTileX(Mouse.X)+1, Tilemap.PositionToTileY(Mouse.Y)) = 1
    ----+ OR Tilemap: Tile (Tilemap.PositionToTileX(Mouse.X)-1, Tilemap.PositionToTileY(Mouse.Y)) = 1
    ----+ OR Tilemap: Tile (Tilemap.PositionToTileX(Mouse.X), Tilemap.PositionToTileY(Mouse.Y)+1) = 1
    ----+ OR Tilemap: Tile (Tilemap.PositionToTileX(Mouse.X), Tilemap.PositionToTileY(Mouse.Y)-1) = 1
    
    -----> Tilemap: Set tile (Tilemap.PositionToTileX(Mouse.X), Tilemap.PositionToTileY(Mouse.Y)) to tile 1 (normal)
    

    On clicked tilemap

    If any of the tiles around the clicked tile is 1

    Set clicked tile to 1