WackyToaster's Forum Posts

  • I think it's still worth a shot to report it along with the project that causes the crash even if it's not a new project. Have you tried shaving the project down? Remove a bunch of objects, events (that seem unrelated to the crash) save it as a new project and try to crash again. Keep shaving parts of the project off till as little as necessary remains for it to crash, then file a bugreport with it. Maybe you even can identify a certain part in the project that, when deleted, fixes the crash. That'd likely be valuable information for debugging. If possible, you can also send the full project to someone else to confirm it's not some random bs that causes the crash, like a chrome plugin mucking things up or some driver issue/hardware issue.

  • That's actually a good question. Do you mean during the game or in the editor? I've encountered this issue (ingame) and I solved it two different ways before:

    Draw everything with tilebrush, then manually draw the edges with the appropriate tile. This was easy in my case since it is always entirely closed all around.

    OR add additional space all around the tilemap and just use the tilebrush normally. This will kind of offset your tilemap grid so it's a little awkward to do so.

    I think a setting to change the behavior on map edges could be interesting, but it's probably a little weird to implement since tilemaps can have weird sizes (including off-grid sizes) and also can have tiles outside the actual tile area, which can also be a little weird (draw tiles, resize tilemap smaller -> the tiles are actually still there, but invisible outside the actual tilemap object)

  • The easiest is using the system expression wallclocktime

    construct.net/en/make-games/manuals/construct-3/system-reference/system-expressions

    This gives the time in seconds. Multiply by 1000 and you got milliseconds.

  • I'd not update EXP every tick. I'd only update EXP when it actually needs to be updated aka when you gained some exp (via a function perhaps). It's hard to tell what's going on in your project, some screenshots of events in question would help already if you don't want to share your project.

  • I mean there isn't much to send... make sure something is actually happening on screen that can be recorded. I actually fell for that trap thinking it's not working, except I just recorded empty background and put a video of empty background on the empty background. Other issue could be that if you record with automatic, it can record either webm or mp4 depending on your system, so putting the source could end up in the wrong one (mp4 in the webm source), not sure if that would break it but it's possible.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • It was this thread by yours truly ~3 months ago

    construct.net/en/forum/construct-3/scripting-51/testoverlap-quadtree-179444

    It is indeed a system action.

  • I still forget whether I need == or ===

    Haha, most cases will be ===, you rarely need == imo

    Yes go and learn, it's probably worth it! Should be easy to pick up if you have experience with c# and c++

  • This works fine for me?

  • Tbh, I need to learn to do this. Ashley told me about subclassing and I was like ermergosh. The problem is that, if I wanted to use that feature, I would need to move more into JS, while the behaviors let me still use the event sheet.

    It's easily one of the best features out there and I have a hunch it's woefully underutilized for how easy it is to set up. Subclassing and mixins should be high up on your list if you want to make modular stuff imo.

  • How about this:

    1. The bird does it's thing and flies off screen

    2. Instead of destroying it, just suspend it (disable it's behavior, there are various ways to do this: e.g. disable a group, set a boolean to false or a state machine) use the timer behavior to start a two second timer on the bird

    3. On timer, reset & enable the behavior of the bird again (as in give it back the rock) and set its position to Y = whatever height you want it to patrol and X = player.X + screen width/2 + some offset so it starts off-screen

    4. This would also be the place were you can test if the bird spawns outside of its patrol area (if player.X + screen width/2 + some offset > rightWall.X) If that's the case, you can instead just start the timer again, which would mean every 2 seconds the bird will check if the player is in the right position for the bird to spawn inside the patrol area.

  • const valueAt00 = scheduleArray.get(0, 0); // Correct method to use

    It's the incorrect method. The correct method is scheduleArray.getAt(0,0)

    In such cases I always recommend to consult the manual over gpt, because gpt will not be familiar with the API of Construct.

    construct.net/en/make-games/manuals/construct-3/scripting/scripting-reference/plugin-interfaces/array

  • Yeah I've read your posts about js blocks but I'm not sure if there's a solution for it other than offloading more and more work into js directly. Keep js blocks minimal and handle the rest outside the eventsheet. Sure, Ashley could start fixing this somehow but it's one of these things that is straight up not relevant for a vast majority of users, so I can understand why he brushes it off.

    Managing per instance arrays, or dictionaries requires an amount of repetitive boiler plate every time you use it.

    This is one of the cases why I really dislike working with data structures in eventsheet context. Overboys addon does solve this exactly how I would envision it should be solved, like instance variables being able to hold arrays/json/data. But I'm at the point where I'm very comfortable in js so I'd just subclass the instance, give it a this.array and some methods to handle the data and call it a day. (If I ever manage to push out my current game, my next game will probably be 95% js)

    Anyway, I think this is fine. That's exactly why there's javascript, to handle the cases that the event engine can't. Advanced problems require advanced solutions.

  • No idea, I'd have to try the project. A different although silly idea I had was to record 30 videos at the same time, all offset by 1 second. So when a highlight is requested you can just save the most recent one. But that's kind of an absurd solution.

    I also found some js implementations of ffmpeg, perhaps something could be done with this?

  • Since you're already writing custom behaviors, what about just doing it in js directly? Surely the stuff you're looking for can be done with some js. Arguably there are cases that the event engine will not be able to handle as elegantly, but most games don't actually require this amount of complexity.

    Doing it via events, I'd think of adding an array per instance, with strings that then call mapped functions per string. If a string doesn't exist, nothing is called or acted upon, so no further overhead.

  • Hey that's kinda cool. Sadly attacking doesn't seem to work for me, maybe because I'm on german keyboard layout (Z and Y are swapped). I tried hitting pretty much all keys available to me to no avail.