yourmnbbn / tiny-csgo-client

Tiny csgo client for connecting dedicated server
61 stars 9 forks source link

Steam client #12

Closed HexMr closed 1 year ago

HexMr commented 2 years ago

Hello, you've done a very good job, but haven't thought about creating your own steam client? I mean the console version of steam, which will only serve your client for what your program needs. The main problem these days is that whatever version you are using to get full authorization you must have Steam running at all times. Steam consumes a lot of resources. If you would like you could create it for linux as well. There are a few examples that you could be inspired by, e.g. GreenLuma, Goldberg. What do you think? Are you planning to create something like this for your client?

yourmnbbn commented 2 years ago

Thanks for the advice and yes, this kind of tools are already in the TODO list. But sadly I'm occupied by some of my other projects and currently don't have time for this. If you have some good ideas or some related repos please leave the link or name here. I'll take a look in my free time.

HexMr commented 2 years ago

Are you planning to accelerate your work on it? I think you can speed up your work a lot thanks to this. https://github.com/metrixmedia/SteamEmulation "Steam emulator that emulates Steam online features. Lets you play games that use the Steam multiplayer APIs on a LAN without steam or an internet connection." It is a ready steam emulator, it works , it has only one disadvantage, I do not support CS and Dota. ". This situation is due to this reason "Will you support CS:GO or Dota 2? No, I don't care about making these games work because they use apis like the game coordinator that no other game uses. Also valve keeps changing them." I believe that this repository has all or most of the things you need to create your own steam emulator. What do you think?

Here are other programs that can help you build a steam emulator: https://github.com/BlueAmulet/GreenLuma-2020-Manager https://forum.csmania.ru/viewtopic.php?t=43662 SteamCMD

yourmnbbn commented 2 years ago

That steam emulator emulates steam behavior so that game could be run without real steam apis. But what we need is the real steam apis instead of the emulated ones, to get the ticket of the app and communicate with game coordinator(GC). We can't use emulated ticket or the emulated GC(which is not fully implemented in that emulator) to support this client.

What we need is some kind of SteamCMD like implementation of steam, which will be able to login steam account and fully activate the steam api.

HexMr commented 2 years ago

Actually, you are right. But your client doesn't work with steamCMD (it's too limited). I don't know if there is anything like a "more advanced" version of SteamCMD anywhere. These are familiar examples of something similar. Maybe you try to add some extensions or modifications to steamCMD that will make your client work with SteamCMD? This seems to be easier than building your own Steam client from scratch. What do you think? I also have a question, do you plan to speed up the work on it? I don't want to rush you, I don't mean anything by it. I just think such an accessory would be very useful for your client. I am waiting for a response.

yourmnbbn commented 2 years ago

But your client doesn't work with steamCMD (it's too limited).

Actually not only this client doesn't work with SteamCMD, but SteamCMD doesn't internally activate those extern steam apis. So there is no easy way or reference to implement a steam-less client.

This seems to be easier than building your own Steam client from scratch. What do you think?

Based on SteamCMD might make things easier but the whole thing is about finding a way to activate all those interfaces. This project doesn't require steam instance running but it is still able to use those apis. The game server steamclient initialization will activate those interfaces.

I also have a question, do you plan to speed up the work on it?

Whenever there is breakthrough, I'll devote more of my time on this. I'll keep looking for a solution but for this specific issue time is the last thing I can guarantee.

HexMr commented 2 years ago

I understand, I will be waiting and would like to support you in this if I know something.

Based on SteamCMD might make things easier but the whole thing is about finding a way to activate all those interfaces. This project doesn't require steam instance running but it is still able to use those apis. The game server steamclient initialization will activate those interfaces.

Have you tried to analyze how activation occurs without steam?

yourmnbbn commented 2 years ago

I will be waiting and would like to support you in this if I know something.

Thanks, any help is appreciated.

Have you tried to analyze how activation occurs without steam?

The inner activation uses too many virtual functions which makes static analysis much more annoying. That takes time.

HexMr commented 2 years ago

I understand, if I learn something new, I will inform you immediately.

yourmnbbn commented 2 years ago

Bringing part of the functionality in this library here would be the best solution to this issue. That library fakes steam clients by simulating network connections and messages just like what this client does.

Also, this takes time. I would be appreciated if someone would like to help.

HexMr commented 2 years ago

Recently, I was thinking about the idea to simply turn off the unnecessary steam function, this solution was the easiest for me. I mean creating something that turns off the unnecessary steam function. What do you think?

Bringing part of the functionality in this library here would be the best solution to this issue. That library fakes steam clients by simulating network connections and messages just like what this client does.

Also, this takes time. I would be appreciated if someone would like to help.

If I have any idea, I will try to help, I think this topic may be interesting for you too @toorisrael @yourmnbbn Write me exactly what you need and what kind of help you need, what specific functionalities to transfer, etc.

