Jase00's Forum Posts

    The user directly connects to the target via the signaling server, and the host directly knows the "reverse lookup" address via the visitor's alias. This avoids the need for a two-way public key exchange in the ideal one-way communication environment and prevents public keys in the message records from becoming useless information, as they cannot be directly used as a valid lookup address. You just need to allow the room and alias names to have a longer length.

    What exactly is wrong with a quick "two-way" communication, simply to send the public key? By initially connecting, it's essentially like a two-way connection anyway. Then simply sending one message (also verifying the connection is 100% ready). Most designs of networked system have a "handshake" message.

    Is it a security thing? Efficiency? I can't think of a valid reason why you can't just "Send message". Messages can be like 256kb (and they're compressed so can be even bigger). Connect, peer sends 1 message, host sends 1 message, end connection. Done. What's the problem?

    Why am I even thinking to assist, you're extremely rude. I don't know what it is about crypto that often attracts such self-righteous personalities. Instead of being so stubborn with your design, work with what you have, especially when you are indeed doing something C3 was not designed for.

    EDIT: Instead of relying on a company's signalling server whom you clearly seem to have disdain for, you can buy it yourself and host it on your own server, change alias limits or whatever (Whether that is an intentional setting Scirra chose for their public signalling server, or if it's a hard limitation within WebRTC, who knows). construct.net/en/game-assets/tools/multiplayer-signalling-server-2

  • Working out whether it is the CPU or GPU (or rare occassions, VRAM) is the first thing to look for.

    Having a SpriteFont showing FPS, CPUUtilisation, GPUUtilisation is very useful, put on a Debug layer that always follows the game.

    (Specifically a SpriteFont as this is more lightweight than a frequently-changing Text object).

    Sometimes mobile devices don't report the GPU stat, but if CPU seems fine, then can assume GPU.

    One quick big performance boost would be to set your project's Fullscreen Quality to "Low", and experiment with smaller project resolution (e.g. if you're designing at 1920x1080, try halving this - Even if it breaks your project's visuals, keep an eye on the SpriteFont, see if the FPS is better).

    If FPS does improve, you could make a little system, utilising "System>Set Canvas Size", to make a "Quality" setting for your game's options, where it would scale down the Canvas size depending on a percentage (e.g. if your game is 1920x1080 and laggy, then players can set the Quality to 50%, which renders the game at 960x540, which may give a huge performance boost, but may look blurry).

    Ofcourse, a "sweet spot" could be found, maybe 70% quality, where the blurry rendering isn't noticable.

    Only downside is, you may have to rework parts of your project to adapt with this system.

    ----

    Beyond that, there's common things, can measure on your desktop preview - Use Debug preview and monitor the CPU/GPU usage, see which event sheets/groups use the most CPU.

    Check object counts, make sure they're not too high, maybe for mobile it may be best to keep below 300 objects (give or take), plus it is dependant on what those objects are doing (are they 300 visible sprites testing collisions every tick, or 300 Arrays doing nothing, the former being far more performance draining).

    How much is onscreen at 1 time, could it be lowered? Could a "settings" option lower things (e.g. lower particle counts and decals). Also, sometimes you can "combine" things onscreen to gain performance (e.g. a top-down game with lots of explosion debris on the ground, can use a Drawing Canvas object to paste all this, then it's more "1 Drawing canvas that looks like 200 sprites", rather than "draw 200 sprites".

    Effects are quite expensive, but it's dependant on which effect. E.G. Additive blend won't affect too much, although others may.

    Layers with "Force Own Texture" are expensive, use as little as possible. Note - Some effects will automatically make a layer "force own texture" even if you have not ticked this on the layer - Click your layer and look for "Uses own texture", if it's Yes, then that's a performance-hogging layer!

    Scirra keep an updated guide on performance tips, maybe you've seen it before, but worth re-reading - There's always a lot to remember with this topic, so worth reiterating and thinking about your own project: construct.net/en/make-games/manuals/construct-3/tips-and-guides/performance-tips

  • Yeah! I thought maybe I was often closing debugger preview and then previewing again, thus needing to detach the debugger, but no, always reattaches. Curious.

  • I'm confident some of this isn't browser-based limitations, tho I'm not sure on auto-popup-windows (otherwise that'd be abusable on websites, spamming many popups).

    Also it just occurred to me, preview with debugger, detach debugger (and keep it all open), preview again with debugger, it reverts and attaches back to 1 window. And if you use "restart" in the debugger window, it too will revert and attach back to the preview window.

  • Maybe I'm being a fool, but browsing the Keyboard Shortcuts page, was trying to find a couple: construct.net/en/make-games/manuals/construct-3/interface/keyboard-shortcuts

    I was curious if there's shortcut keys for:

    In Event Sheet Dialog (e.g. add action), key to click "Next/Back", like ALT+LEFT/RIGHT or something? I suppose ENTER is "Next" but what about Back?

    EDIT: I am indeed a fool. Its under "General", SHIFT+ALT+Arrow key left/right.

    However, I realised why I thought this existed yet couldn't figure it out - The Event Sheet dialog will focus the Search bar (or focus the expression editor), thus ignore this hotkey until unfocused. I wonder if it could still listen for the shortcut key despite being focused in a text input?

    In debugger preview:

    Pause/Resume (Could help if trying to test something with mouse input, although can work well with mouse clicks in current state, would be ideal to have a keyboard shortcut). Could argue "which key" and don't want it to interfere with gameplay keys, I guess either allowing mapping or allowing toggling shortcut on/off, but overall I'd adapt with it even if it did happen to overlap with gameplay keys. Lol, "Pause/Break" key is rarely used! I use that as a test button due to it's unusual-ness.

  • I can't deny, I would love to see this added.

    I use a tool called PowerToys "FancyZones", and have habit of "Open C3, open some dialoges into popup view, drag n drop each whilst holding SHIFT so it's a specific size and position for FancyZones, drop". Sometimes it fails to snap correctly, errghhh.

    To have popout windows always open in the correct position, would save faffing around with this.

    To have the windows auto-popout from the user's last setup, would be a bonus, then it's simply open C3, boom, ready. Would feel cool too, having everything just positioning correctly, like mission control all ready for you!

    To have Debugger remember if it's detached would be greatly beneficial, too, I would find a home for this to always appear if this was the case. I also experience having my project squashed, pop out, restart, etc.

    If it's a fair enough feature, I suppose one other C3 option would be "Reset popout views" in the options, in case, say, you have your popout windows setup on a 2nd monitor, but 2nd monitor is not connected any more or breaks, then can retrieve the windows. Happy if this was an "Experimental feature" as we can tick in C3's options.

    I recognise we have "Browser plugin > Set Window Position", which does obey in preview window in browser, I wonder if it is worthwhile adding? 100% would use it on a daily basis!

  • > A construction like "tag1" " tag2 " doesn't work!

    > When you try to insert a space, the compiler swears and does not enter the string

    I don't need a single tag!

    The.&. operator-combines tags-two in one

    And I need it to be like this for example. "audio" "audio2"

    But it doesn't work that way-the compiler won't skip the space between tags!

    And here is "audio" & "audio2". it ends up with ONE tag "audio audio2"-I don't need that!

    If you typed into the tag:

    "Audio1" & "Audio2"

    Your tag will be 1 tag: Audio1Audio2

    If you typed with a space:

    "Audio1" & " Audio2"

    Your tag will be 2 tags: Audio1 and Audio2.

    Try copy and pasting exactly what Fedca and Ashley suggested, it will be 2 tags because there is a space before the word 'audio':

    str(Midi.NoteNumber - 23) & " audio"

  • It says that you can make 2 tags separated by spaces

    It doesn't work

    MULTI is enabled in the audio properties

    Is this a bug?

    maybe not a space should be and something else?

    The tags must be different-they are for different purposes!

    Moreover, if you do it like this, it works. "123""456"

    But if there is a str function instead of a tag the compiler no longer accepts it(and without a space-which contradicts the context hint that it is needed)

    This is clearly a bug

    On your screenshot, on "Tag", add a space before "audio", so it looks like " audio".

    And, before " audio", add &

    When construct processes this, it becomes: 50 audio

    Your screenshot right now, becomes: 50audio

    (50 is an example).

  • On a very random note but related to this, a reason NWJS for desktop builds has a downside:

    Haven't tested this, but, say you export as nwjs with the nwjs version that removes F12 console - cool... But you could just download the nwjs console version, move your steam game files and package.nw into it, run, and boom, console.

    I presume not as easy, if not impossible, in webview2!

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Thanks for the example!

    I get mixed results, sometimes 0, sometimes data.

    I think in this specific c3p, it's due to "on collision" trigger.

    Correct me if I'm wrong, but, each tick, triggers process first, then event sheet, then physics.

    Perhaps the "on collision" gets data too early, resulting in 0. But it would give data if the objects touch for more than 1 tick.

  • Thank you Ashley, very thoughtful and insightful reply.

    I was locked-in on the idea of using C3 all the way, but the note about WebSockets has swayed me - Not familiar but have been looking into this now.

    I've read almost every page of the Construct documentation, but failed to ever pay attention to the WebSocket section - I did not know you could send/receive binary data this way!

    I can still see desire for "private messaging" being p2p, but this isn't an absolute necessity, considering we have options to encrypt and such - There could be a viable path here.

    I think I can get very far with what I was hoping to do, with a combination of Multiplayer & a WebSocket server - Since could be in a Multiplayer game, but utilise a WebSocket server for a few extra features whilst the multiplayer game continues to run.

    Thank you!

    EDIT: For anyone reading this that also is curious about WebSocket servers, be mindful it's not something you can just setup in C3 or anything - It requires a server, and requires networking knowledge on setting this up and such. Worth learning about but be mindful it may be a lot of learning to do, depending on your IT knowledge. construct.net/en/make-games/manuals/construct-3/plugin-reference/websocket

  • As always, I never know how "small" a change might be, and will ask as feature request, but on the tiny hopeful chance that it's a simple tweak for Scirra:

    Having the ability to add more than 1 "Multiplayer" object.

    Would it be as simple as Scirra flagging this plugin as a plugin that can add multiple instances? If so, I YEARN for this! If not and issues occur, feature request it is.

    May I politely ask if Scirra could test behind closed doors, chuck Multiplayer as a multi-instance object type, just to roughly see if two coexisting Multiplayer instances do load, see if theres overlap issues with 2 or more instances, and if it's really as "straightforward" as that (I can only hope!), I'd loveeee LOVE to see this as an addition.

    If it does work suprisingly easily, I can ASSURE you I will set much time aside and will beta test the heck out of it and try to find any issues or crossover issues.

    I'm a huge fan of the multiplayer plugin and use it extremely often and am trying to reach great achievements with what we have.

    ---Below is more explaination as to why---

    The reason I felt to ask on forum first, is, I seem to recall a friend had managed to tweak the old C2 multiplayer to allow multiple instances, and no issue was reported and they progressed far and they succeeded in making some of the systems I will list below. They reported no cross-issues between the 3 multiplayer instances, and it worked exactly like I hoped.

    I keep thinking of ideas to implement into my game and making the online mutliplayer aspect very ambitious. I can get quite far in current state, but lots of "Disconnect and reconnect to different system" sorta thing - Plus inability to have two ongoing systems (E.g. can't be in a public online game AND have a one-to-one "Whisper/DM" or "Party Chat" or "Friend Chat" if you group up).

    I think this could open some avenues for:

    1) MMO-style login server systems, usually having a "Login Server", "Channel Server", and "World Server". (Not saying MAKING AN MMO and such, but the theory of that system could be done, as a remained connection to each of those is required (e.g. the Login Server can send a "kick" which kicks from ALL servers connected to if the player was banned or something).

    2) An overarching "Alert" server, for the game dev to sent out status notes, such as "Server reboot in 10 minutes", much like is seen in online-based games such as Team Fortress 2, or MMOs again (NOT Trying to make an MMO here!)

    2) Enabling true "Whisper/DM" in a game (as we know currently we must feed chat messages to HOST, so cannot whisper without host also receieving this).

    3) Buddy system - Have a buddy list, can request to chat to a buddy (and thus the buddy server pings the player B buddy for a chat request), and also block list. In current 1-instance Multiplayer, if in an online game, you cannot view or interact with the buddy list.

    4) Data retrieval - If someone wished to make a VPS server that sends back some data from a database or from stored C3 data, could act as an excellent middle-man for this, with all the comfort of designing it with C3 rather than traditional methods.

    5) Some games have group chats, like chat to all, chat to party, chat to guild, etc. Currently impossible to do privately since messages reach host every time.

    6) More of a "benefit" for someone attempting something like this in its current state, but currently I foresee the issue right now I may encounted without multiple "Multiplayer" instances, is: "connect/play game/disconnect/connect to different connection settings/Use it/disconnect/connect elsewhere/chat to friend/disconnect/join online game/disconnect/wish to view some stats from a VPS server that the dev setup with C3 running, connect there/disconnect/join online game.

    And many more. It legitimately excites me to think of a world with "Yep, add many multiplayer plugins", I see myself renaming them to the appropriate system it looks after.

    I know exactly what you're all thinking - "Do it the right way, use node/PHP/SQL etcetc.". I do intend to use a hybrid of traditional elements, especially for sensitive data such as login credentials, but to be able to manage most of these smaller gameplay-wise systems with a front-end I've designed in C3, would be like another level of high power in C3 that would make me race to implement all sorts of systems that interconnect. I am a slow learner and I guess would need to research for a huge amount of time and seek advice to learn and accurately implement these traditional elements, but oh man, if it could be done in C3, it'd be a literal dream.

    I know a few others that wish to go beyond with ambitious multiplayer systems, they also agree and wish for this (such as the old friend that solved this in C2 - but of course it's never ideal to modify an existing addon from Scrirra).

    If this took Scirra a milisecond to implement, then WOOHOO, but if not, feature request it goes.

  • What about a property to choose the default template name used for new instances? This seems like a good solution as templates are the feature intended to be used for determining initial properties.

    Oh wow, coincidentally I had written something like this on a bug report earlier today! Definitely seems like a good way to solve it without affecting existing projects and finally putting an end to this whole "default properties" thing.

    github.com/Scirra/Construct-bugs/issues/8352

  • Maybe this will help:

    stmn.itch.io/font2bitmap

  • For what it's worth, I recommend NOT using the desktop build of C3.

    I was in the same mindset of "Nah, no browser". The desktop build had a critical issue sometimes, where it would randomly close (even if you haven't saved), and I lost huge amounts of work/time. Sometimes these crashes would then force you to clear your appdata folder for C3, thus spending time logging back in, installing addons/themes/setting preferences... Only for it to crash again randomly and repeat the same steps.

    Chrome, with no browser extensions, has been very reliable over the past 4 years!