We recommend offering the commercial license at the same price as the regular end user version. [docimg=cafe_commercial_packages.JPG]cafe_commercial_packages.JPG[/docimg] Prices will then get approved by Valve. …
The commercial version should, at a minimum, include the same game content as the regular end user version. [/callout] [docimg=Cafe_FAQs.JPG]Cafe_FAQs.JPG[/docimg] [*][h4]How does the license management work in a Café?…
This free package uses the same [doclink=/store/application]App ID[/doclink] and [doclink=/store/application/depots]Depots[/doclink] as your base game, and includes a callout to show players how much time remains in the event. Once the Free Weekend ends, the free package is automatically removed from your store page. Players who participated will still see your game listed in their Steam libraries, but they’ll only be able to uninstall it - continued play requires purchasing the full version. …
Longer term, this can lead to increased familiarity, awareness and discussion of your game—even after the event ends. [section]Frequently Asked Questions[/section][list] [h4]Can I gate access or limit content for Free Weekend players? [/h4] [b]A: [/b]There is a specific API call in the ISteamApps interface — [url=https://partner.steamgames.com/doc/api/ISteamApps#BIsSubscribedFromFreeWeekend]BIsSubscribedFromFreeWeekend[/url] — to help you identify whether or not a player is accessing your game via a Free Weekend package. …
Not every type of event needs to be presented in the same way to players, so we’ve designed the system to accommodate everything from small patch notes to the biggest update of the year. [*]Some types of events (such as livestreams or in-game discounts) have end dates, so selecting that type of event will allow you to specify when the promotion ends, and prompt the event to stop appearing. …
This post-time will be used by Steam algorithms to determine whether a Steam customer has "seen" the event or not. [*]Moving the start time of an event might confuse customers, as calendar entries a player manually creates or downloads may become out-of-sync with the actual event. [/list] [*]End dates - you can always edit the end date on an active event to end it immediately, or conversely, extend the event. [/list] [section=clone]Cloning an Event[/section] From your event dashboard, you'll see an option to clone an existing event. …
[/td][/tr] [tr][td][b]timeend[/b][/td][td]uint32[/td][td]✔[/td][td]The end of the time range. Formatted as Unix epoch time (time since Jan 1st, 1970).[/td][/tr] [tr][td][b]timebegin[/b][/td][td]uint32[/td][td]✔[/td][td]The beginning of the time range. …
As such this API [b]MUST[/b] be called from a secure server, and can never be used directly by clients! [subsection=EndSecureMultiplayerSession]EndSecureMultiplayerSession[/subsection] [code=http]POST https://partner.steam-api.com/ICheatReportingService/EndSecureMultiplayerSession/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.…
[b]Note:[/b] If your game uses [b]Unreal Engine[/b], please see the notes specific to these pack files at the end of this section. SteamPipe initially splits each file into roughly one megabyte (MB) chunks. Each chunk is then compressed and encrypted before being upload to the Steam content-delivery system. …
Unlike post-release updates, preload updates are encrypted and are not immediately applied; they are stored on the player's system until the release. This means that multiple large updates can end up consuming a large amount of space on-disk. Please be thoughtful with the frequency and size of your updates during a preload. …
At the same time, it also announces that it intends to increase prices at the end of this sale. It's always a good idea to announce price increases ahead of time to give your community time to prepare. [*] This discount ends on September 14 and the game immediately raises prices in preparation for the upcoming v1.0 release. …
In effect, the two 30-day cooldowns run at the same time. [*] Then, 30-days later on October 14, both cooldowns end. The following day, the game releases into v1.0 on October 15 with a Launch Discount. [*]Alternatively Bass Ain't Bitin' 2 could have just as easily done its price increase 30 days [i]after[/i] the end of the launch discount, instead of 30 days before. …
[/td][/tr] [/table] Use this to update the details of an event that was started with [api]ISteamTimeline::StartRangeTimelineEvent[/api]. [subsection=EndRangeTimelineEvent]EndRangeTimelineEvent[/subsection] [code=cpp]void EndRangeTimelineEvent( TimelineEventHandle_t ulEvent, float flEndOffsetSeconds );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]ulEvent[/b][/td][td]TimelineEventHandle_t[/td][td]Handle of the event to end.[/td][/tr] [tr][td][b]flEndOffsetSeconds[/b][/td][td]float[/td][td]The time offset in seconds to apply to the end of the event. Negative times indicate an event that happened in the past.…
By default, users who activate a key will own the game forever, but if you want to end beta access or revoke the game from beta testers, that’s fine too. When you’re ready to end beta access, revoke the keys using the [url=https://partner.steamgames.com/partnerbatchbancdkeys/]key banning tool[/url]. You can indicate that you’re banning the keys because of the end of a beta, so users get a friendly message letting them know they’ve lost access. [/olist] Note: If you’d like to provide a different version of the game to different audiences, that’s easy to do. …
any unread data on the socket will be thrown away if bNotifyRemoteEnd is set, socket will not be completely destroyed until the remote end acknowledges the disconnect This is part of an older set of functions designed around the Berkeley TCP sockets model it's preferential that you use the P2P functions, they're more robust and these older functions will be removed eventually. …
You'll have to call [api]ISteamNetworking::ReadP2PPacket[/api] on the other end with the same channel number in order to retrieve the data on the other end. Using different channels to talk to the same user will still use the same underlying P2P connection, saving on resources. …
[section]Overview[/section] Steam's peer-to-peer matchmaking is built around the concept of a lobby. A lobby is a entity that lives on the Steam back-end servers that is a lot like a chat room. Users can create a new lobby; associate data with a lobby; search for lobbies based on that data; join lobbies; and share information with other users in the lobby. …
[section=authentication]Authentication[/section] Any user in a Steam lobby is already fully authenticated with the Steam back-end. There is no need for the game to do any more authentication steps with lobby users, unless it's looking to see if they're VAC banned (see Valve Anti-Cheat Technology). …
This delay will offset the entire period the button is held, so if no end delay is set, the total period of time the button is held will be the same, just delayed.[/td][/tr] [tr][td]Fire End Delay[/td][td]0.0-1.0[/td][td]The activator will wait for this period of time after the button has been released before deactivating. The end delay will make a button be active for longer than it was physically held.[/td][/tr] [tr][td]Haptics Intensity[/td][td]Off, Low, Medium, High[/td][td]This defines the strength of haptics on activation and deactivation of the activator.…
You'll use these skill stats when searching for or setting up a game, and then update them when a game ends. If possible marking these stats only settable by 'Official GS' so that players can not tamper with them is highly preferable. …
This is common for multiplayer games where the game session has a strict start and end, like an RTS, without users being able to join a game in progress. This is because the number of users searching at the same second in time can be fairly small. …
[docimg=ArtworkOverride.PNG]ArtworkOverride.PNG[/docimg] [*]Next, choose a relevant name for your Artwork Override, pick a start and end time, and click the green Save Changes button. [docimg=ArtworkOverride_Config.jpg]ArtworkOverride_Config.jpg[/docimg] [*]With your new temporary artwork override selected from the drop-down, you can drag and drop your images into the blue upload box and click Upload. …
Then, publish your changes and your capsule art will automatically override during your selected timespan. At the end time, your capsule art will automatically revert back to the default images. [/olist] Artwork Overrides work with localized assets just like normal capsule art, so you can even localize your bespoke capsules to make your event or update understandable to as many customers as possible. …
Valve issues payment for sales 30 days after they are made, usually at the end of the month. For example, payments for February sales will be made at the end of March. [section]Regions/Territories[/section] In various parts of the Financial site, we refer to regions under the following designations: [list] [*][doclink=#4]Africa[/doclink] [*][doclink=#5]Asia[/doclink] [*][doclink=#6]Eastern Europe[/doclink] [*][doclink=#7]Latin America[/doclink] [*][doclink=#8]Middle East[/doclink] [*][doclink=#9]North America[/doclink] [*][doclink=#10]Oceania[/doclink] [*][doclink=#11]Other[/doclink] [*][doclink=#12]Central Asia[/doclink] [*][doclink=#13]South Asia[/doclink] [*][doclink=#14]South East Asia[/doclink] [*][doclink=#15]Western Europe[/doclink] [/list] [b]Below is the full list of territories for each region:[/b] [subsection]Africa[/subsection] [list][*]Angola [*]Burkina Faso [*]Burundi [*]Benin [*]Botswana [*]Congo, The DRC [*]Central African Republic [*]Congo [*]Cote d Ivoire [*]Cameroon [*]Cape Verde [*]Djibouti [*]Algeria [*]Western Sahara [*]Eritrea [*]Ethiopia [*]Gabon [*]Ghana [*]Gambia [*]Guinea [*]Equatorial Guinea [*]Guinea-Bissau [*]Kenya [*]Comoros [*]Liberia [*]Lesotho [*]Libya [*]Morocco [*]Madagascar [*]Mali [*]Mauritania [*]Mauritius [*]Malawi [*]Mozambique [*]Namibia [*]Niger [*]Nigeria [*]Reunion [*]Rwanda [*]Seychelles [*]Sierra Leone [*]Senegal [*]Somalia [*]Sao Tome And Principe [*]Eswatini [*]Chad [*]Togo [*]Tunisia [*]Tanzania, United Republic of [*]Uganda [*]Mayotte [*]South Africa [*]Zambia [*]Zimbabwe [*]Sudan [*]South Sudan[/list] [subsection]Asia[/subsection] [list][*]China [*]Hong Kong [*]Japan [*]Korea, Republic of [*]Mongolia [*]Macau [*]Taiwan[/list] [subsection]Eastern Europe[/subsection] [list][*]Albania [*]Bosnia And Herzegovina [*]Bulgaria [*]Czech Republic [*]Estonia [*]Georgia [*]Greece [*]Croatia [*]Hungary [*]Lithuania [*]Latvia [*]Montenegro [*]North Macedonia [*]Poland [*]Romania [*]Serbia [*]Slovenia [*]Slovakia (Slovak Republic)[/list] [subsection]Latin America[/subsection] [list][*]Antigua And Barbuda [*]Anguilla [*]Argentina [*]Aruba [*]Barbados [*]Bermuda [*]Bolivia [*]Brazil [*]Bahamas [*]Belize [*]Chile [*]Colombia [*]Costa Rica [*]Dominica [*]Dominican Republic [*]Ecuador [*]Falkland Islands (Malvinas) [*]Grenada [*]French Guiana [*]Guadeloupe [*]South Georgia And South S.S. [*]Guatemala [*]Guyana [*]Honduras [*]Haiti [*]Jamaica [*]Saint Kitts And Nevis [*]Cayman Islands [*]Saint Lucia [*]Martinique [*]Montserrat [*]Mexico [*]Nicaragua [*]Panama [*]Peru [*]Puerto Rico [*]Paraguay [*]Suriname [*]El Salvador [*]Turks And Caicos Islands [*]Trinidad And Tobago [*]Uruguay [*]Saint Vincent And The Grenadines [*]Venezuela [*]Virgin Islands (British) [*]Virgin Islands (U.S.) [*]Bonaire, Sint Eustatius And Saba [*]Curacao [*]Sint Maarten, Dutch Part[/list] [subsection]Middle East[/subsection] [list][*]United Arab Emirates [*]Bahrain [*]Egypt [*]Israel [*]Iraq [*]Jordan [*]Kuwait [*]Lebanon [*]Oman [*]Palestine, State of [*]Qatar [*]Saudi Arabia [*]Turkey [*]Yemen [/list] [subsection]North America[/subsection] [list][*]Canada [*]St. …
[docimg=Example_1.png]Example_1.png[/docimg] [subsection]See your game's page[/subsection] By adding the appID to the end of a URL, you can easily view and share this page for any of your games that are Steam Deck Verified. The URL format for this page is as follows: https://store.steampowered.com/verified/<appid> More pretty examples: [docimg=Example_2.png]Example_2.png[/docimg] [subsection]Requirements[/subsection] To enable this page, the game must have received Verified status and must have [b]at least one[/b] trailer published to the store page that is marked as safe for all ages.…
This time value should be aligned to a date boundary.[/td][/tr] [tr][td][b]date_end[/b][/td][td]uint32[/td][td]✔[/td][td]The ending date range (Unix time) to query up to (not inclusive) This time value should be aligned to a date boundary.…
. [*] [b]Indicate on your demo home screen if you will deactivate the demo, and when[/b] - Many players download demos with the intention of playing after the fest ends, so communicate to players if you plan to deactivate your demo after Steam Next Fest ends so that they can prioritize playing it accordingly. [*] [b]Create a sub-forum for demo feedback[/b] - Within your base game's Steam discussion forums, you can create new sub-forums. …
The [b]Steam PC Café Program[/b] enables PC Cafés, Schools, Libraries, and other organizations to let customers and students use their own Steam accounts onsite while also giving them access to any games or software purchased by the organization for use by end users. Any licenses provided by the organization will appear in your Steam Library, under a special "From [site name]" category. …
[h4]WebAPI[/h4] On your secure game server, you can accumulate that statistic and at the end of the game round or other appropriate time, you can POST the results to the [webapi]IInventoryService/ModifyItems[/webapi] Web API using your secure publisher key. Example form-data for the POST call: [code] appid: 480 key: "0123456789abcdeffedcba9876543210" input_json:{ "steamid" : "1234", "timestamp" : 1513274037, "updates" : [ { "itemid" : "1", "property_name" : "num_times_fired", "property_value_int" : 100 } ] } [/code] [h4]Steamworks API[/h4] If you want to use the Steamworks API to modify item properties (again, inherently insecure), you will first need to add them to a white-list for your app. Then, as with the above example, once the game round has ended or other appropriate time, you can start an update, set properties, and then submit the update to Steam. [code] SteamInventoryUpdateHandle_t updateHandle = SteamInventory()->StartUpdateProperties(); SteamInventory()->SetProperty( updateHandle, nItemID, "num_times_fired", nNumTimesFired ); SteamInventoryResult_t resultUpdate; SteamInventory()->SubmitUpdateProperties( updateHandle, &resultUpdate ); [/code] Then in your callback handler for [apitype]ISteamInventory::SteamInventoryResultReady_t[/apitype], you will get the results of the call to update those item properties. …
Tag Generator FX has an equal chance to apply the tags [code-inline]fx:flames[/code-inline], [code-inline]fx:sparks[/code-inline], or [code-inline]fx:lasers[/code-inline]. In the end you could end up with "Legendary Red Shield with Flames" or a "Common Red Sword with Lasers." [code] itemdefid: 10 type: item name: Sword itemdefid: 11 type: item name: Shield itemdefid: 100 type: generator name: Generator A bundle: 10;11 tags: color:red tag_generators: 101;102 itemdefid: 101 type: tag_generator name: Tag Generator Quality tag_generator_name: quality tag_generator_values: legendary:1;common:9 itemdefid: 102 type: tag_generator name: Tag Generator FX tag_generator_name: fx tag_generator_values: flames;sparks;lasers [/code] The format for the [code-inline]tag_generators[/code-inline] field is a list of all item definition ids of the tag generators you want applied, separated by the ";" character. …