R0J0hound's Forum Posts

  • Getting the meanings too will be a tall order. Keep googling and you may find one, but a quick look on my part didn't yield anything.

    You'll have to probably make such a list yourself. Doing it manually would be the least ideal. Another would be to scape what you need from a website like this:

    vocabulary.com/lists/52473

    With some work you can take that and has a bunch of words and definitions. Maybe if you're clever you can find a way to automate it.

    Another idea is to get an electronic version of a dictionary and scrape the info you need out of that, but that's more rough with copyright considerations. Seems like a lot of busy work either way.

  • Here's an example of parsing the tilemap.asjson directly. It grabs the width, height and rle data then expands it into the array. But yeah, just using the for loops is smaller and simpler.

    dropbox.com/s/lt8yjw4dxhf2tit/tilemap_to_array.capx

  • It’s a different format. With a bit of work one could be converted to the other but it’s probably simpler to just do it tile by tile with a few for loops.

    The tilemap json is a bit more compact since the tile data is compressed with rle.

  • Hmm, The flood fill does seem finicky in your capx. I had a gander at the your code and the original capx you referenced but I can't pick out what's amiss. Admittedly it's a lot to digest.

    Actually, it looks like it's made to give up if it takes too long and sends a message to the browser console.

    I had a go at making a flood fill that doesn't give up. It ended up being very similar to the one you used. Looks like you're using not adding positions to the array if that tile is already filled, and I think you're doing bounding checking so you're not adding positions off the edge of the tilemap. But the main difference is I'm using the array as a stack instead of a queue which seems to be much faster. I tried switching it around and it was much slower to the point of hanging the game (guess that's why the one you used would give up).

    dropbox.com/s/3eolcab1it3evn4/tilemap_floodfill.capx

  • I’m not following what specific issue you’re having with the physics behavior. You mention something about it not working with setting position?

    Box2d, chipmunk, matterjs, and most 2d physics engines are velocity based. So joints and collision response is solved by applying impulses. It still kind of handles it when object positions are set directly, but it doesn’t usually look as good.

    The physics behavior does have a little extra where when you drag a physics object and let go it updates the velocity so it’s thrown, but that’s extra. I’m guessing that is undesired behavior for you?

    There is an alternate way physics can be simulated and that’s with position based dynamics, but there isn’t a library for that as far as I know.

    However, let’s take a step back. What kind of physics simulation are you after? What would you like it to do, and how is the physics behavior failing?

  • What does the 30k consist of? Before even going the compression route there may be ways to be more terse with the text generated.

    Like dop said there are ways to represent some data in a more efficient way even before compression.

    Some simple compression could be done in events with algorithms like rle and lzw.

    Or you could find a JavaScript compression library and use that with scripting.

  • Families are so you can treat multiple object types as one type. You’re probably after hierarchies. I haven’t used it but it lets you have child objects to others.

  • From their contact us page:

    “Other support requests

    Please email supportccc@construct.net with your query. We aim to respond within 2 working days.”

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Functions will run as you call them and finish before anything else runs.

    The exemption of that is if you make the function asynchronous which just means it will start and run in the background while the event sheet continues with the rest of the sheet. I haven’t used it but I remember seeing it as a setting for functions.

    The async functions could be implemented in a few ways. One is with webworkers which could mean the processing could be done on another core. Another is chunks of each async function would be run at a time.

    Typically the main issue with multi threading is when multiple things are trying to modify the same thing, so I have no idea how that’s handled. Maybe it’s not at all? Maybe the manual has info about that.

    At any rate even async functions are run in the order they are called. Nothing is at the same moment.

    Typical uses of async stuff is loading a file from disk or a website. Maybe even a large loop doing something with an array. It’s not suited well when multiple async things are trying to change the same stuff. That will be unpredictable behavior with which will change it first.

  • I should point out that the limits of the physics behavior have nothing to do with box2d. The behavior only uses a subset of box2d and some of the quirks of the physics behavior has to do with how it interfaces between box2d and construct.

    Making the request for more filtering and pointing out how the current filtering isn’t enough may be useful. The box2d api has the same filtering available that chipmunk has available. It’s just a matter of if and how it’s exposed to the behavior.

  • If there isn’t one for c3 on the asset store there probably isn’t one. If you like dealing with JavaScript then with scripting it could be possible to use some js physics library.

    Anything in particular you’re wanting to do physics wise? I have no interest in JavaScript in C3 or the c3 plug-in sdk but I do like event based physics.

  • Here's one way. There are many ways it can be tweaked.

    dropbox.com/s/u9mlfrlccppi30d/vine_grow.capx

  • Try your family idea, it could work. If it doesn't another idea is to use js scripting, but I haven't looked into it. Another ideas is to just use the normal create action, just do one per type. You could also change it to use one object type with different animations for the different images.

    When it comes to picking two separate objects to make a line between them it helps to simplify as much as possible, that's why I suggest to make one object type with animations to distinguish between them. Then having a family with that single type allows you to pick two separate instances at the same time.

    However with the picking system of events it is a bit more complicated to connect two different objects just created since only the latest will be picked in that event. One solution is to create all the objects and then in a second top level event (when they can be picked as normal) do the picking.

    Anyways, here's one way to do it. The data has a list of objects to create and links to make between them. It utilizes a 1d array to keep track of the new object uids and a family to be able to pick them.

    dropbox.com/s/3ke0ef3zlndyqyb/createNconnect.capx

  • It just sets the return value and does not exit the function. There is no way to exit the function other than running to the end of it. So what you did with else’s is one solution to do that.

    You can consider the event sheet as its own unique programming language. The object picking is the most unique part. Take away that and it’s similar to most programming languages with if/else/loops/functions. It does have its differences though, such as no way to immediately exit out of a function or loop like return or break.

    I don’t have a good explanation for why that is. It was inspired by the click team products event sheets, but made more hybrid to better resemble structured programming. At this point we are in comparability mode. They can add new features but changing existing ones will break a bunch of things. But event sheets as a whole would benefit from tweaks and redesign in parts.

  • No idea. But your event screenshot gives a very partial view of what’s happening. Can’t see all the behaviors used, or other events that may change the scroll.

    As is, it looks like it can be simplified to one event:

    Right mouse down: scroll to mouse.x, mouse.y

    Anyways my best guess is some of those other camera objects also have the scroll to behavior. When the scroll is changed the mouse position will change since it gives the position on the layout.