SteamKit
Protobufs
Our great sponsors
SteamKit | Protobufs | |
---|---|---|
6 | 6 | |
2,448 | 330 | |
1.1% | 3.6% | |
8.8 | 9.2 | |
10 days ago | 3 days ago | |
C# | Shell | |
GNU Lesser General Public License v3.0 only | The Unlicense |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
SteamKit
-
L i a r s
So I will be making a client-side mod to show mmr changes as in the old client Upcoming data will be stored locally in the cfg folder (per account i.e. cloud synced) Wont know about matches played before adding the mod (valve went scorched earth removing data points from client.dll) But can populate previous history via an external opensource tool based on SteamKit samples
-
Where does steam store game exe file names
Or also you can check this or this github repositories, which emulate steam client (Or any other, there are lots of them)
-
[Question] What is the state of stream bot development?
Depends on what language you're using for JavaScript I think the defacto is anything Doctor McKay makes https://github.com/DoctorMcKay/node-steam-user, https://github.com/DoctorMcKay/node-steam-user etc. If you use python, I'd recommend https://github.com/Gobot1234/steam.py (I'm totally not biased). If you use C# then SteamKit is always a good option. If you use rust then SteamHelper looks interesting although doesn't support too many trading bot features
-
Building a Personal Website in 2021
Me: Okay. I'm just going to prototype a game. Don't want to get carried away. I won't even write a game engine. I'll use Tabletop Simulator.
Friend: Sounds good. How's it going?
Me: Well. I needed to be able to debug my code. https://github.com/tts-community/moonsharp-tts-debug
Friend: Oh, neat. So your game is done now?
Me: Not exactly. I had to had in matchmaking by reverse engineering Steam. https://github.com/SteamRE/SteamKit/pull/704
Friend: Ah. Alright. Can I play it now?
Me: Nah, I was finding it hard to maintain code. I wrote a Lua code bundler. https://github.com/Benjamin-Dobell/luabundle
Friend: Sweet.
Me: Yeah, but I decided to integrate it into the official tooling. https://github.com/Berserk-Games/atom-tabletopsimulator-lua/...
Friend: I'm sure the community will be thankful.
Me: I hope so. I now run a small community of TTS developers. https://github.com/tts-community/
Friend: Right. You must be done by now.
Me: Nah, I couldn't statically type check my code. So I wrote some types. https://github.com/Benjamin-Dobell/tts-types
Friend: Seems unnecessary for a prototype, but sure.
Me: I had to write my own IDE to use them though. https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis
Friend: Right... So how'd the game going then?
Me: Oh, I'm not doing that anymore. I now consult for Berserk Games, developers of Tabletop Simulator
Friend: ...
-
Tools other than SteamAPI
I don't know any direct resources for learning how the Steam network works, smart people figured it out over many years and lots of reverse engineering. I just know a few programming libraries which you can use to interact with it, the most popular two being Steam-User (JavaScript) and SteamKit2 (.NET).
-
Matches Raw Data
It's possible to do it through Steam's internal protocol, you probably want to use SteamKit2 here.
Protobufs
-
Ticks and Subticks
The subtick architecture gives you more opportunities to provide the server with input. In the case of your game running at 300fps, the game will divide the framerate by the tickrate (64) which is 300 / 64 = 4,6. Rounding the number down gives you now 4 slots for input. The actual logic is a bit more complex and takes into account the last time input was sent, but we can ignore that here. Now you can send up to 4 inputs (for example, shooting) to the server that is handling the current tick. In addition, and this is the important part, every history entry also contains timing information at which fraction of the tick your input happened (it also contains information about your shooting position, fps and interp - see: https://github.com/SteamDatabase/Protobufs/blob/master/csgo/cs_usercmd.proto - but it is unclear how much of that information is going to stay for subtick and how much is for debugging purposes).
-
Maxim updates his analysis to conclude that cs2 subtick system is more closer to 64tick
Take a look at the protobufs. https://github.com/SteamDatabase/Protobufs/blob/master/csgo/cs\_usercmd.proto https://github.com/SteamDatabase/Protobufs/blob/master/csgo/usercmd.proto
-
CS2 - Sub-Tick Analyzed (better than 64 / 128 tick?)
We are still going to need another packet regardless, assuming these packets are usercmds as seen in here, every packet only holds a single view angle.
-
I left Dota 3 years ago. Recently came back and really have fun, but how is it possible that there is still no "obvious" feeding detection? In this case wasting 60+ hours of 4 other peoples life....
They removed them from the public facing stuff in 2020 when a bunch of other report changes went in, but chances are they still have the information behind the scenes.
-
My net worth caused an integer overflow (2111 more than short int can handle 2^16 = 65 536)
If you want to dig into it, there's a github that tracks the protobufs that dota (and other valve games) use to communicate and you can learn more about protobufs from google's docs (it's a google protocol for serializing data efficiently)
-
[Help] How to GET a user's comments on their profile
Here is the source for the messages https://github.com/SteamDatabase/Protobufs/blob/dcc77c38203d8edb11db067919e4bca1e44762f9/webui/service_community.proto. You have to compile these yourself as they aren't in the latest version of anything. Then when sending the actual UM you can just send this info steamid=owner.id64, comment_thread_type=10, # I'm not sure where this number is from, but it works count=1000 # the number of comments to return Go wild (if applicable).
What are some alternatives?
steam.py - An async python wrapper to interact with the Steam API and its CMs
GameTracking-Dota2 - ๐ฅ Game Tracker: Dota 2
node-steam-user - Allows interaction with the Steam network via the Steam client protocol
fake-stattrak - Apply kills to your stattrak and strange weapons in CSGO and TF2 without doing anything
GameTracking-TF2 - ๐ฅ Game Tracker: Team Fortress 2
GameTracking-CS2 - ๐ฅ Game Tracker: Counter-Strike 2
GameTracking-Artifact - ๐ฅ Game Tracker: Artifact
IntelliJ-Luanalysis - Type-safe Lua IDE โ IntelliJ IDEA plugin
DistorteD - Ruby multimedia toolkit with deep Jekyll integration ๐งช
VAC - Source code of Valve Anti-Cheat obtained from disassembly of compiled modules