calminthenight's Forum Posts

  • oosyrag There are many different collision avoidance systems that can be used. So far I've never seen any info on what Vampire Survivors used although I know it was originally created in Phaser so it certainly had access to physics libraries.

    Looking at the gameplay it does look like physics to me, you can see pushing happening with the mobs when the faster enemies fly through them etc. and it looks too clean to be simple de-colliding.

    De-colliding without any area referencing is also not a great solution and just leads to chain reactions so saying it is simple is probably a bit misleading.

    Nevertheless it is fun to explore different approaches with and without physics.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I stripped it back to a simple project with circles again and fiddled with it and I think the fundamental issue is that it relies on gently massaging speed and angle values. This is amazing as a physics/particle simulation but not so suitable as a collision avoidance system for enemies that have to move toward a target directly.

    Using a static value for speed and vectoring so the sprites move directly towards the target, rather than are steered towards them seems to not work with this model without causing overlaps, even at low values.

    I will keep tinkering though and see if I can get it to work.

    EDIT: I think that the grid pair system struggles to deal with resulting overlaps when things are being forced to move to a location. It's possible that adding in prediction by giving the spatialgrid access to each objects x and y velocities and rechecking for future overlaps would work but it would probably move the performance way back.

    https://1drv.ms/u/s!AkmrWgxeuxlKhKMx9yWgRSvmR0j70g?e=sU32mH

  • R0J0hound your method is interesting. When setting the objects to move toward a position I see about about a 30% performance gain with your method compared to standard construct physics. Your method however does not handle the tracking well and produces rapid movement and overlaps in the objects nearby the point they are moving towards. This could probably be improved by scaling velocity based on distance to the target but I wonder if you think there is a more functional way?

  • Adding to the issue. I made a simple project that loads an audio file from URL and plays it as "Music" i.e streamed. Safari on macOS does not allow the file to be streamed regardless of file type, but must first load the file completely as if it were played via the "sounds" folder.

    Ashley Is this a known limitation/issue I am unaware of?

  • I'm working on a project at the moment where I am fetching audio from a server and playing it back via a webapp in browser.

    IOS is not playing nice. Safari (Iphone 13 IOS.16) reports null is not an object (evaluating 'this._audioDomHandler.DecodeAudioData') regardless of if the file is .webm or .mp3.

    Chrome on IOS also will not play. Works fine on all other devices.

    Safari on MacOS Big Sur has same issue if it is .mp3 but works if it is .webm

    Anyone faced similar issues before?

    Tagged:

  • If you are using drag and drop behaviour there is an 'on drop' trigger which you can use to compare the object position at that time.

    If you are using touch only then you can get the touch position using 'on any touch end' and 'touch.X, touch.y'

    Highly recommend reading the manual entries for the behaviours you are using. construct.net/en/make-games/manuals/construct-3

  • It is not possible. Create a transparent sprite with same dimensions and pin it to your SVG and use that for collision detection.

  • Positioned audio has been buggy in Chrome for years and no one seems willing to fix it that I am aware of.

    bugs.chromium.org/p/chromium/issues/detail

    bugs.chromium.org/p/chromium/issues/detail

  • Web Audio API is not as advanced as many DAW's. Make sure your audio files have no volume at the first and last sample of each file.

    You need to use a DAW to zoom into the file at the sample level and remove (de-click) them. Some DAW's have methods to prevent this built in.

  • Create a sprite called "spawner". Make it invisible if you don't want to see it and place it in the spots you want to potentially spawn from on your layout.

    At start of layout use the Pick Random Object Instance condition for your "spawner" sprite.

    Then use the "Create Object" action to create your sprite at spawner.X & spawner.Y.

    This will create "spawn" your sprite at one of the random "spawners" you have positioned on the layout

  • use find path to

    X=self.X+cos(angle(player.x,player.y,self.x,self.y))*1000

    Y=self.Y+sin(angle(player.x,player.y,self.x,self.y))*1000

  • You need to define what away is. For example, away could be: somewhere between 500-600px in a 360° area from current position, not overlapping an object.

    Then when it is time to trigger the enemy to pathfind away, you can use that logic to set the pathfind destination.

  • Make sure you don't have the unbounded scrolling option selected in the layout properties. Shouldn't need clamp if map is same size as layout.

    This code works fine with unbounded scrolling off.

  • Trust in ROJO. I'm sure the simplified version of my response will work.