panda3d-steamworks

Python bindings for Valve’s Steamworks SDK for the Panda3D game engine.

Get started API Reference


panda3d-steamworks provides full access to the Steamworks SDK from your Panda3D Python code — achievements, matchmaking, cloud saves, Workshop, friends, networking, and much more.

Features

Feature Class Description
App & DLC SteamApps Ownership checks, DLC management, language queries, beta branches
Achievements & Stats SteamUserStats Unlock achievements, track stats, leaderboards
Friends & Social SteamFriends Friends list, rich presence, overlay, clan chat
Matchmaking SteamMatchmaking Lobby creation, discovery, filtering, game servers
Cloud Storage SteamRemoteStorage Read/write save files to Steam Cloud
Workshop SteamUGC Browse, create, and manage user-generated content
Inventory SteamInventory In-game item management and microtransactions
Input SteamInput Modern controller support with glyphs
Networking SteamNetworkingSockets Modern relay-based networking
Game Servers SteamGameServer Dedicated server registration and management
HTML Surface SteamHTMLSurface Embedded Chromium browser
Screenshots SteamScreenshots Screenshot capture and tagging
Music SteamMusic Steam music player control
Timeline SteamTimeline Game recording timeline events
Remote Play SteamRemotePlay Remote Play Together sessions
Parties SteamParties Steam Parties beacon system
Parental SteamParentalSettings Parental control queries
Utilities SteamUtils Overlay, text filtering, device info

Quick example

from panda3d_steamworks import SteamApps, SteamCallbackManager

if SteamApps.init():
    print("Steam initialised!")
    print("Language:", SteamApps.get_current_game_language())
    print("Build ID:", SteamApps.get_app_build_id())
    print("Subscribed:", SteamApps.is_subscribed())
    print("DLC count:", SteamApps.get_dlc_count())

    SteamApps.shutdown()

A steam_appid.txt file containing your app ID must be present in the working directory, or your game must be launched through Steam.

Architecture

All classes are static — you call methods directly on the class (e.g. SteamApps.init()) rather than creating instances. Async operations accept a Python callable as the last argument; the callback receives a dict with the result fields.

You must call SteamCallbackManager.run_callbacks() every frame to pump both async call-results and broadcast events. In Panda3D, this is typically done via a task:

from direct.showbase.ShowBase import ShowBase
from panda3d_steamworks import SteamApps, SteamCallbackManager

class MyApp(ShowBase):
    def __init__(self):
        super().__init__()
        SteamApps.init()
        self.taskMgr.add(self.steam_task, "steam_callbacks")

    def steam_task(self, task):
        SteamCallbackManager.run_callbacks()
        return task.cont

Back to top

panda3d-steamworks is licensed under the MIT License. The Steamworks SDK is © Valve Corporation.

This site uses Just the Docs, a documentation theme for Jekyll.