C++ library to interoperate with Steam servers
MIT License
This is a C++ port of SteamKit2. It's framework-agnostic – you should be able to integrate it with any event loop.
Steam++ uses CMake. If you run cmake-gui
in the project dir, you should see which dependencies are missing. Here's the list:
Used for serialization of most message types sent to/from Steam servers.
libprotobuf-dev
.PROTOBUF_SRC_ROOT_FOLDER
to the protobuf source directory./mingw
if you're building steampurple. Also note that you have to do this from MSYS.Used for encryption.
libcrypto++-dev
.cryptopp
. In CMake, set the following advanced variables: CRYPTOPP_ROOT_DIR
to the parent directory of cryptopp
, CRYPTOPP_LIBRARY_RELEASE
to the Release build of the library, and optionally CRYPTOPP_LIBRARY_DEBUG
to the Debug build of the library./mingw
.Used for reading .zip archives because that's what Valve uses for data compression.
libarchive-dev
.CMAKE_PREFIX_PATH
(you can tweak the latter). To install, build the INSTALL project.mingw32-make install
.SteamKit repo contains .proto files we need. If you're building steampurple on MinGW, clone it into SteamPP's parent directory. Otherwise clone it wherever you want, but set the STEAMKIT
cache variable to the directory where you cloned it.
On Linux, you'll need protoc
in your PATH. On Debian/Ubuntu, install protobuf-compiler
.
Steam++ is designed to be compatible with any framework – in return, you must provide it with an event loop to run in. The communication occurs through callbacks – see steam++.h and the two sample projects to get a basic idea of how it works.
A small project that uses libuv as the backend. You'll have to replace "username", "password" etc with real values.
vcbuild.bat shared release
./gyp_uv -Dlibrary=shared_library && make libuv -C out BUILDTYPE=Release
make steamuv
should now build a steamuv
executableA libpurple plugin. Currently supports joining and leaving chats, sending and receiving friend and chat messages, as well as logging in simultaneously with the Steam client.
Note that this is very unstable and will crash at any opportunity. If it happens, please don't hesitate to submit an issue with the debug log.
Get the latest release here.
You can use the icons from pidgin-opensteamworks.
libglib2.0-dev
and libpurple-dev
make steam && cp libsteam.so ~/.purple/plugins
pidgin-2.10.7
and SteamPP
should be in the same folder).cmake -G "MSYS Makefiles" -DPROTOBUF_LIBRARY=/mingw/lib/libprotobuf.a -DLibArchive_LIBRARY=/mingw/lib/libarchive_static.a -DCMAKE_PREFIX_PATH=../pidgin-2.10.7/libpurple:/mingw -DCMAKE_LIBRARY_PATH="$PROGRAMFILES/Pidgin" -DCMAKE_MODULE_LINKER_FLAGS="\"$PROGRAMFILES/Pidgin/Gtk/bin/zlib1.dll\" -static -static-libgcc -static-libstdc++" -DSTEAMKIT=../SteamKit
make steam
.%appdata%\.purple\plugins
.