If you're hoping for curated Store featuring, note that Steam’s promotional calendar fills up fast, so additional lead time is recommended.[list] [subsection]1. Submit Your Event Idea[/subsection] Start by outlining your event concept and submitting it via this [url=https://help.steampowered.com/en/wizard/HelpWithPublishing?…
As such, events chosen for curated featuring tend to have a combination of the following characteristics:[list] [subsection]1. Broad Representation of their Chosen Topic[/subsection] To be featured on the Steam homepage, an event must broadly represent its chosen topic. …
Valid options are: "Day", "Week", "Month", "Year" [*] [b]frequency[0][/b] - Frequency (in number of days) for recurring billing. Supported values: 1 - 255 [*] [b]recurringamt[0][/b] - Amount to be billed for future recurring billing transactions. [/list] A user may only have one active billing agreement per game. …
[subsection=EstimatePingTimeBetweenTwoLocations]EstimatePingTimeBetweenTwoLocations[/subsection] [code=cpp]int EstimatePingTimeBetweenTwoLocations( const SteamNetworkPingLocation_t &location1, const SteamNetworkPingLocation_t &location2 );[/code] Estimate the round-trip latency between two arbitrary locations, in milliseconds. …
[subsection=GetLocalTimestamp]GetLocalTimestamp[/subsection] [code=cpp]SteamNetworkingMicroseconds GetLocalTimestamp();[/code] A general purpose high resolution local timer with the following properties: [list] [*] Monotonicity is guaranteed. [*] The initial value will be at least 24*3600*30*1e6, i.e. about 30 days worth of microseconds. In this way, the timestamp value of 0 will always be at least "30 days ago". …
Of course, a date that’s more precise is also fine (e.g. June, 2025 or June 1st, 2025).[/list] [u]A Season Pass must include at least one released DLC when it is made available for purchase*[/u] *with the exception of Season Passes included in a Pre-Purchase of a deluxe edition. …
You can select an exact date, or release month, or present it as a release window (for example, January 1st to March 30th). When you are ready, click "Create". [docimg=SeasonPassNew05.JPG]SeasonPassNew05.JPG[/docimg] Now, you should see the new content release on your Roadmap. …
[b]Returns:[/b] [apitype]steam_api::uint32[/apitype] The public IP in host order, i.e 127.0.0.1 == 0x7f000001. Returns [b]0[/b] if the IP could not be determined. [subsection=GetServerReputation]GetServerReputation[/subsection] [code=cpp]SteamAPICall_t GetServerReputation();[/code] Deprecated - Will be removed in a future release of the SDK. …
[/td][/tr] [tr][td][b]srcIP[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td]The IP address that this packet was sent to in host order, i.e 127.0.0.1 == 0x7f000001.[/td][/tr] [tr][td][b]srcPort[/b][/td][td][apitype]steam_api::uint16[/apitype][/td][td]The port that this packet was sent through, in host order.…
Unless otherwise noted: [list] [*] Amount can result in a partial "dollar" value (e.g. 150 cents for $1.50). [*] Amount entered into the partner site or sent to the [webapi]ISteamMicroTxn/InitTxn[/webapi] API must be expressed using the hundredths value ("cents", "pence", etc.) of the selected currency ("dollar", "pound", etc.). …
Legacy values that are no longer supported are indicated with a [strike]strikethrough[/strike]. [list] [*] [code-inline]1[/code-inline] - USD / United States Dollar [*] [code-inline]2[/code-inline] - GBP / United Kingdom Pound [*] [code-inline]3[/code-inline] - EUR / European Union Euro [*] [code-inline]4[/code-inline] - CHF / Swiss Francs [*] [code-inline]5[/code-inline] - RUB / Russian Rouble [*] [code-inline]6[/code-inline] - PLN / Polish Złoty [*] [code-inline]7[/code-inline] - BRL / Brazilian Reals [*] [code-inline]8[/code-inline] - JPY / Japanese Yen [*] [code-inline]9[/code-inline] - NOK / Norwegian Krone [*] [code-inline]10[/code-inline] - IDR / Indonesian Rupiah [*] [code-inline]11[/code-inline] - MYR / Malaysian Ringgit [*] [code-inline]12[/code-inline] - PHP / Philippine Peso [*] [code-inline]13[/code-inline] - SGD / Singapore Dollar [*] [code-inline]14[/code-inline] - THB / Thai Baht [*] [code-inline]15[/code-inline] - VND / Vietnamese Dong [*] [code-inline]16[/code-inline] - KRW / South Korean Won [*][strike][code-inline]17[/code-inline] - TRY / Turkish Lira[/strike] [*] [code-inline]18[/code-inline] - UAH / Ukrainian Hryvnia [*] [code-inline]19[/code-inline] - MXN / Mexican Peso [*] [code-inline]20[/code-inline] - CAD / Canadian Dollars [*] [code-inline]21[/code-inline] - AUD / Australian Dollars [*] [code-inline]22[/code-inline] - NZD / New Zealand Dollar [*] [code-inline]23[/code-inline] - CNY / Chinese Renminbi (yuan) [*] [code-inline]24[/code-inline] - INR / Indian Rupee [*] [code-inline]25[/code-inline] - CLP / Chilean Peso [*] [code-inline]26[/code-inline] - PEN / Peruvian Sol [*] [code-inline]27[/code-inline] - COP / Colombian Peso [*] [code-inline]28[/code-inline] - ZAR / South African Rand [*] [code-inline]29[/code-inline] - HKD / Hong Kong Dollar [*] [code-inline]30[/code-inline] - TWD / New Taiwan Dollar [*] [code-inline]31[/code-inline] - SAR / Saudi Riyal [*] [code-inline]32[/code-inline] - AED / United Arab Emirates Dirham [*] [strike][code-inline]33[/code-inline] - SEK / Swedish Krona[/strike] [*] [strike][code-inline]34[/code-inline] - ARS / Argentine Peso[/strike] [*] [code-inline]35[/code-inline] - ILS / Israeli New Shekel [*] [strike][code-inline]36[/code-inline] - BYN / Belarusian Ruble[/strike] [*] [code-inline]37[/code-inline] - KZT / Kazakhstani Tenge [*] [code-inline]38[/code-inline] - KWD / Kuwaiti Dinar [*] [code-inline]39[/code-inline] - QAR / Qatari Riyal [*] [code-inline]40[/code-inline] - CRC / Costa Rican Colón [*] [code-inline]41[/code-inline] - UYU / Uruguayan Peso [*] [strike][code-inline]42[/code-inline] - BGN / Bulgarian Lev[/strike] [*] [strike][code-inline]43[/code-inline] - HRK / Croatian Kuna[/strike] [*] [strike][code-inline]44[/code-inline] - CZK / Czech Koruna[/strike] [*] [strike][code-inline]45[/code-inline] - DKK / Danish Krone[/strike] [*] [strike][code-inline]46[/code-inline] - HUF / Hungarian Forint[/strike] [*] [strike][code-inline]47[/code-inline] - RON / Romanian Leu[/strike] [/list] …
You may wish to choose a particular date to conform to your contract, but we find that for accounting purposes, the 1st of the current or following month may be a convenient date for some partners. We do not recommend and may not allow dates far in advance of the current date or dates earlier than the 1st of the current month. …
[/td] [/tr] [tr] [td][doclink=store/application/builds][/doclink][/td] [td]A build is the result of [doclink=sdk/uploading][/doclink], it can contain 1 or more of your depots and is a representation of those depots at that point in time.[/td] [/tr] [tr] [td][doclink=store/application/branches][/doclink][/td] [td]A branch, or beta, is a specific build that you have made available either publicly or privately. …
[/olist] [callout][b]Surfacing an App on Steam[/b]: Keys aside, details of an app on Steam will become visible to many players and/or third party web crawlers once the app: 1) publishes a Store page, 2) becomes available for Pre-Load or 3) gets Released, even if it is released with a 'Hidden' store page. Be sure to plan your announcement for [i]no later[/i] than the first time your app enters any of these states.…
[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. …
Deploying builds to Steam is much like doing so for any [doclink=store/application/platforms]supported platform[/doclink]. [section]Step 1 - Setup New App[/section] Follow these [doclink=sdk/uploading#Initial_Setup_New_App]general instructions[/doclink] for setting up a new app on Steam. …
[b]Returns:[/b] int The number of users that meet the specified criteria. [b]NOTE:[/b] Returns [b]-1[/b] if the current user is not logged on. [b]Example:[/b] [code=cpp]int nFriends = SteamFriends()->GetFriendCount( k_EFriendFlagImmediate ); if ( nFriends == -1) { printf( "GetFriendCount returned -1, the current user is not logged in.…
[/td][/tr] [tr][td][b]iPersonaName[/b][/td][td]int[/td][td]The index of the history to receive. [b]0[/b] is their current persona name, [b]1[/b] is their most recent before they changed it, etc.[/td][/tr] [/table] Gets one of the previous display names for the specified user. …
The Additional Revenue Share system has no way of knowing which app is more important in this case. If your app has recorded significant revenue since October 1st, 2018 (>$1,000,000 USD) please reach out to the Steam Finance team and we will update the reporting relationship for this package manually. …
For example, if they purchased L4D and then 3 weeks later purchased another copy of L4D, a refund request would be denied because the first copy is more than 2 weeks old. If they instead purchased their second copy only 1 week after the first copy, both purchases could be refunded provided there was less than 2 combined hours of playtime on the licenses. [*][h4]Will my location need to be online all the time?…
[docimg=ReleaseExampleDocs.jpg]ReleaseExampleDocs.jpg[/docimg] [callout]NOTE: Publishing a coming soon page or releasing a game requires two specific Steamworks permissions: 1. Publish app changes to Steam 2. Manage pricing and discounts Users who do not have those permissions on the appID being released will see an error message and not be able to complete the release. …
Example [b]vrpreferences.json[/b]: [code=json] { "steam_frame": { "preferResolution": 2160, "preferMinRefreshRate": 90, "preferHalfFramerate": true, "preferMotionSmoothingMode": "off" } } [/code] This example file suggests: [list] [*]A default resolution of 2160x2160 [*]A default display refresh rate of 90 Hz [*]A default frame throttling to 1/2 (Frame Limit to 45 FPS) [*]A default override to disable Motion Smoothing [/list] To validate that the [b]vrpreferences.json[/b] is picked up by SteamVR, the [b]vrserver.txt[/b] log file can be searched: [code=plain] [Info] - [Settings] Loading app-provided preferences from '/home/steamos/.local/share/Steam/steamapps/common/<game folder>/vrpreferences.json' [/code] Parsing errors will be reported in this log, for example: [code=plain] [Info] - Parsing of JSON file "/home/steamos/.local/share/Steam/steamapps/common/[...]…
In your Steamworks SDK there is a directory called '/tools/ContentServer/'. This directory contains a prebuilt version of mongoose-3.1.exe. Run this application from the ContentServer directory. Create a new app_build vdf script. The format we typically follow is [code-inline]app_build_[AppID]_Local.vdf[/code-inline]. …
This allows users to simply fire up your game and play without needing to go into the configuration screen at all. Here's the recommended process: [subsection]Step 1 - Update your game[/subsection] [list] [*] Update your Steam depot with your new version of the game [/list] [subsection]Step 2 - Publish your configuration[/subsection] [list] [*] Run Steam in Big Picture mode and navigate to the default configuration you created in the controller configuration. [*] Hit the (Y) button, or click the "Save As" button at the bottom of the screen. [*] Select the desired localized title & description in the popup, change it to a PUBLIC profile, and click the PUBLISH button. [*] You will get a confirmation, and the file ID of the public configuration. …
. [*]Media Foundation: To save additional bandwidth and disk use, we recommend using standalone codecs like VP9 or AV1. [*]Anti-cheat: We recommend using user-space anti-cheat components for best results, as they can typically run in the Wine environment and provide the same level of functionality. …
. [*] [b]flags[/b] - Bitmask of the following numeric flags specifying tool behavior. [list=1] [*] [b]0[/b] - Normal wrap (most protection) [*] [b]6[/b] - Compatibility mode (disables obfuscation) [*] [b]32[/b] - Skip debugger check [*] [b]38[/b] - compatibility mode and also skip debugger check (least protection) [/list] [/list] Example run_build.bat script to login, apply DRM, build and upload the build to Steam (where App ID is 480): [code] builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..…
const uint8 rgubKey[k_nSteamEncryptedAppTicketSymmetricKeyLen] = { 0xed, 0x93, 0x86, 0x07, 0x36, 0x47, 0xce, 0xa5, 0x8b, 0x77, 0x21, 0x49, 0x0d, 0x59, 0xed, 0x44, 0x57, 0x23, 0xf0, 0xf6, 0x6e, 0x74, 0x14, 0xe1, 0x53, 0x3b, 0xa3, 0x3c, 0xd8, 0x03, 0xbd, 0xbd }; uint8 rgubDecrypted[1024]; uint32 cubDecrypted = sizeof( rgubDecrypted ); if ( !…
[b]Returns:[/b] [apitype]steam_api::RTime32[/apitype] Returns the time as Unix epoch time (time since Jan 1st, 1970). Returns 0 if the ticket is not valid. [subsection=GetTicketSteamID]SteamEncryptedAppTicket_GetTicketSteamID[/subsection] [code=cpp]S_API void SteamEncryptedAppTicket_GetTicketSteamID( uint8 *rgubTicketDecrypted, uint32 cubTicketDecrypted, CSteamID *psteamID );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]rgubTicketDecrypted[/b][/td][td]uint8 *[/td][td]The decrypted ticket to check.…