Closed yourmnbbn closed 2 years ago
Will you try to fix this error? I know you tested it on windows, but most CS: GO servers run on linux. VALVE dedicated servers also run on linux. In fact, very few servers run on Windows. I'd like to test this repository on linux. For testing purposes, I would try to run a large number of these clients at once. I think a better solution for you would be to adapt it for linux. My guess is you'll be using this on the linux servers.
Will you try to fix this error?
Maybe, I can't guarantee but I'll try to find the problem, it's weird. It may take long because I still have other things to do.
In fact, very few servers run on Windows
Not exactly, it depends.
I would try to run a large number of these clients at once
It won't work, you need to find a way to run multiple steam instance first.
My guess is you'll be using this on the linux servers
I'm not using this, implementing this just because I am interested in the project, but sadly it does not support csgo. So I've decided to make one specially for csgo.
Will you try to fix this error?
First of all, this problem happens only sometimes, I've made a test server only for this and it's working fine, client got active status every time. I'll try to find out why this happens on real, public servers.
For testing purposes, I would try to run a large number of these clients at once.
I'll do exactly this later today, just for test and confirmation, but at this point I think it's everything you need for authenticating players and leaving them on server.
Maybe, I can't guarantee but I'll try to find the problem, it's weird. It may take long because I still have other things to do. - I understand, this problem is actually very strange. Not exactly, it depends. - It may be so. Nevertheless, as far as I know, about 90% of the servers in CS: GO are Linux-based servers. I wonder what someone used windows server for, since linux is a less demanding system. It won't work, you need to find a way to run multiple steam instance first. - I think it is possible to run multiple instances, e.g. using a sandbox. @toorisrael How do you plan to run so many instances of steam? I'm not using this, implementing this just because I am interested in the project, but sadly it does not support csgo. So I've decided to make one specially for csgo. - I understand.
So far I can tell in my server environment the problem will be gone as long as you use changelevel
command to randomly change a map, the client would run normally without issue. It doesn't matter if you change back it will still work. After changlevel I got it working fine on both secure and insecure linux ds.
Normally the client got about ~40kb(whatever map, whatever platform) size of the first fragment stream. That's when the client works fine. The corrupt message parsing happens when client receive ~230kb size of the fragment stream, I currently think it's a malformed fragment stream.
When trying to run sandboxed second instance I've got instant crashes without any errors. Is it caused by trying to use the same clientport? I've tried to redefine this, but maybe I'm doing this wrong, or it's not the cause?
Sometimes errors appear when using the sandbox. Maybe it has to do with VAC? I know that when you try to run CS and sandbox normally on the same computer, you will likely start having VAC problems in one of them. I managed to run two games on the same computer at the same time, but as far as I know, a lot of people on UnkownCheats complain about problems with the VAC system in this situation. It is possible that in this case it is similar. https://www.unknowncheats.me/forum/counterstrike-global-offensive/451202-sandboxing-csgo-patched.html https://www.unknowncheats.me/forum/counterstrike-global-offensive/203994-sandboxie-giving-vac-errors.html
At the stage it crashes it's not a problem with VAC, more like some networking problem.
Strange, you managed to connect to normal CS:GO servers? I have tried to connect to several servers where vac was running. When I tried to connect I received this message "Connection refused! #Valve_Reject_Connect_From_Lobby". I tried to connect to servers running on linux.
Yes, it works without much problems with my test server, run through virtual machine with sandboxie. The problem is more than one instance it terminating immediately after start:
Sometimes I got STEAM Validation rejected etc. at first connection, but it works after retrying, this is one more small bug to fix, but it's not important at this point. Yes, it's public, VAC secured, linux server:
EDIT: The problem was with clientport like I thought, it works fine after changing it here for second instance.
link I've added clientport support, command line parameters and temp fix to Steam Validation Rejected. Tested with few instances. Sometimes I got an error: Connection failed after challenge response! (it's possible this is game server firewall issue or my internet, I will check it tomorrow). EDIT: This error also has been fixed.
I received this message "Connection refused! #Valve_Reject_Connect_From_Lobby". I tried to connect to servers running on linux.
Getting #Valve_Reject_Connect_From_Lobby
error it's because the client send 0 as reservation cookie, which is not the actually cookie, so the cookie validation will fail and reject our connection. Reservation cookie is a little bit tricky and I'm still working on it. For a temporary bypass you can use this on your server. If you connect to a LAN server or use LAN connection to connect to a public server you won't have this issue, server won't validate cookie in which case.
@yourmnbbn is there an easy way to reduce allocated memory? It takes about 280M per process, but the process uses less than 10M.
@yourmnbbn is there an easy way to reduce allocated memory? It takes about 280M per process, but the process uses less than 10M.
~300M of memory usage must have included the shared memory used by the dll. It’s acceptable when you run multiple executable module because they’re loaded once for all. But the problem is that you use sandbox to run the client, which kind of like turning the shared memory into private memory. I don’t think there would be a solution. You pretty much can’t control the memory allocation in the dll if you don’t own it.
I noticed a strange thing. I am connected to the server, the server reads the client as "humans". I don't know why 0 is displayed in the internet tab on the server. When I right click on the server info, the client counts towards the total number of players. However, in the server finder, the client is not counted towards the number of players.
I noticed a strange thing. I am connected to the server, the server reads the client as "humans". I don't know why 0 is displayed in the internet tab on the server. When I right click on the server info, the client counts towards the total number of players. However, in the server finder, the client is not counted towards the number of players.
Check the state of the players, see if they are active or something else. I'm not sure if the 'connecting' and 'spawning' player will be counted, never tested. Sometimes server will force us to reconnect and change our state to connecting, unfortunately tiny client now can't handle that message. So the state will always be connecting until reconnect.
Right click information, favorite tab and almost all the 3rd-party server information tools using A2S_INFO, which count players differently. If you want to change A2S_INFO information, use this.
Also make sure A2S_INFO doesn't return less players than Steam API. For example if you have 3 authenticated players, but A2S_INFO returns 0, you will see 0 players in the internet tab.
@yourmnbbn Will you try to implement this feature in your client? As for the favorites tab, I know how it works. I saw your work a long time ago, you did a very good job.
@toorisrael My tests show that steam api returns 0 players, and a2s info returns the correct number. How does it look on your server?
It works for me without any problems, however I don't use it on my public, real servers.
@toorisrael So in your case, the player connected by this client is counted for the number of players in the internet tab? Would you check it for me? I am curious to see what it looks like on another server.
Just a proof it works, it's not optimal to do this as it takes 300MB of RAM per account.
@toorisrael Have you used over 21 GB of RAM for this? That's as many as 72 players. How did you get so many clients running at once? Did the sandbox handle it?
Actually a lot more than this, 300M is only for client :D
Will you try to implement this feature in your client?
I assume by 'this feature' you mean the A2S anonymous query. This is actually useless, this client is meant to be only for dedicated server connecting. I'm not a big fan of making a GUI for this. But the A2S query is rather simple because all the connection-less packet is naked, without any encryption and compression, if you want you can implement yourself. Valve's documentation clearly explains how each query protocol is defined.
@yourmnbbn I meant that "Sometimes server will force us to reconnect and change our state to connecting, unfortunately tiny client now can't handle that message."
@toorisrael I don't know why it didn't work on my earlier test server, now it works on my new test server. I mean, of course, the display in the internet tab. By the way, it was a very crazy idea. How much RAM have you completely used when connecting so many clients?
I meant that "Sometimes server will force us to reconnect and change our state to connecting, unfortunately tiny client now can't handle that message."
I think reconnecting is now supported, however I haven't tested it yet.
~35GB for 80 clients
@toorisrael It's very crazy what you did, but it is admirable, congratulations :D
I meant that "Sometimes server will force us to reconnect and change our state to connecting, unfortunately tiny client now can't handle that message."
The latest two commits has already supported server changelevel and reconnect support. The client now will automatically reconnect when receiving those messages.
@toorisrael How did you prevent the VAC error while running so many clients in the sandbox? I wanted to try to run as many clients as possible on one device. I was unable to do this because in the sandbox I get a VAC error very quickly and the client is disconnected from the server.
You need to use VAC Bypass and disable this check. Another option is just disabling VAC on server.
@toorisrael Did you use the program by Daniel Krupinski?
This currently occurs only when connecting to linux server. Corrupted at message CSVCMsg_CreateStringTable_t, and ruined the rest stream.
console output: