Knowledge Base
HomeProductsCommunityReviewsSocial
Old Knowledge Base
Old Knowledge Base
  • Knowledge Base
    • Getting to know us
  • Where to Buy
    • Become a Sponsor
    • Heathen License Agreement
  • General
    • ๐Ÿ”ŽTable of Contents
    • ๐ŸคฉGetting Started
      • Indie Check List
      • Sourcing Resources
        • ๐Ÿง™โ€โ™‚๏ธCommunity
        • ๐Ÿงžโ€โ™‚๏ธManaged Services
        • ๐Ÿ“ฃMarketing
        • ๐ŸงชTesting
    • ๐ŸงžTips and Tricks
      • Fundamentals
        • Development Phases
      • Unity
        • Package Manager Installs
          • Missing asset after update
        • Unity Release Version
      • Unreal
        • Unity to Unreal
        • Quick Start
    • ๐Ÿ“Design
      • โ˜๏ธQuick Start
      • ๐ŸฅพBootstraping
      • ๐Ÿค‘Monetization
        • What not to do
        • Models
          • Free
          • Free to Play
          • Pay to Play
          • Pay to Win
          • Play to Earn
        • Tools
          • ๐Ÿ˜กArtificial Scarcity
          • ๐Ÿค‘Bundles
          • ๐Ÿค”Community Marketplace
          • ๐Ÿค‘Expansions
          • ๐Ÿ˜กFear of Missing Out (FOMO)
          • ๐Ÿ˜กGatcha Mechanics
          • ๐Ÿค”Microtransactions (MTX)
          • ๐Ÿ˜กNFT
            • ๐Ÿ˜กBlockchain
          • ๐Ÿค”No Spend Cap
          • ๐Ÿ˜กPremium Currency
          • ๐Ÿค”Season
          • ๐Ÿค‘Subscription
          • ๐Ÿ˜กSurprise Mechanics
      • ๐ŸŽฎMultiplayer
        • Networking Tools
        • Terminology
      • ๐ŸคนMulti-Scene Architecture
      • ๐ŸŒProject Architecture
      • ๐Ÿ˜ŠPlayer Motivation
    • ๐Ÿ—๏ธDevelopment
      • โ˜๏ธQuick Start
      • โ˜Ž๏ธCallbacks & Delegates
      • โ”Conditional Compilation
      • ๐ŸชณDebugging
      • ๐ŸšงDevOps
        • โ˜•Team Collaboration
        • ๐Ÿ›‚Git Control & Unity
      • โ‰๏ธError Handling
        • System Dialog
        • Reporting
      • ๐ŸคฏIntelliSense
      • ๐ŸชถLambda Expressions
      • ๐Ÿคนโ€โ™€๏ธMulti Platform Projects
      • ๐Ÿ“‘Namespace and Using
      • ๐ŸŽฎUnity's "New" Input System
      • ๐Ÿ”ผUpdating Visual Studio and C#
      • ๐Ÿ’กVisual Scripting
    • โš ๏ธPublishers
    • ๐ŸงชTesting
      • ๐Ÿ‘‹Introduction
      • โœ๏ธWriting Formal Tests
    • ๐Ÿง™โ€โ™‚๏ธCommunity
      • โ˜๏ธQuick Start
    • ๐Ÿ“ฃMarketing
      • โ˜๏ธQuick Start
      • ๐Ÿ“ŒTips and Tactics
      • ๐Ÿค“Market Research
    • ๐Ÿ“†Release
    • ๐Ÿ—บ๏ธLive
  • Steam
    • โ˜๏ธQuick Start
    • ๐Ÿ†Achievements
    • ๐ŸŒณBranches
    • ๐Ÿ—ฃ๏ธCommunity Hub
    • โฌ†๏ธUploading to Steam
    • โ˜๏ธCloud Save
    • ๐Ÿ†”CSteamID
    • ๐Ÿ”ŽDiscovery Queue
    • ๐Ÿ•น๏ธDownloadable Content
    • ๐ŸšซEarly Access
    • ๐Ÿ–ฑ๏ธInput
    • ๐Ÿ“ฆInventory
      • ๐Ÿ”จCrafting System
      • ๐Ÿ› ๏ธItem Definition Tools
      • ๐Ÿ’ธMicrotransactions
      • ๐ŸŽPromo Items
    • ๐ŸšขLaunch
    • ๐Ÿฅ‡Leaderboards
      • ๐Ÿ—ฃ๏ธAdvanced Profiles
    • ๐ŸŽฎMultiplayer
      • โ˜๏ธGetting Started
      • ๐ŸงชDev and Test
      • ๐Ÿง‘โ€โš–๏ธAuthentication
      • ๐Ÿ›‹๏ธLobby
      • ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘Matchmaking
      • ๐Ÿง‘โ€๐Ÿ”งRich Presence
      • ๐Ÿ’ฌRoom Systems
      • ๐Ÿ’Steam Game Server
        • ๐Ÿ‘ทBuilds
        • โš™๏ธConfiguration
        • ๐Ÿ“‹Server Browser
        • ๐ŸงSetup Linux
      • ๐Ÿ—ฃ๏ธTerminology
    • ๐ŸคนMulti-Platform Project
    • ๐ŸงชPlaytest
    • ๐Ÿ›‹๏ธRemote Play
    • ๐Ÿ‘€Reviews
    • ๐ŸƒRunning a Build
    • ๐Ÿ’ถSales
    • โญStats
    • ๐Ÿ”‘Steam API Key
    • ๐Ÿ“ƒsteam_appid.txt
    • ๐Ÿ–ฅ๏ธSteam Deck
    • โš™๏ธSteamworks
    • ๐ŸคฏStore Page
    • ๐Ÿ› ๏ธWorkshop
      • Creating an Item
      • In-Game Browser
      • Subscribed Items
    • ๐Ÿง‘โ€๐ŸซUser Information
      • Unity User Tools
      • Unreal User Tools
    • ๐Ÿ—ฃ๏ธVoice
  • Toolkit for Steamworks
    • Introduction
    • Maintenance Cycle
    • F.A.Q
    • Unity
      • โš ๏ธKnown Issues
      • Unity Asset Refund Policy
      • Installation
        • Networking Integrations
      • Getting Started
      • Debugging
      • Learning
      • API Extensions
        • App.Client
        • App.Server
        • App.Web
        • Authentication
        • BigPicture.Client
        • Clans.Client
        • Friends.Client
        • Input.Client
        • Inventory.Client
        • Leaderboards.Client
        • Matchmaking.Client
        • Overlay.Client
        • Parties.Client
        • RemotePlay.Client
        • RemoteStorage.Client
        • Screenshots.Client
        • StatsAndAchievements.Client
        • StatsAndAchievements.Server
        • User.Client
        • UserGeneratedContent.Client
        • Utilities
        • Utilities.Client
        • Voice.Client
      • Objects
        • Classes
          • Achievement Data
          • Achievement Object
          • App Data
          • Authentication Session
          • Authentication Ticket
          • Avg Rate Stat
          • Chat Room
          • Clan Chat Msg
          • Clan Data
          • Currency
          • Data Model
          • DLC Data
          • Downloadable Content Object
          • Favorite Game
          • Float Stat
          • Game Data
          • Input Action
          • Input Action Data
          • Input Action Set
          • Input Action Set Data
          • Input Action Set Layer
          • Input Action Update
          • Input Controller Data
          • Int Stat
          • Inventory Result
          • Item Data
          • Item Definition
          • Item Detail
          • Leaderboard Data
          • Leaderboard Entry
          • Leaderboard Object
          • Lobby Chat Msg
          • Lobby Data
          • Lobby Game Server
          • Lobby Member Data
          • Party Beacon Details
          • Rank Change
          • Remote Storage File
          • Stat Data
          • Steam Game Server Configuration
          • UGC Query
          • User Data
          • Steam Settings
            • Colors
            • Game Client
              • Inventory Settings
            • Game Server
          • User Leave Data
          • Workshop Item
          • Workshop Item Data
          • Workshop Item Data Create Status
          • Workshop Item Key Value Tag
          • Workshop Item Preview File
        • Components
          • Friend Manager
          • Game Server Browser Manager
          • Input Action Event
          • Input Action Glyph
          • Input Action Name
          • Inventory Manager
          • Item Shopping Cart Manager
          • Leaderboard Manager
          • Leaderboard User Entry
          • Overlay Manager
          • Steam Game Server Events
          • Steam Input Manager
          • Steamworks Event Triggers
          • UGC Query Manager
          • Voice Recorder
          • Voice Stream
        • Enums
          • Friend Dialog
          • Inventory Item Type
          • Language Codes
          • Overlay Dialog
          • Sample Rate Method
          • Valve Price Categories
        • Prefabs
          • ๐Ÿ“ฆClan Chat
          • ๐Ÿ“ฆClan List
          • ๐Ÿ“ฆClan Member Count
          • ๐Ÿ“ฆFriend Avatar
          • ๐Ÿ“ฆFriend Groups
          • ๐Ÿ“ฆFriend List
          • ๐Ÿ“ฆFriend Name
          • ๐Ÿ“ฆFriend Profile
          • ๐Ÿ“ฆSelectable Friend ID
        • Programming Tools
          • IChatMessage
          • ILeaderboardEntryDisplay
          • IUserProfile
          • IWorkshopBrowserItemTemplate
          • LobbyMemberSlot
          • User Invite Button
        • UI Components
          • Chat Auto Join
          • Chat Stream
          • Clan Chat Director
          • Clan Chat Member Counter
          • Clan Chat Member List
          • Clan List
          • Clan Profile
          • Friend Group
          • Friend Groups Display
          • Friend Invite Dropdown
          • Friend List
          • Friend Profile
            • Image Field
            • Message Options
            • Text Field
          • Input Action Glyph
          • Input Action Name
          • Leaderboard Entry UI Record
          • Leaderboard UI List
          • Lobby Chat Director
          • Lobby Member Slot
          • Lobby Manager
          • Party Lobby Control
          • Quick Match Lobby Control
          • Rich Presence Reader
          • Rich Presence Setter
          • Set Achievement Description
          • Set Achievement Icon
          • Set Achievement Name
          • Set User Avatar
          • Set User Id Input Field
          • Set User Id Label
          • Set User Name
          • Toggle Event Helper
          • Workshop Browser Simple Item Record
      • Legacy
        • Troubleshooting
        • Getting Started
          • GameObject Initialization
          • ScriptableObject Initialization
          • API Initialization
        • Build Upload Tool
        • Debugging Tools
          • Testing
        • Components
          • Steamworks Behaviour
          • Steamworks Creator
          • Steam System Events
    • Unreal
      • What's New!
      • Installation
      • Getting Started
      • Updating Steamworks SDK
      • Packaging
      • Game Instance
      • Sockets Net Driver
      • Online Subsystem
      • Data Assets
        • Achievement
        • Downloadable Content
        • Inventory Item
        • Leaderboard
        • Stat
      • Widgets
        • BP_FriendsListDisplay
        • BP_FriendsListEntry
        • BP_FriendsListGroup
        • BP_SteamAvatarImage
        • BP_SteamUserName
      • Blueprint Nodes
        • Functions
          • ๐Ÿ”ตAdd Favorite Game
          • ๐Ÿ”ตAdd History Game
          • ๐Ÿ”ตAdd Promo Item
          • ๐Ÿ”ตAdd Request Lobby List Filter
          • ๐Ÿ”ตAdvertise Game
          • ๐Ÿ”ตAssociate with Clan
          • ๐Ÿ”ตAttach Leaderboard UGC
          • ๐Ÿ”ตBegin Auth Session
          • ๐Ÿ”ตCancel Auth Ticket
          • ๐Ÿ”ตCheck Result Steam ID
          • ๐Ÿ”ตClear All Key Values
          • ๐Ÿ”ตClear Achievement
          • ๐Ÿ”ตClear Rich Presence
          • ๐Ÿ”ตClient Initialize
          • ๐Ÿ”ตClient Run Callbacks
          • ๐Ÿ”ตClient Should Restart
          • ๐Ÿ”ตCompue New Player Compatibility
          • ๐Ÿ”ตConsume Item
          • ๐Ÿ”ตCreate Lobby
          • ๐Ÿ”ตDecompress Voice
          • ๐Ÿ”ตDelete Lobby Data
          • ๐Ÿ”ตDeserialize Result
          • ๐Ÿ”ตDestroy Result
          • ๐Ÿ”ตDownload Leaderboard Entries
          • ๐Ÿ”ตDownload Leaderboard Entries for Users
          • ๐Ÿ”ตEnd Auth Session
          • ๐Ÿ”ตExchange Items
          • ๐Ÿ”ตFind Leaderboard
          • ๐Ÿ”ตFind or Create Leaderboard
          • ๐Ÿ“‚Game Server Browser
            • ๐Ÿ”ตPing Server
            • ๐Ÿ”ตPlayer Details
            • ๐Ÿ”ตRequest Server List
            • ๐Ÿ”ตServer Rules
          • ๐Ÿ”ตGenerate Items
          • ๐Ÿ”ตGet Achievement
          • ๐Ÿ”ตGet Achievement by Index
          • ๐Ÿ”ตGet Achievement Icon
          • ๐Ÿ”ตGet Achievement Is Achieved
          • ๐Ÿ”ตGet All Items
          • ๐Ÿ”ตGet App Build ID
          • ๐Ÿ”ตGet App Id
          • ๐Ÿ”ตGet App Owner
          • ๐Ÿ”ตGet Auth Session Ticket
          • ๐Ÿ”ตGet Auth Ticket for Web API
          • ๐Ÿ”ตGet Available Game Languages
          • ๐Ÿ”ตGet Available Voice
          • ๐Ÿ”ตGet Coplay Friends
          • ๐Ÿ”ตGet Current Beta Name
          • ๐Ÿ”ตGet Current Game Language
          • ๐Ÿ”ตGet DLC Count
          • ๐Ÿ”ตGet DLC Data By Index
          • ๐Ÿ”ตGet DLC Download Progress
          • ๐Ÿ”ตGet Earliest Purchase
          • ๐Ÿ”ตGet Favorite Game
          • ๐Ÿ”ตGet Friends
          • ๐Ÿ”ตGet Friend Coplay Game
          • ๐Ÿ”ตGet Friend Coplay Time
          • ๐Ÿ”ตGet Friend Count from Source
          • ๐Ÿ”ตGet Friend Game Played
          • ๐Ÿ”ตGet Friend Groups
          • ๐Ÿ”ตGet Friend Group Members
          • ๐Ÿ”ตGet Friend Group Name
          • ๐Ÿ”ตGet Friend Persona Name
          • ๐Ÿ”ตGet Followed
          • ๐Ÿ”ตGet Installed Depots
          • ๐Ÿ”ตGet Item Definition Properties
          • ๐Ÿ”ตGet Item Price
          • ๐Ÿ”ตGet Items with Price
          • ๐Ÿ”ตGet Items by ID
          • ๐Ÿ”ตGet Launch Command Line
          • ๐Ÿ”ตGet Launch Query Param
          • ๐Ÿ”ตGet Leaderboard Display Type
          • ๐Ÿ”ตGet Leaderboard Entry Count
          • ๐Ÿ”ตGet Leaderboard Name
          • ๐Ÿ”ตGet Leaderboard Sort Method
          • ๐Ÿ”ตGet Lobby Chat Entry
          • ๐Ÿ”ตGet Lobby Data
          • ๐Ÿ”ตGet Lobby Data by Index
          • ๐Ÿ”ตGet Lobby Game Server
          • ๐Ÿ”ตGet Lobby Members
          • ๐Ÿ”ตGet Lobby Member by Index
          • ๐Ÿ”ตGet Lobby Member Data
          • ๐Ÿ”ตGet Lobby Member Limit
          • ๐Ÿ”ตGet Lobby Owner
          • ๐Ÿ”ตGet Most Achieved Achievement Info
          • ๐Ÿ”ตGet My Steam Avatar
          • ๐Ÿ”ตGet My Steam ID
          • ๐Ÿ”ตGet My Steam Level
          • ๐Ÿ”ตGet Num Items with Price
          • ๐Ÿ”ตGet Persona Name
          • ๐Ÿ”ตGet Persona State
          • ๐Ÿ”ตGet Player Nickname
          • ๐Ÿ”ตGet Public IP
          • ๐Ÿ”ตGet Result Item Property
          • ๐Ÿ”ตGet Result Items
          • ๐Ÿ”ตGet Result Status
          • ๐Ÿ”ตGet Result Timestamp
          • ๐Ÿ”ตGet Stat
          • ๐Ÿ”ตGet Steam ID
          • ๐Ÿ”ตGet User Achievement
          • ๐Ÿ”ตGet User Float Stat
          • ๐Ÿ”ตGet User Int Stat
          • ๐Ÿ”ตGet User Restrictions
          • ๐Ÿ”ตGet Rich Presence
          • ๐Ÿ”ตGet User Rich Presence
          • ๐Ÿ”ตGet User Rich Presence Key by Index
          • ๐Ÿ”ตGet User Steam Avatar
          • ๐Ÿ”ตGet Voice
          • ๐Ÿ”ตGet Voice Optimal Sample Rate
          • ๐Ÿ”ตGrant Promo Items
          • ๐Ÿ”ตHas Friend
          • ๐Ÿ”ตId is Me
          • ๐Ÿ”ตId is Valid
          • ๐Ÿ”ตIndicate Achievement Progress
          • ๐Ÿ”ตInstall DLC
          • ๐Ÿ”ตInvite User To Game
          • ๐Ÿ”ตInvite User to Lobby
          • ๐Ÿ”ตInitialize
          • ๐Ÿ”ตIs App Installed
          • ๐Ÿ”ตIs Behind NAT
          • ๐Ÿ”ตIs Cybercafe
          • ๐Ÿ”ตIs DLC Installed
          • ๐Ÿ”ตIs Lobby Owner
          • ๐Ÿ”ตIs Low Violence
          • ๐Ÿ”ตIs Phone Identifying
          • ๐Ÿ”ตIs Phone Requiring Verification
          • ๐Ÿ”ตIs Phone Verified
          • ๐Ÿ”ตIs Steam Initialized
          • ๐Ÿ”ตIs Subscribed
          • ๐Ÿ”ตIs Subscribed App
          • ๐Ÿ”ตIs Subscribed from Family Sharing
          • ๐Ÿ”ตIs Subscribed from Free Weekend
          • ๐Ÿ”ตIs Timed Trial
          • ๐Ÿ”ตIs Two Factor Enabled
          • ๐Ÿ”ตIs VAC Banned
          • ๐Ÿ”ตJoin Lobby
          • ๐Ÿ”ตLeave Lobby
          • ๐Ÿ”ตLoad Item Definitions
          • ๐Ÿ”ตLogged On
          • ๐Ÿ”ตLog Off
          • ๐Ÿ”ตLog On
          • ๐Ÿ”ตLog On Anonymous
          • ๐Ÿ”ตMark Content Corrupt
          • ๐Ÿ”ตQuick Match
          • ๐Ÿ”ตRemove Favorite Game
          • ๐Ÿ”ตRemove History Game
          • ๐Ÿ”ตRemove Property
          • ๐Ÿ”ตReply to Friend Message
          • ๐Ÿ”ตRequest Current Stats
          • ๐Ÿ”ตRequest Eligible Promo Item Definitions IDs
          • ๐Ÿ”ตRequest Friend Rich Presence
          • ๐Ÿ”ตRequest Lobby Data
          • ๐Ÿ”ตRequest Lobby List
          • ๐Ÿ”ตRequest Prices
          • ๐Ÿ”ตRequest Store Auth URL
          • ๐Ÿ”ตRequest User Group Status
          • ๐Ÿ”ตRequest User Information
          • ๐Ÿ”ตRequest User Stats
          • ๐Ÿ”ตReset All Stats
          • ๐Ÿ”ตRun Callbacks
          • ๐Ÿ”ตSecure
          • ๐Ÿ”ตSend Lobby Chat
          • ๐Ÿ”ตSerialize Result
          • ๐Ÿ”ตSet Achievement
          • ๐Ÿ”ตSet Advertise Server Active
          • ๐Ÿ”ตSet Bot Player Count
          • ๐Ÿ”ตSet Dedicated Server
          • ๐Ÿ”ตSet Description
          • ๐Ÿ”ตSet Game Data
          • ๐Ÿ”ตSet Game Tags
          • ๐Ÿ”ตSet In-Game Voice Speaking
          • ๐Ÿ”ตSet Key Value
          • ๐Ÿ”ตSet Map Name
          • ๐Ÿ”ตSet Listen for Friends Messages
          • ๐Ÿ”ตSet Lobby Data
          • ๐Ÿ”ตSet Lobby Game Server
          • ๐Ÿ”ตSet Lobby Joinable
          • ๐Ÿ”ตSet Lobby Member Data
          • ๐Ÿ”ตSet Lobby Member Limit
          • ๐Ÿ”ตSet Lobby Owner
          • ๐Ÿ”ตSet Lobby Type
          • ๐Ÿ”ตSet Max Player Count
          • ๐Ÿ”ตSet Mod Directory Name
          • ๐Ÿ”ตSet Name
          • ๐Ÿ”ตSet Password Protected
          • ๐Ÿ”ตSet Persona Name
          • ๐Ÿ”ตSet Played with User
          • ๐Ÿ”ตSet Product
          • ๐Ÿ”ตSet Property
          • ๐Ÿ”ตSet Region
          • ๐Ÿ”ตSet Rich Presence
          • ๐Ÿ”ตSet Stats
          • ๐Ÿ”ตSet Spectator Name
          • ๐Ÿ”ตSet Spectator Port
          • ๐Ÿ”ตSet User Achievement
          • ๐Ÿ”ตSet User Float Stat
          • ๐Ÿ”ตSet User Int Stat
          • ๐Ÿ”ตShutdown
          • ๐Ÿ”ตStart Purchase
          • ๐Ÿ”ตStart Update Property
          • ๐Ÿ”ตStart Voice Recording
          • ๐Ÿ”ตSteam ID Tools
          • ๐Ÿ”ตStop Voice Recording
          • ๐Ÿ”ตStore Stats
          • ๐Ÿ”ตStore User Stats
          • ๐Ÿ”ตSubmit Update Property
          • ๐Ÿ”ตTransfer Item Quantity
          • ๐Ÿ”ตTrigger Item Drop
          • ๐Ÿ”ตUninstall DLC
          • ๐Ÿ”ตUpdate Avg Rate Stat
          • ๐Ÿ”ตUpdate User Avg Rate Stat
          • ๐Ÿ”ตUpload Leaderboard Score
          • ๐Ÿ”ตUser Has License for App
          • ๐Ÿ”ตWas Restart Requested
        • Events
          • ๐Ÿ”ปDlc Installed
          • ๐Ÿ”ปFriend Chat Msg
          • ๐Ÿ”ปFriend Rich Presence Update
          • ๐Ÿ”ปGame Overlay Activated
          • ๐Ÿ”ปInventory Item Definition Update
          • ๐Ÿ”ปInventory Results Ready
          • ๐Ÿ”ปLobby Chat Msg
          • ๐Ÿ”ปLobby Chat Update
          • ๐Ÿ”ปLobby Data Update
          • ๐Ÿ”ปLobby Game Created
          • ๐Ÿ”ปLobby Join Requested
          • ๐Ÿ”ปMicro Txn Authorization Response
          • ๐Ÿ”ปPersona State Change
          • ๐Ÿ”ปRich Presence Join Requested
          • ๐Ÿ”ปServers Connected
          • ๐Ÿ”ปServer Connect Failure
          • ๐Ÿ”ปServer Disconnected
          • ๐Ÿ”ปTicket for Web API Response
        • Types
          • ๐ŸŸฉAchievement Status
          • ๐ŸŸฉAuth Ticket Data
          • ๐ŸŸฉChat Entry
          • ๐ŸŸฉDecompress Voice Result
          • ๐ŸŸฉFloat Stat
          • ๐ŸŸฉGame Server Item Wrapper
          • ๐ŸŸฉGame Server Player Details Wrapper
          • ๐ŸŸฉGlobal Achievement Status
          • ๐ŸŸฉItem Count
          • ๐ŸŸฉItem Detail
          • ๐ŸŸฉItem Detail With Properties
          • ๐ŸŸฉItem Price
          • ๐ŸŸฉItem With Price
          • ๐ŸŸฉInt Stat
          • ๐ŸŸฉKey Value Pair
          • ๐ŸŸฉLeaderboard Entry
          • ๐ŸŸฉLobby Data
          • ๐ŸŸฉLobby Game Server
          • ๐ŸŸฉServer Achievement Status
          • ๐ŸŸฉServer Stat Float Value
          • ๐ŸŸฉServer Stat Int Value
          • ๐ŸŸฉUser Achievement Status
          • ๐ŸŸฉVoice Result
          • ๐ŸŸฉVoice Available Result
        • Enumerators
          • ๐ŸŸจUEBeginAuthSessionResult
          • ๐ŸŸจUEChatRoomEnterResponse
          • ๐ŸŸจUEFriendFlags
          • ๐ŸŸจUEChatEntryType
          • ๐ŸŸจUEChatMemberStateChange
          • ๐ŸŸจUELeaderboardDataRequest
          • ๐ŸŸจUELeaderboardDisplayType
          • ๐ŸŸจUELeaderboardSortMethod
          • ๐ŸŸจUELobbyComparison
          • ๐ŸŸจUELobbyDistanceFilter
          • ๐ŸŸจUELobbyType
          • ๐ŸŸจUEResult
          • ๐ŸŸจUESteamCurrencyCode
          • ๐ŸŸจUEServerMode
          • ๐ŸŸจUEUserHasLicenseForAppResult
          • ๐ŸŸจUEVoiceResult
      • C++
  • Toolkit for Physics
    • Unity
      • Installation
      • Core Features
        • Ballistics Tools
        • Buoyancy Tools
        • Force Effect Framework
        • Physics Data extended
        • Verlet Integration
      • Sample Scenes
        • Fantasy Style Ballistic Simulation
        • (3D) Deterministic Bounce Prediction
        • (2D) Deterministic Bounce Prediction
        • 1 Buoyancy Example
        • 1 Force Effect Fields
        • 2 Spherical Gravity
        • 3 Multi-body Gravity
        • 1 Verlet Spring Simple Transforms
        • 2 Verlet Spring Skinned Mesh
      • API
        • Ballistics
        • Buoyancy
        • Force Effects
        • Maths
        • Mesh Tools
      • Components
        • Ballistic Aim
        • Ballistic Path Line Render
        • Ballistic Path Follow
        • Buoyant Body
        • Buoyant Body Drag
        • Constant Acceleration
        • Constant Angular Velocity
        • Constant Linear Velocity
        • Force Effect Source
          • Force Effect Direction
          • Force Effect Field
        • Force Effect Reciever
        • Physics Data
        • Surface Tool
        • Trick Shot
        • Trick Shot Line
        • Verlet Spring
      • Objects
        • Force Effect
          • Attract Effect
          • Gravity Effect
          • Repulse Effect
          • Suspend Effect
          • Tractor Effect
          • Wind Effect
        • Point Volume
        • Verlet Hierarchy
        • Verlet Hierarchy Settings
        • Verlet Particle
      • Enums
        • Calculation Mode
  • Toolkit for UI & UX
    • Introduction
    • Unity
      • Installation
      • Learning
        • Sample Scenes
          • Command Parser Example
          • Cursor System Scene
          • Drag and Drop (Behaviours)
          • Drag and Drop (Inventory Example)
          • Drag and Drop (Spell Bar Example)
          • Log Sample Scene
          • Screenshot Sample Scene
        • Core Concepts
          • Command System
          • Cursor System
          • Drag and Drop System
          • Interaction Tools
          • Logging & Feedback
          • Scene Tools
          • Selection System
          • Tooltip System
          • Window System
        • uGUI Extras
          • Key Collection
          • Ligature Tools
          • Tree View Collection
      • API
        • Cursors
        • Json
        • Log
        • Scenes
        • Screenshot
        • Selection
        • Trello
        • Windows
      • Components
        • Action Hold
        • Border Handle
        • Button Cursor State
        • Change Cursor Default State
        • Command Director
        • Cursor Animator
        • Drag Item
        • Drop Container
        • Key Hold
        • Mouse Over Cursor State
        • Move Handle
        • Play On Click
        • Play On Demand
        • Play On Down
        • Play On Enter
        • Play On Exit
        • Play On Up
        • Pointer Hold
        • Scenes Manager
        • Selectable Object
        • Selection Manager
        • Tooltip Trigger
        • Tooltip Window Controller
        • Window
        • Window Clamping Bounds
        • Window Focus Change Event Data
      • Objects
        • Command Data
        • Command Library
        • Cursor Animation
        • Cursor State
        • DragAndDropItemChangeData
        • LogData
      • Enums
        • Clear Drop Behaviour
        • Drag Effect
        • Drag End Behaviours
        • Grab Handle
        • Mask Mode
        • Recieve Mode
        • Window Snap To Location
  • More Heathen Tools
    • ๐ŸŽจArt Assets
      • Breakable
        • Wood Props
          • Installation
    • โš™๏ธSystem Core
      • Installation
      • Learning
        • Asset Developers
      • Command Line
      • Game Events
      • Scriptable Tags
      • Scriptable Variables
      • Heathen Behaviour
      • Heathen UI Behaviour
    • ๐Ÿ“‹Tips for Asset Developers
      • Editor Coroutines
      • Package Manger in C#
      • Session State Values
  • Codex
    • Introduction
      • Article Design Guide
        • Evolution
          • Early Period
          • Middle Period
          • Late Period
      • Codex Organization
    • Irish
      • Folklore
        • Introduction
        • Characters
          • Dรฉithe
            • Cacht
            • Lugh
            • Dag Dia
              • Donn
              • Nuada
              • Ogma
            • Mother?
              • Banba
                • Appearance
                • Name
              • ร‰rui
                • Appearance
                • Name
              • Fรณdla
                • Appearance
                • Name
            • Father ?
              • ร‰thur Mac Cuill
              • Cรฉthur Mac Grรฉine
              • Tรฉthur Mac Cecht
        • Concepts
          • Binding Tablet
          • Druids
          • Sociaty
          • Patron Gods
          • Bile
          • Time
        • Food
          • Elderberry Capers
          • Elderberry Wine
          • Mead
        • Peoples
          • Fomรณire
          • Research Note
            • Hunter Gathers
            • Neolithic Farmers
            • Bronze Age
        • Locations
          • Lughmhagh
          • Temair
            • Name
      • Research
        • Historical Backdrop
        • Disambiguation
          • Banshee
          • Celt
          • Gods and Goddesses
          • Lebor Gabรกla ร‰renn
          • Milesians
          • Mother Goddess
          • Sovereignty Goddess
          • The Morrรญgan
          • Triple Persona
          • Tuatha Dรฉ
          • Wicker Man Sacrafice
        • Links
          • Social Factors
          • Lugh
            • Name
          • Ogma
          • Astronomy
          • Time
        • Sources
        • WIP
          • Artefacts
          • Beings
            • Cannon
              • Belgae
              • Fomorians
              • Sรญog
              • Tuatha Dรฉ Danann
            • Derivative
              • Milesians
              • Muintir Nemid
          • Characters
            • Cannon
            • Derivative
          • Concepts
          • Events
          • Languages
          • Music
          • Places
          • Sources
          • Stories
          • Styles
