SwiftIllusion's Forum Posts

  • Ashley

    Could I please ask, how is it you are getting the TURN server functioning?

    I've spent more than the entire day trying to search through all the alternatives I could. Though I've reached the point of having a Linux server via AWS and somehow managed to get Coturn installed, the disjointed 'guides' I've managed to find are all skipping steps and I can't quite dissect the mass of readme's and more complex language (for me) in the turnserver documentation.

    There's all these if's and but's everywhere, and no context given to the usernames/passwords in the proper method to generate the key for them or whether a realm is something you can just make up or if it needs to be added to the mysql database/just the turnuserdb.conf, or if the mysql database even exists because they all seem to skip different parts that makes it impossible to even join them together. Not to mention how many different ways and letters etc they use to 'activate' TURN. And I'm nowhere closer to imagining how to get this information into Construct 3 at the end of it out from the console, with the different udp/tcp etc desired.

    I also noted daemon services and turnserver.conf that's recommended to keep it running consistently? Alternatively there was another thing I saw but regrettably lost in my countless tabs and can't see in my history. Basically something that pushes it back online the second it's lost.

    You no doubt have a more complex final solution for your needs, but I'd really really appreciate any extra details that could help me fill in the holes I need to get this running.

  • In Chrome it does connect, and the debug apk it connects, it's just weirdly not connecting in firefox (even though your TURN solution does).

    Sorry, even though I understand TURN hasn't got anything to do with Construct, from an outside perspective when your solution works and there's doesn't when the situation should be the same, without a better understanding of how that connection and redirect is made behind the scenes it's hard to know at what stage does TURN take over and where the problem starts.

    So really appreciate your time taken to respond, I guess hopefully the only other service I found might garner better results even if there's no free transfer threshold with theirs. If the results are the same though I might need to ask more about the linux/coturn stuff.

  • Thank you very much for the response and additional information.

    I understand now that by default multiplayer does not use any TURN service, the issue was that I was using multiple instances of the Remove Preview to test/debug multiplayer during development-leading me to believe it would function like that upon export. I had no idea that was an upcoming issue.

    I got a response back from them mentioning 'the rfc5766 standard' that you might not be using, possibly something to do with how ICE interprets the data? Sorry I can't be more specific with my limited understanding of all this. If that means anything to you that might add more context to this situation I'd really appreciate any more information along those lines I might be able to take to them for further response/discussion.

    All I know is that your implementation seemed to work more consistently than there's, but they have no idea how it could be a problem and based on their history they should know what they are doing too.

    Appreciate you letting me know how you use TURN for the remote preview. The issue being though, I have absolutely no idea how to start with that. What specific kind of cloud linux server would I need to purchase, would I need to purchase ones at multiple locations and how would I interpret/get the data safely from said server into a string value I can add to the ICE input, etc. Not to mention the countless specs/words/numbers that are alien to me on that page or whether I then have to workout their API and code more too. It sounds like a solution, and obviously it works awesomely for Remote Preview, but that doesn't look at all accessible to a non-programmer.

  • I just discovered all of this STUN/TURN stuff after having been working on my multiplayer project, testing my build just to see all this connectivity issue, and discovering the complexity of it all-having thought that the breakthrough it was doing was something I'd get to bring to my completed project.

    (Understandably that's not reasonable to be included too considering what I've read, but there's no remotely clear solution to this, and it wasn't evident at all to me this was going to become a problem when I was working on the game in the editor and testing in the browser, etc).

    I've done a lot of searching trying to find solutions, and there are some references directly to Construct in a few posts about TURN, but the problem is those 'solutions' are far too complex when approaching this engine from a visual designer perspective. I have no idea how to get a virtual server etc setup and run/build all the programs and command lines or what any of the open source TURN libraries need, just to get the few pieces of data I need to add to the ICE server input box.

    I'm currently using the free developer account available at xirsys.com to try and get things working in my built project via the information generated from a php script, however the speed fluctuates dramatically to the point where it misses important things like when the peer has connected sometimes, etc. Additionally it doesn't connect at all when in firefox for some reason, even though the remote preview in construct does.

    So I'd really appreciate some kind of understanding of how the internal TURN works, or what may be missing/an alternative method, etc.

    (Note: 'use colyseus instead', etc, isn't a solution. I'm a visual programmer and I can't break into that stuff, and the internal multiplayer's functions/structure has just what I need for my project. The issue is all this TURN/ICE stuff).

    Tagged:

  • To further clarify the freezing, it's definitely frozen and not just inactive. Because even though it reaches the point where it updates that the cards are removed, visually they stay, and the connected peers doesn't reduce from 2 to 1 as it otherwise would.

    You can't try and destroy the cards before the peer disconnects, if you want to do that when they disconnect. As you can't preemptively decide they will disconnect and destroy them ahead of time.

    Having them disconnect without destroying the cards stopped it freezing, that's the current workaround I've had to use, however in my following project I'll definitely need to work this out so I'd really appreciate any further information/answers you might get from the above clarifications.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I was wondering, is there some hidden connection made when objects are created upon connection/peer connection?

    To get what I need working (a hand of cards for each player) I instead just create objects on the host and peer separately. So there's nothing there that is synced or associated directly by events.

    However when I try to destroy the cards on the host, upon the peer disconnecting, it freezes. (NOTE: when running in debug, the amount of card instances are updated based on how many were deleted, but beyond that it's frozen).

    I've tried deleting instances based on comparison, deleting all instances, calling a function to delete the cards, however every one of those just results in a freeze.

    I can run different events in the on peer disconnect, and I can destroy an object that started in the layout without any issue.

    I tried also looking at the multiplayer example projects I'd already been using as reference, but they don't function like mine does now.

    So is there some kind of hidden connection made, because these cards are being created upon the connection-even though they aren't being destroyed automatically via disconnect or altered in any other way normally?

    Is there a specific method you're meant to use in this case?

    Would really appreciate some guidance on this.