Jase00's Forum Posts

  • I do something similar to the 2nd method you mentioned - On browser resize, set canvas size to PlatformInfo.WindowInnerWidth and height. I then do "wait 0 seconds" twice, and then I copy & paste the same "set canvas size" event below this (seems to help make this work more reliably). Then I use anchor behaviour on objects, or position/size things with events.

    I don't know if there's a bad reason to do this, but it helps give me the exact control that I need to support portrait, landscape, and even ultra-wide screen monitors.

  • I just read one of the comments from the Chrome devs:

    > For the record, the above test case drops frames in Chrome even on a recent M1 MacBook Pro with high-end CPU.

    I saw this too, this gives me hope it fixes my issue on desktop with jitter when vsync is enabled! I have starred it too.

  • > but at 60fps the sprites will "jump" 40pixels every tick, if they move from one side to the other in a second, it cannot be "silky smooth" movement?

    Front 'janky' plants move like this:

    lerp(self.X, Self.X-(train_speed*(Self.speed_adjust)), dt)

    Omg wait read this, just remembered after realising you use lerp. Try the formula below "Perfect Accuracy".

    construct.net/en/blogs/ashleys-blog-2/using-lerp-delta-time-924

  • Whenever I get desperate, I take a copy of my project and slowly tear it apart, like delete sections of it (maybe whatever event sheet groups that use the most CPU in the debugger preview), and test each time, to see when the stuttering stops. You might find some specific feature is causing the jank.

    Recently, I tried my project on a 4k monitor, and I noticed that even tho I had solid 60fps or 1000fps when vsync off, it was still jittering badly. Turns out it was me "pasting" on drawing canvas every tick, it didn't like that I was doing it every tick on a 4k sized drawing canvas. Obvious now that I see it, but I wonder why was my fps was seemingly fine.

  • Thanks for testing with vsync disabled, it's interesting that noone else is getting similar results to me.

    Perhaps the jittery issue I experience is a different jittery issue to what others are experiencing, but for me I do get perfect results with vsync off, but when vsync is on, even if my monitor refresh rate is set to 60hz,144hz,or 240hz, I can see jittery issues every few seconds. Very unusual.

  • Aha it was fun reading your post, as I always do the same thing with undo/redo (where you constantly undo and redo and see if the event sheet scrolls, if not, then scroll up a bit, then undo redo again and again).

    I do agree that it could be improved. Like when you press undo or redo, it pops up at the bottom of the screen. If that popup just included a tiny bit more information, like "event sheet: Blah. Event number: 177" that would be a major help in speeding things up.

    But then, clicking the popup to make it take you to the specific event (much like double-clicking on a "find" or "find all references" result) would be VERY useful.

    Suggestions platform is looked at by Scirra, but I'd take the guess that things like this won't get voted up much. I checked a few recent pages on suggestions platform up to a few weeks ago, and most have 1 to 3 votes, a couple have 6 votes, but 6 votes might be 2 people since 1 person can add 3 votes on an idea, then it just slowly disappears in the sea of ideas. 🌊 Unless people draw attention to their idea by using the forum to start a discussion I guess.

  • Could I ask if you test your project with your projects "vsync" setting set to "unlimited"?

    I have this issue sometimes too, but I've found that disabling vsync fixed the stuttering and made it buttery smooth. I don't know why and I haven't been able to reproduce this in a minimal project yet.

    If disabling vsync DOES help, then don't expect to continue like this, but perhaps there's a bug with vsync, or, we would need to ask Scirra for a "max FPS" cap so that's we can disable vsync without having your CPU at 99%.

  • Normally if you need to process a 2D array you can do "Array For Each XY" loop, but I prefer using two nested System For loops.

    I agree with this advice! You get easier control on when to start/end your loops, and you can "stop loop" at any time.

    But yes, sharing some more info on your project would help - there may be a hard-to-see mistake in an expression somewhere.

  • I see why you thought to buy the signalling server.

    Are you sure these are facts about Iran's Internet filters and such?

    I'm not aware of what sort of restrictions Iran (or any country) would have to Scirra's signalling server. I would also not understand why a server in Iran would be able to get around the sanctions and filters you mention.

    Are you able to open the multiplayer examples and successfully get ingame? Do you ever use "remote preview" when testing your games, as this feature uses Scirra's signalling server to connect, too.

    OK I might be exaggerating with the 1000's of players being connected, perhaps there is a limit to the number of connections (I'm not sure what the true limit is) but logically, the signalling server is doing even LESS work than a normal website does.

    When someone connects to the signalling server, the signalling server stores a tiny bit of data about the player that connects, such as their IP, what room they are joined to. That's it. Once you actually join a room and you are playing a game with someone, the signalling server doesn't handle ANY of the game data, it doesn't store how much health each player has, it doesn't store chat messages if you made a chat system, the signalling server simply keeps track of "who is connected" and nothing else.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I've used Construct for many years but I've never used containers. I've been using hierarchys once they were added, but before this I'd link objects together by having a parent object, with all the children having an instance variable that stores the parents UID.

    I still use the "store the parent's UID" when it comes to arrays and dictionaries, as you cannot add an array/dictionary as a child with hierarchys.

    We all learn in different ways - I am the type of person that, when starting to use a new software, I only Google/check the manual if I get stuck on the specific thing I'm trying to do, but beyond that, I wanna click and poke around the software myself - even if I click the wrong thing, I will learn from that. As months go by, I become very familiar with the general layout of the software, and THEN I read the manual more casually, so that I can see if there's shortcuts or secrets to enhance my use of the software.

    I have somehow never used containers in all these years - I see the manual mentions at the very bottom about how you can use containers to store an array/dictionary per object, which sounds VERY useful!

    However, I'm not fully convinced that containers are "adaptable" enough. I have the view that containers are for relatively simple situations.

    Like let's take Scirra's example with the tank object with a separate turret, both placed into a container. Now say you design your game to allow you to upgrade your tank to have a 2nd turret - I assume that containers wouldn't be good for this situation, since you must stick with your original container setup and not edit this at runtime?

    You'd need to specifically clone the tank object so that you can build a new double-turret tank (then put all the tanks in a family to make it easier to handle the tanks in events) which would work fine, but then you want to have a 3rd turret upgrade - again, clone the tank, and then make a triple-turret tank in the family.

    Now this sounds messy, you wouldn't want to drive around in your tank, collide with a "upgrade" power up, and suddenly your events would involve creating the upgraded tank on top of the old tank, angle/position all the values from the old tank to the new tank, then destroy the current tank... Not very elegant. Maybe you could have an invisible "player" object that handles movement and everything, and the tank simply positions on top of the player object, but you still have to transfer some data to the newly created tank as you don't want your old turrets suddenly angled the wrong way when you collect the upgrade.

    Sounds like a pain! But if you used hierarchys, you can have the 1 tank object, add as many turrent children as you like in different positions easily (which can automatically follow the tank along with the angle, width, height, z elevation), maybe store a variable for the turret like TurretID or use the IID when picking the tank's turret children, so that you know which turret to pick when you wanna do stuff in events, and then you're done! If your tank needs a different shape, you can add an animation for that, so you never have to destroy your tank object at any point.

    The final downside to containers, is the lack of control over destroying everything. Bad example, but let's just say you had a situation where your turret should destroy on its own for whatever reason - Well you can't do that, as it will destroy your tank entirely. You would need to set the turret to be invisible I suppose, maybe that's better design anyway, but hey I wanna destroy it and I'm not able to!

    Please correct me if I'm misunderstanding the true power of containers, as I'd rather understand this better!

  • Remarkably, I checked the examples and couldn't find any multiplayer examples that use the game list, unless I'm being stupid and can't see it!

    I could make a c3p file to demonstrate this, unless someone else does it before me.

  • I don't know how to set this up, but I saw on your other thread that you haven't learned some basics with the multiplayer plugin, like how to retrieve a game list and load it into a list - are you sure it's a good idea to jump to the expert level and setup a signalling server?

    I believe it requires you to be confident with intermediate/advanced networking - you need to essentially setup a server, along with configuring a few things to make sure the signalling server works perfectly for any type of peer that connects.

    Do you pay for dedicated hosting, or were you planning to try and do this on your home computer?

    How much experience do you have with computer networking? You say you have a server, so I'm guessing you have some knowledge?

    I replied in the other topic about this and I suggested using the official Scirra signalling server. I've been using construct around 10 years, and I often enjoy working on multiplayer stuff, and with all of that, I would still not buy a signalling server - I don't quite have a reason where I would buy it, even if my game had 1000 daily players connecting online, the free signalling server that Scirra provide would handle that easily.

    Buying the signalling server only has downsides in my mind - like it costs money to buy it, costs money to host it reliably, costs you time as you have to maintain it or troubleshoot your server if issues arise, costs you time learning about all of this when it's not essential to learn for game dev (although it's always good to learn new things, but there's SO MUCH to learn, are you sure you wanna learn about RADIUS and STUN and stuff? If so, good for you, knowledge is power!). All this stuff that costs money and time, is available for free from Scirra - if the Scirra signalling server goes down, sure you may feel panicked, but at least you have a knowledgeable team that are hosting the server and will fix it themselves, all for free.

  • You can ask!

    I think there's an example on the Construct 3 start page, which shows you how to use the multiplayer "get room list" and then store the list of rooms in a "List" object.

    Its not too complicated, I'd definitely recommend checking that out.

  • Honestly the free Scirra signalling server is perfectly viable to use - even if it was crowded, the signalling server is doing such little work as it only really exists to connect people together and provides a place to store a "room list" that other players can see.

  • Also it's not free, but discounted heavily.

    I just used my year discount the other week actually, and it worked fine! If you look at your discount but you cannot see a button to use the discount, then email support and ask them if they could check that your discount is working.