Powered by GitBook
On this page
  • Introduction
  • Integrate
  • Unity
  • Unreal
  • Initialize
  • Unity
  • Unreal
  • Steam Debugging
  • The Basics
  • Steam must be running
  • Running a Build
  • Publish Your Changes
  • Environment Checks
  • Steamworks.NET Install
  • Steam Client Login
  • Steam User
  • Build Target
  • Steam Command Line
  1. Steam

โš™๏ธSteamworks

How to .... everything!

PreviousSteam DeckNextStore Page

Last updated 10 months ago

Introduction

Heathen creates the top Steamworks integration for Unreal, Unity and is porting it to Godot! Want to do more with Valve's Steamworks SDK? Then check out Heathen's Toolkit for Steamworks SDK!

Integrate

You will need to bring the Steamworks SDK assemblies into your project so you can make use of the features in your game logic.

Unity

Toolkit for Steamworks SDK

With Toolkit for Steamworks you can handle initialization and most features of Steamworks completely code-free. We also provide a robust set of tools for programmers greatly speeding up the process of integrating Steamworks with your project by providing robust and battle-tested systems and tools.

Manual Integration

In general, you should never install anything to your project from a .unitypackage file. In particular, Steamworks.NET doesn't often update its unity package ... please do your self a massive favor and use UPM to install as described below

Install Steamworks.NET

First, you will need to Install Steamworks.NET, we recommend you do this via the Unity Package Manager and avoid installing it from the GitHub Release folder as that package is usually out of date and is not easily updated.

  • From Git URL

    • Open the Unity Package Manager

    • Press the Add (+) button

    • Select Add from Git URL

    • Enter the URL https://github.com/rlabrecque/Steamworks.NET.git?path=/com.rlabrecque.steamworks.net

  • From Disk

    • Clone the Steamworks.NET Repo to your local disk ... we use GitHub Desktop for this.

    • Open the Unity Package Manager

    • Press the Add (+) button

    • Select Add from Disk

    • Browse to the com.rlabrecque.steamworks.net folder and import.

Unreal

Toolkit for Steamworks SDK

The best way to get started quickly and Do More is with Heathen's Toolkit for Steamworks SDK.

With Toolkit for Steamworks, you can access and leverage every aspect of Steamworks from Blueprint or C++ and we have created a number of Unreal-specific tools to simplify common use cases such as the Steam Save Game which is a classic Unreal Save Game that can leverage Steam's Cloud Storage as you would any normal Unreal Save Game.

Manual Install

You will need to include the Steam Shared Module. This is Unreal's built-in Third Party Engine Plugin that makes the Steamworks SDK available to your project. Sadly Unreal's built-in tools for Steamworks are very lacking so you will be using this from C++ as a raw API ... or you will want to use Heathen's Toolkit for Steamworks as talked about above.

Initialize

Unity

Toolkit for Steamworks SDK

Our tools are built to support everyone, hobbyists, amateurs, pros, veteran engineers with decades of experience... and everything in between.

Manual

SteamManager.cs demonstrates this ... but you should not just copy and paste it blindly into your project. SteamManager.cs only initialize for the client API so it won't work with Steam Game Server, it also doesn't initialize input, leaderboards or other artefacts for you. It is ALWAYS important to read and understand and not simply copy example code snippets into your project expecting them to work.

If you are initializing Steam API for a client build you will need to register a handler on the SteamAPIWarningMessageHook_t, check the system is fit and ready to be initialized and then call the Init method of the SteamAPI static class.

var result = Steamworks.SteamAPI.Init();

If this returns true then the API is initialized, otherwise it failed to initialize. Once initialized you will need to be sure you run callbacks each frame.

Steamworks.SteamAPI.RunCallbacks();

If you are handling Steam Input you will probably want to update it as well with each frame though you can do that on demand.

Unreal

Toolkit for Steamworks SDK

Create a new Game Instance derived from our Steam Game Instance ... or use the example BP_SteamGameInstance as a jumping-off point.

Be sure to read over our Getting Started article for detailed instructions.

Manual

Keep in mind when working manually you are limited to Epic's assumptions ... which assumes you are only using Steam as part of an Online Subsystem. e.g. Online Subsystem Steam. Its configuration and initialization are part of the engine load process and are not available in PIE. Hethen's Toolkit for Steamworks does initialize Steam in PIE though of course some features do require you to run in standalone mode such as Overlay, Networking, etc.

Setting your App ID has two places in manual Unreal Steam config, In development, the OnlineSubsystemSteam SteamDevAppId value is used

[OnlineSubsystemSteam]
SteamDevAppId=480

For a build the define UE_PROJECT_STEAMSHIPPINGID is used. There are several ways to "define" this define.

Using the PublicDefines list in your game's Build.cs

PublicDefinitions.Add("UE_PROJECT_STEAMSHIPPINGID=480");

Or in the GlobalDefines list in your game's Target.cs (preferred)

GlobalDefinitions.Add("UE_PROJECT_STEAMSHIPPINGID=480");

To configure the plugin for proper initialization you will need to add the following to your Engine.ini

[URL]
; This is the Game Port that Steam Game Server will use and by default should be 27017
Port=27017

[SystemSettings]
; Need this to sort out handshake issues with 5.1 and 5.2
net.CurrentHandshakeVersion=2
net.MinHandshakeVersion=2
net.VerifyNetSessionID=0
net.VerifyNetClientID=0

[OnlineSubsystem]
; Let the Online Subsystem know which platform you are working with
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=True
; Should VAC be used, only applies to Steam Game Server
bVACEnabled=True
; Your AppID only used for dev builds and in the editor
SteamDevAppId=480
; The game version ... this is only required if you are going to run a 
; Dedicated Server and have it visible over Steam Game Server browser
GameVersion=1.0.0.0
; Query Port is by default 2017 this is only used by Steam Game Server
GameServerQueryPort=27018
; If using Sessions then you need this set to true, else you can ignore it
bInitServerOnClient=true

