[subsection=CreateLobby]CreateLobby[/subsection] [code=cpp]SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]eLobbyType[/b][/td][td][apitype]ISteamMatchmaking::ELobbyType[/apitype][/td][td]The type and visibility of this lobby. …
[/td][/tr] [tr][td][b]eLobbyType[/b][/td][td][apitype]ISteamMatchmaking::ELobbyType[/apitype][/td][td]The new lobby type to that will be set.[/td][/tr] [/table] Updates what type of lobby this is. …
[/doclink] [/list] [subsection]Curated[/subsection] The following discount types are created and managed by Valve. When selecting products to fill these front-page promotional slots, we consider games of all price points and genres. …
Remember: Seasonal Sales are exempt from Discount Cooldowns created by other discounts, so the Nov 15-22 launch discount would not prevent the game from joining the Dec 17 Winter Sale, even though they are within 30 days of each other. [subsection]Example 2: Joining Multiple Featuring Events with One Discount[/subsection] Later next Spring, things are going well and Bass Ain't Bitin' 2 is invited to three featuring events in the month of June! …
[section=GetAllApprovalRequests]GetAllApprovalRequests[/section] [code=http]GET https://partner.steam-api.com/IPublishedFileModerationService/GetAllApprovalRequests/v1/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr][td][b]key[/b][/td][td]string[/td][td]✔[/td][td]Steamworks Web API publisher authentication key.…
[/td][/tr] [tr=k_EPublishedFileRevision_ApprovedSnapshot][td][b]k_EPublishedFileRevision_ApprovedSnapshot[/b][/td][td]2[/td][td]The most recently approved content.[/td][/tr] [tr=k_EPublishedFileRevision_RejectedSnapshot][td][b]k_EPublishedFileRevision_RejectedSnapshot[/b][/td][td]4[/td][td]The most recently rejected content.…
[subsection=GetFriendMessage]GetFriendMessage[/subsection] [code=cpp]int GetFriendMessage( CSteamID steamIDFriend, int iMessageID, void *pvData, int cubData, EChatEntryType *peChatEntryType );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]steamIDFriend[/b][/td][td][apitype]steam_api::CSteamID[/apitype][/td][td]The Steam ID of the friend that sent this message.…
[/td][/tr] [tr][td][b]cubData[/b][/td][td]int[/td][td]The size of [code-inline]pvData[/code-inline].[/td][/tr] [tr][td][b]peChatEntryType[/b][/td][td][apitype]steam_api::EChatEntryType[/apitype] *[/td][td]Returns the type of chat entry that was received.[/td][/tr] [/table] Gets the data from a Steam friends message. …
id=<file id> [/code] For example, here are a few examples from Portal 2's [url=https://steamcommunity.com/app/620/workshop/]Workshop[/url] and [url=https://steamcommunity.com/app/620]Community Hub[/url]. …
Here is an example of the first [url=https://steamcommunity.com/games/portal2/announcements/detail/92679896001484067]Portal 2 update event[/url]. [docimg=2019-09-18_13-59-10.png]2019-09-18_13-59-10.png[/docimg] [subsection=medal]Medal.tv[/subsection] It might be fun to share an epic moment from your gaming sessions in your game's announcements. …
After you activate an action such as "assign_group" or "add_remove_group", the game's programming will wait until an action such as "group_0" or "group_3" is pressed. "assign_group" + "group_2" means, "assign the current selection to group 2," whereas "select_group" + "group_5" means, "select everything currently assigned to group 5." This sort of thing has to be implemented by the game's own logic, but it's much simpler than creating individual action permutations for each slot, ie "add_remove_group_2", "assign_group_2", "select_group_2", etc... Additionally, the Unit commands have the special action "queue.…
[subsection=SteamPartyBeaconLocation_t]SteamPartyBeaconLocation_t[/subsection] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]m_eType[/b][/td][td][apitype]ISteamParties::ESteamPartyBeaconLocationType[/apitype][/td][td]The location type.…
[/td][/tr] [tr=k_ESteamPartyBeaconLocationType_ChatGroup][td][b]k_ESteamPartyBeaconLocationType_ChatGroup[/b][/td][td]1[/td][td]A Steam Chat Room Group.[/td][/tr] [tr=k_ESteamPartyBeaconLocationType_Max][td][b]k_ESteamPartyBeaconLocationType_Max[/b][/td][td][/td][td]Value is always one greater than the largest valid location type value.…
[section]Example Query[/section] The following example retrieves the 3 most recent news entries for Team Fortress 2. The request specifies that the response should be returned as JSON and includes: a required appid parameter (Team Fortress 2's AppID is 440), and an optional count parameter to limit the number of results returned. [code] GET /ISteamNews/GetNewsForApp/v2/?appid=440&count=3\r\n Host: api.steampowered.com\r\n Content-Length: 0\r\n\r\n [/code] You can execute and view the results of this query with this link: [url=https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/?…
These assets are used on the event page, as well as various places on Steam, including your store page, Community Hub, and in the Steam Library. The exact location of all communication depends on the type of event, user preferences, and the context in which the event is displayed. [table] [tr][td][b]Overview[/b][/td] [td]For an overview of the events and announcements tools, please see [doclink=marketing/event_tools]Events and Announcements Tools[/doclink][/td][/tr] [tr][td][b]Examples[/b][/td] [td][doclink=marketing/event_tools/event_examples]See examples[/doclink] of how events and announcements appear in the Steam store, community, and library.[/td][/tr] [tr][td][b]Templates[/b][/td] [td][url=https://www.dropbox.com/scl/fo/cvkwbosmrimklcl9h0qko/AF5IPErKP-mQM_3YO1Dw2lA?rlkey=b3ad0izykq367g4luasrinw9z&dl=0]Download templates[/url] for sizing and text placements on event images. [/td][/tr] [/table] [section=cover]Cover Image [color=#ca5029]Required[/color][/section] [docimg=cover.png]cover.png[/docimg] [b]Size:[/b] 800px wide x 450px tall [b]Design:[/b] This image should primarily contain the artwork and branding for your event. …
Of course, you'll need to update the name later before your game is announced and releases its Coming Soon store page. [*]Release State Override keys are limited to 2,500 per app. If you need more than 2,500 keys for a confidential playtest, then the probability of a leak is increasing to the point where you're likely "announcing" your product anyway. …
[docimg=friendinvite3.png]friendinvite3.png[/docimg] [docimg=friendinvite2.JPG]friendinvite2.JPG[/docimg] Like other Steam playtest options, everything can be configured in the dashboard. [docimg=invitefriends1.png]invitefriends1.png[/docimg] Using the dashboard, you can specify the number of invites each player gets: 1, 2, or 3 You can also enable friend invites or pause new friend invites anytime with a few clicks. …
[subsection=SetGamePhaseID]SetGamePhaseID[/subsection] [code=cpp] void SetGamePhaseID( const char *pchPhaseID) ;[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]pchPhaseID[/b][/td][td]const char *[/td][td]A game-provided persistent ID for a game phase. …
[/td][/tr] [tr=k_ETimelineGameMode_Staging ][td][b]k_ETimelineGameMode_Staging[/b][/td][td]2[/td][td]The player is in a multiplayer lobby.[/td][/tr] [tr=k_ETimelineGameMode_Menus ][td][b]k_ETimelineGameMode_Menus[/b][/td][td]3[/td][td]The player is in the game's main menu or a pause menu.…
You can remove any tags you find unwanted ("family friendly" for a horror game) or inaccurate ("2D" for a 3D game). [subsection]Tag page visibility[/subsection] The top 20 tags on your game determine the tag pages and similar browse views that your game can appear on. …
Tags may also be applied to other app types such as applications, soundtracks, music, tools, videos, etc. with the Steam Store tagging interface, available on your title's store page.…
The Actual Authority user of your Steamworks account must sign the new Steam Cloud Gaming Addendum by logging into Steamworks and clicking the following link to sign the Addendum: https://partner.steamgames.com/newpartner/signlatestsda/?agreement_type=13 [*]2. In Steamworks, you need to approve the games you would like to show up in GeForce NOW. Please take the following steps. [*]3. …
ncid=pa-srch-goog-17521&gclid=Cj0KCQjwlN32BRCCARIsADZ-J4t5Mghorda2SVQEvLcf646QsSvUmynfi6yP8qJ_UGCnB2-KexbOhpcaAiMIEALw_wcB#product-matrix]HERE[/url] for NVIDIA GeForce NOW. [b]Will there be other cloud gaming services added to Steam Cloud Play?…
[subsection]Example Files[/subsection] [list] [*][docfile=portal2_actions.vdf]portal2_actions.vdf[/docfile] for [url=http://store.steampowered.com/app/620/Portal_2/]Portal 2[/url] [*][docfile=defenders_quest_actions.vdf]defenders_quest_actions.vdf[/docfile] for [url=http://store.steampowered.com/app/218410]Defender's Quest: Valley of the Forgotten[/url] [*][doclink=features/steam_controller/iga_examples]IGA template files[/doclink] (not from any actual game, but meant as starting material for various genres). …
[b]StickPadGyro Actions[/b] Let's start by adding some [code-inline]StickPadGyro[/code-inline] (2-axis analog) actions. How about something to move the character around -- we'll call it "Move", and something to control the camera -- we'll call it "Camera.…
[table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]m_eResult[/b][/td][td][apitype]steam_api::EResult[/apitype][/td][td]Was the call successful? …
This usually occurs in the rare event the Steam client has some kind of fatal error. [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]m_eFailureType[/b][/td][td][apitype]steam_api::uint8[/apitype][/td][td]This is a [apitype]ISteamUser::EFailureType[/apitype].…
You can read more about adding new users in [doclink=gettingstarted/managing_users][/doclink]. [subsection]Option 2: Request keys[/subsection] Additionally, you can request keys for a package called "Dev Comp" that will grant immediate access to your application. To learn more about the different types of packages and requesting keys, please see [doclink=store/application/packages][/doclink]. [subsection]Dev Comp Packages - Important Configuration Note[/subsection] As a Steamworks developer, you have a special type of packages attached to your publisher group. …
If you are not issuing your own tickets, then to connect to a dedicated server via SDR in auto-ticket mode, use [api]ConnectP2P[/api]. (The server must be configured to allow this type of connection by listening using [api]CreateListenSocketP2P[/api].) You may wonder why tickets are stored in a cache, instead of simply being passed as an argument here. …
Make sure and check SteamNetworkingFakeIPResult_t::m_eResult [subsection=CreateListenSocketP2PFakeIP]CreateListenSocketP2PFakeIP[/subsection] [code=cpp]HSteamListenSocket CreateListenSocketP2PFakeIP( int idxFakePort, int nOptions, const SteamNetworkingConfigValue_t *pOptions );[/code] Create a listen socket that will listen for P2P connections sent to our FakeIP. …
[b]Note: We are currently working on updated APIs to help game developers detect the type of hardware their game is running on.[/b] More on that soon, but we would like to emphasize that while providing default graphics options for specific hardware (like Steam Deck) is fine, we recommend against restricting access to settings based on specific hardware. …
[list] [*] In your game code: set your camera-angles-per-mouse-pixel ratio to 0.022 degrees per pixel. i.e. one mouse dot will turn your camera 0.022 degrees. [*] Set your default user mouse sensitivity to 2.5x. [*] These are the standards used in Source 2 engine games. This is why the default "Dots per 360 setting" is 6545. 360degrees / ( 0.022 * 2.5 ) = 6545.45' [/list] [/list] [subsection]Graphics[/subsection] [list] [*][b]Vulkan API[/b]: We recommend targeting Vulkan as your primary graphics API for best performance and battery life. …
If you believe your key is compromised, you can invalidate it and generate a new one on this page. [/callout] [docimg=stream2.png]stream2.png[/docimg] [*]Enter Your Game's AppID You can see your game’s App ID by visiting your game’s App landing page in Steamworks or going to your game’s Steam store page--your appID is in the URL. Note that you should only use the appID for your “base” game--do not use the appID for DLC, Demos, Soundtracks, or other secondary application types. [docimg=stream3.png]stream3.png[/docimg] [*]Set Your Broadcast Permissions By default, your stream is set to “Friends Only”, which means it’s only visible by you and your friends on Steam. …
When using OpenXR, your input binding setup will dramatically affect how many users can buy and play your game. If your game submits a suggested input binding for Meta Quest 2 controllers, SteamVR will automatically rebind most controller types so they will work. The following controller profiles should have customized bindings, due to the difficulty in automatically rebinding them: [list] [*] HTC Vive wands [*] Valve Index controllers [*] Windows Mixed Reality controllers [/list] If you build with OpenVR, your application will automatically support any current and future OpenVR-supported head-mounted displays (HMDs), such as the HTC Vive, Oculus Rift, or Windows Mixed Reality family of devices. …