[QUOTE=jA_cOp;27852477]It's actually very common to implement TCP-like stream protocols over UDP for games. When it comes down to it, TCP isn't very well suited for most modern games at all. The biggest problem is that TCP doesn't give you fine grained control over data priorities, since all data is assumed top priority. TCP will make sure that all data reaches its destination, no matter how much time passes, and will also make sure that data is received in the order it was sent. In data-intensive real-time games, like FPS games etc, neither of these guarantees are very important, hence UDP is used as the base for a custom protocol, often coupled with a separate TCP connection for stuff like chat and transfer of large data chunks (like game resources).[/QUOTE]
Except this is the case of a service where reliability is important, none of the packets are supposed to be lost. TCP implements all the features they would need like flow and congestion control that would help when dealing with slower connections. There's no latency or priority requirement for a service like Steam unlike a real-time game server. Steam2 already runs on TCP, so we're not quite sure why UDP is used, perhaps it's how they're managing 2,500,000 concurrent connections?
[QUOTE=AzuiSleet;27852613]There's no latency or priority requirement for a service like Steam unlike a real-time game server.[/QUOTE]
Aha, yes indeed, I was thinking about the Source engine all along, completely unrelated :doh:
[QUOTE=AzuiSleet;27852613]Steam2 already runs on TCP, so we're not quite sure why UDP is used, perhaps it's how they're managing 500,000 concurrent connections?[/QUOTE]
Assuming they run Linux-based servers I don't see the connection count itself being much of a problem, but perhaps it's still related.
[QUOTE=geel9;27844749]God dammit I was going to do that.[/QUOTE]
store the passwords in plaintext on your server
[QUOTE=PiXeN;27854275]store the passwords in plaintext on your server[/QUOTE]
exclusive leaked pic of his app:
[img_thumb]http://i.imgur.com/DJ4Ev.png[/img_thumb]
This thing with the chat protocol, you can use raptr to talk with people on steam, so it's not really new now is it?
[QUOTE=jA_cOp;27852693]Assuming they run Linux-based servers I don't see the connection count itself being much of a problem, but perhaps it's still related.[/QUOTE]
Knowing Valve, they'd be doing dumb shit like using threaded TCP so 500,000 connections would pose a challenge.
[QUOTE=VoiDeD;27848302]Keep in mind that you'll have to reference the code in order to understand some parts of this. Also, if anyone has any questions regarding anything please go ahead and mention them so we can clarify.[/QUOTE]
Yes I have a question.
How the fuck did you guys figure all this out? This is incredibly well documented for having started with nothing at all.
[QUOTE=foszor;27862095]Yes I have a question.
How the fuck did you guys figure all this out? This is incredibly well documented for having started with nothing at all.[/QUOTE]
Everything starts from nothing. SteamRE is just the culmination of years of work and research done by us and others.
Our Steam2 documentation can be traced back to work done by a team who developed a tool called the "Universal Content Launcher".
You can see the similarities of the networking here: [url]http://tools.assembla.com/svn/ucl/trunk/UCL.Steam/ServerClients/[/url].
Their efforts can most likely be traced back to a person named "steamCooker" from cs.rin.ru who did a vast amount of research into the Steam2 servers and how they work. I don't know exactly who else to credit for the majority of the Steam2 networking being figured out, as the parts that are required for Steam2 logon were already well researched before we started work.
The Steam3 documentation is a combination of two things:
A very long time ago Valve accidentally released a debug build of their steamclient library which handles all Steam3 networking. Through this debug build we managed to extract structures and data definitions that helped pave the way to figuring out the UDP protocol.
The rest of the information we have gathered is simply the work of long months of research, disassembly, and packet analysis. Knowledge of the API that is exposed by the steamclient library also helped us understand some of the design behind the networking.
[QUOTE=VoiDeD;27862481]Everything starts from nothing. SteamRE is just the culmination of years of work and research done by us and others.
Our Steam2 documentation can be traced back to work done by a team who developed a tool called the "Universal Content Launcher".
You can see the similarities of the networking here: [url]http://tools.assembla.com/svn/ucl/trunk/UCL.Steam/ServerClients/[/url].
Their efforts can most likely be traced back to a person named "steamCooker" from -snip- who did a vast amount of research into the Steam2 servers and how they work. I don't know exactly who else to credit for the majority of the Steam2 networking being figured out, as the parts that are required for Steam2 logon were already well researched before we started work.
The Steam3 documentation is a combination of two things:
A very long time ago Valve accidentally released a debug build of their steamclient library which handles all Steam3 networking. Through this debug build we managed to extract structures and data definitions that helped pave the way to figuring out the UDP protocol.
The rest of the information we have gathered is simply the work of long months of research, disassembly, and packet analysis. Knowledge of the API that is exposed by the steamclient library also helped us understand some of the design behind the networking.[/QUOTE]
Might want to -snip- our favorite russian counter strike source site out of your post
[QUOTE=mmavipc;27864888]Might want to -snip- our favorite russian counter strike source site out of your post[/QUOTE]
might want to expel yourself from this thread.
[QUOTE=mmavipc;27864888]Might want to -snip- our favorite russian counter strike source site out of your post[/QUOTE]
Why, it's not like it's a big secret who they are.
Could somebody port this to Python or C++?
[QUOTE=Jookia;27866183]Could somebody port this to Python or C++?[/QUOTE]
You could contribute bindings to the project
How do you bind something in C# to Python or C++?
[QUOTE=Jookia;27866725]How do you bind something in C# to Python or C++?[/QUOTE]
ironpython, embedded mono, or porting.
Didn't steamCooker release some application that could be used t o talk to friends when having only an empty steam account. Then Valve fixed it. I thing it was on the Developer section on rin.
[QUOTE=Jookia;27866183]Could somebody port this to Python or C++?[/QUOTE]
Yeah, and maybe Java so we finally can have a SteamFriends client for Android. But I think that will take too much time. It might be easier to use the knowledge of this lib and reimplement the necessary stuff for SteamFriends networking in Java.
[url]http://opensteamworks.org/SteamKit/[/url]
Sounds like it's supposed to be on Java at some point...
[QUOTE=DrTaxi;27876319][url]http://opensteamworks.org/SteamKit/[/url]
Sounds like it's supposed to be on Java at some point...[/QUOTE]
it was on java at one point. that page is ages old.
[editline]5th February 2011[/editline]
we consider that to be the dark ages of steamre.
[editline]5th February 2011[/editline]
this is the renaissance.
Awesome job, although it begs for a C port... I guess I'll add this to my ToDo list.
[QUOTE=q3k;27879616]Awesome job, although it begs for a C port... I guess I'll add this to my ToDo list.[/QUOTE]
or a c++ port unless you want to write/find a protobuf implementation in c.
[QUOTE=deloc;27882365]or a c++ port unless you want to write/find a protobuf implementation in c.[/QUOTE]
[url]http://code.google.com/p/protobuf-c/[/url] ..?
Somebody write an Android port and I am going to sell my liver to get an Android device.
[QUOTE=q3k;27882565][url]http://code.google.com/p/protobuf-c/[/url] ..?[/QUOTE]
[url]http://code.google.com/p/protobuf-c/wiki/Examples[/url]
this looks revolting.
Voided, are you guys looking for help with the project?
Help would be pretty awesome.
12:55:23°pm [Nick] High6 is now known as High6|Driving
Shouldn't you be paying attention to the road?! You could die. What help would that be?!
[QUOTE=VoiDeD;27918218]12:55:23°pm [Nick] High6 is now known as High6|Driving
Shouldn't you be paying attention to the road?! You could die. What help would that be?![/QUOTE]
shouldn't you be using vanilla mirc?
So, where do I download it.
[QUOTE=PelPix123;27934983]Still unable to get Steam2 auth servers for me. It happens in both 0.4 and when I compile the svn version.[/QUOTE]
Can you launch Vapor in -debug and see what errors it spits out?
[editline]8th February 2011[/editline]
For those of you totally without context: crossposting from [url]http://www.facepunch.com/threads/1057523-Vapor-Cross-Platform-Steam-Client[/url]
In an effort to increase the amount of documentation in the SteamKit library, I'm fleshing out the wiki with various articles here and there.
The newest documentation can be found here: [url]http://tracker.limetech.org/projects/steamre/wiki/Library[/url]. This part of the wiki tries to describe the library and the design patterns it uses.
If you're interested in a "get started quick" article, I wrote up some example usage code with guided documentation.
[url]http://tracker.limetech.org/projects/steamre/wiki/Example[/url]
Sorry, you need to Log In to post a reply to this thread.