[/Script/Engine.GameEngine]
; Clear existing definitions
!NetDriverDefinitions=ClearArray
; Add the Steam Sockets Net Driver
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver")

[/Script/OnlineSubsystemSteam.SteamNetDriver]
; Set the Connection class name for the net driver
NetConnectionClassName="/Scripts/SteamSockets.SteamSocketsNetConnection"

Steam Debugging

Steam's Documentation has a Debugging article as well ... read it ... its good

https://partner.steamgames.com/doc/sdk/api/debugging

The following articles will help you learn how to perform common tasks and debug and troubleshoot your Steam API integration. We have created a large array of tools that simplify the use of Steam API including tools like Steamworks Inspector to help you troubleshoot and debug your integration.

The Basics

Steam must be running

Be aware that none of the work done by Steam API is "in" your game, Steam API is an "application program interface" that allows your game to work with features in the Steam client. As a result, you must have Steam client open, running and logged in to a valid Steam user who owns the app you are trying to work with.

The only exception to this is when using the Steam Game Server feature which also limits the functionality of Steam API as there is no client and no user available to do work.

Running a Build

When running a build that was not deployed to Steam and ran from the Steam client you will notice that the game fails to initialize the crashes to the desktop possibly attempting to re-launch from Steam client.

This is by design, you must hint to Steam API what the app is, read the article on steam_appid.txt it will explain, why this happens, how to work with it, and when you should and when you should not use the feature described.

