oosyrag's Forum Posts

  • Increase the dampening again when you want it to start slowing?

  • Pretty effect.

    Quick theorycraft -

    Have a "base" (invisible) sprite, and the ball sprite in a container. Spawn the base sprite in a random direction in a random speed, bullet movement. The ball will also spawn as part of the container. Pin this to the base sprite's position only so it will move on the "horizontal" plane with the base sprite, and set up its own random vertical bullet behavior for the "height". The sprites vertical bullet velocity will be modified every tick by a set amount downwards (gravity), and when it collides with its own base sprite flip the angle of motion back upwards again while cutting the velocity by a half or third or so. You can round the position or use a distance clamp from the base sprite to trigger a "final bounce", where the bounce action is disabled, and fade can start to kick in.

    I noticed in the example the balls actually collide with the barrels with vertical discrimination too - if you want something like that, you can have a "collide-able" state for the base sprite based on the vertical position or distance from the ball sprite. If the ball is a certain distance (say, the height of the barrel or other obstacle) from the base, you can enable the state. While active, if the base sprite collides with a barrel, it can bounce off or change directions. If it is already overlapping an obstacle when the state is triggered, it can immediately run a bounce action for the ball and continue moving the same direction, representing hitting the top of the object.

    Your base sprite can also be visible as a shadow or glow effect rather than invisible.

  • It probably just won't load, and your oncomplete will never trigger.

  • I'm not very familiar with the physics behavior myself, but I assume to have constant motion you would need to apply force equal and opposite of the linear or angle dampening. I have no idea how the dampening value is calculated. Note this won't actually get your object moving, it will only sustain movement. To get the object moving in the first place, you will need to apply a force or impulse greater than the amount dampened.

    On the other hand, if your situation allows for it, you can simply set your dampening to 0.

  • You would need to build a tilemap image to import in as a tilemap, then you would be able to use the tilemap object to "paint" your level.

    The resource you linked to does not have this done for you, as many of the art assets are not the same size.

    If you put all the 16x16 images together into one file to build a tilemap image, that would give you a nice base foundation to work from.

  • Are you talking about importing project files? When you import/upload a project file into your project and a file with the same name already exists, Construct 3 definitely asks you if you want to replace the file.

  • Thanks!

    Now that you brought this up I took a look and it looks like there was an update that changed the way mouse over tilemap worked since I made it. Fixed it so it should work again now (you should be able to draw new tiles anywhere).

    Seems like the "Cursor is over object" condition now requires a collision box to be true? I think it used to be bounding box for the tilemap.

  • Interesting... looks like there are a lot more spaces in your file. I disabled the check for json file so it should work fine now. Can you confirm?

    Edit, used another method to perform the check. Should still work fine.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Completely up to you, and there should be absolutely no discernible impact in terms of efficiency or performance.

    Events give you more control, should you require it.

    You can also use includes to organize event sheets and get rid of clutter as an option.

  • Any data you wish to share among all peers must be communicated somehow, either via the built in sync or by messages.

    Once a peer receives the data, it is up to the local client how to store and display it.

    In the case of an MMO, depending on your scope, you might want to keep in mind the frequency and size of broadcasted updates as to not overload the host's bandwidth (remember that bandwidth loads scale exponentially with number of players).

    You can use global variables and layers to persist across layouts. Some objects are naturally global like array, others like sprites you can add the persist behavior to.

    This is when utilizing the built in multiplayer plugin. If you are using an external backend service, you have many different options available depending on the chosen provider. If you are trying to make an MMO, I would definitely suggest a backend service as optimal.

  • Good practice with asynchronous data retrieval is always to build in a timeout and error handling, with the option of (or automatic) retrying. The logic process of what happens in the event of an error is entirely up to you.

    I've never had problems with local storage, but my sample size is small. I wouldn't normally worry about it besides setting up an error/debug notification in case it fails, so that end users at least have some sort of idea what happened and can report back. If it becomes a common problem, then I would look into it more closely.

    Generally speaking, if you are unable to load your saved data, the game should probably treat it as if there was no saved data, and in that case progress would indeed be reset.

    Ideally you would have their progress saved on the cloud (Google play services can facilitate this) but that adds another layer of complexity.

  • Hm can you upload your json file for me to look at?

    I had it only accept arrays exported as the Array.Asjson expression, which tagged them as "c2array". Maybe if you saved directly from the new array editor the format may be slightly different. (I don't currently have access to it)

  • Honestly if you understand the implications and know what you are doing, there shouldn't be any harm. Although it is pretty standard and common among netcode implementations to have some sort of buffer, for the aforementioned smoothing out of latency issues for a more consistent experience for peers at low latency levels.

    It will seem more responsive under good conditions, but any intermittent packet loss or jitter will be more pronounced when it does occur.

  • Use Array - Delete Index - Array.Indexof(CardYouWantDeleted)

  • Had some time to burn so I put this together if you're still interested - https://www.dropbox.com/s/of8uwu07mx2iq ... r.c3p?dl=0

    Load a csv or json file from local drive to import into a C3 array, and you can export again to json or csv.

    Basically does what rex's plugin does, without needing the plugin.

    It only works with 2 dimensional arrays though.