yourmnbbn commented 2 years ago

Recently, I was thinking about the idea to simply turn off the unnecessary steam function, this solution was the easiest for me. I mean creating something that turns off the unnecessary steam function. What do you think?

It’s not clear that what is unnecessary functions and how to “turn them off”. The implementation of your idea is much more complicated than bringing the functionality here.

Write me exactly what you need and what kind of help you need, what specific functionalities to transfer, etc.

The login functionality and format the necessary login protobuf message and some tests. Cause I don’t have time for this right now. Since I have seen that reference is clear, it shouldn’t be a problem.

toorisrael commented 2 years ago

Recently, I was thinking about the idea to simply turn off the unnecessary steam function, this solution was the easiest for me. I mean creating something that turns off the unnecessary steam function. What do you think?

Bringing part of the functionality in this library here would be the best solution to this issue. That library fakes steam clients by simulating network connections and messages just like what this client does. Also, this takes time. I would be appreciated if someone would like to help.

If I have any idea, I will try to help, I think this topic may be interesting for you too @toorisrael @yourmnbbn Write me exactly what you need and what kind of help you need, what specific functionalities to transfer, etc.

At this point it's very easy to do using all provided tips. I'm wondering if you all really want to make this a complete, public solution (which will probably be fixed in few months) or just leave it as it is now, so anyone who wants to use it, can finish this by himself

P.S.: Russians are already selling mirror servers made with this :)

HexMr commented 2 years ago

At this point it's very easy to do using all provided tips. I'm wondering if you all really want to make this a complete, public solution (which will probably be fixed in few months) or just leave it as it is now, so anyone who wants to use it, can finish this by himself

P.S.: Russians are already selling mirror servers made with this :)

Maybe you don't want it to be public, because you use this solution yourself and are afraid that valve will fix it? My guess is you are using this, I can even guess what you are using this program for. I am practically 100% sure what you are using it for. Do you want to stop developing the program because it becomes inconvenient for you? Instead of helping the developer of the program, you now prefer to discourage him as it may be to your disadvantage. I try to help the program creator as much as I can, you also supported this project before, I am surprised by your behavior. As for the use of this program by Russians, I have very interesting information for you. I saw that the Russians use their own client, even before the tiny client was created, they had their own non-public versions of the client. You probably noticed it too, and that's why you got interested in this program, because you wanted to use it for the same purposes. I bet you've tried to do something before. " leysourceengineclient ", but it turned out to be too hard for you because it was too hard to fix the Leystryk program because the program was GM specific. Do you really want to ruin this project with your own bricked-up ego?

toorisrael commented 2 years ago

Well, there are two groups of "russians", the first one was using their own solution long time before this project, the second one started selling it just few weeks ago. Like I've already said it's really easy to finish this by yourself. I'm actually encouraging you to do this, and make it public... or not. I think csgo client is complete.

yourmnbbn commented 2 years ago

There is no need to argue. I know how the original fake server was implemented. They are using js to implement everything with the help of that library I've mentioned above and some other public libraries. But my fake server and fake client to some degree is completed just as toorisrael said. The purpose of this project and tiny server have all been done already. Since you guys want some extra features , I'll implement if I have time but it's actually not my first priority. The "flaw" of both client and server now can be easily fixed by some simple javascript code. I can put the javascript here but I don't want this project to be so mixed with lots of languages. So I'm planning to port part of the functionality here, it's not hard, but I don't have time for now.

As for will valve fix this? My point is they are not likely to fix this because the cost is rather expensive. All the networks and messages are fundamental to valve and its games. Will they spend a lot of effort and money to fix something that's not even a bug to the program itself? I don't think so. If things got really serious browser of all regions filled with all the fake servers then maybe they will decide to put an end to this. But the possibility is nearly low.

Well, there are two groups of "russians", the first one was using their own solution long time before this project, the second one started selling it just few weeks ago.

Actually there are more than two groups of fake server developers. For the recent one there are possibilities they're using my project, but if we are talking about the same group, they're not. I have been informed by some people of this project being used as attacking tools and tiny server being used as fake server for selling. The projects or libraries shouldn't be to blame. Those people are. This project is really useful to some situation such as commend or report bot and maybe some other interesting things, it's not all bad influences. So I'll continue to maintain these projects.

toorisrael commented 2 years ago

There is at least one easy fix for Valve - enable and apply by default collapse_addr_hash filter. About the russians you're right, there are more groups.

yourmnbbn commented 2 years ago

There is at least one easy fix for Valve - enable and apply by default collapse_addr_hash filter.

They’re not messing the community up with that. More than half of the hosts rely on single IP address with different ports to create different servers. To some degree that’s suicide.

yourmnbbn commented 1 year ago

https://github.com/yourmnbbn/tiny-steam-client