Publish Your Changes

When you make any changes in the Steam Developer Portal you must publish them before they take effect and can be tested in your game

Use this page to publish all of the metadata that you've used this site to author. You'll need to publish in order to test things like your game depot configuration, new builds, or new achievements you've added. If your game is not yet set to playable, this action will not release the game, but will simply publish configuration changes you've made.

The buttons below invoke source control (Perforce) commands - if you have any trouble with these, just let us know.

The above quote is from the publish page as seen below

Environment Checks

Having something wrong with your environment (Engine Editor, Steam.exe, Steam User, etc.) can cause odd issues with Steam API that are hard to pin down unless you know what to look for.

Here are some key things to check before you bother trying to debug anything.

Steamworks.NET Install

Issue present in Unity only

Did you ever have a manual or custom installation of Steamworks.NET or ever have any asset or tool that had such in your project?

That is at any time was there ever a Steamwork.NET in your project that was not from the Package Manager Git URL install?

If yes; then know that those custom installs would have Steamworks.NET artefacts in multiple folder locations. If that install was present or even partially present from an incomplete attempt to manually remove it then Unity will have ... on install of the proper Steamworks.NET from Package Manager ... attempted to merge the assets and made a complete mess of it.

How to fix

  1. Remove the offending files Steamworks.NET manual installs would have installed bits in several different folders (scripts, plugins, examples, etc.) Many old assets would have buried a copy or customized version of Steamworks.NET in their asset.

  2. Once you are positive that you fully removed Steamworks.NET and related files from your Assets folder. Remove Steamworks.NET from the package manager and then reinstall it

