WackyToaster's Forum Posts

  • Hmm last I checked the spritefont object exists because it's faster than the text object, especially when updating the text every tick. Not sure if that's up to date...

    I'd suggest to make a simple test. Think about the maximum amount of text and animated bbcodes you'd realistically have in your project and just build a "worst case" scenario with tons of animations etc. See if you run into any issues with the normal text object. Because if not, I'd go with the normal text object over the spritefont.

  • Is it possible that you have "Bundle addons" enabled in the old projects? In that case it could have bundled an old version of the addon, and the new version you have has a bug. When bundle addons is enabled, the old version is used instead of the newer one that's installed.

  • This may come down to float rounding error, which is a byproduct of how computers work. with floats. I'm not sure if rounding works with scientific notation but you can try "set text to round(variable)"

    If that doesn't work you might have to employ some custom logic to extract the fraction, round it and put it back together, something like that (off the top of my head, I didn't test this)

    set text to round(int(tokenat(str(variable),0,"e"))) & "e" & tokenat(str(variable),1,"e")

  • 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.

  • 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

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • 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.