sourcenet icon indicating copy to clipboard operation
sourcenet copied to clipboard

Source Engine network client protocol implementation. Join Source Engine games as a real client

GoDoc Go report card GolangCI Build Status CircleCI

SourceNet

A Source Engine multiplayer client netcode implementation in Golang. This is very incomplete, and is based primarily on reverse engineering cs:source packet data, with a little help from the Source Engine code leaks (also see credits).

Getting started

Prerequisites
  • Steam must be running, or steamworks will have issues.
  • steam_api64.dll must be obtained from Steamworks SDK, and placed in this directory.
  • Create a file named steam_appid.txt. Contents should be only the Source Engine game appid you are acting as (e.g. Counterstrike: Source has appid 240).

Examples

There are 2 examples currently.

  • Query public info from servers. This is the same information that you see on the Steam server browser listing.
  • Initial client authentication and handshake. This example will progress to the point where the server begins to send packets to the client of its own accord.

Credits

A lot of this wouldn't have been possible without the work of leystryku: https://github.com/Leystryku/leysourceengineclient