Want to learn more about how to get a VR devkit? Looking for API documentation? Check out the following links: [list] [*] [url=https://steamcommunity.com/app/358720/discussions/]Steam VR Community Hub[/url] [*][url=https://steamcommunity.com/app/633750]SteamVR Knuckles Community Hub[/url] [*][url=https://steamcommunity.com/app/507090/discussions/]SteamVR Tracking HDK Community Hub[/url] [*] [url=https://github.com/ValveSoftware/openvr]OpenVR GitHub Repository[/url] [*] [url=https://github.com/ValveSoftware/openvr/wiki/API-Documentation]OpenVR API Documentation[/url] [/list]…
What are the tradeoffs and benefits of working with a publisher, and what does a healthy developer-publisher relationship look like? What are things to watch out for in a publishing contract? Get advice and suggestions about these questions and more from our panel, with expert perspectives from development, publishing, and legal angles. …
Steam Playtest gives developers a free, low-risk way to get playtesting data for their game without stressing out about Steam keys, user reviews, or wishlists. By using a separate “child” appID that is associated with, but separate from your main game, you can do the playtesting you need without interfering with your main game. …
[/b] This might be the right setting for when your playtest is live and you plan on adding more playtesters in the future, perhaps you will be expanding server capacity or adding new features, and will need more playtesters to try out a future build. [docimg=playablevisible.png]playablevisible.png[/docimg] [b]Playtest is playable, but NOT accepting new sign-ups.…
. [*][b]Geographic breakdown[/b], which adds the ability to see regional breakdowns for the visitors to your store page [*][b]Visitor device category[/b], adding a split of device types for each campaign to let you see how your mobile vs. desktop audiences are learning about your game. [*][b]New vs. returning users[/b] are now break-out stats that help you see the percentage of visits to your store page that come from new versus returning players.[/list][/list] …
Developers should familiarize themselves with all of these devices since the player base uses the full range of devices. If you're interested in finding out more info about the distribution of controllers used with Steam you can find more info in this [url=https://steamcommunity.com/games/593110/announcements/detail/1712946892833213377]blog post[/url] [section=ListDevices]Supported Devices[/section] Steam Input supports all the major controllers that players use with Steam. …
If you need to change the name of your game or add localized versions, please [url=https://help.steampowered.com/en/wizard/HelpWithPublishing?issueid=901]reach out to us in advance[/url]. Make sure to provide answers to the following questions: [list] [*]Why is this name change necessary? [*]Is there anything about the existing game name that you need to change for legal reasons? …
fills in pubDest with the contents of the message messages are always complete, of the same size as was sent (i.e. packetized, not streaming) if *pcubMsgSize < cubDest, only partial data is written returns false if no data is available fills out *phSocket with the socket that data is available on This is part of an older set of functions designed around the Berkeley TCP sockets model. …
Packets can't be bigger than 1200 bytes (your typical MTU size). Can be lost, or arrive out of order (rare). The sending API does have some knowledge of the underlying connection, so if there is no NAT-traversal accomplished or there is a recognized adjustment happening on the connection, the packet will be batched until the connection is open again.…
[/list] [subsection=char]char[/subsection] [code=cpp]const char *GetConfigValueInfo( ESteamNetworkingConfigValue eValue, ESteamNetworkingConfigDataType *pOutDataType, ESteamNetworkingConfigScope *pOutScope );[/code] Get info about a configuration value. Returns the name of the value, or NULL if the value doesn't exist. …
For best performance, do NOT request a high detail level and then filter out messages in your callback. Instead, call this function to adjust the desired level of detail. The value here controls the detail level for most messages. …
Once collaboration mode is enabled, it cannot be disabled. [*][b]Q. How are collaborative bundles paid out?[/b] A. When a user purchases a bundle, they buy packages that are contained in that bundle. The discount of the bundle is applied to the packages. The sale of packages are recorded and we pay out the partner per package directly. Because of this, no further agreements or work needs to be done to properly effect the payout of collaborative bundle sales. …
The Daily Deal feature displays your game's Header Capsule image, so you can also temporarily switch it out using [doclink=store/assets/overrides][/doclink] to shine some additional light on your new update or event. Also, don't forget to activate an update visibility round to support the content update of the game, if applicable. [*] [b]Stream to your store page. …
[/list] [h4]Q: It's 10AM PT and my Daily Deal is not showing up. What should I do?[/h4] A: Please reach out to us right away via the partner Help tool: https://help.steampowered.com/wizard/HelpWithPublishing [h4]Q: I received an invite for a Daily Deal, but...…
Within the Steam Sales & Activations Reports website, you can find stats on the refunds of your game, including the notes that players provide when they request a refund. You can use this information to help figure out if there is particular work you can do on your game to address bugs, balance gameplay, or better set player expectations ahead of time. …
[subsection=GetBeaconLocationData]GetBeaconLocationData[/subsection] [code=cpp]bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char *pchDataStringOut, int cchDataStringOut );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]BeaconLocation[/b][/td][td][apitype]steam_api::SteamPartyBeaconLocation_t [/apitype][/td][td]Location to query.[/td][/tr] [tr][td][b]eData[/b][/td][td][apitype]steam_api::ESteamPartyBeaconLocationData [/apitype][/td][td]Type of location data you wish to get.[/td][/tr] [tr][td][b]pchDataStringOut[/b][/td][td]char *[/td][td]Output buffer for location data string. Will be NULL-terminated on success.[/td][/tr] [tr][td][b]cchDataStringOut [/b][/td][td]int[/td][td]Size of buffer pointed to by pchDataStringOut.…
[table] [tr][th]Lead Time[/th][th]Milestone[/th][th]Details[/th][/tr] [tr][td]3+ Months Out[/td][td][b]Submit Event Proposal[/b][/td][td]Submit your event proposal via this [url=https://help.steampowered.com/en/wizard/HelpWithPublishing?…
[/td][/tr] [tr][td]2 Months Out[/td][td][b]Production Underway[/b][/td][td]If needed, remind participants to enter discounts for their games and plan for their livestreams (or any other communications or assets required for your event plan).…
[subsection=GetNextOutgoingPacket]GetNextOutgoingPacket[/subsection] [code=cpp]int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]pOut[/b][/td][td]void *[/td][td]Returns the packet that needs to be sent by copying it into this buffer. The packet may be up to 16KiB so allocate accordingly.[/td][/tr] [tr][td][b]cbMaxOut[/b][/td][td]int[/td][td]The size of the buffer provided to [code-inline]pOut[/code-inline], should be 16 * 1024.[/td][/tr] [tr][td][b]pNetAdr[/b][/td][td][apitype]steam_api::uint32[/apitype] *[/td][td]Returns the The IP address that this packet needs to be sent to in host order, i.e 127.0.0.1 == 0x7f000001.…
[subsection][b]2026 Fests[/b][/subsection] [table] [tr][th]Event Dates[/th][th]Theme[/th][th]Registration[/th][th]Eligibility & Notes[/th][/tr] [tr][td]Nov 16 Nov 23[/td][td]Auto-Battler RPG Fest[/td] [td][url=https://partner.steamgames.com/optin/sale/auto_battler_2026]Registration details[/url][/td] [td]Games where the battles play themselves out – but you have to upgrade your units to win. [doclink=marketing/upcoming_events/themed_sales/auto_battler_rpg_2026]More info[/doclink]. …
[/td][/tr] [/table] [section]Next Fest[/section] Running three times a year, Steam Next Fest is a multi-day celebration where fans can try out demos, chat with developers, watch livestreams, and learn about upcoming games on Steam. For developers, Steam Next Fest is an opportunity to get early feedback from players and build an audience for a future launch on Steam. …
This is useful when you need to fix a critical bug in your released game and that game is out of development or you are unable to build a new game depot using the Steamworks SDK. [subsection]Performing the Update[/subsection] Start by creating a zip file that includes the files you wish to update. …
Customers playing your game also means those customers’ friends are seeing them launch the game and post screenshots, discuss in the forums, etc., which can drive those other users to check out the game themselves and take advantage of the limited-time discount. Most pre-purchase campaigns just don’t bring in much in the way of sales, and it's far better--in terms of both revenue and customer awareness--to save that buzz and excitement for when customers can actually play your game or use your software. …
Each computer or device connected via Remote Play has its own session. You can find out more about connected devices using the [doclink=api/ISteamRemotePlay][/doclink] If you have optimized your game for remote play on various types of devices, or your game works well with Remote Play Together, you can check the appropriate feature checkboxes in the Basic Info section of the Store Page admin on the partner site, and your game will show up when customers search for games that work well for those use cases. …
[/olist] This walkthrough assumes that you are showcasing content, but you can also use this to enable Remote Play Together on a branch and try it out privately before enabling it on your game in the Store Page settings. (NOTE: this feature requires that the test system be running a Steam client dated May 23, 2020 or newer) [section]Remote Play on Phone[/section] If you have checked this feature, it means you have [doclink=features/remoteplay#7]created a recommended Steam Input touch controller config[/doclink] for your game, and have verified that the UI elements and font sizes work well for small handheld devices. …
For a standard game w/ Xbox controller support we recommend checking all checkboxes other than Xbox: [docimg=steamworks_steam_input_optin_settings.png]steamworks_steam_input_optin_settings.png[/docimg] If your game has flight stick or racing wheel support you'll want to uncheck the box for Generic/DirectInput controllers because Steam doesn't support remapping those devices. [subsection]Selecting a configuration[/subsection] You can choose to create your own configuration or pick from one of our premade templates. …
[subsection]Consistent Discounting[/subsection] Past Complete Packs often got out of sync with pricing when the contents of the packs went on sale, resulting sometimes in the pack being more expensive than the individual items. …
Can I create a Steam Bundle with games that I do not have publishing rights for?[/b] A. Yes, please check out the new [url=https://partner.steamgames.com/doc/store/application/bundles/collaborative]Collaborative Bundles[/url] feature. [*][b]Q. …