I believe I have found a bug in an online environment for map travel for HTML5 games. I have my game uploaded to my FTP and my dedicated server hosted by a third party. Note I am using a source built 4.19 Preview 4.
My login attempt to my third party is successful and it follows by opening the server address with the following command:
open http://serverip:port/
It connects and than attempts to open the map via this command:
Notice where there is normally a reason for the failure after " [ClientTravelFailure]: " in this case it is blank. When I use a local environment, with the dedicated server on my PC and the HTML5Helper.exe I can connect and play with no issues. The command that is sent in that case is:
LogNet: Browse: 192.168.1.31//Game/Maps/MapName
So my conclusion is that there is a missing “/” in the browse request like so:
We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.
after re-reading your description a few times - i think there’s a basic misunderstanding of http and dedicated server connections.
when you are trying to connect to a dedicated server (i.e. the project.exe file) – this is NOT accessible as:
open http://serverip:port/
the UE4 (game) network is not HTTP.
but, rather - you connect to the dedicated server with:
open serverip:port
now, it sounds like you got the websocket netdriver for UE4 working.
that said, to play on your thirdparty dedicated server you would need to ensure you are connected to the external IP address:port – so, if your dedicated server is publicly accessible, excellent! all you need is:
open serverip
but, if it is behind a port forwarding box, find out where your game’s port number is forwarded to and then open your connection to that value.
So I think it is an odd question to describe and my suggested solution is very hypothetical, so I’m sending over a link to a development build. Keep the browser console open before clicking “Play Online” and you will have a better idea of what the issue is.
To be a bit more detailed:
HTML5 build is uploaded to my ftp server.
Dedicated server is uploaded to Playfab.
A) Using chrome/firefox I browse to my gamename.html file on my ftp server.
B) The game loads in the browser.
C) I click my “login” button to login in to playfab and on success, I have coded it to use the command. In a previous post which I can’t for the life of me find, an unreal staff member said this was the correct syntax:
open http://serverip:port
This is where I receive the ClientTravelFailure.
The open command is successful and according to the logs it does join the server but fails to find the map. This is where I noticed above there could be a missing “/” in the syntax. It attempts to open the map using
LogNet: Browse: http:/Game/Maps/MapName
When I “believe” it should be using:
LogNet: Browse: http://Game/Maps/MapName
I can have all of this working in a local build however (using HTML5Helper/Local Dedicated Server), as noted in the original post.
P.S. I upgraded to the official 4.19 release and I may have slightly different errors, trying to understand it all. You will see the console window and maybe have a better idea of what is going on.
you may need to put that in for your WebSocketPort value in:
Engine/Config/BaseEngine.ini
[/Script/HTML5Networking.WebSocketNetDriver]
WebSocketPort=XXXX
and then, you can just use:
open serverIPaddress
no HTTP:// – just the IP address.
i will see if there’s an official way to do this on the fly (i.e. within your game’s blueprint or something – so that it doesn’t require you needing to have this in your config file…) – but, this should get you connected.
No luck on the config file change. I made the change (default was 8999 PlayFab seems to reliably be 9000 but they are AWS based so I do not know if that changes), recompiled both engine and project with VS and repackaged both client and server, reuploaded to FTP/Playfab. Without http:// in the open command I receive the following, which is the same as before.
Firefox can’t establish a connection to the server at ws://ipaddress:9000/.
I’m not sure why the ws:// comes in when there is no http://
Atleast with http:// I am able to connect to the server but the folder paths, such as where maps are stored (Content/maps/), appear to be affected by the http://, I think?
In the newproj-dev1/ link I sent you, you can see it does connect to the server but fails to find the map:
ws:// (which i’m sure you already know) stands for websocket – and the ws: standards is built on TOP of HTTP – which is probably why you were able to see it connect to :9000 successfully – but, you’re not seeing the communications go through. (or, maybe you are seeing the coms go through and the protocol part is messing up the load sequence as you’ve noted.)
after setting the config file – can you then try:
open serverIP:port
no http: nor ws: protocols – just IP address (and port #)
i’m thinking, after you set the config file – you probably don’t need the :port – but, it doesn’t hurt to try both ways.
but, i do not see the results of the handshaking challenge (which needs extra debugging logging).
just out of curiosity – have you tried connecting to your playfab server using a windows client that’s also been setup to use the WebSocketNetDriver? this will tell me if this is a networking issue or something else. you can PM me the details.
Very strangely when i sat down to work on a logging issue (dedicated server on playfab does not add the .log extension to the file)… I was able to connect and open the map!
However integer overflow was causing crashing which is a previous issues I resolved through this post. I have dev4/ loaded with this change and I can connect with both Chrome and Firefox.
The problem now seems to be major lag or network performance issues.
Direct messaging you some log files but you should be able to see them yourself once logging in and viewing the browser console.
Also - I will update with a windows client test shortly.
Yes the integer overflow is resolved… or worked around atleast by enabling the “-s BINARYEN_TRAP_MODE=clamp” in HTML5 toolchain.cs
If you play on dev4/ it should be working with minimal issues and oddly enough today I’m not seeing a spam of network performance problems. If they continue I will open a different post for that.
EDIT: Nevermind - network performance issues are still here, after the game is on for a short period of time. I will open a new post for that.