Steam Client Login

For some reason some devs like to run Steam.exe as Admin or run Unity Editor as Admin ... Windows will mangle your callbacks if you do this.

It's important that Unity Editor and Steam.exe are running as the same user, which should also be the user that is logged into the OS in order for Steam API to work properly.

e.g. Do not run either Steam.exe or Unity Editor with elevated or any other non-standard permissions or users. If you do you will have issues.

Steam User

Valve's Steam has a concept of "limited" users ... when a new user is created it is considered limited until it has spent the equivalent of 5 USD on the Steam store or added 5 USD to the Steam wallet.

This applies to dev accounts, publishers, etc. there are no exceptions. So if your account or your test account is new and or has not spent at least 5 USD on Steam odds are its limited by Valve and it will have limited access to Steam API including but not limited to

  • Lobby limits Can join but can't really use a Steam Lobby ... this one is real odd as it will join it but it can't do anything beyond that

  • Chat limits Typically can't chat with anyone

  • Friend limits Typically can't have friends, friend chats, friend invites, etc.

In addition, the Steam User you're testing the game with MUST own a license to the app to initialize the Steam API. Developer accounts are "supposed" to be granted a dev license to the app ... however, we have seen it such that this doesn't happen correctly.

You can test and modify ownership of the app you are a dev for using Steam's command line as outlined in

Build Target

Steamworks.NET and as a result all related Steam code is only applicable to PC, Mac and Linux ... not Universal Windows or anything else ... ONLY ... Windows 32, Windows 64, Max OS and Linux 64 platforms.

If your build target is set to ANY other build target then the Steamworks.NET assembly will not compile and will not be available for use.

What about multi-platform games?

use #if DISABLESTEAMWORKS script define you can add this yourself if you like to cause Steam API code to simply not compile. You can use it to strip out your Steam-related code if you need.

Steam Command Line

Steam has grown into a large application over the years and provides many separate modules and multiple different ways to debug. This page outlines as many of them as possible to help you get the most out of Steam and Steamworks while keeping headaches to a minimum. Steam automatically outputs a number of debug to the logs folder, for others you may need to use Steam Command Line Parameters or Steam Console Commands to enable them. Using ISteamUtils::SetWarningMessageHook allows a Steamworks application to register a function that allows the Steamworks API to provide human-readable error messages to the application when something goes wrong. Most Steam APIs use it, so be sure to hook it up and look at it any time something goes wrong.

The best way to get started quickly and Do More is with or if you are not quite sure yet you can start with the free "lite" version .

LogoDebugging the Steamworks API (Steamworks Documentation)
LogoDebugging the Steamworks API (Steamworks Documentation)
Tools from Valve
Heathen's Toolkit for Steamworks SDK
Foundation
Cover

Component

  • Zero Code

Cover

Object

  • Doesn't require a GameObject

  • Single line of code

Cover

API

  • Doesn't require a GameObject

  • No ScriptableObject

  • Pure C#

The publish page, make sure to publish before you try to test
Steamworks Complete
Cover

Complete

Cover

Complete | Foundation

Cover

Foundation

GitHub | Patreon
Marketplace
Gitub | Patreon
Asset Store
GitHub